@osdk/client 2.2.0-beta.9 → 2.3.0-beta.1

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 (385) hide show
  1. package/CHANGELOG.md +370 -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 +36 -13
  17. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  18. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js +133 -0
  19. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  20. package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js +93 -0
  21. package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.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/{esm/util/isOsdkBaseObject.js → browser/intellisense.test.helpers/showsObjectPropertyJsdoc.js} +9 -4
  29. package/build/browser/intellisense.test.helpers/showsObjectPropertyJsdoc.js.map +1 -0
  30. package/build/browser/intellisense.test.js +17 -1
  31. package/build/browser/intellisense.test.js.map +1 -1
  32. package/build/browser/logger/BaseLogger.js +59 -0
  33. package/build/browser/logger/BaseLogger.js.map +1 -0
  34. package/build/browser/logger/BrowserLogger.js +67 -0
  35. package/build/browser/logger/BrowserLogger.js.map +1 -0
  36. package/build/browser/logger/MinimalLogger.js +39 -0
  37. package/build/browser/logger/MinimalLogger.js.map +1 -0
  38. package/build/browser/logger/MinimalLogger.test.js +60 -0
  39. package/build/browser/logger/MinimalLogger.test.js.map +1 -0
  40. package/build/browser/logger/TestLogger.js +56 -0
  41. package/build/browser/logger/TestLogger.js.map +1 -0
  42. package/build/browser/object/attachment.test.js +20 -7
  43. package/build/browser/object/attachment.test.js.map +1 -1
  44. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  45. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +4 -0
  46. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  47. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +44 -33
  48. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  49. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  50. package/build/browser/object/convertWireToOsdkObjects.js +4 -14
  51. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  52. package/build/browser/object/convertWireToOsdkObjects.test.js +39 -33
  53. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  54. package/build/browser/object/fetchPage.js +4 -3
  55. package/build/browser/object/fetchPage.js.map +1 -1
  56. package/build/browser/object/geotimeseriesreference.test.js +56 -134
  57. package/build/browser/object/geotimeseriesreference.test.js.map +1 -1
  58. package/build/browser/object/media.test.js +19 -14
  59. package/build/browser/object/media.test.js.map +1 -1
  60. package/build/browser/object/object.test.js +96 -89
  61. package/build/browser/object/object.test.js.map +1 -1
  62. package/build/browser/object/timeseries.test.js +119 -85
  63. package/build/browser/object/timeseries.test.js.map +1 -1
  64. package/build/browser/objectSet/InterfaceObjectSet.test.js +24 -20
  65. package/build/browser/objectSet/InterfaceObjectSet.test.js.map +1 -1
  66. package/build/browser/objectSet/ObjectSet.test.js +113 -19
  67. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  68. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +2 -2
  69. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  70. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +19 -12
  71. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  72. package/build/browser/objectSet/createObjectSet.js +2 -1
  73. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  74. package/build/browser/observable/internal/ActionApplication.js +4 -4
  75. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  76. package/build/browser/observable/internal/BulkObjectLoader.js +93 -0
  77. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -0
  78. package/build/browser/observable/internal/BulkObjectLoader.test.js +112 -0
  79. package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -0
  80. package/build/browser/observable/internal/ListQuery.js +4 -1
  81. package/build/browser/observable/internal/ListQuery.js.map +1 -1
  82. package/build/browser/observable/internal/ObjectQuery.js +3 -6
  83. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  84. package/build/browser/observable/internal/OptimisticJob.js +1 -1
  85. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  86. package/build/browser/observable/internal/Query.js.map +1 -1
  87. package/build/browser/observable/internal/Store.js +2 -2
  88. package/build/browser/observable/internal/Store.js.map +1 -1
  89. package/build/browser/observable/internal/Store.test.js +215 -206
  90. package/build/browser/observable/internal/Store.test.js.map +1 -1
  91. package/build/browser/observable/internal/objectMatchesWhereClause.js +0 -2
  92. package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
  93. package/build/browser/observable/internal/testUtils.js +4 -3
  94. package/build/browser/observable/internal/testUtils.js.map +1 -1
  95. package/build/browser/ontology/OntologyProvider.js.map +1 -1
  96. package/build/browser/ontology/StandardOntologyProvider.js +12 -5
  97. package/build/browser/ontology/StandardOntologyProvider.js.map +1 -1
  98. package/build/browser/ontology/StandardOntologyProvider.test.js +17 -16
  99. package/build/browser/ontology/StandardOntologyProvider.test.js.map +1 -1
  100. package/build/browser/ontology/loadFullObjectMetadata.js +0 -1
  101. package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
  102. package/build/browser/ontology/loadQueryMetadata.js +5 -2
  103. package/build/browser/ontology/loadQueryMetadata.js.map +1 -1
  104. package/build/browser/public/internal.js +2 -0
  105. package/build/browser/public/internal.js.map +1 -1
  106. package/build/browser/public/unstable-do-not-use.js +1 -0
  107. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  108. package/build/browser/public-utils/osdkConfig.js +49 -0
  109. package/build/browser/public-utils/osdkConfig.js.map +1 -0
  110. package/build/browser/{object/createObjectSpecifierFromPrimaryKey.js → public-utils/vite-env.d.ts} +2 -3
  111. package/build/browser/queries/applyQuery.js +6 -4
  112. package/build/browser/queries/applyQuery.js.map +1 -1
  113. package/build/browser/queries/queries.test.js +93 -27
  114. package/build/browser/queries/queries.test.js.map +1 -1
  115. package/build/browser/queries/types.js.map +1 -1
  116. package/build/browser/tsserver.js.map +1 -1
  117. package/build/browser/util/UserAgent.js +1 -1
  118. package/build/browser/util/extractRdpDefinition.js +140 -0
  119. package/build/browser/util/extractRdpDefinition.js.map +1 -0
  120. package/build/browser/util/extractRdpDefinition.test.js +233 -0
  121. package/build/browser/util/extractRdpDefinition.test.js.map +1 -0
  122. package/build/browser/util/{isOsdkBaseObject.js → isObjectSpecifiersObject.js} +2 -2
  123. package/build/browser/util/isObjectSpecifiersObject.js.map +1 -0
  124. package/build/browser/util/isPoint.js +20 -0
  125. package/build/browser/util/isPoint.js.map +1 -0
  126. package/build/browser/util/objectSpecifierUtils.js +48 -0
  127. package/build/browser/util/objectSpecifierUtils.js.map +1 -0
  128. package/build/browser/util/objectSpecifierUtils.test.js +42 -0
  129. package/build/browser/util/objectSpecifierUtils.test.js.map +1 -0
  130. package/build/browser/util/toDataValue.js +6 -2
  131. package/build/browser/util/toDataValue.js.map +1 -1
  132. package/build/browser/util/toDataValue.test.js +37 -16
  133. package/build/browser/util/toDataValue.test.js.map +1 -1
  134. package/build/browser/util/toDataValueQueries.js +4 -6
  135. package/build/browser/util/toDataValueQueries.js.map +1 -1
  136. package/build/cjs/{Client-DBTcM9gB.d.cts → Client-CgL2LKN9.d.cts} +6 -7
  137. package/build/cjs/{chunk-MCQVHD2F.cjs → chunk-FKI2LO2O.cjs} +232 -68
  138. package/build/cjs/chunk-FKI2LO2O.cjs.map +1 -0
  139. package/build/cjs/{chunk-EY52J5Z4.cjs → chunk-W5PFESFR.cjs} +163 -34
  140. package/build/cjs/chunk-W5PFESFR.cjs.map +1 -0
  141. package/build/cjs/index.cjs +188 -166
  142. package/build/cjs/index.cjs.map +1 -1
  143. package/build/cjs/index.d.cts +4 -24
  144. package/build/cjs/public/internal.cjs +61 -7
  145. package/build/cjs/public/internal.cjs.map +1 -1
  146. package/build/cjs/public/internal.d.cts +50 -3
  147. package/build/cjs/public/unstable-do-not-use.cjs +224 -103
  148. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  149. package/build/cjs/public/unstable-do-not-use.d.cts +12 -3
  150. package/build/esm/MinimalClientContext.js.map +1 -1
  151. package/build/esm/__unstable/ConjureSupport.js.map +1 -1
  152. package/build/esm/actions/ActionValidationError.js +1 -1
  153. package/build/esm/actions/ActionValidationError.js.map +1 -1
  154. package/build/esm/actions/actions.test.js +134 -89
  155. package/build/esm/actions/actions.test.js.map +1 -1
  156. package/build/esm/actions/applyAction.js.map +1 -1
  157. package/build/esm/createClient.js +5 -1
  158. package/build/esm/createClient.js.map +1 -1
  159. package/build/esm/createClient.test.js +14 -6
  160. package/build/esm/createClient.test.js.map +1 -1
  161. package/build/esm/createMinimalClient.js.map +1 -1
  162. package/build/esm/createMinimalClientHelper.js +25 -0
  163. package/build/esm/createMinimalClientHelper.js.map +1 -0
  164. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +36 -13
  165. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  166. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js +133 -0
  167. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  168. package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js +93 -0
  169. package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -0
  170. package/build/esm/fetchMetadata.js +1 -1
  171. package/build/esm/fetchMetadata.js.map +1 -1
  172. package/build/esm/fetchMetadata.test.js +11 -9
  173. package/build/esm/fetchMetadata.test.js.map +1 -1
  174. package/build/esm/index.js +0 -1
  175. package/build/esm/index.js.map +1 -1
  176. package/build/esm/{util/isOsdkObject.js → intellisense.test.helpers/showsObjectPropertyJsdoc.js} +9 -4
  177. package/build/esm/intellisense.test.helpers/showsObjectPropertyJsdoc.js.map +1 -0
  178. package/build/esm/intellisense.test.js +17 -1
  179. package/build/esm/intellisense.test.js.map +1 -1
  180. package/build/esm/logger/BaseLogger.js +59 -0
  181. package/build/esm/logger/BaseLogger.js.map +1 -0
  182. package/build/esm/logger/BrowserLogger.js +67 -0
  183. package/build/esm/logger/BrowserLogger.js.map +1 -0
  184. package/build/esm/logger/MinimalLogger.js +39 -0
  185. package/build/esm/logger/MinimalLogger.js.map +1 -0
  186. package/build/esm/logger/MinimalLogger.test.js +60 -0
  187. package/build/esm/logger/MinimalLogger.test.js.map +1 -0
  188. package/build/esm/logger/TestLogger.js +56 -0
  189. package/build/esm/logger/TestLogger.js.map +1 -0
  190. package/build/esm/object/attachment.test.js +20 -7
  191. package/build/esm/object/attachment.test.js.map +1 -1
  192. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  193. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +4 -0
  194. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  195. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +44 -33
  196. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  197. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  198. package/build/esm/object/convertWireToOsdkObjects.js +4 -14
  199. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  200. package/build/esm/object/convertWireToOsdkObjects.test.js +39 -33
  201. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  202. package/build/esm/object/fetchPage.js +4 -3
  203. package/build/esm/object/fetchPage.js.map +1 -1
  204. package/build/esm/object/geotimeseriesreference.test.js +56 -134
  205. package/build/esm/object/geotimeseriesreference.test.js.map +1 -1
  206. package/build/esm/object/media.test.js +19 -14
  207. package/build/esm/object/media.test.js.map +1 -1
  208. package/build/esm/object/object.test.js +96 -89
  209. package/build/esm/object/object.test.js.map +1 -1
  210. package/build/esm/object/timeseries.test.js +119 -85
  211. package/build/esm/object/timeseries.test.js.map +1 -1
  212. package/build/esm/objectSet/InterfaceObjectSet.test.js +24 -20
  213. package/build/esm/objectSet/InterfaceObjectSet.test.js.map +1 -1
  214. package/build/esm/objectSet/ObjectSet.test.js +113 -19
  215. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  216. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +2 -2
  217. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  218. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +19 -12
  219. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  220. package/build/esm/objectSet/createObjectSet.js +2 -1
  221. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  222. package/build/esm/observable/internal/ActionApplication.js +4 -4
  223. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  224. package/build/esm/observable/internal/BulkObjectLoader.js +93 -0
  225. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -0
  226. package/build/esm/observable/internal/BulkObjectLoader.test.js +112 -0
  227. package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -0
  228. package/build/esm/observable/internal/ListQuery.js +4 -1
  229. package/build/esm/observable/internal/ListQuery.js.map +1 -1
  230. package/build/esm/observable/internal/ObjectQuery.js +3 -6
  231. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  232. package/build/esm/observable/internal/OptimisticJob.js +1 -1
  233. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  234. package/build/esm/observable/internal/Query.js.map +1 -1
  235. package/build/esm/observable/internal/Store.js +2 -2
  236. package/build/esm/observable/internal/Store.js.map +1 -1
  237. package/build/esm/observable/internal/Store.test.js +215 -206
  238. package/build/esm/observable/internal/Store.test.js.map +1 -1
  239. package/build/esm/observable/internal/objectMatchesWhereClause.js +0 -2
  240. package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
  241. package/build/esm/observable/internal/testUtils.js +4 -3
  242. package/build/esm/observable/internal/testUtils.js.map +1 -1
  243. package/build/esm/ontology/OntologyProvider.js.map +1 -1
  244. package/build/esm/ontology/StandardOntologyProvider.js +12 -5
  245. package/build/esm/ontology/StandardOntologyProvider.js.map +1 -1
  246. package/build/esm/ontology/StandardOntologyProvider.test.js +17 -16
  247. package/build/esm/ontology/StandardOntologyProvider.test.js.map +1 -1
  248. package/build/esm/ontology/loadFullObjectMetadata.js +0 -1
  249. package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
  250. package/build/esm/ontology/loadQueryMetadata.js +5 -2
  251. package/build/esm/ontology/loadQueryMetadata.js.map +1 -1
  252. package/build/esm/public/internal.js +2 -0
  253. package/build/esm/public/internal.js.map +1 -1
  254. package/build/esm/public/unstable-do-not-use.js +1 -0
  255. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  256. package/build/esm/public-utils/osdkConfig.js +49 -0
  257. package/build/esm/public-utils/osdkConfig.js.map +1 -0
  258. package/build/esm/{object/createObjectSpecifierFromPrimaryKey.js → public-utils/vite-env.d.ts} +2 -3
  259. package/build/esm/queries/applyQuery.js +6 -4
  260. package/build/esm/queries/applyQuery.js.map +1 -1
  261. package/build/esm/queries/queries.test.js +93 -27
  262. package/build/esm/queries/queries.test.js.map +1 -1
  263. package/build/esm/queries/types.js.map +1 -1
  264. package/build/esm/tsserver.js.map +1 -1
  265. package/build/esm/util/UserAgent.js +1 -1
  266. package/build/esm/util/extractRdpDefinition.js +140 -0
  267. package/build/esm/util/extractRdpDefinition.js.map +1 -0
  268. package/build/esm/util/extractRdpDefinition.test.js +233 -0
  269. package/build/esm/util/extractRdpDefinition.test.js.map +1 -0
  270. package/build/{browser/util/isOsdkObject.js → esm/util/isObjectSpecifiersObject.js} +2 -2
  271. package/build/esm/util/isObjectSpecifiersObject.js.map +1 -0
  272. package/build/esm/util/isPoint.js +20 -0
  273. package/build/esm/util/isPoint.js.map +1 -0
  274. package/build/esm/util/objectSpecifierUtils.js +48 -0
  275. package/build/esm/util/objectSpecifierUtils.js.map +1 -0
  276. package/build/esm/util/objectSpecifierUtils.test.js +42 -0
  277. package/build/esm/util/objectSpecifierUtils.test.js.map +1 -0
  278. package/build/esm/util/toDataValue.js +6 -2
  279. package/build/esm/util/toDataValue.js.map +1 -1
  280. package/build/esm/util/toDataValue.test.js +37 -16
  281. package/build/esm/util/toDataValue.test.js.map +1 -1
  282. package/build/esm/util/toDataValueQueries.js +4 -6
  283. package/build/esm/util/toDataValueQueries.js.map +1 -1
  284. package/build/types/MinimalClientContext.d.ts +1 -1
  285. package/build/types/MinimalClientContext.d.ts.map +1 -1
  286. package/build/types/__unstable/ConjureSupport.d.ts +2 -2
  287. package/build/types/actions/applyAction.d.ts +1 -2
  288. package/build/types/actions/applyAction.d.ts.map +1 -1
  289. package/build/types/createClient.d.ts +1 -1
  290. package/build/types/createClient.d.ts.map +1 -1
  291. package/build/types/createClient.test.d.ts +2 -1
  292. package/build/types/createClient.test.d.ts.map +1 -1
  293. package/build/types/createMinimalClientHelper.d.ts +1 -0
  294. package/build/types/createMinimalClientHelper.d.ts.map +1 -0
  295. package/build/types/derivedProperties/derivedPropertyDefinitionFactory.d.ts +1 -0
  296. package/build/types/derivedProperties/derivedPropertyDefinitionFactory.d.ts.map +1 -0
  297. package/build/types/index.d.ts +4 -6
  298. package/build/types/index.d.ts.map +1 -1
  299. package/build/types/intellisense.test.helpers/showsObjectPropertyJsdoc.d.ts +1 -0
  300. package/build/types/intellisense.test.helpers/showsObjectPropertyJsdoc.d.ts.map +1 -0
  301. package/build/types/logger/BaseLogger.d.ts +33 -0
  302. package/build/types/logger/BaseLogger.d.ts.map +1 -0
  303. package/build/types/logger/BrowserLogger.d.ts +9 -0
  304. package/build/types/logger/BrowserLogger.d.ts.map +1 -0
  305. package/build/types/logger/MinimalLogger.d.ts +9 -0
  306. package/build/types/logger/MinimalLogger.d.ts.map +1 -0
  307. package/build/types/logger/MinimalLogger.test.d.ts +1 -0
  308. package/build/types/logger/MinimalLogger.test.d.ts.map +1 -0
  309. package/build/types/logger/TestLogger.d.ts +14 -0
  310. package/build/types/logger/TestLogger.d.ts.map +1 -0
  311. package/build/types/object/convertWireToOsdkObjects.d.ts +4 -4
  312. package/build/types/object/convertWireToOsdkObjects.d.ts.map +1 -1
  313. package/build/types/object/fetchPage.d.ts.map +1 -1
  314. package/build/types/object/object.test.d.ts.map +1 -1
  315. package/build/types/objectSet/ObjectSet.test.d.ts.map +1 -1
  316. package/build/types/observable/internal/ActionApplication.d.ts +2 -2
  317. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  318. package/build/types/observable/internal/BulkObjectLoader.d.ts +8 -0
  319. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -0
  320. package/build/types/observable/internal/BulkObjectLoader.test.d.ts +1 -0
  321. package/build/types/observable/internal/BulkObjectLoader.test.d.ts.map +1 -0
  322. package/build/types/observable/internal/ListQuery.d.ts.map +1 -1
  323. package/build/types/observable/internal/ObjectQuery.d.ts.map +1 -1
  324. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  325. package/build/types/observable/internal/Query.d.ts +2 -2
  326. package/build/types/observable/internal/Query.d.ts.map +1 -1
  327. package/build/types/observable/internal/Store.d.ts +2 -2
  328. package/build/types/observable/internal/Store.d.ts.map +1 -1
  329. package/build/types/observable/internal/testUtils.d.ts +1 -2
  330. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  331. package/build/types/ontology/OntologyProvider.d.ts +1 -1
  332. package/build/types/ontology/OntologyProvider.d.ts.map +1 -1
  333. package/build/types/ontology/loadQueryMetadata.d.ts +1 -1
  334. package/build/types/ontology/loadQueryMetadata.d.ts.map +1 -1
  335. package/build/types/public/internal.d.ts +2 -0
  336. package/build/types/public/internal.d.ts.map +1 -1
  337. package/build/types/public/unstable-do-not-use.d.ts +4 -2
  338. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  339. package/build/types/public-utils/osdkConfig.d.ts +8 -0
  340. package/build/types/public-utils/osdkConfig.d.ts.map +1 -0
  341. package/build/types/public-utils/vite-env.d.d.ts +3 -0
  342. package/build/types/public-utils/vite-env.d.d.ts.map +1 -0
  343. package/build/types/queries/applyQuery.d.ts +2 -2
  344. package/build/types/queries/applyQuery.d.ts.map +1 -1
  345. package/build/types/queries/types.d.ts +1 -1
  346. package/build/types/queries/types.d.ts.map +1 -1
  347. package/build/types/tsserver.d.ts +1 -1
  348. package/build/types/tsserver.d.ts.map +1 -1
  349. package/build/types/util/extractRdpDefinition.d.ts +4 -0
  350. package/build/types/util/extractRdpDefinition.d.ts.map +1 -0
  351. package/build/types/util/extractRdpDefinition.test.d.ts +1 -0
  352. package/build/types/util/extractRdpDefinition.test.d.ts.map +1 -0
  353. package/build/types/util/isObjectSpecifiersObject.d.ts +5 -0
  354. package/build/types/util/isObjectSpecifiersObject.d.ts.map +1 -0
  355. package/build/types/util/isPoint.d.ts +1 -0
  356. package/build/types/util/isPoint.d.ts.map +1 -0
  357. package/build/types/util/objectSpecifierUtils.d.ts +24 -0
  358. package/build/types/util/objectSpecifierUtils.d.ts.map +1 -0
  359. package/build/types/util/objectSpecifierUtils.test.d.ts +1 -0
  360. package/build/types/util/objectSpecifierUtils.test.d.ts.map +1 -0
  361. package/package.json +19 -18
  362. package/build/browser/Logger.js +0 -2
  363. package/build/browser/Logger.js.map +0 -1
  364. package/build/browser/object/createObjectSpecifierFromPrimaryKey.js.map +0 -1
  365. package/build/browser/util/isOsdkBaseObject.js.map +0 -1
  366. package/build/browser/util/isOsdkObject.js.map +0 -1
  367. package/build/cjs/chunk-EY52J5Z4.cjs.map +0 -1
  368. package/build/cjs/chunk-MCQVHD2F.cjs.map +0 -1
  369. package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
  370. package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
  371. package/build/cjs/graphql-RGM5SRWV.cjs +0 -10532
  372. package/build/cjs/graphql-RGM5SRWV.cjs.map +0 -1
  373. package/build/esm/Logger.js +0 -2
  374. package/build/esm/Logger.js.map +0 -1
  375. package/build/esm/object/createObjectSpecifierFromPrimaryKey.js.map +0 -1
  376. package/build/esm/util/isOsdkBaseObject.js.map +0 -1
  377. package/build/esm/util/isOsdkObject.js.map +0 -1
  378. package/build/types/Logger.d.ts +0 -17
  379. package/build/types/Logger.d.ts.map +0 -1
  380. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts +0 -2
  381. package/build/types/object/createObjectSpecifierFromPrimaryKey.d.ts.map +0 -1
  382. package/build/types/util/isOsdkBaseObject.d.ts +0 -2
  383. package/build/types/util/isOsdkBaseObject.d.ts.map +0 -1
  384. package/build/types/util/isOsdkObject.d.ts +0 -2
  385. package/build/types/util/isOsdkObject.d.ts.map +0 -1
@@ -14,21 +14,21 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { $ontologyRid, createOffice, Employee, FooInterface, Todo } from "@osdk/client.test.ontology";
18
- import { wireObjectTypeFullMetadataToSdkObjectMetadata } from "@osdk/generator-converters";
19
- import { apiServer, stubData } from "@osdk/shared.test";
17
+ import { editTodo, Employee, FooInterface, Todo } from "@osdk/client.test.ontology";
18
+ import { ActionTypeBuilder, FauxFoundry, ontologies, startNodeApiServer, stubData } from "@osdk/shared.test";
20
19
  import chalk from "chalk";
20
+ import invariant from "tiny-invariant";
21
21
  import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, vitest } from "vitest";
22
+ import { ActionValidationError } from "../../actions/ActionValidationError.js";
22
23
  import { createClient } from "../../createClient.js";
23
- import { createMinimalClient } from "../../createMinimalClient.js";
24
- import { createObjectSet } from "../../objectSet/createObjectSet.js";
25
- import { InterfaceDefinitions } from "../../ontology/OntologyProvider.js";
24
+ import { TestLogger } from "../../logger/TestLogger.js";
26
25
  import { createOptimisticId } from "./OptimisticId.js";
27
26
  import { runOptimisticJob } from "./OptimisticJob.js";
28
27
  import { invalidateList, Store } from "./Store.js";
29
- import { applyCustomMatchers, createClientMockHelper, createDefer, createTestLogger, expectNoMoreCalls, expectSingleListCallAndClear, expectSingleObjectCallAndClear, getObject, mockListSubCallback, mockSingleSubCallback, objectPayloadContaining, updateList, updateObject, waitForCall } from "./testUtils.js";
28
+ import { applyCustomMatchers, createClientMockHelper, createDefer, expectNoMoreCalls, expectSingleListCallAndClear, expectSingleObjectCallAndClear, getObject, mockListSubCallback, mockSingleSubCallback, objectPayloadContaining, updateList, updateObject, waitForCall } from "./testUtils.js";
29
+ const JOHN_DOE_ID = 50030;
30
30
  const defer = createDefer();
31
- const logger = createTestLogger({});
31
+ const logger = new TestLogger();
32
32
  beforeAll(() => {
33
33
  vi.setConfig({
34
34
  fakeTimers: {
@@ -59,6 +59,42 @@ function testStage(s) {
59
59
  console.log(chalk.bgYellow(`Test Stage: ${s}`));
60
60
  }
61
61
  applyCustomMatchers();
62
+ function setupOntology(fauxFoundry) {
63
+ const fauxOntology = fauxFoundry.getDefaultOntology();
64
+ ontologies.addEmployeeOntology(fauxOntology);
65
+ fauxFoundry.getDefaultOntology().registerObjectType(stubData.todoWithLinkTypes);
66
+ fauxFoundry.getDefaultOntology().registerActionType(stubData.editTodo.actionTypeV2, (b, payload) => {
67
+ const {
68
+ id,
69
+ ...other
70
+ } = payload.parameters;
71
+ b.modifyObject(Todo.apiName, id, {
72
+ ...other
73
+ });
74
+ });
75
+ }
76
+ function setupSomeEmployees(fauxFoundry) {
77
+ const dataStore = fauxFoundry.getDefaultDataStore();
78
+ dataStore.registerObject(Employee, {
79
+ employeeId: 1
80
+ });
81
+ dataStore.registerObject(Employee, {
82
+ employeeId: 2
83
+ });
84
+ dataStore.registerObject(Employee, {
85
+ $apiName: "Employee",
86
+ employeeId: 3
87
+ });
88
+ dataStore.registerObject(Employee, {
89
+ $apiName: "Employee",
90
+ employeeId: 4
91
+ });
92
+ dataStore.registerObject(Employee, {
93
+ $apiName: "Employee",
94
+ employeeId: JOHN_DOE_ID,
95
+ fullName: "John Doe"
96
+ });
97
+ }
62
98
  describe(Store, () => {
63
99
  describe("with mock server", () => {
64
100
  let client;
@@ -66,23 +102,27 @@ describe(Store, () => {
66
102
  let employeesAsServerReturns;
67
103
  let mutatedEmployees;
68
104
  beforeAll(async () => {
69
- apiServer.listen();
70
- client = createClient("https://stack.palantir.com", $ontologyRid, async () => "myAccessToken", {
105
+ const testSetup = startNodeApiServer(new FauxFoundry("https://stack.palantir.com/"), createClient, {
71
106
  logger
72
107
  });
108
+ ({
109
+ client
110
+ } = testSetup);
111
+ setupOntology(testSetup.fauxFoundry);
112
+ setupSomeEmployees(testSetup.fauxFoundry);
73
113
  employeesAsServerReturns = (await client(Employee).fetchPage()).data;
74
114
  mutatedEmployees = [employeesAsServerReturns[0], employeesAsServerReturns[1].$clone({
75
115
  fullName: "foo"
76
116
  }), ...employeesAsServerReturns.slice(2)];
77
- });
78
- afterAll(() => {
79
- apiServer.close();
117
+ return () => {
118
+ testSetup.apiServer.close();
119
+ };
80
120
  });
81
121
  beforeEach(() => {
82
122
  cache = new Store(client);
83
- });
84
- afterEach(() => {
85
- cache = undefined;
123
+ return () => {
124
+ cache = undefined;
125
+ };
86
126
  });
87
127
  it("basic single object works", async () => {
88
128
  const emp = employeesAsServerReturns[0];
@@ -362,11 +402,11 @@ describe(Store, () => {
362
402
  subFn2.error.mockClear();
363
403
  });
364
404
  const likeEmployee50030 = expect.objectContaining({
365
- $primaryKey: 50030,
405
+ $primaryKey: JOHN_DOE_ID,
366
406
  fullName: "John Doe"
367
407
  });
368
408
  it("fetches and updates twice", async () => {
369
- defer(cache.observeObject(Employee, 50030, {
409
+ defer(cache.observeObject(Employee, JOHN_DOE_ID, {
370
410
  mode: "force"
371
411
  }, subFn1));
372
412
  expect(subFn1.next).toHaveBeenCalledExactlyOnceWith(objectPayloadContaining({
@@ -382,7 +422,7 @@ describe(Store, () => {
382
422
  }));
383
423
  const firstLoad = subFn1.next.mock.lastCall?.[0];
384
424
  subFn1.next.mockClear();
385
- defer(cache.observeObject(Employee, 50030, {
425
+ defer(cache.observeObject(Employee, JOHN_DOE_ID, {
386
426
  mode: "force"
387
427
  }, subFn2));
388
428
  expectSingleObjectCallAndClear(subFn1, likeEmployee50030, "loading");
@@ -409,13 +449,13 @@ describe(Store, () => {
409
449
  subFn.complete.mockClear();
410
450
  subFn.next.mockClear();
411
451
  subFn.error.mockClear();
412
- sub = defer(cache.observeObject(Employee, 50030, {
452
+ sub = defer(cache.observeObject(Employee, JOHN_DOE_ID, {
413
453
  mode: "offline"
414
454
  }, subFn));
415
455
  expectSingleObjectCallAndClear(subFn, undefined, "init");
416
456
  });
417
457
  it("does basic observation and unsubscribe", async () => {
418
- const emp = employeesAsServerReturns[0];
458
+ const emp = employeesAsServerReturns.find(x => x.$primaryKey === JOHN_DOE_ID);
419
459
 
420
460
  // force an update
421
461
  updateObject(cache, emp);
@@ -437,7 +477,7 @@ describe(Store, () => {
437
477
  expect(subFn.next).not.toHaveBeenCalled();
438
478
  });
439
479
  it("observes with list update", async () => {
440
- const emp = employeesAsServerReturns[0];
480
+ const emp = employeesAsServerReturns.find(x => x.$primaryKey === JOHN_DOE_ID);
441
481
 
442
482
  // force an update
443
483
  updateObject(cache, emp.$clone({
@@ -496,7 +536,7 @@ describe(Store, () => {
496
536
  status: "loaded"
497
537
  });
498
538
  await waitForCall(ifaceSub);
499
- expectSingleListCallAndClear(ifaceSub, employeesAsServerReturns.filter(o => o.$primaryKey === 50050), {
539
+ expectSingleListCallAndClear(ifaceSub, employeesAsServerReturns, {
500
540
  status: "loaded"
501
541
  });
502
542
  expectNoMoreCalls(listSub1);
@@ -630,32 +670,91 @@ describe(Store, () => {
630
670
  });
631
671
  describe("with mock client", () => {
632
672
  let client;
633
- let mockClient;
673
+ let apiServer;
674
+ let fauxFoundry;
634
675
  let store;
676
+ beforeAll(async () => {
677
+ const testSetup = startNodeApiServer(new FauxFoundry("https://stack.palantir.com/", undefined, {
678
+ logger
679
+ }), createClient, {
680
+ logger
681
+ });
682
+ ({
683
+ client,
684
+ apiServer,
685
+ fauxFoundry
686
+ } = testSetup);
687
+ setupOntology(testSetup.fauxFoundry);
688
+ return () => {
689
+ testSetup.apiServer.close();
690
+ };
691
+ });
692
+ beforeEach(() => {
693
+ apiServer.resetHandlers();
694
+ });
635
695
  beforeEach(async () => {
636
- mockClient = createClientMockHelper();
637
- client = mockClient.client;
638
696
  store = new Store(client);
639
697
  });
640
698
  it("properly fires error handler for a list", async () => {
641
- const error = new Error("A faux error");
642
- mockClient.mockFetchPageOnce().reject(error);
643
699
  const sub = mockListSubCallback();
644
700
  store.observeList({
645
701
  type: Employee,
646
- where: {},
702
+ where: {
703
+ aBadPropertyThatDoesNotExist: "aBadValue"
704
+ },
647
705
  orderBy: {}
648
706
  }, sub);
649
707
  await waitForCall(sub.error, 1);
650
708
  expect(sub.error).toHaveBeenCalled();
651
709
  expect(sub.next).not.toHaveBeenCalled();
652
710
  });
711
+ describe("batching", () => {
712
+ it("groups requests for single objects", async () => {
713
+ fauxFoundry.getDefaultDataStore().registerObject(Employee, {
714
+ $apiName: "Employee",
715
+ employeeId: 0
716
+ });
717
+ fauxFoundry.getDefaultDataStore().registerObject(Employee, {
718
+ $apiName: "Employee",
719
+ employeeId: 1
720
+ });
721
+ const a = mockSingleSubCallback();
722
+ const b = mockSingleSubCallback();
723
+ defer(store.observeObject(Employee, 0, {}, a));
724
+ defer(store.observeObject(Employee, 1, {}, b));
725
+ await a.expectLoadingAndLoaded({
726
+ loading: objectPayloadContaining({
727
+ status: "loading",
728
+ object: undefined
729
+ }),
730
+ loaded: objectPayloadContaining({
731
+ object: expect.objectContaining({
732
+ $primaryKey: 0
733
+ })
734
+ })
735
+ });
736
+ await b.expectLoadingAndLoaded({
737
+ loading: objectPayloadContaining({
738
+ status: "loading",
739
+ object: undefined
740
+ }),
741
+ loaded: objectPayloadContaining({
742
+ object: expect.objectContaining({
743
+ $primaryKey: 1
744
+ })
745
+ })
746
+ });
747
+ });
748
+ });
653
749
  describe("actions", () => {
750
+ beforeEach(() => {
751
+ fauxFoundry.getDefaultDataStore().clear();
752
+ });
654
753
  it("properly invalidates objects", async () => {
655
- // after the below `observeObject`, the cache will need to load from the server
656
- mockClient.mockFetchOneOnce().resolve({
754
+ fauxFoundry.getDefaultDataStore().registerObject(Todo, {
657
755
  $apiName: "Todo",
658
- $primaryKey: 0
756
+ id: 0,
757
+ text: "og title"
659
758
  });
660
759
  const todoSubFn = mockSingleSubCallback();
661
760
  defer(store.observeObject(Todo, 0, {}, todoSubFn));
@@ -672,22 +771,10 @@ describe(Store, () => {
672
771
  });
673
772
 
674
773
  // at this point we have an observation properly set up
675
- mockClient.mockApplyActionOnce().resolve({
676
- addedObjects: [{
677
- objectType: "Todo",
678
- primaryKey: 0
679
- }]
680
- });
681
-
682
- // after we apply the action, the object is invalidated and gets re-requested
683
- mockClient.mockFetchOneOnce().resolve({
684
- $primaryKey: 0,
685
- $apiName: "Todo",
774
+ await store.applyAction(editTodo, {
775
+ id: 0,
686
776
  text: "hello there kind sir"
687
777
  });
688
- await store.applyAction(createOffice, {
689
- officeId: "whatever"
690
- });
691
778
  await todoSubFn.expectLoadingAndLoaded({
692
779
  loading: objectPayloadContaining({
693
780
  status: "loading"
@@ -700,15 +787,17 @@ describe(Store, () => {
700
787
  });
701
788
  });
702
789
  it("rolls back optimistic updates on error", async () => {
703
- const fauxObject = {
704
- $apiName: "Todo",
705
- $objectType: "Todo",
706
- $primaryKey: 0,
707
- $title: "does not matter"
708
- };
790
+ const fauxObject = expect.objectContaining({
791
+ id: 0,
792
+ text: "does not matter"
793
+ });
709
794
 
710
- // after the below `observeObject`, the cache will need to load from the server
711
- mockClient.mockFetchOneOnce().resolve(fauxObject);
795
+ // set the object in the "backend"
796
+ fauxFoundry.getDefaultDataStore().registerObject(Todo, {
797
+ $apiName: "Todo",
798
+ id: 0,
799
+ text: "does not matter"
800
+ });
712
801
  const todoSubFn = mockSingleSubCallback();
713
802
  defer(store.observeObject(Todo, 0, {}, todoSubFn));
714
803
  await todoSubFn.expectLoadingAndLoaded({
@@ -723,94 +812,53 @@ describe(Store, () => {
723
812
  isOptimistic: false
724
813
  })
725
814
  });
815
+ const object = store.getValue(store.getCacheKey("object", "Todo", 0))?.value;
816
+ !object ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
726
817
 
727
818
  // at this point we have an observation properly set up
728
- const applyActionResult = mockClient.mockApplyActionOnce();
729
- const actionPromise = store.applyAction(createOffice, {
730
- officeId: "whatever"
819
+ await expect(store.applyAction(editTodo, {
820
+ id: "not an id that exists"
731
821
  }, {
732
822
  optimisticUpdate: ctx => {
733
- ctx.updateObject({
734
- ...fauxObject,
823
+ ctx.updateObject(object.$clone({
735
824
  text: "optimistic"
736
- });
825
+ }));
737
826
  }
827
+ })).rejects.toThrow(ActionValidationError);
828
+ await waitForCall(todoSubFn, 2);
829
+ await todoSubFn.expectLoadingAndLoaded({
830
+ loading: objectPayloadContaining({
831
+ status: "loading",
832
+ object: expect.objectContaining({
833
+ id: 0,
834
+ text: "optimistic"
835
+ }),
836
+ isOptimistic: true
837
+ }),
838
+ loaded: objectPayloadContaining({
839
+ object: fauxObject,
840
+ status: "loaded",
841
+ isOptimistic: false
842
+ })
738
843
  });
739
- await waitForCall(todoSubFn, 1);
740
- expect(todoSubFn.next).toHaveBeenCalledExactlyOnceWith(objectPayloadContaining({
741
- object: {
742
- ...fauxObject,
743
- text: "optimistic"
744
- },
745
- status: "loading",
746
- isOptimistic: true
747
- }));
748
- todoSubFn.next.mockClear();
749
-
750
- // let the action error out
751
- applyActionResult.reject("an error thrown");
752
- await expect(actionPromise).rejects.toThrow("an error thrown");
753
-
754
- // back to the original object
755
- await waitForCall(todoSubFn, 1);
756
- expect(todoSubFn.next).toHaveBeenCalledExactlyOnceWith(objectPayloadContaining({
757
- object: fauxObject,
758
- status: "loaded",
759
- isOptimistic: false
760
- }));
761
844
  });
762
845
  });
763
846
  describe("orderBy", async () => {
764
- const ontologyProvider = {
765
- getObjectDefinition: async () => {
766
- return {
767
- ...wireObjectTypeFullMetadataToSdkObjectMetadata(stubData.todoWithLinkTypes, true),
768
- [InterfaceDefinitions]: {}
769
- };
770
- },
771
- getActionDefinition() {
772
- throw new Error("not implemented");
773
- },
774
- getInterfaceDefinition() {
775
- throw new Error("not implemented");
776
- },
777
- getQueryDefinition() {
778
- throw new Error("not implemented");
779
- }
780
- };
781
- const minimalClient = createMinimalClient({
782
- ontologyRid: "ri.whatever"
783
- }, "https://localhost:8080", () => Promise.resolve("token"), {
784
- logger
785
- }, fetch, createObjectSet, () => () => ontologyProvider);
786
- async function createObject(type, x) {
787
- return (await minimalClient.objectFactory2(minimalClient, [{
788
- ...x,
789
- $apiName: type.apiName,
790
- $objectType: type.apiName,
791
- $objectSpecifier: `${type.apiName}:${x.$primaryKey}`
792
- }], undefined))[0];
793
- }
794
847
  let nextPk = 0;
795
- const fauxObjectA = await createObject(Todo, {
796
- $primaryKey: nextPk,
797
- $title: "a",
798
- id: nextPk,
799
- text: "a"
800
- });
801
- nextPk++;
802
- const fauxObjectB = await createObject(Todo, {
803
- $primaryKey: nextPk,
804
- $title: "b",
805
- id: nextPk,
806
- text: "b"
807
- });
808
- nextPk++;
809
- const fauxObjectC = await createObject(Todo, {
810
- $primaryKey: nextPk,
811
- $title: "c",
812
- id: nextPk,
813
- text: "c"
848
+ let fauxObjectA;
849
+ let fauxObjectB;
850
+ let fauxObjectC;
851
+ beforeAll(async () => {
852
+ fauxFoundry.getDefaultDataStore().clear();
853
+ [fauxObjectA, fauxObjectB, fauxObjectC] = await Promise.all(["a", "b", "c"].map(text => {
854
+ const id = nextPk++;
855
+ fauxFoundry.getDefaultDataStore().registerObject(Todo, {
856
+ $apiName: "Todo",
857
+ id,
858
+ text
859
+ });
860
+ return client(Todo).fetchOne(id);
861
+ }));
814
862
  });
815
863
  const noWhereNoOrderBy = {
816
864
  type: Todo,
@@ -865,14 +913,11 @@ describe(Store, () => {
865
913
  expectSingleListCallAndClear(subListOrdered, [fauxObjectA, fauxObjectB, fauxObjectC]);
866
914
  });
867
915
  it("produces proper results with optimistic updates and successful action", async () => {
868
- const optimisticallyMutatedA = await createObject(Todo, {
869
- ...fauxObjectA,
916
+ const optimisticallyMutatedA = fauxObjectA.$clone({
870
917
  text: "optimistic"
871
918
  });
872
919
  const pkForOptimistic = nextPk++;
873
- const optimisticallyCreatedObjectD = await createObject(Todo, {
874
- "$primaryKey": pkForOptimistic,
875
- "$title": "d",
920
+ const optimisticallyCreatedObjectD = expect.objectContaining({
876
921
  "text": "d",
877
922
  id: pkForOptimistic
878
923
  });
@@ -888,10 +933,6 @@ describe(Store, () => {
888
933
  expectSingleListCallAndClear(subListOrdered, [fauxObjectA, fauxObjectB]);
889
934
  testStage("Start");
890
935
 
891
- // the optimistic job will call createObject which triggers the `objectFactory2` of the
892
- // cache context.
893
- mockClient.mockObjectFactory2Once().resolve([optimisticallyCreatedObjectD]);
894
-
895
936
  // Perform something optimistic.
896
937
  const removeOptimisticResult = runOptimisticJob(store, b => {
897
938
  b.createObject(Todo, pkForOptimistic, {
@@ -933,26 +974,18 @@ describe(Store, () => {
933
974
  // I think these are named backwards
934
975
  it("produces proper results with optimistic updates and rollback", async () => {
935
976
  const pkForOptimistic = nextPk++;
936
- const optimisticallyCreatedObjectD = await createObject(Todo, {
977
+ const optimisticallyCreatedObjectD = expect.objectContaining({
937
978
  "$primaryKey": pkForOptimistic,
938
- "$title": "d",
939
- "text": "d",
979
+ "$title": undefined,
980
+ // FIXME once this is calculated by optimistic then this needs to be the right value
981
+ "text": "d optimistic",
940
982
  id: pkForOptimistic
941
983
  });
942
- const optimisticallyMutatedA = await createObject(Todo, {
943
- ...fauxObjectA,
984
+ const optimisticallyMutatedA = fauxObjectA.$clone({
944
985
  text: "optimistic"
945
986
  });
946
987
  testStage("Initial Setup");
947
988
 
948
- // later we will "create" this object
949
- const createdObjectD = await createObject(Todo, {
950
- "$primaryKey": 9000,
951
- "$title": "d prime",
952
- "text": "d prime",
953
- id: 9000
954
- });
955
-
956
989
  // for whatever reason, the first list is loaded as [B, A]
957
990
  updateList(store, noWhereNoOrderBy, [fauxObjectB, fauxObjectA]);
958
991
  await waitForCall(subListUnordered, 1);
@@ -963,19 +996,33 @@ describe(Store, () => {
963
996
  expectSingleListCallAndClear(subListOrdered, [fauxObjectA, fauxObjectB]);
964
997
  testStage("Optimistic Creation");
965
998
 
999
+ // create the weirdest action ever. It always creates a Todo with
1000
+ // a new primary key and the text "d" and updates A
1001
+ const {
1002
+ actionDefinition: crazyAction,
1003
+ actionTypeV2: crazyActionTypeV2
1004
+ } = new ActionTypeBuilder("asdf").addParameter("foo", "string").build();
1005
+ fauxFoundry.getDefaultOntology().registerActionType(crazyActionTypeV2, batch => {
1006
+ const idForD = nextPk++;
1007
+ batch.addObject(Todo.apiName, idForD, {
1008
+ id: idForD,
1009
+ text: "d"
1010
+ });
1011
+ batch.modifyObject(fauxObjectA.$apiName, fauxObjectA.$primaryKey, {
1012
+ text: "a prime",
1013
+ $title: "a prime" // FIXME we shouldn't have to set this, it can be calculated
1014
+ });
1015
+ });
1016
+
966
1017
  // the optimistic job will call createObject which triggers the `objectFactory2` of the
967
1018
  // cache context.
968
1019
 
969
- mockClient.mockObjectFactory2Once().resolve([optimisticallyCreatedObjectD]);
970
- const mockedApplyAction = mockClient.mockApplyActionOnce();
971
- testStage("Apply Action");
972
- const actionPromise = store.applyAction(createOffice, {
973
- officeId: "5"
974
- }, {
1020
+ // Perform something optimistic.
1021
+ const pActionResult = store.applyAction(crazyAction, {}, {
975
1022
  optimisticUpdate: b => {
976
- b.createObject(Todo, optimisticallyCreatedObjectD.$primaryKey, {
977
- id: optimisticallyCreatedObjectD.$primaryKey,
978
- text: "d"
1023
+ b.createObject(Todo, pkForOptimistic, {
1024
+ id: pkForOptimistic,
1025
+ text: "d optimistic"
979
1026
  });
980
1027
  b.updateObject(optimisticallyMutatedA);
981
1028
  }
@@ -996,53 +1043,15 @@ describe(Store, () => {
996
1043
  isOptimistic: true
997
1044
  });
998
1045
  testStage("Resolve Action");
999
- const modifiedObjectA = await createObject(Todo, {
1000
- ...fauxObjectA,
1046
+ const modifiedObjectA = fauxObjectA.$clone({
1001
1047
  text: "a prime"
1002
1048
  });
1003
-
1004
- // console.log("winner?", modifiedObjectA.$as);
1005
- // // throw "hi";
1006
- // console.log("winner2?", modifiedObjectA.$as("Todo").$as);
1007
-
1008
- // The action will complete and then revalidate in order...
1009
- mockClient.mockFetchOneOnce(modifiedObjectA.$primaryKey).resolve(modifiedObjectA);
1010
- mockClient.mockFetchOneOnce(createdObjectD.$primaryKey).resolve(createdObjectD);
1011
-
1012
- // this order matters!
1013
- // but now we don't need them because we just update lists instead of revalidate when we can
1014
- // const plainList = mockClient.mockFetchPageOnce<Todo>();
1015
- // const orderedList = mockClient.mockFetchPageOnce<Todo>();
1016
-
1017
- mockedApplyAction.resolve({
1018
- addedObjects: [{
1019
- objectType: "Todo",
1020
- primaryKey: createdObjectD.id
1021
- }],
1022
- modifiedObjects: [{
1023
- objectType: "Todo",
1024
- primaryKey: fauxObjectA.$primaryKey
1025
- }]
1026
- });
1027
-
1028
- // plainList.resolve({
1029
- // nextPageToken: undefined,
1030
- // totalCount: "4",
1031
- // data: [fauxObjectB, fauxObjectC, modifiedObjectA, createdObjectD],
1032
- // });
1033
-
1034
- // orderedList.resolve({
1035
- // nextPageToken: undefined,
1036
- // totalCount: "4",
1037
- // data: [modifiedObjectA, fauxObjectC, createdObjectD],
1038
- // });
1039
-
1040
- await actionPromise;
1049
+ const pkForD = (await pActionResult).addedObjects?.[0].primaryKey;
1050
+ !(typeof pkForD === "number") ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
1051
+ // load this without the cache for comparisons
1052
+ const createdObjectD = await client(Todo).fetchOne(pkForD);
1041
1053
  await waitForCall(subListUnordered, 1);
1042
- console.log("=====", subListUnordered.next.mock.calls[0][0]);
1043
- expectSingleListCallAndClear(subListUnordered, [fauxObjectB,
1044
- // fauxObjectC,
1045
- modifiedObjectA, createdObjectD], {
1054
+ expectSingleListCallAndClear(subListUnordered, [fauxObjectB, modifiedObjectA, createdObjectD], {
1046
1055
  isOptimistic: false
1047
1056
  });
1048
1057
  await waitForCall(subListOrdered, 1);