@osdk/client 2.2.0-beta.9 → 2.2.0-rc.25

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 (395) hide show
  1. package/CHANGELOG.md +394 -0
  2. package/build/browser/MinimalClientContext.js.map +1 -1
  3. package/build/browser/__unstable/ConjureSupport.js.map +1 -1
  4. package/build/browser/actions/ActionValidationError.js +1 -1
  5. package/build/browser/actions/ActionValidationError.js.map +1 -1
  6. package/build/browser/actions/actions.test.js +134 -89
  7. package/build/browser/actions/actions.test.js.map +1 -1
  8. package/build/browser/actions/applyAction.js.map +1 -1
  9. package/build/browser/createClient.js +5 -1
  10. package/build/browser/createClient.js.map +1 -1
  11. package/build/browser/createClient.test.js +14 -6
  12. package/build/browser/createClient.test.js.map +1 -1
  13. package/build/browser/createMinimalClient.js.map +1 -1
  14. package/build/browser/createMinimalClientHelper.js +25 -0
  15. package/build/browser/createMinimalClientHelper.js.map +1 -0
  16. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +4 -21
  17. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  18. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js +14 -14
  19. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  20. package/build/browser/derivedProperties/derivedPropertyRuntimeMetadata.js +2 -0
  21. package/build/browser/derivedProperties/derivedPropertyRuntimeMetadata.js.map +1 -0
  22. package/build/browser/fetchMetadata.js +1 -1
  23. package/build/browser/fetchMetadata.js.map +1 -1
  24. package/build/browser/fetchMetadata.test.js +11 -9
  25. package/build/browser/fetchMetadata.test.js.map +1 -1
  26. package/build/browser/index.js +0 -1
  27. package/build/browser/index.js.map +1 -1
  28. package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js +30 -0
  29. package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -0
  30. package/build/{esm/util/isOsdkBaseObject.js → browser/intellisense.test.helpers/showsObjectPropertyJsdoc.js} +9 -4
  31. package/build/browser/intellisense.test.helpers/showsObjectPropertyJsdoc.js.map +1 -0
  32. package/build/browser/intellisense.test.js +39 -1
  33. package/build/browser/intellisense.test.js.map +1 -1
  34. package/build/browser/logger/BaseLogger.js +59 -0
  35. package/build/browser/logger/BaseLogger.js.map +1 -0
  36. package/build/browser/logger/BrowserLogger.js +67 -0
  37. package/build/browser/logger/BrowserLogger.js.map +1 -0
  38. package/build/browser/logger/MinimalLogger.js +39 -0
  39. package/build/browser/logger/MinimalLogger.js.map +1 -0
  40. package/build/browser/logger/MinimalLogger.test.js +60 -0
  41. package/build/browser/logger/MinimalLogger.test.js.map +1 -0
  42. package/build/browser/logger/TestLogger.js +56 -0
  43. package/build/browser/logger/TestLogger.js.map +1 -0
  44. package/build/browser/object/attachment.test.js +20 -7
  45. package/build/browser/object/attachment.test.js.map +1 -1
  46. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  47. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +4 -0
  48. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  49. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +56 -33
  50. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  51. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  52. package/build/browser/object/convertWireToOsdkObjects.js +4 -14
  53. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  54. package/build/browser/object/convertWireToOsdkObjects.test.js +39 -33
  55. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  56. package/build/browser/object/fetchPage.js +4 -3
  57. package/build/browser/object/fetchPage.js.map +1 -1
  58. package/build/browser/object/geotimeseriesreference.test.js +56 -134
  59. package/build/browser/object/geotimeseriesreference.test.js.map +1 -1
  60. package/build/browser/object/media.test.js +19 -14
  61. package/build/browser/object/media.test.js.map +1 -1
  62. package/build/browser/object/object.test.js +96 -89
  63. package/build/browser/object/object.test.js.map +1 -1
  64. package/build/browser/object/timeseries.test.js +119 -85
  65. package/build/browser/object/timeseries.test.js.map +1 -1
  66. package/build/browser/objectSet/InterfaceObjectSet.test.js +24 -20
  67. package/build/browser/objectSet/InterfaceObjectSet.test.js.map +1 -1
  68. package/build/browser/objectSet/ObjectSet.test.js +188 -66
  69. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  70. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +2 -2
  71. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  72. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +19 -12
  73. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  74. package/build/browser/objectSet/createObjectSet.js +2 -1
  75. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  76. package/build/browser/observable/internal/ActionApplication.js +4 -4
  77. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  78. package/build/browser/observable/internal/BulkObjectLoader.js +93 -0
  79. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -0
  80. package/build/browser/observable/internal/BulkObjectLoader.test.js +112 -0
  81. package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -0
  82. package/build/browser/observable/internal/ListQuery.js +4 -1
  83. package/build/browser/observable/internal/ListQuery.js.map +1 -1
  84. package/build/browser/observable/internal/ObjectQuery.js +3 -6
  85. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  86. package/build/browser/observable/internal/OptimisticJob.js +1 -1
  87. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  88. package/build/browser/observable/internal/Query.js.map +1 -1
  89. package/build/browser/observable/internal/Store.js +2 -2
  90. package/build/browser/observable/internal/Store.js.map +1 -1
  91. package/build/browser/observable/internal/Store.test.js +215 -206
  92. package/build/browser/observable/internal/Store.test.js.map +1 -1
  93. package/build/browser/observable/internal/objectMatchesWhereClause.js +0 -2
  94. package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
  95. package/build/browser/observable/internal/testUtils.js +4 -3
  96. package/build/browser/observable/internal/testUtils.js.map +1 -1
  97. package/build/browser/ontology/OntologyProvider.js.map +1 -1
  98. package/build/browser/ontology/StandardOntologyProvider.js +12 -5
  99. package/build/browser/ontology/StandardOntologyProvider.js.map +1 -1
  100. package/build/browser/ontology/StandardOntologyProvider.test.js +17 -16
  101. package/build/browser/ontology/StandardOntologyProvider.test.js.map +1 -1
  102. package/build/browser/ontology/loadFullObjectMetadata.js +0 -1
  103. package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
  104. package/build/browser/ontology/loadQueryMetadata.js +5 -2
  105. package/build/browser/ontology/loadQueryMetadata.js.map +1 -1
  106. package/build/browser/public/internal.js +2 -0
  107. package/build/browser/public/internal.js.map +1 -1
  108. package/build/browser/public/unstable-do-not-use.js +1 -0
  109. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  110. package/build/browser/public-utils/osdkConfig.js +49 -0
  111. package/build/browser/public-utils/osdkConfig.js.map +1 -0
  112. package/build/browser/{object/createObjectSpecifierFromPrimaryKey.js → public-utils/vite-env.d.ts} +2 -3
  113. package/build/browser/queries/applyQuery.js +6 -4
  114. package/build/browser/queries/applyQuery.js.map +1 -1
  115. package/build/browser/queries/queries.test.js +93 -27
  116. package/build/browser/queries/queries.test.js.map +1 -1
  117. package/build/browser/queries/types.js.map +1 -1
  118. package/build/browser/tsserver.js +1 -0
  119. package/build/browser/tsserver.js.map +1 -1
  120. package/build/browser/util/UserAgent.js +1 -1
  121. package/build/browser/util/UserAgent.js.map +1 -1
  122. package/build/browser/util/extractRdpDefinition.js +151 -0
  123. package/build/browser/util/extractRdpDefinition.js.map +1 -0
  124. package/build/browser/util/extractRdpDefinition.test.js +315 -0
  125. package/build/browser/util/extractRdpDefinition.test.js.map +1 -0
  126. package/build/browser/util/{isOsdkBaseObject.js → isObjectSpecifiersObject.js} +2 -2
  127. package/build/browser/util/isObjectSpecifiersObject.js.map +1 -0
  128. package/build/browser/util/isPoint.js +20 -0
  129. package/build/browser/util/isPoint.js.map +1 -0
  130. package/build/browser/util/objectSpecifierUtils.js +48 -0
  131. package/build/browser/util/objectSpecifierUtils.js.map +1 -0
  132. package/build/browser/util/objectSpecifierUtils.test.js +42 -0
  133. package/build/browser/util/objectSpecifierUtils.test.js.map +1 -0
  134. package/build/browser/util/toDataValue.js +6 -2
  135. package/build/browser/util/toDataValue.js.map +1 -1
  136. package/build/browser/util/toDataValue.test.js +37 -16
  137. package/build/browser/util/toDataValue.test.js.map +1 -1
  138. package/build/browser/util/toDataValueQueries.js +4 -6
  139. package/build/browser/util/toDataValueQueries.js.map +1 -1
  140. package/build/cjs/{Client-DBTcM9gB.d.cts → Client-CgL2LKN9.d.cts} +6 -7
  141. package/build/cjs/{chunk-MCQVHD2F.cjs → chunk-5JZGGCIW.cjs} +124 -72
  142. package/build/cjs/chunk-5JZGGCIW.cjs.map +1 -0
  143. package/build/cjs/{chunk-EY52J5Z4.cjs → chunk-HDAQ6JIR.cjs} +174 -34
  144. package/build/cjs/chunk-HDAQ6JIR.cjs.map +1 -0
  145. package/build/cjs/index.cjs +198 -166
  146. package/build/cjs/index.cjs.map +1 -1
  147. package/build/cjs/index.d.cts +4 -24
  148. package/build/cjs/public/internal.cjs +61 -7
  149. package/build/cjs/public/internal.cjs.map +1 -1
  150. package/build/cjs/public/internal.d.cts +50 -3
  151. package/build/cjs/public/unstable-do-not-use.cjs +224 -103
  152. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  153. package/build/cjs/public/unstable-do-not-use.d.cts +12 -3
  154. package/build/esm/MinimalClientContext.js.map +1 -1
  155. package/build/esm/__unstable/ConjureSupport.js.map +1 -1
  156. package/build/esm/actions/ActionValidationError.js +1 -1
  157. package/build/esm/actions/ActionValidationError.js.map +1 -1
  158. package/build/esm/actions/actions.test.js +134 -89
  159. package/build/esm/actions/actions.test.js.map +1 -1
  160. package/build/esm/actions/applyAction.js.map +1 -1
  161. package/build/esm/createClient.js +5 -1
  162. package/build/esm/createClient.js.map +1 -1
  163. package/build/esm/createClient.test.js +14 -6
  164. package/build/esm/createClient.test.js.map +1 -1
  165. package/build/esm/createMinimalClient.js.map +1 -1
  166. package/build/esm/createMinimalClientHelper.js +25 -0
  167. package/build/esm/createMinimalClientHelper.js.map +1 -0
  168. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +4 -21
  169. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  170. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js +14 -14
  171. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  172. package/build/esm/derivedProperties/derivedPropertyRuntimeMetadata.js +2 -0
  173. package/build/esm/derivedProperties/derivedPropertyRuntimeMetadata.js.map +1 -0
  174. package/build/esm/fetchMetadata.js +1 -1
  175. package/build/esm/fetchMetadata.js.map +1 -1
  176. package/build/esm/fetchMetadata.test.js +11 -9
  177. package/build/esm/fetchMetadata.test.js.map +1 -1
  178. package/build/esm/index.js +0 -1
  179. package/build/esm/index.js.map +1 -1
  180. package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js +30 -0
  181. package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -0
  182. package/build/esm/{util/isOsdkObject.js → intellisense.test.helpers/showsObjectPropertyJsdoc.js} +9 -4
  183. package/build/esm/intellisense.test.helpers/showsObjectPropertyJsdoc.js.map +1 -0
  184. package/build/esm/intellisense.test.js +39 -1
  185. package/build/esm/intellisense.test.js.map +1 -1
  186. package/build/esm/logger/BaseLogger.js +59 -0
  187. package/build/esm/logger/BaseLogger.js.map +1 -0
  188. package/build/esm/logger/BrowserLogger.js +67 -0
  189. package/build/esm/logger/BrowserLogger.js.map +1 -0
  190. package/build/esm/logger/MinimalLogger.js +39 -0
  191. package/build/esm/logger/MinimalLogger.js.map +1 -0
  192. package/build/esm/logger/MinimalLogger.test.js +60 -0
  193. package/build/esm/logger/MinimalLogger.test.js.map +1 -0
  194. package/build/esm/logger/TestLogger.js +56 -0
  195. package/build/esm/logger/TestLogger.js.map +1 -0
  196. package/build/esm/object/attachment.test.js +20 -7
  197. package/build/esm/object/attachment.test.js.map +1 -1
  198. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  199. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +4 -0
  200. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  201. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +56 -33
  202. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  203. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  204. package/build/esm/object/convertWireToOsdkObjects.js +4 -14
  205. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  206. package/build/esm/object/convertWireToOsdkObjects.test.js +39 -33
  207. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  208. package/build/esm/object/fetchPage.js +4 -3
  209. package/build/esm/object/fetchPage.js.map +1 -1
  210. package/build/esm/object/geotimeseriesreference.test.js +56 -134
  211. package/build/esm/object/geotimeseriesreference.test.js.map +1 -1
  212. package/build/esm/object/media.test.js +19 -14
  213. package/build/esm/object/media.test.js.map +1 -1
  214. package/build/esm/object/object.test.js +96 -89
  215. package/build/esm/object/object.test.js.map +1 -1
  216. package/build/esm/object/timeseries.test.js +119 -85
  217. package/build/esm/object/timeseries.test.js.map +1 -1
  218. package/build/esm/objectSet/InterfaceObjectSet.test.js +24 -20
  219. package/build/esm/objectSet/InterfaceObjectSet.test.js.map +1 -1
  220. package/build/esm/objectSet/ObjectSet.test.js +188 -66
  221. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  222. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +2 -2
  223. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  224. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +19 -12
  225. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  226. package/build/esm/objectSet/createObjectSet.js +2 -1
  227. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  228. package/build/esm/observable/internal/ActionApplication.js +4 -4
  229. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  230. package/build/esm/observable/internal/BulkObjectLoader.js +93 -0
  231. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -0
  232. package/build/esm/observable/internal/BulkObjectLoader.test.js +112 -0
  233. package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -0
  234. package/build/esm/observable/internal/ListQuery.js +4 -1
  235. package/build/esm/observable/internal/ListQuery.js.map +1 -1
  236. package/build/esm/observable/internal/ObjectQuery.js +3 -6
  237. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  238. package/build/esm/observable/internal/OptimisticJob.js +1 -1
  239. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  240. package/build/esm/observable/internal/Query.js.map +1 -1
  241. package/build/esm/observable/internal/Store.js +2 -2
  242. package/build/esm/observable/internal/Store.js.map +1 -1
  243. package/build/esm/observable/internal/Store.test.js +215 -206
  244. package/build/esm/observable/internal/Store.test.js.map +1 -1
  245. package/build/esm/observable/internal/objectMatchesWhereClause.js +0 -2
  246. package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
  247. package/build/esm/observable/internal/testUtils.js +4 -3
  248. package/build/esm/observable/internal/testUtils.js.map +1 -1
  249. package/build/esm/ontology/OntologyProvider.js.map +1 -1
  250. package/build/esm/ontology/StandardOntologyProvider.js +12 -5
  251. package/build/esm/ontology/StandardOntologyProvider.js.map +1 -1
  252. package/build/esm/ontology/StandardOntologyProvider.test.js +17 -16
  253. package/build/esm/ontology/StandardOntologyProvider.test.js.map +1 -1
  254. package/build/esm/ontology/loadFullObjectMetadata.js +0 -1
  255. package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
  256. package/build/esm/ontology/loadQueryMetadata.js +5 -2
  257. package/build/esm/ontology/loadQueryMetadata.js.map +1 -1
  258. package/build/esm/public/internal.js +2 -0
  259. package/build/esm/public/internal.js.map +1 -1
  260. package/build/esm/public/unstable-do-not-use.js +1 -0
  261. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  262. package/build/esm/public-utils/osdkConfig.js +49 -0
  263. package/build/esm/public-utils/osdkConfig.js.map +1 -0
  264. package/build/esm/{object/createObjectSpecifierFromPrimaryKey.js → public-utils/vite-env.d.ts} +2 -3
  265. package/build/esm/queries/applyQuery.js +6 -4
  266. package/build/esm/queries/applyQuery.js.map +1 -1
  267. package/build/esm/queries/queries.test.js +93 -27
  268. package/build/esm/queries/queries.test.js.map +1 -1
  269. package/build/esm/queries/types.js.map +1 -1
  270. package/build/esm/tsserver.js +1 -0
  271. package/build/esm/tsserver.js.map +1 -1
  272. package/build/esm/util/UserAgent.js +1 -1
  273. package/build/esm/util/UserAgent.js.map +1 -1
  274. package/build/esm/util/extractRdpDefinition.js +151 -0
  275. package/build/esm/util/extractRdpDefinition.js.map +1 -0
  276. package/build/esm/util/extractRdpDefinition.test.js +315 -0
  277. package/build/esm/util/extractRdpDefinition.test.js.map +1 -0
  278. package/build/{browser/util/isOsdkObject.js → esm/util/isObjectSpecifiersObject.js} +2 -2
  279. package/build/esm/util/isObjectSpecifiersObject.js.map +1 -0
  280. package/build/esm/util/isPoint.js +20 -0
  281. package/build/esm/util/isPoint.js.map +1 -0
  282. package/build/esm/util/objectSpecifierUtils.js +48 -0
  283. package/build/esm/util/objectSpecifierUtils.js.map +1 -0
  284. package/build/esm/util/objectSpecifierUtils.test.js +42 -0
  285. package/build/esm/util/objectSpecifierUtils.test.js.map +1 -0
  286. package/build/esm/util/toDataValue.js +6 -2
  287. package/build/esm/util/toDataValue.js.map +1 -1
  288. package/build/esm/util/toDataValue.test.js +37 -16
  289. package/build/esm/util/toDataValue.test.js.map +1 -1
  290. package/build/esm/util/toDataValueQueries.js +4 -6
  291. package/build/esm/util/toDataValueQueries.js.map +1 -1
  292. package/build/types/MinimalClientContext.d.ts +1 -1
  293. package/build/types/MinimalClientContext.d.ts.map +1 -1
  294. package/build/types/__unstable/ConjureSupport.d.ts +2 -2
  295. package/build/types/actions/applyAction.d.ts +1 -2
  296. package/build/types/actions/applyAction.d.ts.map +1 -1
  297. package/build/types/createClient.d.ts +1 -1
  298. package/build/types/createClient.d.ts.map +1 -1
  299. package/build/types/createClient.test.d.ts +2 -1
  300. package/build/types/createClient.test.d.ts.map +1 -1
  301. package/build/types/createMinimalClientHelper.d.ts +1 -0
  302. package/build/types/createMinimalClientHelper.d.ts.map +1 -0
  303. package/build/types/derivedProperties/derivedPropertyRuntimeMetadata.d.ts +6 -0
  304. package/build/types/derivedProperties/derivedPropertyRuntimeMetadata.d.ts.map +1 -0
  305. package/build/types/index.d.ts +4 -6
  306. package/build/types/index.d.ts.map +1 -1
  307. package/build/types/intellisense.test.helpers/orderBySuggestionIsRight.d.ts +1 -0
  308. package/build/types/intellisense.test.helpers/orderBySuggestionIsRight.d.ts.map +1 -0
  309. package/build/types/intellisense.test.helpers/showsObjectPropertyJsdoc.d.ts +1 -0
  310. package/build/types/intellisense.test.helpers/showsObjectPropertyJsdoc.d.ts.map +1 -0
  311. package/build/types/logger/BaseLogger.d.ts +33 -0
  312. package/build/types/logger/BaseLogger.d.ts.map +1 -0
  313. package/build/types/logger/BrowserLogger.d.ts +9 -0
  314. package/build/types/logger/BrowserLogger.d.ts.map +1 -0
  315. package/build/types/logger/MinimalLogger.d.ts +9 -0
  316. package/build/types/logger/MinimalLogger.d.ts.map +1 -0
  317. package/build/types/logger/MinimalLogger.test.d.ts +1 -0
  318. package/build/types/logger/MinimalLogger.test.d.ts.map +1 -0
  319. package/build/types/logger/TestLogger.d.ts +14 -0
  320. package/build/types/logger/TestLogger.d.ts.map +1 -0
  321. package/build/types/object/convertWireToOsdkObjects.d.ts +4 -3
  322. package/build/types/object/convertWireToOsdkObjects.d.ts.map +1 -1
  323. package/build/types/object/fetchPage.d.ts.map +1 -1
  324. package/build/types/object/object.test.d.ts.map +1 -1
  325. package/build/types/objectSet/ObjectSet.test.d.ts.map +1 -1
  326. package/build/types/observable/internal/ActionApplication.d.ts +2 -2
  327. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  328. package/build/types/observable/internal/BulkObjectLoader.d.ts +8 -0
  329. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -0
  330. package/build/types/observable/internal/BulkObjectLoader.test.d.ts +1 -0
  331. package/build/types/observable/internal/BulkObjectLoader.test.d.ts.map +1 -0
  332. package/build/types/observable/internal/ListQuery.d.ts.map +1 -1
  333. package/build/types/observable/internal/ObjectQuery.d.ts.map +1 -1
  334. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  335. package/build/types/observable/internal/Query.d.ts +2 -2
  336. package/build/types/observable/internal/Query.d.ts.map +1 -1
  337. package/build/types/observable/internal/Store.d.ts +2 -2
  338. package/build/types/observable/internal/Store.d.ts.map +1 -1
  339. package/build/types/observable/internal/testUtils.d.ts +1 -2
  340. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  341. package/build/types/ontology/OntologyProvider.d.ts +1 -1
  342. package/build/types/ontology/OntologyProvider.d.ts.map +1 -1
  343. package/build/types/ontology/loadQueryMetadata.d.ts +1 -1
  344. package/build/types/ontology/loadQueryMetadata.d.ts.map +1 -1
  345. package/build/types/public/internal.d.ts +2 -0
  346. package/build/types/public/internal.d.ts.map +1 -1
  347. package/build/types/public/unstable-do-not-use.d.ts +4 -2
  348. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  349. package/build/types/public-utils/osdkConfig.d.ts +8 -0
  350. package/build/types/public-utils/osdkConfig.d.ts.map +1 -0
  351. package/build/types/public-utils/vite-env.d.d.ts +3 -0
  352. package/build/types/public-utils/vite-env.d.d.ts.map +1 -0
  353. package/build/types/queries/applyQuery.d.ts +2 -2
  354. package/build/types/queries/applyQuery.d.ts.map +1 -1
  355. package/build/types/queries/types.d.ts +1 -1
  356. package/build/types/queries/types.d.ts.map +1 -1
  357. package/build/types/tsserver.d.ts +2 -1
  358. package/build/types/tsserver.d.ts.map +1 -1
  359. package/build/types/util/extractRdpDefinition.d.ts +4 -0
  360. package/build/types/util/extractRdpDefinition.d.ts.map +1 -0
  361. package/build/types/util/extractRdpDefinition.test.d.ts +1 -0
  362. package/build/types/util/extractRdpDefinition.test.d.ts.map +1 -0
  363. package/build/types/util/isObjectSpecifiersObject.d.ts +5 -0
  364. package/build/types/util/isObjectSpecifiersObject.d.ts.map +1 -0
  365. package/build/types/util/isPoint.d.ts +1 -0
  366. package/build/types/util/isPoint.d.ts.map +1 -0
  367. package/build/types/util/objectSpecifierUtils.d.ts +24 -0
  368. package/build/types/util/objectSpecifierUtils.d.ts.map +1 -0
  369. package/build/types/util/objectSpecifierUtils.test.d.ts +1 -0
  370. package/build/types/util/objectSpecifierUtils.test.d.ts.map +1 -0
  371. package/package.json +14 -13
  372. package/build/browser/Logger.js +0 -2
  373. package/build/browser/Logger.js.map +0 -1
  374. package/build/browser/object/createObjectSpecifierFromPrimaryKey.js.map +0 -1
  375. package/build/browser/util/isOsdkBaseObject.js.map +0 -1
  376. package/build/browser/util/isOsdkObject.js.map +0 -1
  377. package/build/cjs/chunk-EY52J5Z4.cjs.map +0 -1
  378. package/build/cjs/chunk-MCQVHD2F.cjs.map +0 -1
  379. package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
  380. package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
  381. package/build/cjs/graphql-RGM5SRWV.cjs +0 -10532
  382. package/build/cjs/graphql-RGM5SRWV.cjs.map +0 -1
  383. package/build/esm/Logger.js +0 -2
  384. package/build/esm/Logger.js.map +0 -1
  385. package/build/esm/object/createObjectSpecifierFromPrimaryKey.js.map +0 -1
  386. package/build/esm/util/isOsdkBaseObject.js.map +0 -1
  387. package/build/esm/util/isOsdkObject.js.map +0 -1
  388. package/build/types/Logger.d.ts +0 -17
  389. package/build/types/Logger.d.ts.map +0 -1
  390. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts +0 -2
  391. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts.map +0 -1
  392. package/build/types/util/isOsdkBaseObject.d.ts +0 -2
  393. package/build/types/util/isOsdkBaseObject.d.ts.map +0 -1
  394. package/build/types/util/isOsdkObject.d.ts +0 -2
  395. package/build/types/util/isOsdkObject.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Store.js","names":["BehaviorSubject","invariant","additionalContext","DEBUG_REFCOUNTS","ActionApplication","CacheKeys","createChangedObjects","DEBUG_ONLY__changesToString","Entry","Layer","isListCacheKey","ListQuery","ObjectQuery","OrderByCanonicalizer","RefCounts","WhereClauseCanonicalizer","createInitEntry","cacheKey","status","value","undefined","lastUpdated","Store","whereCanonicalizer","orderByCanonicalizer","truthLayer","topLayer","queries","Map","cacheKeyToSubject","WeakMap","cacheKeys","refCounts","k","cleanupCacheKey","finalizationRegistry","constructor","client","logger","child","msgPrefix","cacheKeyType","type","otherKeys","console","log","JSON","stringify","register","setInterval","gc","FinalizationRegistry","cleanupCallback","e","error","key","subject","peekSubject","closed","observed","remove","process","env","NODE_ENV","complete","delete","get","dispose","applyAction","action","args","opts","removeLayer","layerId","currentLayer","parentLayer","v","entries","has","set","oldEntry","currentEntry","next","isOptimistic","getCacheKey","getSubject","initialValue","canonicalizeWhereClause","where","canonicalize","observeObject","apiName","pk","options","subFn","query","getObjectQuery","retain","mode","revalidate","catch","sub","subscribe","unsubscribe","release","observeList","getListQuery","orderBy","x","streamUpdates","registerStreamUpdates","peekQuery","getQuery","#getQuery","createQuery","def","canonWhere","canonOrderBy","listCacheKey","objectCacheKey","dedupeInterval","getValue","batch","optimisticId","changes","batchFn","needsLayer","batchContext","createLayerIfNeeded","addLayer","optimisticWrite","write","oldTopValue","writeLayer","newValue","Date","now","newTopValue","read","retVal","maybeRevalidateQueries","batchResult","invalidateObject","isEmpty","methodName","debug","promises","keys","promise","maybeUpdateAndRevalidate","push","Promise","all","invalidateObjectType","info","modified","add","then","invalidateList","store"],"sources":["Store.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n InterfaceDefinition,\n ObjectTypeDefinition,\n PrimaryKeyType,\n WhereClause,\n} from \"@osdk/api\";\nimport type { Observer } from \"rxjs\";\nimport { BehaviorSubject } from \"rxjs\";\nimport invariant from \"tiny-invariant\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport { additionalContext, type Client } from \"../../Client.js\";\nimport type { Logger } from \"../../Logger.js\";\nimport { DEBUG_REFCOUNTS } from \"../DebugFlags.js\";\nimport type { ListPayload } from \"../ListPayload.js\";\nimport type { ObjectPayload } from \"../ObjectPayload.js\";\nimport type {\n ObserveListOptions,\n ObserveObjectOptions,\n OrderBy,\n Unsubscribable,\n} from \"../ObservableClient.js\";\nimport type { OptimisticBuilder } from \"../OptimisticBuilder.js\";\nimport { ActionApplication } from \"./ActionApplication.js\";\nimport type { CacheKey } from \"./CacheKey.js\";\nimport { CacheKeys } from \"./CacheKeys.js\";\nimport type { Canonical } from \"./Canonical.js\";\nimport {\n type Changes,\n createChangedObjects,\n DEBUG_ONLY__changesToString,\n} from \"./Changes.js\";\nimport { Entry, Layer } from \"./Layer.js\";\nimport type { ListCacheKey, ListQueryOptions } from \"./ListQuery.js\";\nimport { isListCacheKey, ListQuery } from \"./ListQuery.js\";\nimport type { ObjectCacheKey } from \"./ObjectQuery.js\";\nimport { ObjectQuery } from \"./ObjectQuery.js\";\nimport { type OptimisticId } from \"./OptimisticId.js\";\nimport { OrderByCanonicalizer } from \"./OrderByCanonicalizer.js\";\nimport type { Query } from \"./Query.js\";\nimport { RefCounts } from \"./RefCounts.js\";\nimport type { SimpleWhereClause } from \"./SimpleWhereClause.js\";\nimport { WhereClauseCanonicalizer } from \"./WhereClauseCanonicalizer.js\";\n\n/*\n Work still to do:\n - [x] testing for optimistic writes\n - [x] automatic invalidation of actions\n - [x] automatic optimistic list updates\n - [x] useOsdkObjects\n - [x] imply offline for objects passed directly\n - [x] websocket subscriptions\n - [ ] links\n - [x] add pagination\n - [ ] sub-selection support\n - [ ] interfaces\n - [ ] setup defaults\n - [ ] reduce updates in react\n*/\n\nexport interface SubjectPayload<KEY extends CacheKey> extends Entry<KEY> {\n isOptimistic: boolean;\n}\n\nexport interface BatchContext {\n changes: Changes;\n createLayerIfNeeded: () => void;\n optimisticWrite: boolean;\n\n write: <K extends CacheKey<string, any, any>>(\n k: K,\n v: Entry<K>[\"value\"],\n status: Entry<K>[\"status\"],\n ) => Entry<K>;\n\n read: <K extends CacheKey<string, any, any>>(\n k: K,\n ) => Entry<K> | undefined;\n}\n\ninterface UpdateOptions {\n optimisticId?: OptimisticId;\n}\n\nexport namespace Store {\n export interface ApplyActionOptions {\n optimisticUpdate?: (ctx: OptimisticBuilder) => void;\n }\n}\n\nfunction createInitEntry(cacheKey: CacheKey): Entry<any> {\n return {\n cacheKey,\n status: \"init\",\n value: undefined,\n lastUpdated: 0,\n };\n}\n\n/*\n Notes:\n - Subjects are one per type per store (by cache key)\n - Data is one per layer per cache key\n*/\n\nexport class Store {\n whereCanonicalizer: WhereClauseCanonicalizer = new WhereClauseCanonicalizer();\n orderByCanonicalizer: OrderByCanonicalizer = new OrderByCanonicalizer();\n #truthLayer: Layer = new Layer(undefined, undefined);\n #topLayer: Layer;\n client: Client;\n\n /** @internal */\n logger?: Logger;\n\n // we can use a regular Map here because the refCounting will\n // handle cleanup.\n #queries: Map<\n CacheKey,\n Query<any, any, any>\n > = new Map();\n\n #cacheKeyToSubject = new WeakMap<\n CacheKey<string, any, any>,\n BehaviorSubject<SubjectPayload<any>>\n >();\n #cacheKeys: CacheKeys;\n\n #refCounts = new RefCounts<CacheKey>(\n DEBUG_REFCOUNTS ? 15_000 : 60_000,\n (k) => this.#cleanupCacheKey(k),\n );\n\n // we are currently only using this for debug logging and should just remove it in the future if that\n // continues to be true\n #finalizationRegistry: FinalizationRegistry<() => void>;\n\n constructor(client: Client) {\n this.client = client;\n this.logger = client[additionalContext].logger?.child({}, {\n msgPrefix: \"Store\",\n });\n this.#topLayer = this.#truthLayer;\n this.#cacheKeys = new CacheKeys(\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n (k) => {\n if (DEBUG_REFCOUNTS) {\n const cacheKeyType = k.type;\n const otherKeys = k.otherKeys;\n // eslint-disable-next-line no-console\n console.log(\n `CacheKeys.onCreate(${cacheKeyType}, ${JSON.stringify(otherKeys)})`,\n );\n\n this.#finalizationRegistry.register(k, () => {\n // eslint-disable-next-line no-console\n console.log(\n `CacheKey Finalization(${cacheKeyType}, ${\n JSON.stringify(otherKeys)\n })`,\n );\n });\n }\n\n this.#refCounts.register(k);\n },\n );\n\n setInterval(() => {\n this.#refCounts.gc();\n }, 1000);\n\n this.#finalizationRegistry = new FinalizationRegistry<() => void>(\n (cleanupCallback) => {\n try {\n cleanupCallback();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Caught an error while running a finalization callback\",\n e,\n );\n }\n },\n );\n }\n\n /**\n * Called after a key is no longer retained and the timeout has elapsed\n * @param key\n */\n #cleanupCacheKey = (key: CacheKey<string, any, any>) => {\n const subject = this.peekSubject(key);\n\n if (DEBUG_REFCOUNTS) {\n // eslint-disable-next-line no-console\n console.log(\n `CacheKey cleaning up (${\n JSON.stringify({\n closed: subject?.closed,\n observed: subject?.observed,\n })\n })`,\n JSON.stringify([key.type, ...key.otherKeys], null, 2),\n );\n }\n this.#cacheKeys.remove(key);\n if (process.env.NODE_ENV !== \"production\") {\n invariant(subject);\n }\n\n if (subject) {\n subject.complete();\n this.#cacheKeyToSubject.delete(key);\n }\n\n this.#queries.get(key)?.dispose();\n this.#queries.delete(key);\n };\n\n applyAction: <Q extends ActionDefinition<any>>(\n action: Q,\n args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0],\n opts?: Store.ApplyActionOptions,\n ) => Promise<unknown> = (action, args, opts) => {\n return new ActionApplication(this).applyAction(action, args, opts);\n };\n\n removeLayer(layerId: OptimisticId): void {\n invariant(\n layerId != null,\n \"undefined is the reserved layerId for the truth layer\",\n );\n // 1. collect all cache keys for a given layerId\n let currentLayer: Layer | undefined = this.#topLayer;\n const cacheKeys = new Map<CacheKey<string, any, any>, Entry<any>>();\n while (currentLayer != null && currentLayer.parentLayer != null) {\n if (currentLayer.layerId === layerId) {\n for (const [k, v] of currentLayer.entries()) {\n if (cacheKeys.has(k)) continue;\n cacheKeys.set(k, v);\n }\n }\n\n currentLayer = currentLayer.parentLayer;\n }\n\n // 2. remove the layers from the chain\n this.#topLayer = this.#topLayer.removeLayer(layerId);\n\n // 3. check each cache key to see if it is different in the new chain\n for (const [k, oldEntry] of cacheKeys) {\n const currentEntry = this.#topLayer.get(k);\n\n // 4. if different, update the subject\n if (oldEntry !== currentEntry) {\n const x = currentEntry ?? createInitEntry(k);\n // We are going to be pretty lazy here and just re-emit the value.\n // In the future it may benefit us to deep equal check her but I think\n // the subjects are effectively doing this anyway.\n this.peekSubject(k)?.next(\n {\n // eslint-disable-next-line @typescript-eslint/no-misused-spread\n ...(currentEntry ?? createInitEntry(k)),\n isOptimistic:\n currentEntry?.value !== this.#truthLayer.get(k)?.value,\n },\n );\n }\n }\n }\n\n getCacheKey<K extends CacheKey<string, any, any>>(\n type: K[\"type\"],\n ...args: K[\"__cacheKey\"][\"args\"]\n ): K {\n return this.#refCounts.register(this.#cacheKeys.get(type, ...args));\n }\n\n peekSubject = <KEY extends CacheKey<string, any, any>>(\n cacheKey: KEY,\n ):\n | BehaviorSubject<SubjectPayload<KEY>>\n | undefined =>\n {\n return this.#cacheKeyToSubject.get(cacheKey);\n };\n\n getSubject = <KEY extends CacheKey<string, any, any>>(\n cacheKey: KEY,\n ): BehaviorSubject<SubjectPayload<KEY>> => {\n let subject = this.#cacheKeyToSubject.get(cacheKey);\n if (!subject) {\n const initialValue: Entry<KEY> = this.#topLayer.get(cacheKey)\n ?? createInitEntry(cacheKey);\n\n subject = new BehaviorSubject({\n // eslint-disable-next-line @typescript-eslint/no-misused-spread\n ...initialValue,\n isOptimistic:\n initialValue.value !== this.#truthLayer.get(cacheKey)?.value,\n });\n this.#cacheKeyToSubject.set(cacheKey, subject);\n }\n\n return subject;\n };\n\n public canonicalizeWhereClause<\n T extends ObjectTypeDefinition | InterfaceDefinition,\n >(\n where: WhereClause<T>,\n ): Canonical<SimpleWhereClause> {\n return this.whereCanonicalizer.canonicalize(where);\n }\n\n public observeObject<T extends ObjectTypeDefinition | InterfaceDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n options: ObserveObjectOptions<T>,\n subFn: Observer<ObjectPayload>,\n ): Unsubscribable {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n const query = this.getObjectQuery(apiName, pk);\n this.retain(query.cacheKey);\n\n if (options.mode !== \"offline\") {\n query.revalidate(options.mode === \"force\")\n .catch(e => {\n subFn.error(e);\n // we don't want observeObject() to return a promise,\n // so we settle for logging an error here instead of\n // dropping it on the floor.\n if (this.logger) {\n this.logger.error(\"Unhandled error in observeObject\", e);\n } else {\n throw e;\n }\n });\n }\n const sub = query.subscribe(subFn);\n\n return {\n unsubscribe: () => {\n sub.unsubscribe();\n this.release(query.cacheKey);\n },\n };\n }\n\n public observeList<T extends ObjectTypeDefinition | InterfaceDefinition>(\n options: ObserveListOptions<T>,\n subFn: Observer<ListPayload>,\n ): Unsubscribable {\n // the ListQuery represents the shared state of the list\n const query = this.getListQuery(\n options.type,\n options.where ?? {},\n options.orderBy ?? {},\n options,\n );\n this.retain(query.cacheKey);\n\n if (options.mode !== \"offline\") {\n query.revalidate(options.mode === \"force\").catch((x: unknown) => {\n subFn.error(x);\n });\n }\n const sub = query.subscribe(subFn);\n\n if (options.streamUpdates) {\n query.registerStreamUpdates(sub);\n }\n\n return {\n unsubscribe: () => {\n sub.unsubscribe();\n this.release(query.cacheKey);\n },\n };\n }\n\n peekQuery<K extends CacheKey>(\n cacheKey: K,\n ): K[\"__cacheKey\"][\"query\"] | undefined {\n return this.#queries.get(cacheKey) as K[\"__cacheKey\"][\"query\"] | undefined;\n }\n\n #getQuery<K extends CacheKey>(\n cacheKey: K,\n createQuery: () => K[\"__cacheKey\"][\"query\"],\n ): K[\"__cacheKey\"][\"query\"] {\n let query = this.peekQuery(cacheKey);\n if (!query) {\n query = createQuery();\n this.#queries.set(cacheKey, query);\n }\n return query;\n }\n\n public getListQuery<T extends ObjectTypeDefinition | InterfaceDefinition>(\n def: Pick<T, \"type\" | \"apiName\">,\n where: WhereClause<T>,\n orderBy: Record<string, \"asc\" | \"desc\" | undefined>,\n opts: ListQueryOptions,\n ): ListQuery {\n const { apiName, type } = def;\n\n const canonWhere = this.whereCanonicalizer.canonicalize(where);\n const canonOrderBy = this.orderByCanonicalizer.canonicalize(orderBy);\n const listCacheKey = this.getCacheKey<ListCacheKey>(\n \"list\",\n type,\n apiName,\n canonWhere,\n canonOrderBy,\n );\n\n return this.#getQuery(listCacheKey, () => {\n return new ListQuery(\n this,\n this.getSubject(listCacheKey),\n type,\n apiName,\n canonWhere,\n canonOrderBy,\n listCacheKey,\n opts,\n );\n });\n }\n\n public getObjectQuery<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n ): ObjectQuery {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n const objectCacheKey = this.getCacheKey<ObjectCacheKey>(\n \"object\",\n apiName,\n pk,\n );\n\n return this.#getQuery(objectCacheKey, () =>\n new ObjectQuery(\n this,\n this.getSubject(objectCacheKey),\n apiName,\n pk,\n objectCacheKey,\n { dedupeInterval: 0 },\n ));\n }\n\n public getValue<K extends CacheKey<string, any, any>>(\n cacheKey: K,\n ): Entry<K> | undefined {\n return this.#topLayer.get(cacheKey);\n }\n\n batch = <X>(\n { optimisticId, changes = createChangedObjects() }: {\n optimisticId?: OptimisticId;\n changes?: Changes;\n },\n batchFn: (batchContext: BatchContext) => X,\n ): {\n batchResult: BatchContext;\n retVal: X;\n changes: Changes;\n } => {\n invariant(\n optimisticId === undefined || !!optimisticId,\n \"optimistic must be undefined or not falsy\",\n );\n\n let needsLayer = optimisticId !== undefined;\n const batchContext: BatchContext = {\n changes,\n createLayerIfNeeded: () => {\n if (needsLayer) {\n this.#topLayer = this.#topLayer.addLayer(optimisticId);\n needsLayer = false;\n }\n },\n optimisticWrite: !!optimisticId,\n write: (cacheKey, value, status) => {\n const oldTopValue = this.#topLayer.get(cacheKey);\n\n if (optimisticId) batchContext.createLayerIfNeeded();\n\n const writeLayer = optimisticId\n ? this.#topLayer\n : this.#truthLayer;\n const newValue = new Entry(\n cacheKey,\n value,\n Date.now(),\n status,\n );\n\n writeLayer.set(cacheKey, newValue);\n\n const newTopValue = this.#topLayer.get(cacheKey);\n\n if (oldTopValue !== newTopValue) {\n this.#cacheKeyToSubject.get(cacheKey)?.next({\n // eslint-disable-next-line @typescript-eslint/no-misused-spread\n ...newValue,\n isOptimistic:\n newTopValue?.value !== this.#truthLayer.get(cacheKey)?.value,\n });\n }\n\n return newValue;\n },\n read: (cacheKey) => {\n return optimisticId\n ? this.#topLayer.get(cacheKey)\n : this.#truthLayer.get(cacheKey);\n },\n };\n\n const retVal = batchFn(batchContext);\n this.maybeRevalidateQueries(changes, optimisticId).catch(e => {\n // we don't want batch() to return a promise,\n // so we settle for logging an error here instead of\n // dropping it on the floor.\n if (this.logger) {\n this.logger.error(\"Unhandled error in batch\", e);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Unhandled error in batch\", e);\n throw e;\n }\n });\n\n return {\n batchResult: batchContext,\n retVal: retVal,\n changes: batchContext.changes,\n };\n };\n\n public invalidateObject<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n ): Promise<unknown> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n return this.getObjectQuery(apiName, pk)\n .revalidate(/* force */ true);\n }\n\n async maybeRevalidateQueries(\n changes: Changes,\n optimisticId?: OptimisticId | undefined,\n ): Promise<void> {\n if (changes.isEmpty()) {\n if (process.env.NODE_ENV !== \"production\") {\n // todo\n this.logger?.child({ methodName: \"maybeRevalidateQueries\" }).debug(\n \"No changes, aborting\",\n );\n }\n return;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n // todo\n this.logger?.child({ methodName: \"maybeRevalidateQueries\" }).debug(\n DEBUG_ONLY__changesToString(changes),\n { optimisticId },\n );\n }\n\n try {\n const promises: Array<Promise<unknown>> = [];\n for (const cacheKey of this.#queries.keys()) {\n const promise = this.peekQuery(cacheKey)?.maybeUpdateAndRevalidate?.(\n changes,\n optimisticId,\n );\n if (promise) promises.push(promise);\n }\n await Promise.all(promises);\n } finally {\n if (process.env.NODE_ENV !== \"production\") {\n // todo\n this.logger?.child({ methodName: \"maybeRevalidateQueries\" }).debug(\n \"in finally\",\n DEBUG_ONLY__changesToString(changes),\n );\n }\n }\n }\n\n /**\n * @param apiName\n * @param changes The changes we know about / to update\n * @returns\n */\n public invalidateObjectType<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n changes: Changes | undefined,\n ): Promise<void> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"invalidateObjectType\" }).info(\n changes ? DEBUG_ONLY__changesToString(changes) : void 0,\n );\n }\n\n const promises: Array<Promise<void>> = [];\n\n for (const cacheKey of this.#truthLayer.keys()) {\n if (isListCacheKey(cacheKey)) {\n if (!changes || !changes.modified.has(cacheKey)) {\n const promise = this.peekQuery(cacheKey)?.revalidate(true);\n\n if (promise) {\n promises.push(promise);\n changes?.modified.add(cacheKey);\n }\n }\n }\n }\n\n return Promise.all(promises).then(() => void 0);\n }\n\n retain(cacheKey: CacheKey<string, any, any>): void {\n this.#refCounts.retain(cacheKey);\n }\n\n release(cacheKey: CacheKey<string, any, any>): void {\n this.#refCounts.release(cacheKey);\n }\n}\n\nexport async function invalidateList<T extends ObjectTypeDefinition>(\n store: Store,\n args: {\n type: Pick<T, \"apiName\" | \"type\">;\n where?: WhereClause<T> | SimpleWhereClause;\n orderBy?: OrderBy<T>;\n },\n): Promise<void> {\n const where = store.whereCanonicalizer.canonicalize(args.where ?? {});\n const orderBy = store.orderByCanonicalizer.canonicalize(args.orderBy ?? {});\n\n const cacheKey = store.getCacheKey<ListCacheKey>(\n \"list\",\n args.type.type,\n args.type.apiName,\n where,\n orderBy as Canonical<OrderBy<T>>,\n );\n\n await store.peekQuery(cacheKey)?.revalidate(true);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Store.js","names":["BehaviorSubject","invariant","additionalContext","DEBUG_REFCOUNTS","ActionApplication","CacheKeys","createChangedObjects","DEBUG_ONLY__changesToString","Entry","Layer","isListCacheKey","ListQuery","ObjectQuery","OrderByCanonicalizer","RefCounts","WhereClauseCanonicalizer","createInitEntry","cacheKey","status","value","undefined","lastUpdated","Store","whereCanonicalizer","orderByCanonicalizer","truthLayer","topLayer","queries","Map","cacheKeyToSubject","WeakMap","cacheKeys","refCounts","k","cleanupCacheKey","finalizationRegistry","constructor","client","logger","child","msgPrefix","cacheKeyType","type","otherKeys","console","log","JSON","stringify","register","setInterval","gc","FinalizationRegistry","cleanupCallback","e","error","key","subject","peekSubject","closed","observed","remove","process","env","NODE_ENV","complete","delete","get","dispose","applyAction","action","args","opts","removeLayer","layerId","currentLayer","parentLayer","v","entries","has","set","oldEntry","currentEntry","next","isOptimistic","getCacheKey","getSubject","initialValue","canonicalizeWhereClause","where","canonicalize","observeObject","apiName","pk","options","subFn","query","getObjectQuery","retain","mode","revalidate","catch","sub","subscribe","unsubscribe","release","observeList","getListQuery","orderBy","x","streamUpdates","registerStreamUpdates","peekQuery","getQuery","#getQuery","createQuery","def","canonWhere","canonOrderBy","listCacheKey","objectCacheKey","dedupeInterval","getValue","batch","optimisticId","changes","batchFn","needsLayer","batchContext","createLayerIfNeeded","addLayer","optimisticWrite","write","oldTopValue","writeLayer","newValue","Date","now","newTopValue","read","retVal","maybeRevalidateQueries","batchResult","invalidateObject","isEmpty","methodName","debug","promises","keys","promise","maybeUpdateAndRevalidate","push","Promise","all","invalidateObjectType","info","modified","add","then","invalidateList","store"],"sources":["Store.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n ActionEditResponse,\n InterfaceDefinition,\n Logger,\n ObjectTypeDefinition,\n PrimaryKeyType,\n WhereClause,\n} from \"@osdk/api\";\nimport type { Observer } from \"rxjs\";\nimport { BehaviorSubject } from \"rxjs\";\nimport invariant from \"tiny-invariant\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport { additionalContext, type Client } from \"../../Client.js\";\nimport { DEBUG_REFCOUNTS } from \"../DebugFlags.js\";\nimport type { ListPayload } from \"../ListPayload.js\";\nimport type { ObjectPayload } from \"../ObjectPayload.js\";\nimport type {\n ObserveListOptions,\n ObserveObjectOptions,\n OrderBy,\n Unsubscribable,\n} from \"../ObservableClient.js\";\nimport type { OptimisticBuilder } from \"../OptimisticBuilder.js\";\nimport { ActionApplication } from \"./ActionApplication.js\";\nimport type { CacheKey } from \"./CacheKey.js\";\nimport { CacheKeys } from \"./CacheKeys.js\";\nimport type { Canonical } from \"./Canonical.js\";\nimport {\n type Changes,\n createChangedObjects,\n DEBUG_ONLY__changesToString,\n} from \"./Changes.js\";\nimport { Entry, Layer } from \"./Layer.js\";\nimport type { ListCacheKey, ListQueryOptions } from \"./ListQuery.js\";\nimport { isListCacheKey, ListQuery } from \"./ListQuery.js\";\nimport type { ObjectCacheKey } from \"./ObjectQuery.js\";\nimport { ObjectQuery } from \"./ObjectQuery.js\";\nimport { type OptimisticId } from \"./OptimisticId.js\";\nimport { OrderByCanonicalizer } from \"./OrderByCanonicalizer.js\";\nimport type { Query } from \"./Query.js\";\nimport { RefCounts } from \"./RefCounts.js\";\nimport type { SimpleWhereClause } from \"./SimpleWhereClause.js\";\nimport { WhereClauseCanonicalizer } from \"./WhereClauseCanonicalizer.js\";\n\n/*\n Work still to do:\n - [x] testing for optimistic writes\n - [x] automatic invalidation of actions\n - [x] automatic optimistic list updates\n - [x] useOsdkObjects\n - [x] imply offline for objects passed directly\n - [x] websocket subscriptions\n - [ ] links\n - [x] add pagination\n - [ ] sub-selection support\n - [ ] interfaces\n - [ ] setup defaults\n - [ ] reduce updates in react\n*/\n\nexport interface SubjectPayload<KEY extends CacheKey> extends Entry<KEY> {\n isOptimistic: boolean;\n}\n\nexport interface BatchContext {\n changes: Changes;\n createLayerIfNeeded: () => void;\n optimisticWrite: boolean;\n\n write: <K extends CacheKey<string, any, any>>(\n k: K,\n v: Entry<K>[\"value\"],\n status: Entry<K>[\"status\"],\n ) => Entry<K>;\n\n read: <K extends CacheKey<string, any, any>>(\n k: K,\n ) => Entry<K> | undefined;\n}\n\ninterface UpdateOptions {\n optimisticId?: OptimisticId;\n}\n\nexport namespace Store {\n export interface ApplyActionOptions {\n optimisticUpdate?: (ctx: OptimisticBuilder) => void;\n }\n}\n\nfunction createInitEntry(cacheKey: CacheKey): Entry<any> {\n return {\n cacheKey,\n status: \"init\",\n value: undefined,\n lastUpdated: 0,\n };\n}\n\n/*\n Notes:\n - Subjects are one per type per store (by cache key)\n - Data is one per layer per cache key\n*/\n\nexport class Store {\n whereCanonicalizer: WhereClauseCanonicalizer = new WhereClauseCanonicalizer();\n orderByCanonicalizer: OrderByCanonicalizer = new OrderByCanonicalizer();\n #truthLayer: Layer = new Layer(undefined, undefined);\n #topLayer: Layer;\n client: Client;\n\n /** @internal */\n logger?: Logger;\n\n // we can use a regular Map here because the refCounting will\n // handle cleanup.\n #queries: Map<\n CacheKey,\n Query<any, any, any>\n > = new Map();\n\n #cacheKeyToSubject = new WeakMap<\n CacheKey<string, any, any>,\n BehaviorSubject<SubjectPayload<any>>\n >();\n #cacheKeys: CacheKeys;\n\n #refCounts = new RefCounts<CacheKey>(\n DEBUG_REFCOUNTS ? 15_000 : 60_000,\n (k) => this.#cleanupCacheKey(k),\n );\n\n // we are currently only using this for debug logging and should just remove it in the future if that\n // continues to be true\n #finalizationRegistry: FinalizationRegistry<() => void>;\n\n constructor(client: Client) {\n this.client = client;\n this.logger = client[additionalContext].logger?.child({}, {\n msgPrefix: \"Store\",\n });\n this.#topLayer = this.#truthLayer;\n this.#cacheKeys = new CacheKeys(\n this.whereCanonicalizer,\n this.orderByCanonicalizer,\n (k) => {\n if (DEBUG_REFCOUNTS) {\n const cacheKeyType = k.type;\n const otherKeys = k.otherKeys;\n // eslint-disable-next-line no-console\n console.log(\n `CacheKeys.onCreate(${cacheKeyType}, ${JSON.stringify(otherKeys)})`,\n );\n\n this.#finalizationRegistry.register(k, () => {\n // eslint-disable-next-line no-console\n console.log(\n `CacheKey Finalization(${cacheKeyType}, ${\n JSON.stringify(otherKeys)\n })`,\n );\n });\n }\n\n this.#refCounts.register(k);\n },\n );\n\n setInterval(() => {\n this.#refCounts.gc();\n }, 1000);\n\n this.#finalizationRegistry = new FinalizationRegistry<() => void>(\n (cleanupCallback) => {\n try {\n cleanupCallback();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Caught an error while running a finalization callback\",\n e,\n );\n }\n },\n );\n }\n\n /**\n * Called after a key is no longer retained and the timeout has elapsed\n * @param key\n */\n #cleanupCacheKey = (key: CacheKey<string, any, any>) => {\n const subject = this.peekSubject(key);\n\n if (DEBUG_REFCOUNTS) {\n // eslint-disable-next-line no-console\n console.log(\n `CacheKey cleaning up (${\n JSON.stringify({\n closed: subject?.closed,\n observed: subject?.observed,\n })\n })`,\n JSON.stringify([key.type, ...key.otherKeys], null, 2),\n );\n }\n this.#cacheKeys.remove(key);\n if (process.env.NODE_ENV !== \"production\") {\n invariant(subject);\n }\n\n if (subject) {\n subject.complete();\n this.#cacheKeyToSubject.delete(key);\n }\n\n this.#queries.get(key)?.dispose();\n this.#queries.delete(key);\n };\n\n applyAction: <Q extends ActionDefinition<any>>(\n action: Q,\n args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0],\n opts?: Store.ApplyActionOptions,\n ) => Promise<ActionEditResponse> = async (action, args, opts) => {\n return await new ActionApplication(this).applyAction(action, args, opts);\n };\n\n removeLayer(layerId: OptimisticId): void {\n invariant(\n layerId != null,\n \"undefined is the reserved layerId for the truth layer\",\n );\n // 1. collect all cache keys for a given layerId\n let currentLayer: Layer | undefined = this.#topLayer;\n const cacheKeys = new Map<CacheKey<string, any, any>, Entry<any>>();\n while (currentLayer != null && currentLayer.parentLayer != null) {\n if (currentLayer.layerId === layerId) {\n for (const [k, v] of currentLayer.entries()) {\n if (cacheKeys.has(k)) continue;\n cacheKeys.set(k, v);\n }\n }\n\n currentLayer = currentLayer.parentLayer;\n }\n\n // 2. remove the layers from the chain\n this.#topLayer = this.#topLayer.removeLayer(layerId);\n\n // 3. check each cache key to see if it is different in the new chain\n for (const [k, oldEntry] of cacheKeys) {\n const currentEntry = this.#topLayer.get(k);\n\n // 4. if different, update the subject\n if (oldEntry !== currentEntry) {\n const x = currentEntry ?? createInitEntry(k);\n // We are going to be pretty lazy here and just re-emit the value.\n // In the future it may benefit us to deep equal check her but I think\n // the subjects are effectively doing this anyway.\n this.peekSubject(k)?.next(\n {\n // eslint-disable-next-line @typescript-eslint/no-misused-spread\n ...(currentEntry ?? createInitEntry(k)),\n isOptimistic:\n currentEntry?.value !== this.#truthLayer.get(k)?.value,\n },\n );\n }\n }\n }\n\n getCacheKey<K extends CacheKey<string, any, any>>(\n type: K[\"type\"],\n ...args: K[\"__cacheKey\"][\"args\"]\n ): K {\n return this.#refCounts.register(this.#cacheKeys.get(type, ...args));\n }\n\n peekSubject = <KEY extends CacheKey<string, any, any>>(\n cacheKey: KEY,\n ):\n | BehaviorSubject<SubjectPayload<KEY>>\n | undefined =>\n {\n return this.#cacheKeyToSubject.get(cacheKey);\n };\n\n getSubject = <KEY extends CacheKey<string, any, any>>(\n cacheKey: KEY,\n ): BehaviorSubject<SubjectPayload<KEY>> => {\n let subject = this.#cacheKeyToSubject.get(cacheKey);\n if (!subject) {\n const initialValue: Entry<KEY> = this.#topLayer.get(cacheKey)\n ?? createInitEntry(cacheKey);\n\n subject = new BehaviorSubject({\n // eslint-disable-next-line @typescript-eslint/no-misused-spread\n ...initialValue,\n isOptimistic:\n initialValue.value !== this.#truthLayer.get(cacheKey)?.value,\n });\n this.#cacheKeyToSubject.set(cacheKey, subject);\n }\n\n return subject;\n };\n\n public canonicalizeWhereClause<\n T extends ObjectTypeDefinition | InterfaceDefinition,\n >(\n where: WhereClause<T>,\n ): Canonical<SimpleWhereClause> {\n return this.whereCanonicalizer.canonicalize(where);\n }\n\n public observeObject<T extends ObjectTypeDefinition | InterfaceDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n options: ObserveObjectOptions<T>,\n subFn: Observer<ObjectPayload>,\n ): Unsubscribable {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n const query = this.getObjectQuery(apiName, pk);\n this.retain(query.cacheKey);\n\n if (options.mode !== \"offline\") {\n query.revalidate(options.mode === \"force\")\n .catch(e => {\n subFn.error(e);\n // we don't want observeObject() to return a promise,\n // so we settle for logging an error here instead of\n // dropping it on the floor.\n if (this.logger) {\n this.logger.error(\"Unhandled error in observeObject\", e);\n } else {\n throw e;\n }\n });\n }\n const sub = query.subscribe(subFn);\n\n return {\n unsubscribe: () => {\n sub.unsubscribe();\n this.release(query.cacheKey);\n },\n };\n }\n\n public observeList<T extends ObjectTypeDefinition | InterfaceDefinition>(\n options: ObserveListOptions<T>,\n subFn: Observer<ListPayload>,\n ): Unsubscribable {\n // the ListQuery represents the shared state of the list\n const query = this.getListQuery(\n options.type,\n options.where ?? {},\n options.orderBy ?? {},\n options,\n );\n this.retain(query.cacheKey);\n\n if (options.mode !== \"offline\") {\n query.revalidate(options.mode === \"force\").catch((x: unknown) => {\n subFn.error(x);\n });\n }\n const sub = query.subscribe(subFn);\n\n if (options.streamUpdates) {\n query.registerStreamUpdates(sub);\n }\n\n return {\n unsubscribe: () => {\n sub.unsubscribe();\n this.release(query.cacheKey);\n },\n };\n }\n\n peekQuery<K extends CacheKey>(\n cacheKey: K,\n ): K[\"__cacheKey\"][\"query\"] | undefined {\n return this.#queries.get(cacheKey) as K[\"__cacheKey\"][\"query\"] | undefined;\n }\n\n #getQuery<K extends CacheKey>(\n cacheKey: K,\n createQuery: () => K[\"__cacheKey\"][\"query\"],\n ): K[\"__cacheKey\"][\"query\"] {\n let query = this.peekQuery(cacheKey);\n if (!query) {\n query = createQuery();\n this.#queries.set(cacheKey, query);\n }\n return query;\n }\n\n public getListQuery<T extends ObjectTypeDefinition | InterfaceDefinition>(\n def: Pick<T, \"type\" | \"apiName\">,\n where: WhereClause<T>,\n orderBy: Record<string, \"asc\" | \"desc\" | undefined>,\n opts: ListQueryOptions,\n ): ListQuery {\n const { apiName, type } = def;\n\n const canonWhere = this.whereCanonicalizer.canonicalize(where);\n const canonOrderBy = this.orderByCanonicalizer.canonicalize(orderBy);\n const listCacheKey = this.getCacheKey<ListCacheKey>(\n \"list\",\n type,\n apiName,\n canonWhere,\n canonOrderBy,\n );\n\n return this.#getQuery(listCacheKey, () => {\n return new ListQuery(\n this,\n this.getSubject(listCacheKey),\n type,\n apiName,\n canonWhere,\n canonOrderBy,\n listCacheKey,\n opts,\n );\n });\n }\n\n public getObjectQuery<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n ): ObjectQuery {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n const objectCacheKey = this.getCacheKey<ObjectCacheKey>(\n \"object\",\n apiName,\n pk,\n );\n\n return this.#getQuery(objectCacheKey, () =>\n new ObjectQuery(\n this,\n this.getSubject(objectCacheKey),\n apiName,\n pk,\n objectCacheKey,\n { dedupeInterval: 0 },\n ));\n }\n\n public getValue<K extends CacheKey<string, any, any>>(\n cacheKey: K,\n ): Entry<K> | undefined {\n return this.#topLayer.get(cacheKey);\n }\n\n batch = <X>(\n { optimisticId, changes = createChangedObjects() }: {\n optimisticId?: OptimisticId;\n changes?: Changes;\n },\n batchFn: (batchContext: BatchContext) => X,\n ): {\n batchResult: BatchContext;\n retVal: X;\n changes: Changes;\n } => {\n invariant(\n optimisticId === undefined || !!optimisticId,\n \"optimistic must be undefined or not falsy\",\n );\n\n let needsLayer = optimisticId !== undefined;\n const batchContext: BatchContext = {\n changes,\n createLayerIfNeeded: () => {\n if (needsLayer) {\n this.#topLayer = this.#topLayer.addLayer(optimisticId);\n needsLayer = false;\n }\n },\n optimisticWrite: !!optimisticId,\n write: (cacheKey, value, status) => {\n const oldTopValue = this.#topLayer.get(cacheKey);\n\n if (optimisticId) batchContext.createLayerIfNeeded();\n\n const writeLayer = optimisticId\n ? this.#topLayer\n : this.#truthLayer;\n const newValue = new Entry(\n cacheKey,\n value,\n Date.now(),\n status,\n );\n\n writeLayer.set(cacheKey, newValue);\n\n const newTopValue = this.#topLayer.get(cacheKey);\n\n if (oldTopValue !== newTopValue) {\n this.#cacheKeyToSubject.get(cacheKey)?.next({\n // eslint-disable-next-line @typescript-eslint/no-misused-spread\n ...newValue,\n isOptimistic:\n newTopValue?.value !== this.#truthLayer.get(cacheKey)?.value,\n });\n }\n\n return newValue;\n },\n read: (cacheKey) => {\n return optimisticId\n ? this.#topLayer.get(cacheKey)\n : this.#truthLayer.get(cacheKey);\n },\n };\n\n const retVal = batchFn(batchContext);\n this.maybeRevalidateQueries(changes, optimisticId).catch(e => {\n // we don't want batch() to return a promise,\n // so we settle for logging an error here instead of\n // dropping it on the floor.\n if (this.logger) {\n this.logger.error(\"Unhandled error in batch\", e);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Unhandled error in batch\", e);\n throw e;\n }\n });\n\n return {\n batchResult: batchContext,\n retVal: retVal,\n changes: batchContext.changes,\n };\n };\n\n public invalidateObject<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n pk: PrimaryKeyType<T>,\n ): Promise<unknown> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n\n return this.getObjectQuery(apiName, pk)\n .revalidate(/* force */ true);\n }\n\n async maybeRevalidateQueries(\n changes: Changes,\n optimisticId?: OptimisticId | undefined,\n ): Promise<void> {\n if (changes.isEmpty()) {\n if (process.env.NODE_ENV !== \"production\") {\n // todo\n this.logger?.child({ methodName: \"maybeRevalidateQueries\" }).debug(\n \"No changes, aborting\",\n );\n }\n return;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n // todo\n this.logger?.child({ methodName: \"maybeRevalidateQueries\" }).debug(\n DEBUG_ONLY__changesToString(changes),\n { optimisticId },\n );\n }\n\n try {\n const promises: Array<Promise<unknown>> = [];\n for (const cacheKey of this.#queries.keys()) {\n const promise = this.peekQuery(cacheKey)?.maybeUpdateAndRevalidate?.(\n changes,\n optimisticId,\n );\n if (promise) promises.push(promise);\n }\n await Promise.all(promises);\n } finally {\n if (process.env.NODE_ENV !== \"production\") {\n // todo\n this.logger?.child({ methodName: \"maybeRevalidateQueries\" }).debug(\n \"in finally\",\n DEBUG_ONLY__changesToString(changes),\n );\n }\n }\n }\n\n /**\n * @param apiName\n * @param changes The changes we know about / to update\n * @returns\n */\n public invalidateObjectType<T extends ObjectTypeDefinition>(\n apiName: T[\"apiName\"] | T,\n changes: Changes | undefined,\n ): Promise<void> {\n if (typeof apiName !== \"string\") {\n apiName = apiName.apiName;\n }\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"invalidateObjectType\" }).info(\n changes ? DEBUG_ONLY__changesToString(changes) : void 0,\n );\n }\n\n const promises: Array<Promise<void>> = [];\n\n for (const cacheKey of this.#truthLayer.keys()) {\n if (isListCacheKey(cacheKey)) {\n if (!changes || !changes.modified.has(cacheKey)) {\n const promise = this.peekQuery(cacheKey)?.revalidate(true);\n\n if (promise) {\n promises.push(promise);\n changes?.modified.add(cacheKey);\n }\n }\n }\n }\n\n return Promise.all(promises).then(() => void 0);\n }\n\n retain(cacheKey: CacheKey<string, any, any>): void {\n this.#refCounts.retain(cacheKey);\n }\n\n release(cacheKey: CacheKey<string, any, any>): void {\n this.#refCounts.release(cacheKey);\n }\n}\n\nexport async function invalidateList<T extends ObjectTypeDefinition>(\n store: Store,\n args: {\n type: Pick<T, \"apiName\" | \"type\">;\n where?: WhereClause<T> | SimpleWhereClause;\n orderBy?: OrderBy<T>;\n },\n): Promise<void> {\n const where = store.whereCanonicalizer.canonicalize(args.where ?? {});\n const orderBy = store.orderByCanonicalizer.canonicalize(args.orderBy ?? {});\n\n const cacheKey = store.getCacheKey<ListCacheKey>(\n \"list\",\n args.type.type,\n args.type.apiName,\n where,\n orderBy as Canonical<OrderBy<T>>,\n );\n\n await store.peekQuery(cacheKey)?.revalidate(true);\n}\n"],"mappings":"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","ignoreList":[]}