@fluidframework/odsp-driver 2.0.0-dev-rc.1.0.0.232845 → 2.0.0-dev-rc.2.0.0.245554

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 (616) hide show
  1. package/.eslintrc.cjs +18 -3
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +44 -0
  4. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  5. package/api-extractor-lint.json +1 -1
  6. package/api-extractor.json +1 -1
  7. package/api-report/odsp-driver.api.md +11 -12
  8. package/dist/ReadBufferUtils.d.ts.map +1 -1
  9. package/dist/ReadBufferUtils.js.map +1 -1
  10. package/dist/WriteBufferUtils.d.ts +1 -1
  11. package/dist/WriteBufferUtils.d.ts.map +1 -1
  12. package/dist/WriteBufferUtils.js +12 -12
  13. package/dist/WriteBufferUtils.js.map +1 -1
  14. package/dist/checkUrl.d.ts.map +1 -1
  15. package/dist/checkUrl.js +5 -3
  16. package/dist/checkUrl.js.map +1 -1
  17. package/dist/compactSnapshotParser.d.ts.map +1 -1
  18. package/dist/compactSnapshotParser.js +87 -69
  19. package/dist/compactSnapshotParser.js.map +1 -1
  20. package/dist/compactSnapshotWriter.d.ts.map +1 -1
  21. package/dist/compactSnapshotWriter.js +25 -19
  22. package/dist/compactSnapshotWriter.js.map +1 -1
  23. package/dist/contracts.d.ts +10 -4
  24. package/dist/contracts.d.ts.map +1 -1
  25. package/dist/contracts.js.map +1 -1
  26. package/dist/createFile.d.ts +3 -3
  27. package/dist/createFile.d.ts.map +1 -1
  28. package/dist/createFile.js +30 -27
  29. package/dist/createFile.js.map +1 -1
  30. package/dist/createNewContainerOnExistingFile.d.ts +2 -2
  31. package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
  32. package/dist/createNewContainerOnExistingFile.js +14 -14
  33. package/dist/createNewContainerOnExistingFile.js.map +1 -1
  34. package/dist/createNewModule.d.ts +2 -2
  35. package/dist/createNewModule.d.ts.map +1 -1
  36. package/dist/createNewModule.js +4 -4
  37. package/dist/createNewModule.js.map +1 -1
  38. package/dist/createNewUtils.d.ts +2 -2
  39. package/dist/createNewUtils.d.ts.map +1 -1
  40. package/dist/createNewUtils.js +12 -8
  41. package/dist/createNewUtils.js.map +1 -1
  42. package/dist/createOdspCreateContainerRequest.js +2 -2
  43. package/dist/createOdspCreateContainerRequest.js.map +1 -1
  44. package/dist/createOdspUrl.d.ts +1 -1
  45. package/dist/createOdspUrl.d.ts.map +1 -1
  46. package/dist/createOdspUrl.js.map +1 -1
  47. package/dist/epochTracker.d.ts +10 -9
  48. package/dist/epochTracker.d.ts.map +1 -1
  49. package/dist/epochTracker.js +66 -43
  50. package/dist/epochTracker.js.map +1 -1
  51. package/dist/fetchSnapshot.d.ts +11 -8
  52. package/dist/fetchSnapshot.d.ts.map +1 -1
  53. package/dist/fetchSnapshot.js +79 -58
  54. package/dist/fetchSnapshot.js.map +1 -1
  55. package/dist/getFileLink.d.ts.map +1 -1
  56. package/dist/getFileLink.js +24 -17
  57. package/dist/getFileLink.js.map +1 -1
  58. package/dist/getQueryString.d.ts.map +1 -1
  59. package/dist/getQueryString.js +2 -0
  60. package/dist/getQueryString.js.map +1 -1
  61. package/dist/index.d.ts +19 -19
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +44 -44
  64. package/dist/index.js.map +1 -1
  65. package/dist/localOdspDriver/localOdspDocumentService.d.ts +1 -1
  66. package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
  67. package/dist/localOdspDriver/localOdspDocumentService.js +5 -5
  68. package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -1
  69. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts +8 -6
  70. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -1
  71. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js +10 -9
  72. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -1
  73. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +1 -1
  74. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
  75. package/dist/localOdspDriver/localOdspDocumentStorageManager.js +6 -6
  76. package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
  77. package/dist/odsp-driver-alpha.d.ts +27 -12
  78. package/dist/odsp-driver-beta.d.ts +1 -2
  79. package/dist/odsp-driver-public.d.ts +1 -2
  80. package/dist/odsp-driver-untrimmed.d.ts +29 -12
  81. package/dist/odspCache.d.ts +3 -3
  82. package/dist/odspCache.d.ts.map +1 -1
  83. package/dist/odspCache.js +1 -2
  84. package/dist/odspCache.js.map +1 -1
  85. package/dist/odspDelayLoadedDeltaStream.d.ts +7 -5
  86. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  87. package/dist/odspDelayLoadedDeltaStream.js +41 -28
  88. package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
  89. package/dist/odspDeltaStorageService.d.ts +7 -7
  90. package/dist/odspDeltaStorageService.d.ts.map +1 -1
  91. package/dist/odspDeltaStorageService.js +5 -5
  92. package/dist/odspDeltaStorageService.js.map +1 -1
  93. package/dist/odspDocumentDeltaConnection.d.ts +1 -1
  94. package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
  95. package/dist/odspDocumentDeltaConnection.js +41 -23
  96. package/dist/odspDocumentDeltaConnection.js.map +1 -1
  97. package/dist/odspDocumentService.d.ts +6 -4
  98. package/dist/odspDocumentService.d.ts.map +1 -1
  99. package/dist/odspDocumentService.js +19 -16
  100. package/dist/odspDocumentService.js.map +1 -1
  101. package/dist/odspDocumentServiceFactory.d.ts +6 -1
  102. package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
  103. package/dist/odspDocumentServiceFactory.js +9 -4
  104. package/dist/odspDocumentServiceFactory.js.map +1 -1
  105. package/dist/odspDocumentServiceFactoryCore.d.ts +4 -4
  106. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  107. package/dist/odspDocumentServiceFactoryCore.js +26 -22
  108. package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
  109. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts +1 -1
  110. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -1
  111. package/dist/odspDocumentServiceFactoryWithCodeSplit.js +2 -2
  112. package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -1
  113. package/dist/odspDocumentStorageManager.d.ts +15 -9
  114. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  115. package/dist/odspDocumentStorageManager.js +219 -181
  116. package/dist/odspDocumentStorageManager.js.map +1 -1
  117. package/dist/odspDocumentStorageServiceBase.d.ts +2 -4
  118. package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
  119. package/dist/odspDocumentStorageServiceBase.js +32 -29
  120. package/dist/odspDocumentStorageServiceBase.js.map +1 -1
  121. package/dist/odspDriverUrlResolver.d.ts +1 -1
  122. package/dist/odspDriverUrlResolver.d.ts.map +1 -1
  123. package/dist/odspDriverUrlResolver.js +25 -22
  124. package/dist/odspDriverUrlResolver.js.map +1 -1
  125. package/dist/odspDriverUrlResolverForShareLink.d.ts +13 -6
  126. package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  127. package/dist/odspDriverUrlResolverForShareLink.js +47 -37
  128. package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
  129. package/dist/odspError.d.ts +1 -1
  130. package/dist/odspError.d.ts.map +1 -1
  131. package/dist/odspError.js +5 -5
  132. package/dist/odspError.js.map +1 -1
  133. package/dist/odspFluidFileLink.d.ts +1 -1
  134. package/dist/odspFluidFileLink.d.ts.map +1 -1
  135. package/dist/odspFluidFileLink.js +2 -2
  136. package/dist/odspFluidFileLink.js.map +1 -1
  137. package/dist/odspLocationRedirection.js +2 -2
  138. package/dist/odspLocationRedirection.js.map +1 -1
  139. package/dist/odspPublicUtils.d.ts +3 -0
  140. package/dist/odspPublicUtils.d.ts.map +1 -1
  141. package/dist/odspPublicUtils.js +3 -0
  142. package/dist/odspPublicUtils.js.map +1 -1
  143. package/dist/odspSnapshotParser.d.ts +1 -1
  144. package/dist/odspSnapshotParser.d.ts.map +1 -1
  145. package/dist/odspSnapshotParser.js +3 -2
  146. package/dist/odspSnapshotParser.js.map +1 -1
  147. package/dist/odspSummaryUploadManager.d.ts +1 -1
  148. package/dist/odspSummaryUploadManager.d.ts.map +1 -1
  149. package/dist/odspSummaryUploadManager.js +9 -6
  150. package/dist/odspSummaryUploadManager.js.map +1 -1
  151. package/dist/odspUrlHelper.d.ts.map +1 -1
  152. package/dist/odspUrlHelper.js +1 -2
  153. package/dist/odspUrlHelper.js.map +1 -1
  154. package/dist/odspUtils.d.ts +19 -7
  155. package/dist/odspUtils.d.ts.map +1 -1
  156. package/dist/odspUtils.js +61 -31
  157. package/dist/odspUtils.js.map +1 -1
  158. package/dist/opsCaching.d.ts +1 -1
  159. package/dist/opsCaching.d.ts.map +1 -1
  160. package/dist/opsCaching.js +2 -1
  161. package/dist/opsCaching.js.map +1 -1
  162. package/dist/package.json +3 -0
  163. package/dist/packageVersion.d.ts +1 -1
  164. package/dist/packageVersion.js +1 -1
  165. package/dist/packageVersion.js.map +1 -1
  166. package/dist/prefetchLatestSnapshot.d.ts +2 -2
  167. package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
  168. package/dist/prefetchLatestSnapshot.js +17 -12
  169. package/dist/prefetchLatestSnapshot.js.map +1 -1
  170. package/dist/retryErrorsStorageAdapter.d.ts +0 -1
  171. package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
  172. package/dist/retryErrorsStorageAdapter.js +2 -5
  173. package/dist/retryErrorsStorageAdapter.js.map +1 -1
  174. package/dist/retryUtils.d.ts.map +1 -1
  175. package/dist/retryUtils.js +6 -2
  176. package/dist/retryUtils.js.map +1 -1
  177. package/dist/socketModule.d.ts.map +1 -1
  178. package/dist/socketModule.js +2 -0
  179. package/dist/socketModule.js.map +1 -1
  180. package/dist/tsdoc-metadata.json +1 -1
  181. package/dist/vroom.d.ts +2 -2
  182. package/dist/vroom.d.ts.map +1 -1
  183. package/dist/vroom.js +5 -5
  184. package/dist/vroom.js.map +1 -1
  185. package/dist/zipItDataRepresentationUtils.d.ts +1 -1
  186. package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
  187. package/dist/zipItDataRepresentationUtils.js +15 -11
  188. package/dist/zipItDataRepresentationUtils.js.map +1 -1
  189. package/lib/{ReadBufferUtils.d.mts → ReadBufferUtils.d.ts} +1 -1
  190. package/lib/ReadBufferUtils.d.ts.map +1 -0
  191. package/lib/{ReadBufferUtils.mjs → ReadBufferUtils.js} +1 -1
  192. package/lib/ReadBufferUtils.js.map +1 -0
  193. package/lib/{WriteBufferUtils.d.mts → WriteBufferUtils.d.ts} +2 -2
  194. package/lib/WriteBufferUtils.d.ts.map +1 -0
  195. package/lib/{WriteBufferUtils.mjs → WriteBufferUtils.js} +2 -2
  196. package/lib/WriteBufferUtils.js.map +1 -0
  197. package/lib/{checkUrl.d.mts → checkUrl.d.ts} +1 -1
  198. package/lib/checkUrl.d.ts.map +1 -0
  199. package/lib/{checkUrl.mjs → checkUrl.js} +5 -3
  200. package/lib/checkUrl.js.map +1 -0
  201. package/lib/{compactSnapshotParser.d.mts → compactSnapshotParser.d.ts} +1 -1
  202. package/lib/compactSnapshotParser.d.ts.map +1 -0
  203. package/lib/{compactSnapshotParser.mjs → compactSnapshotParser.js} +61 -43
  204. package/lib/compactSnapshotParser.js.map +1 -0
  205. package/lib/{compactSnapshotWriter.d.mts → compactSnapshotWriter.d.ts} +1 -1
  206. package/lib/compactSnapshotWriter.d.ts.map +1 -0
  207. package/lib/{compactSnapshotWriter.mjs → compactSnapshotWriter.js} +13 -7
  208. package/lib/compactSnapshotWriter.js.map +1 -0
  209. package/lib/{constants.d.mts → constants.d.ts} +1 -1
  210. package/lib/constants.d.ts.map +1 -0
  211. package/lib/{constants.mjs → constants.js} +1 -1
  212. package/lib/constants.js.map +1 -0
  213. package/lib/{contracts.d.mts → contracts.d.ts} +11 -5
  214. package/lib/contracts.d.ts.map +1 -0
  215. package/lib/{contracts.mjs → contracts.js} +1 -1
  216. package/lib/contracts.js.map +1 -0
  217. package/lib/{contractsPublic.d.mts → contractsPublic.d.ts} +1 -1
  218. package/lib/contractsPublic.d.ts.map +1 -0
  219. package/lib/{contractsPublic.mjs → contractsPublic.js} +1 -1
  220. package/lib/contractsPublic.js.map +1 -0
  221. package/lib/{createFile.d.mts → createFile.d.ts} +4 -4
  222. package/lib/createFile.d.ts.map +1 -0
  223. package/lib/{createFile.mjs → createFile.js} +15 -12
  224. package/lib/createFile.js.map +1 -0
  225. package/lib/{createNewContainerOnExistingFile.d.mts → createNewContainerOnExistingFile.d.ts} +3 -3
  226. package/lib/createNewContainerOnExistingFile.d.ts.map +1 -0
  227. package/lib/{createNewContainerOnExistingFile.mjs → createNewContainerOnExistingFile.js} +7 -7
  228. package/lib/createNewContainerOnExistingFile.js.map +1 -0
  229. package/lib/{createNewModule.mjs → createNewModule.d.ts} +3 -3
  230. package/lib/createNewModule.d.ts.map +1 -0
  231. package/lib/{createNewModule.d.mts → createNewModule.js} +3 -3
  232. package/lib/createNewModule.js.map +1 -0
  233. package/lib/{createNewUtils.d.mts → createNewUtils.d.ts} +3 -3
  234. package/lib/createNewUtils.d.ts.map +1 -0
  235. package/lib/{createNewUtils.mjs → createNewUtils.js} +9 -5
  236. package/lib/createNewUtils.js.map +1 -0
  237. package/lib/{createOdspCreateContainerRequest.d.mts → createOdspCreateContainerRequest.d.ts} +5 -1
  238. package/lib/createOdspCreateContainerRequest.d.ts.map +1 -0
  239. package/lib/{createOdspCreateContainerRequest.mjs → createOdspCreateContainerRequest.js} +2 -2
  240. package/lib/createOdspCreateContainerRequest.js.map +1 -0
  241. package/lib/{createOdspUrl.d.mts → createOdspUrl.d.ts} +2 -2
  242. package/lib/createOdspUrl.d.ts.map +1 -0
  243. package/lib/{createOdspUrl.mjs → createOdspUrl.js} +1 -1
  244. package/lib/createOdspUrl.js.map +1 -0
  245. package/lib/{epochTracker.d.mts → epochTracker.d.ts} +11 -10
  246. package/lib/epochTracker.d.ts.map +1 -0
  247. package/lib/{epochTracker.mjs → epochTracker.js} +56 -33
  248. package/lib/epochTracker.js.map +1 -0
  249. package/lib/{fetch.d.mts → fetch.d.ts} +1 -1
  250. package/lib/fetch.d.ts.map +1 -0
  251. package/lib/{fetch.mjs → fetch.js} +1 -1
  252. package/lib/fetch.js.map +1 -0
  253. package/lib/{fetchSnapshot.d.mts → fetchSnapshot.d.ts} +12 -9
  254. package/lib/fetchSnapshot.d.ts.map +1 -0
  255. package/lib/{fetchSnapshot.mjs → fetchSnapshot.js} +61 -40
  256. package/lib/fetchSnapshot.js.map +1 -0
  257. package/lib/{getFileLink.d.mts → getFileLink.d.ts} +1 -1
  258. package/lib/getFileLink.d.ts.map +1 -0
  259. package/lib/{getFileLink.mjs → getFileLink.js} +14 -7
  260. package/lib/getFileLink.js.map +1 -0
  261. package/lib/{getQueryString.d.mts → getQueryString.d.ts} +5 -1
  262. package/lib/getQueryString.d.ts.map +1 -0
  263. package/lib/{getQueryString.mjs → getQueryString.js} +3 -1
  264. package/lib/getQueryString.js.map +1 -0
  265. package/lib/{getUrlAndHeadersWithAuth.d.mts → getUrlAndHeadersWithAuth.d.ts} +1 -1
  266. package/lib/getUrlAndHeadersWithAuth.d.ts.map +1 -0
  267. package/lib/{getUrlAndHeadersWithAuth.mjs → getUrlAndHeadersWithAuth.js} +1 -1
  268. package/lib/getUrlAndHeadersWithAuth.js.map +1 -0
  269. package/lib/{index.d.mts → index.d.ts} +20 -20
  270. package/lib/index.d.ts.map +1 -0
  271. package/lib/index.js +29 -0
  272. package/lib/index.js.map +1 -0
  273. package/lib/localOdspDriver/{localOdspDeltaStorageService.d.mts → localOdspDeltaStorageService.d.ts} +1 -1
  274. package/lib/localOdspDriver/localOdspDeltaStorageService.d.ts.map +1 -0
  275. package/lib/localOdspDriver/{localOdspDeltaStorageService.mjs → localOdspDeltaStorageService.js} +1 -1
  276. package/lib/localOdspDriver/localOdspDeltaStorageService.js.map +1 -0
  277. package/lib/localOdspDriver/{localOdspDocumentService.d.mts → localOdspDocumentService.d.ts} +2 -2
  278. package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +1 -0
  279. package/lib/localOdspDriver/{localOdspDocumentService.mjs → localOdspDocumentService.js} +4 -4
  280. package/lib/localOdspDriver/localOdspDocumentService.js.map +1 -0
  281. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.d.mts → localOdspDocumentServiceFactory.d.ts} +9 -7
  282. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -0
  283. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.mjs → localOdspDocumentServiceFactory.js} +9 -8
  284. package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -0
  285. package/lib/localOdspDriver/{localOdspDocumentStorageManager.d.mts → localOdspDocumentStorageManager.d.ts} +2 -2
  286. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -0
  287. package/lib/localOdspDriver/{localOdspDocumentStorageManager.mjs → localOdspDocumentStorageManager.js} +4 -4
  288. package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -0
  289. package/lib/{odsp-driver-alpha.d.mts → odsp-driver-alpha.d.ts} +27 -12
  290. package/lib/{odsp-driver-public.d.mts → odsp-driver-beta.d.ts} +1 -2
  291. package/lib/{odsp-driver-beta.d.mts → odsp-driver-public.d.ts} +1 -2
  292. package/lib/{odsp-driver-untrimmed.d.mts → odsp-driver-untrimmed.d.ts} +29 -12
  293. package/lib/{odspCache.d.mts → odspCache.d.ts} +8 -4
  294. package/lib/odspCache.d.ts.map +1 -0
  295. package/lib/{odspCache.mjs → odspCache.js} +6 -3
  296. package/lib/odspCache.js.map +1 -0
  297. package/lib/{odspDelayLoadedDeltaStream.d.mts → odspDelayLoadedDeltaStream.d.ts} +8 -6
  298. package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -0
  299. package/lib/{odspDelayLoadedDeltaStream.mjs → odspDelayLoadedDeltaStream.js} +33 -20
  300. package/lib/odspDelayLoadedDeltaStream.js.map +1 -0
  301. package/lib/{odspDeltaStorageService.d.mts → odspDeltaStorageService.d.ts} +8 -8
  302. package/lib/odspDeltaStorageService.d.ts.map +1 -0
  303. package/lib/{odspDeltaStorageService.mjs → odspDeltaStorageService.js} +5 -5
  304. package/lib/odspDeltaStorageService.js.map +1 -0
  305. package/lib/{odspDocumentDeltaConnection.d.mts → odspDocumentDeltaConnection.d.ts} +2 -2
  306. package/lib/odspDocumentDeltaConnection.d.ts.map +1 -0
  307. package/lib/{odspDocumentDeltaConnection.mjs → odspDocumentDeltaConnection.js} +34 -16
  308. package/lib/odspDocumentDeltaConnection.js.map +1 -0
  309. package/lib/{odspDocumentService.d.mts → odspDocumentService.d.ts} +7 -5
  310. package/lib/odspDocumentService.d.ts.map +1 -0
  311. package/lib/{odspDocumentService.mjs → odspDocumentService.js} +16 -11
  312. package/lib/odspDocumentService.js.map +1 -0
  313. package/lib/{odspDocumentServiceFactory.d.mts → odspDocumentServiceFactory.d.ts} +7 -2
  314. package/lib/odspDocumentServiceFactory.d.ts.map +1 -0
  315. package/lib/{odspDocumentServiceFactory.mjs → odspDocumentServiceFactory.js} +9 -3
  316. package/lib/odspDocumentServiceFactory.js.map +1 -0
  317. package/lib/{odspDocumentServiceFactoryCore.d.mts → odspDocumentServiceFactoryCore.d.ts} +5 -5
  318. package/lib/odspDocumentServiceFactoryCore.d.ts.map +1 -0
  319. package/lib/{odspDocumentServiceFactoryCore.mjs → odspDocumentServiceFactoryCore.js} +23 -17
  320. package/lib/odspDocumentServiceFactoryCore.js.map +1 -0
  321. package/lib/{odspDocumentServiceFactoryWithCodeSplit.d.mts → odspDocumentServiceFactoryWithCodeSplit.d.ts} +2 -2
  322. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -0
  323. package/lib/{odspDocumentServiceFactoryWithCodeSplit.mjs → odspDocumentServiceFactoryWithCodeSplit.js} +2 -2
  324. package/lib/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -0
  325. package/lib/{odspDocumentStorageManager.d.mts → odspDocumentStorageManager.d.ts} +16 -10
  326. package/lib/odspDocumentStorageManager.d.ts.map +1 -0
  327. package/lib/{odspDocumentStorageManager.mjs → odspDocumentStorageManager.js} +207 -167
  328. package/lib/odspDocumentStorageManager.js.map +1 -0
  329. package/lib/{odspDocumentStorageServiceBase.d.mts → odspDocumentStorageServiceBase.d.ts} +3 -5
  330. package/lib/odspDocumentStorageServiceBase.d.ts.map +1 -0
  331. package/lib/{odspDocumentStorageServiceBase.mjs → odspDocumentStorageServiceBase.js} +32 -29
  332. package/lib/odspDocumentStorageServiceBase.js.map +1 -0
  333. package/lib/{odspDriverUrlResolver.d.mts → odspDriverUrlResolver.d.ts} +2 -2
  334. package/lib/odspDriverUrlResolver.d.ts.map +1 -0
  335. package/lib/{odspDriverUrlResolver.mjs → odspDriverUrlResolver.js} +24 -17
  336. package/lib/odspDriverUrlResolver.js.map +1 -0
  337. package/lib/{odspDriverUrlResolverForShareLink.d.mts → odspDriverUrlResolverForShareLink.d.ts} +14 -7
  338. package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -0
  339. package/lib/{odspDriverUrlResolverForShareLink.mjs → odspDriverUrlResolverForShareLink.js} +41 -27
  340. package/lib/odspDriverUrlResolverForShareLink.js.map +1 -0
  341. package/lib/{odspError.d.mts → odspError.d.ts} +2 -2
  342. package/lib/odspError.d.ts.map +1 -0
  343. package/lib/{odspError.mjs → odspError.js} +4 -4
  344. package/lib/odspError.js.map +1 -0
  345. package/lib/{odspFluidFileLink.d.mts → odspFluidFileLink.d.ts} +2 -2
  346. package/lib/odspFluidFileLink.d.ts.map +1 -0
  347. package/lib/{odspFluidFileLink.mjs → odspFluidFileLink.js} +2 -2
  348. package/lib/odspFluidFileLink.js.map +1 -0
  349. package/lib/{odspLocationRedirection.d.mts → odspLocationRedirection.d.ts} +1 -1
  350. package/lib/odspLocationRedirection.d.ts.map +1 -0
  351. package/lib/{odspLocationRedirection.mjs → odspLocationRedirection.js} +2 -2
  352. package/lib/odspLocationRedirection.js.map +1 -0
  353. package/lib/{odspPublicUtils.d.mts → odspPublicUtils.d.ts} +4 -1
  354. package/lib/odspPublicUtils.d.ts.map +1 -0
  355. package/lib/{odspPublicUtils.mjs → odspPublicUtils.js} +4 -1
  356. package/lib/odspPublicUtils.js.map +1 -0
  357. package/lib/{odspSnapshotParser.d.mts → odspSnapshotParser.d.ts} +2 -2
  358. package/lib/odspSnapshotParser.d.ts.map +1 -0
  359. package/lib/{odspSnapshotParser.mjs → odspSnapshotParser.js} +4 -3
  360. package/lib/odspSnapshotParser.js.map +1 -0
  361. package/lib/{odspSummaryUploadManager.d.mts → odspSummaryUploadManager.d.ts} +2 -2
  362. package/lib/odspSummaryUploadManager.d.ts.map +1 -0
  363. package/lib/{odspSummaryUploadManager.mjs → odspSummaryUploadManager.js} +8 -5
  364. package/lib/odspSummaryUploadManager.js.map +1 -0
  365. package/lib/{odspUrlHelper.d.mts → odspUrlHelper.d.ts} +1 -1
  366. package/lib/odspUrlHelper.d.ts.map +1 -0
  367. package/lib/{odspUrlHelper.mjs → odspUrlHelper.js} +2 -3
  368. package/lib/odspUrlHelper.js.map +1 -0
  369. package/lib/{odspUtils.d.mts → odspUtils.d.ts} +20 -8
  370. package/lib/odspUtils.d.ts.map +1 -0
  371. package/lib/{odspUtils.mjs → odspUtils.js} +45 -17
  372. package/lib/odspUtils.js.map +1 -0
  373. package/lib/{opsCaching.d.mts → opsCaching.d.ts} +2 -2
  374. package/lib/opsCaching.d.ts.map +1 -0
  375. package/lib/{opsCaching.mjs → opsCaching.js} +3 -2
  376. package/lib/opsCaching.js.map +1 -0
  377. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  378. package/lib/packageVersion.d.ts.map +1 -0
  379. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  380. package/lib/packageVersion.js.map +1 -0
  381. package/lib/{prefetchLatestSnapshot.d.mts → prefetchLatestSnapshot.d.ts} +3 -3
  382. package/lib/prefetchLatestSnapshot.d.ts.map +1 -0
  383. package/lib/{prefetchLatestSnapshot.mjs → prefetchLatestSnapshot.js} +16 -11
  384. package/lib/prefetchLatestSnapshot.js.map +1 -0
  385. package/lib/{retryErrorsStorageAdapter.d.mts → retryErrorsStorageAdapter.d.ts} +1 -2
  386. package/lib/retryErrorsStorageAdapter.d.ts.map +1 -0
  387. package/lib/{retryErrorsStorageAdapter.mjs → retryErrorsStorageAdapter.js} +2 -5
  388. package/lib/retryErrorsStorageAdapter.js.map +1 -0
  389. package/lib/{retryUtils.d.mts → retryUtils.d.ts} +1 -1
  390. package/lib/retryUtils.d.ts.map +1 -0
  391. package/lib/{retryUtils.mjs → retryUtils.js} +6 -2
  392. package/lib/retryUtils.js.map +1 -0
  393. package/lib/{socketModule.d.mts → socketModule.d.ts} +1 -1
  394. package/lib/socketModule.d.ts.map +1 -0
  395. package/lib/{socketModule.mjs → socketModule.js} +3 -1
  396. package/lib/socketModule.js.map +1 -0
  397. package/lib/test/buildOdspShareLinkReqParams.spec.js +25 -0
  398. package/lib/test/buildOdspShareLinkReqParams.spec.js.map +1 -0
  399. package/lib/test/createNewUtilsTests.spec.js +221 -0
  400. package/lib/test/createNewUtilsTests.spec.js.map +1 -0
  401. package/lib/test/deltaStorageService.spec.js +176 -0
  402. package/lib/test/deltaStorageService.spec.js.map +1 -0
  403. package/lib/test/epochTests.spec.js +340 -0
  404. package/lib/test/epochTests.spec.js.map +1 -0
  405. package/lib/test/epochTestsWithRedemption.spec.js +119 -0
  406. package/lib/test/epochTestsWithRedemption.spec.js.map +1 -0
  407. package/lib/test/fetchSnapshot.spec.js +412 -0
  408. package/lib/test/fetchSnapshot.spec.js.map +1 -0
  409. package/lib/test/getFileLink.spec.js +62 -0
  410. package/lib/test/getFileLink.spec.js.map +1 -0
  411. package/lib/test/getUrlAndHeadersWithAuth.spec.js +66 -0
  412. package/lib/test/getUrlAndHeadersWithAuth.spec.js.map +1 -0
  413. package/lib/test/getVersions.spec.js +284 -0
  414. package/lib/test/getVersions.spec.js.map +1 -0
  415. package/lib/test/joinSessionCacheTests.spec.js +53 -0
  416. package/lib/test/joinSessionCacheTests.spec.js.map +1 -0
  417. package/lib/test/joinSessionPeriodicCall.spec.js +158 -0
  418. package/lib/test/joinSessionPeriodicCall.spec.js.map +1 -0
  419. package/lib/test/jsonSnapshotFormatTests.spec.js +107 -0
  420. package/lib/test/jsonSnapshotFormatTests.spec.js.map +1 -0
  421. package/lib/test/localOdspDriver.spec.js +177 -0
  422. package/lib/test/localOdspDriver.spec.js.map +1 -0
  423. package/lib/test/mockFetch.js +61 -0
  424. package/lib/test/mockFetch.js.map +1 -0
  425. package/lib/test/odspCreateContainer.spec.js +116 -0
  426. package/lib/test/odspCreateContainer.spec.js.map +1 -0
  427. package/lib/test/odspDriverResolverTest.spec.js +289 -0
  428. package/lib/test/odspDriverResolverTest.spec.js.map +1 -0
  429. package/lib/test/odspDriverUrlResolverForShareLink.spec.js +287 -0
  430. package/lib/test/odspDriverUrlResolverForShareLink.spec.js.map +1 -0
  431. package/lib/test/odspError.spec.js +299 -0
  432. package/lib/test/odspError.spec.js.map +1 -0
  433. package/lib/test/opsCaching.spec.js +357 -0
  434. package/lib/test/opsCaching.spec.js.map +1 -0
  435. package/lib/test/prefetchSnapshotTests.spec.js +420 -0
  436. package/lib/test/prefetchSnapshotTests.spec.js.map +1 -0
  437. package/lib/test/snapshotFormatTests.spec.js +218 -0
  438. package/lib/test/snapshotFormatTests.spec.js.map +1 -0
  439. package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js +152 -0
  440. package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js.map +1 -0
  441. package/lib/test/socketTests/socketMock.js +109 -0
  442. package/lib/test/socketTests/socketMock.js.map +1 -0
  443. package/lib/test/socketTests/socketTests.spec.js +256 -0
  444. package/lib/test/socketTests/socketTests.spec.js.map +1 -0
  445. package/lib/test/tokenFetch.spec.js +39 -0
  446. package/lib/test/tokenFetch.spec.js.map +1 -0
  447. package/lib/test/types/validateOdspDriverPrevious.generated.js +96 -0
  448. package/lib/test/types/validateOdspDriverPrevious.generated.js.map +1 -0
  449. package/lib/test/zipItDataRepresentationTests.spec.js +207 -0
  450. package/lib/test/zipItDataRepresentationTests.spec.js.map +1 -0
  451. package/lib/{vroom.d.mts → vroom.d.ts} +3 -3
  452. package/lib/vroom.d.ts.map +1 -0
  453. package/lib/{vroom.mjs → vroom.js} +4 -4
  454. package/lib/vroom.js.map +1 -0
  455. package/lib/{zipItDataRepresentationUtils.d.mts → zipItDataRepresentationUtils.d.ts} +2 -2
  456. package/lib/zipItDataRepresentationUtils.d.ts.map +1 -0
  457. package/lib/{zipItDataRepresentationUtils.mjs → zipItDataRepresentationUtils.js} +17 -9
  458. package/lib/zipItDataRepresentationUtils.js.map +1 -0
  459. package/package.json +90 -31
  460. package/src/ReadBufferUtils.ts +7 -7
  461. package/src/WriteBufferUtils.ts +13 -9
  462. package/src/checkUrl.ts +4 -2
  463. package/src/compactSnapshotParser.ts +87 -52
  464. package/src/compactSnapshotWriter.ts +19 -12
  465. package/src/contracts.ts +16 -4
  466. package/src/createFile.ts +16 -13
  467. package/src/createNewContainerOnExistingFile.ts +8 -8
  468. package/src/createNewModule.ts +2 -2
  469. package/src/createNewUtils.ts +19 -9
  470. package/src/createOdspCreateContainerRequest.ts +1 -1
  471. package/src/createOdspUrl.ts +1 -1
  472. package/src/epochTracker.ts +90 -55
  473. package/src/fetchSnapshot.ts +104 -47
  474. package/src/getFileLink.ts +21 -13
  475. package/src/getQueryString.ts +2 -0
  476. package/src/index.ts +27 -19
  477. package/src/localOdspDriver/localOdspDocumentService.ts +3 -3
  478. package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +12 -11
  479. package/src/localOdspDriver/localOdspDocumentStorageManager.ts +5 -5
  480. package/src/odspCache.ts +12 -9
  481. package/src/odspDelayLoadedDeltaStream.ts +54 -33
  482. package/src/odspDeltaStorageService.ts +17 -16
  483. package/src/odspDocumentDeltaConnection.ts +52 -34
  484. package/src/odspDocumentService.ts +23 -20
  485. package/src/odspDocumentServiceFactory.ts +7 -2
  486. package/src/odspDocumentServiceFactoryCore.ts +25 -18
  487. package/src/odspDocumentServiceFactoryWithCodeSplit.ts +1 -1
  488. package/src/odspDocumentStorageManager.ts +276 -216
  489. package/src/odspDocumentStorageServiceBase.ts +45 -43
  490. package/src/odspDriverUrlResolver.ts +38 -24
  491. package/src/odspDriverUrlResolverForShareLink.ts +50 -31
  492. package/src/odspError.ts +4 -4
  493. package/src/odspFluidFileLink.ts +3 -3
  494. package/src/odspLocationRedirection.ts +1 -1
  495. package/src/odspPublicUtils.ts +3 -0
  496. package/src/odspSnapshotParser.ts +4 -3
  497. package/src/odspSummaryUploadManager.ts +21 -9
  498. package/src/odspUrlHelper.ts +2 -3
  499. package/src/odspUtils.ts +73 -30
  500. package/src/opsCaching.ts +13 -12
  501. package/src/packageVersion.ts +1 -1
  502. package/src/prefetchLatestSnapshot.ts +24 -15
  503. package/src/retryErrorsStorageAdapter.ts +4 -8
  504. package/src/retryUtils.ts +6 -2
  505. package/src/socketModule.ts +2 -0
  506. package/src/vroom.ts +6 -6
  507. package/src/zipItDataRepresentationUtils.ts +63 -35
  508. package/tsconfig.cjs.json +7 -0
  509. package/tsconfig.json +2 -5
  510. package/lib/ReadBufferUtils.d.mts.map +0 -1
  511. package/lib/ReadBufferUtils.mjs.map +0 -1
  512. package/lib/WriteBufferUtils.d.mts.map +0 -1
  513. package/lib/WriteBufferUtils.mjs.map +0 -1
  514. package/lib/checkUrl.d.mts.map +0 -1
  515. package/lib/checkUrl.mjs.map +0 -1
  516. package/lib/compactSnapshotParser.d.mts.map +0 -1
  517. package/lib/compactSnapshotParser.mjs.map +0 -1
  518. package/lib/compactSnapshotWriter.d.mts.map +0 -1
  519. package/lib/compactSnapshotWriter.mjs.map +0 -1
  520. package/lib/constants.d.mts.map +0 -1
  521. package/lib/constants.mjs.map +0 -1
  522. package/lib/contracts.d.mts.map +0 -1
  523. package/lib/contracts.mjs.map +0 -1
  524. package/lib/contractsPublic.d.mts.map +0 -1
  525. package/lib/contractsPublic.mjs.map +0 -1
  526. package/lib/createFile.d.mts.map +0 -1
  527. package/lib/createFile.mjs.map +0 -1
  528. package/lib/createNewContainerOnExistingFile.d.mts.map +0 -1
  529. package/lib/createNewContainerOnExistingFile.mjs.map +0 -1
  530. package/lib/createNewModule.d.mts.map +0 -1
  531. package/lib/createNewModule.mjs.map +0 -1
  532. package/lib/createNewUtils.d.mts.map +0 -1
  533. package/lib/createNewUtils.mjs.map +0 -1
  534. package/lib/createOdspCreateContainerRequest.d.mts.map +0 -1
  535. package/lib/createOdspCreateContainerRequest.mjs.map +0 -1
  536. package/lib/createOdspUrl.d.mts.map +0 -1
  537. package/lib/createOdspUrl.mjs.map +0 -1
  538. package/lib/epochTracker.d.mts.map +0 -1
  539. package/lib/epochTracker.mjs.map +0 -1
  540. package/lib/fetch.d.mts.map +0 -1
  541. package/lib/fetch.mjs.map +0 -1
  542. package/lib/fetchSnapshot.d.mts.map +0 -1
  543. package/lib/fetchSnapshot.mjs.map +0 -1
  544. package/lib/getFileLink.d.mts.map +0 -1
  545. package/lib/getFileLink.mjs.map +0 -1
  546. package/lib/getQueryString.d.mts.map +0 -1
  547. package/lib/getQueryString.mjs.map +0 -1
  548. package/lib/getUrlAndHeadersWithAuth.d.mts.map +0 -1
  549. package/lib/getUrlAndHeadersWithAuth.mjs.map +0 -1
  550. package/lib/index.d.mts.map +0 -1
  551. package/lib/index.mjs +0 -22
  552. package/lib/index.mjs.map +0 -1
  553. package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts.map +0 -1
  554. package/lib/localOdspDriver/localOdspDeltaStorageService.mjs.map +0 -1
  555. package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +0 -1
  556. package/lib/localOdspDriver/localOdspDocumentService.mjs.map +0 -1
  557. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.mts.map +0 -1
  558. package/lib/localOdspDriver/localOdspDocumentServiceFactory.mjs.map +0 -1
  559. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +0 -1
  560. package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +0 -1
  561. package/lib/odspCache.d.mts.map +0 -1
  562. package/lib/odspCache.mjs.map +0 -1
  563. package/lib/odspDelayLoadedDeltaStream.d.mts.map +0 -1
  564. package/lib/odspDelayLoadedDeltaStream.mjs.map +0 -1
  565. package/lib/odspDeltaStorageService.d.mts.map +0 -1
  566. package/lib/odspDeltaStorageService.mjs.map +0 -1
  567. package/lib/odspDocumentDeltaConnection.d.mts.map +0 -1
  568. package/lib/odspDocumentDeltaConnection.mjs.map +0 -1
  569. package/lib/odspDocumentService.d.mts.map +0 -1
  570. package/lib/odspDocumentService.mjs.map +0 -1
  571. package/lib/odspDocumentServiceFactory.d.mts.map +0 -1
  572. package/lib/odspDocumentServiceFactory.mjs.map +0 -1
  573. package/lib/odspDocumentServiceFactoryCore.d.mts.map +0 -1
  574. package/lib/odspDocumentServiceFactoryCore.mjs.map +0 -1
  575. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.mts.map +0 -1
  576. package/lib/odspDocumentServiceFactoryWithCodeSplit.mjs.map +0 -1
  577. package/lib/odspDocumentStorageManager.d.mts.map +0 -1
  578. package/lib/odspDocumentStorageManager.mjs.map +0 -1
  579. package/lib/odspDocumentStorageServiceBase.d.mts.map +0 -1
  580. package/lib/odspDocumentStorageServiceBase.mjs.map +0 -1
  581. package/lib/odspDriverUrlResolver.d.mts.map +0 -1
  582. package/lib/odspDriverUrlResolver.mjs.map +0 -1
  583. package/lib/odspDriverUrlResolverForShareLink.d.mts.map +0 -1
  584. package/lib/odspDriverUrlResolverForShareLink.mjs.map +0 -1
  585. package/lib/odspError.d.mts.map +0 -1
  586. package/lib/odspError.mjs.map +0 -1
  587. package/lib/odspFluidFileLink.d.mts.map +0 -1
  588. package/lib/odspFluidFileLink.mjs.map +0 -1
  589. package/lib/odspLocationRedirection.d.mts.map +0 -1
  590. package/lib/odspLocationRedirection.mjs.map +0 -1
  591. package/lib/odspPublicUtils.d.mts.map +0 -1
  592. package/lib/odspPublicUtils.mjs.map +0 -1
  593. package/lib/odspSnapshotParser.d.mts.map +0 -1
  594. package/lib/odspSnapshotParser.mjs.map +0 -1
  595. package/lib/odspSummaryUploadManager.d.mts.map +0 -1
  596. package/lib/odspSummaryUploadManager.mjs.map +0 -1
  597. package/lib/odspUrlHelper.d.mts.map +0 -1
  598. package/lib/odspUrlHelper.mjs.map +0 -1
  599. package/lib/odspUtils.d.mts.map +0 -1
  600. package/lib/odspUtils.mjs.map +0 -1
  601. package/lib/opsCaching.d.mts.map +0 -1
  602. package/lib/opsCaching.mjs.map +0 -1
  603. package/lib/packageVersion.d.mts.map +0 -1
  604. package/lib/packageVersion.mjs.map +0 -1
  605. package/lib/prefetchLatestSnapshot.d.mts.map +0 -1
  606. package/lib/prefetchLatestSnapshot.mjs.map +0 -1
  607. package/lib/retryErrorsStorageAdapter.d.mts.map +0 -1
  608. package/lib/retryErrorsStorageAdapter.mjs.map +0 -1
  609. package/lib/retryUtils.d.mts.map +0 -1
  610. package/lib/retryUtils.mjs.map +0 -1
  611. package/lib/socketModule.d.mts.map +0 -1
  612. package/lib/socketModule.mjs.map +0 -1
  613. package/lib/vroom.d.mts.map +0 -1
  614. package/lib/vroom.mjs.map +0 -1
  615. package/lib/zipItDataRepresentationUtils.d.mts.map +0 -1
  616. package/lib/zipItDataRepresentationUtils.mjs.map +0 -1
@@ -6,12 +6,12 @@ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
6
6
  import * as api from "@fluidframework/protocol-definitions";
7
7
  import { ISummaryContext, FetchSource, ISnapshot, ISnapshotFetchOptions } from "@fluidframework/driver-definitions";
8
8
  import { IOdspResolvedUrl, InstrumentedStorageTokenFetcher } from "@fluidframework/odsp-driver-definitions";
9
- import { HostStoragePolicyInternal } from "./contracts.mjs";
10
- import { SnapshotFormatSupportType } from "./fetchSnapshot.mjs";
11
- import { IOdspCache } from "./odspCache.mjs";
12
- import { EpochTracker } from "./epochTracker.mjs";
13
- import { FlushResult } from "./odspDocumentDeltaConnection.mjs";
14
- import { OdspDocumentStorageServiceBase } from "./odspDocumentStorageServiceBase.mjs";
9
+ import { HostStoragePolicyInternal } from "./contracts.js";
10
+ import { SnapshotFormatSupportType } from "./fetchSnapshot.js";
11
+ import { IOdspCache } from "./odspCache.js";
12
+ import { EpochTracker } from "./epochTracker.js";
13
+ import { FlushResult } from "./odspDocumentDeltaConnection.js";
14
+ import { OdspDocumentStorageServiceBase } from "./odspDocumentStorageServiceBase.js";
15
15
  export declare const defaultSummarizerCacheExpiryTimeout: number;
16
16
  export declare class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
17
17
  private readonly odspResolvedUrl;
@@ -27,7 +27,7 @@ export declare class OdspDocumentStorageService extends OdspDocumentStorageServi
27
27
  private odspSummaryModuleLoaded;
28
28
  private summaryModuleP;
29
29
  private odspSummaryUploadManager;
30
- private firstVersionCall;
30
+ private firstSnapshotFetchCall;
31
31
  private _isFirstSnapshotFromNetwork;
32
32
  private readonly documentId;
33
33
  private readonly snapshotUrl;
@@ -46,10 +46,16 @@ export declare class OdspDocumentStorageService extends OdspDocumentStorageServi
46
46
  createBlob(file: ArrayBufferLike): Promise<api.ICreateBlobResponse>;
47
47
  protected fetchBlobFromStorage(blobId: string, evicted: boolean): Promise<ArrayBuffer>;
48
48
  getSnapshotTree(version?: api.IVersion, scenarioName?: string): Promise<api.ISnapshotTree | null>;
49
+ /**
50
+ * Fetches and returns the snapshot. If no loadingGroupIds or empty loadingGroupIds is provided, then snapshot for all
51
+ * ungrouped data will be provided.
52
+ * @param snapshotFetchOptions - fetch options for snapshot.
53
+ */
49
54
  getSnapshot(snapshotFetchOptions?: ISnapshotFetchOptions): Promise<ISnapshot>;
50
- getVersions(blobid: string | null, count: number, scenarioName?: string, fetchSource?: FetchSource): Promise<api.IVersion[]>;
51
55
  private fetchSnapshot;
52
- private fetchSnapshotCore;
56
+ getVersions(blobid: string | null, count: number, scenarioName?: string, fetchSource?: FetchSource): Promise<api.IVersion[]>;
57
+ private fetchSnapshotFromNetwork;
58
+ private fetchSnapshotFromNetworkCore;
53
59
  uploadSummaryWithContext(summary: api.ISummaryTree, context: ISummaryContext): Promise<string>;
54
60
  private getDelayLoadedSummaryManager;
55
61
  private checkSnapshotUrl;
@@ -57,4 +63,4 @@ export declare class OdspDocumentStorageService extends OdspDocumentStorageServi
57
63
  private checkAttachmentGETUrl;
58
64
  protected fetchTreeFromSnapshot(id: string, scenarioName?: string): Promise<api.ISnapshotTree | undefined>;
59
65
  }
60
- //# sourceMappingURL=odspDocumentStorageManager.d.mts.map
66
+ //# sourceMappingURL=odspDocumentStorageManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odspDocumentStorageManager.d.ts","sourceRoot":"","sources":["../src/odspDocumentStorageManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEN,mBAAmB,EAKnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,GAAG,MAAM,sCAAsC,CAAC;AAE5D,OAAO,EACN,eAAe,EACf,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACN,gBAAgB,EAGhB,+BAA+B,EAE/B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEN,yBAAyB,EAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAMN,yBAAyB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAA6B,MAAM,gBAAgB,CAAC;AASvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,eAAO,MAAM,mCAAmC,EAAE,MAAkB,CAAC;AAOrE,qBAAa,0BAA2B,SAAQ,8BAA8B;IAwB5E,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,8BAA8B;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAhC1C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,cAAc,CAAgD;IACtE,OAAO,CAAC,wBAAwB,CAAuC;IAEvE,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,2BAA2B,CAAsB;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IAEtD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAGlD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;gBAG1C,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,+BAA+B,EAChD,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,EAAE,OAAO,EAC1B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,yBAAyB,EACrC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EACzC,8BAA8B,EAAE,MAAM,MAAM,GAAG,SAAS,EACxD,uBAAuB,CAAC,uCAA2B;IAUrE,IAAW,0BAA0B,IAAI,OAAO,GAAG,SAAS,CAE3D;IAEY,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;cA2ChE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAgD/E,eAAe,CAC3B,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,EACtB,YAAY,CAAC,EAAE,MAAM,GAEnB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;IAQpC;;;;OAIG;IACU,WAAW,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC;YAgB5E,aAAa;IAwMd,WAAW,CAEvB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YA+EZ,wBAAwB;YAuBxB,4BAA4B;IAyI7B,wBAAwB,CACpC,OAAO,EAAE,GAAG,CAAC,YAAY,EACzB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC;YA4DJ,4BAA4B;IAwB1C,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,qBAAqB;cAUb,qBAAqB,CACpC,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC;CA0CzC"}
@@ -10,11 +10,11 @@ import { promiseRaceWithWinner } from "@fluidframework/driver-base";
10
10
  import { FetchSource, } from "@fluidframework/driver-definitions";
11
11
  import { RateLimiter, NonRetryableError } from "@fluidframework/driver-utils";
12
12
  import { OdspErrorTypes, getKeyForCacheEntry, } from "@fluidframework/odsp-driver-definitions";
13
- import { downloadSnapshot, evalBlobsAndTrees, fetchSnapshot, fetchSnapshotWithRedeem, } from "./fetchSnapshot.mjs";
14
- import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.mjs";
15
- import { createCacheSnapshotKey, getWithRetryForTokenRefresh, isInstanceOfISnapshot, } from "./odspUtils.mjs";
16
- import { pkgVersion as driverVersion } from "./packageVersion.mjs";
17
- import { OdspDocumentStorageServiceBase } from "./odspDocumentStorageServiceBase.mjs";
13
+ import { downloadSnapshot, evalBlobsAndTrees, fetchSnapshot, fetchSnapshotWithRedeem, } from "./fetchSnapshot.js";
14
+ import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
15
+ import { createCacheSnapshotKey, getWithRetryForTokenRefresh, isInstanceOfISnapshot, isSnapshotFetchForLoadingGroup, useLegacyFlowWithoutGroupsForSnapshotFetch, } from "./odspUtils.js";
16
+ import { pkgVersion as driverVersion } from "./packageVersion.js";
17
+ import { OdspDocumentStorageServiceBase } from "./odspDocumentStorageServiceBase.js";
18
18
  export const defaultSummarizerCacheExpiryTimeout = 60 * 1000; // 60 seconds.
19
19
  export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
20
20
  constructor(odspResolvedUrl, getStorageToken, logger, fetchFullSnapshot, cache, hostPolicy, epochTracker, flushCallback, relayServiceTenantAndSessionId, snapshotFormatFetchType) {
@@ -30,7 +30,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
30
30
  this.relayServiceTenantAndSessionId = relayServiceTenantAndSessionId;
31
31
  this.snapshotFormatFetchType = snapshotFormatFetchType;
32
32
  this.odspSummaryModuleLoaded = false;
33
- this.firstVersionCall = true;
33
+ this.firstSnapshotFetchCall = true;
34
34
  // Driver specified limits for snapshot size and time.
35
35
  /**
36
36
  * NOTE: While commit cfff6e3 added restrictions to prevent large payloads, snapshot failures will continue to
@@ -84,7 +84,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
84
84
  eventName: "readDataBlob",
85
85
  blobId,
86
86
  evicted,
87
- headers: Object.keys(headers).length !== 0 ? true : undefined,
87
+ headers: Object.keys(headers).length > 0 ? true : undefined,
88
88
  waitQueueLength: this.epochTracker.rateLimiter.waitQueueLength,
89
89
  }, async (event) => {
90
90
  const res = await this.epochTracker.fetchArray(url, { headers }, "blob");
@@ -111,14 +111,185 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
111
111
  }
112
112
  async getSnapshotTree(version, scenarioName) {
113
113
  if (!this.snapshotUrl) {
114
+ // eslint-disable-next-line unicorn/no-null
114
115
  return null;
115
116
  }
116
117
  return super.getSnapshotTree(version, scenarioName);
117
118
  }
119
+ /**
120
+ * Fetches and returns the snapshot. If no loadingGroupIds or empty loadingGroupIds is provided, then snapshot for all
121
+ * ungrouped data will be provided.
122
+ * @param snapshotFetchOptions - fetch options for snapshot.
123
+ */
118
124
  async getSnapshot(snapshotFetchOptions) {
119
- assert(this.hostPolicy.supportGetSnapshotApi !== true, "api should not be called yet");
120
- // This is just temporary as this api is not yet enabled in service policies.
121
- return this.fetchSnapshot(this.hostPolicy.snapshotOptions, snapshotFetchOptions?.scenarioName);
125
+ // Don't consult cache if request is not for a particular loading group.
126
+ const { snapshot } = await this.fetchSnapshot({
127
+ ...snapshotFetchOptions,
128
+ fetchSource: isSnapshotFetchForLoadingGroup(snapshotFetchOptions?.loadingGroupIds)
129
+ ? FetchSource.noCache
130
+ : snapshotFetchOptions?.fetchSource,
131
+ loadingGroupIds: snapshotFetchOptions?.loadingGroupIds ?? [],
132
+ });
133
+ return {
134
+ ...snapshot,
135
+ snapshotTree: this.combineProtocolAndAppSnapshotTree(snapshot.snapshotTree),
136
+ };
137
+ }
138
+ async fetchSnapshot(snapshotFetchOptions) {
139
+ const hostSnapshotOptions = this.hostPolicy.snapshotOptions;
140
+ const odspSnapshotCacheValue = await PerformanceEvent.timedExecAsync(this.logger, {
141
+ eventName: isSnapshotFetchForLoadingGroup(snapshotFetchOptions.loadingGroupIds)
142
+ ? "ObtainSnapshotForGroup"
143
+ : "ObtainSnapshot",
144
+ fetchSource: snapshotFetchOptions?.fetchSource,
145
+ }, async (event) => {
146
+ const props = {};
147
+ let cacheLookupTimeInSerialFetch = 0;
148
+ let retrievedSnapshot;
149
+ let method;
150
+ let prefetchWaitStartTime = performance.now();
151
+ if (snapshotFetchOptions.fetchSource === FetchSource.noCache) {
152
+ retrievedSnapshot = await this.fetchSnapshotFromNetwork(hostSnapshotOptions, snapshotFetchOptions.loadingGroupIds, snapshotFetchOptions.scenarioName);
153
+ method = "networkOnly";
154
+ }
155
+ else {
156
+ // Here's the logic to grab the persistent cache snapshot implemented by the host
157
+ // Epoch tracker is responsible for communicating with the persistent cache, handling epochs and cache versions
158
+ const cachedSnapshotP = this.epochTracker
159
+ .get(createCacheSnapshotKey(this.odspResolvedUrl))
160
+ .then(async (
161
+ // eslint-disable-next-line import/no-deprecated
162
+ snapshotCachedEntry) => {
163
+ if (snapshotCachedEntry !== undefined) {
164
+ // If the cached entry does not contain the entry time, then assign it a default of 30 days old.
165
+ const age = Date.now() -
166
+ (snapshotCachedEntry.cacheEntryTime ??
167
+ Date.now() - 30 * 24 * 60 * 60 * 1000);
168
+ // In order to decrease the number of times we have to execute a snapshot refresh,
169
+ // if this is the summarizer and we have a cache entry but it is past the defaultSummarizerCacheExpiryTimeout,
170
+ // force the network retrieval instead as there might be a more recent snapshot available.
171
+ // See: https://github.com/microsoft/FluidFramework/issues/8995 for additional information.
172
+ if (this.hostPolicy.summarizerClient) {
173
+ if (age > defaultSummarizerCacheExpiryTimeout) {
174
+ props.cacheSummarizerExpired = true;
175
+ return undefined;
176
+ }
177
+ else {
178
+ props.cacheSummarizerExpired = false;
179
+ }
180
+ }
181
+ // Record the cache age
182
+ props.cacheEntryAge = age;
183
+ // Snapshot from cache could be in older format, so transform that before returning.
184
+ if (isInstanceOfISnapshot(snapshotCachedEntry)) {
185
+ return snapshotCachedEntry;
186
+ }
187
+ else {
188
+ const snapshot = {
189
+ snapshotTree: snapshotCachedEntry.snapshotTree,
190
+ blobContents: snapshotCachedEntry.blobs,
191
+ ops: snapshotCachedEntry.ops,
192
+ latestSequenceNumber: snapshotCachedEntry.latestSequenceNumber,
193
+ sequenceNumber: snapshotCachedEntry.sequenceNumber,
194
+ snapshotFormatV: 1,
195
+ };
196
+ return snapshot;
197
+ }
198
+ }
199
+ });
200
+ // Based on the concurrentSnapshotFetch policy:
201
+ // Either retrieve both the network and cache snapshots concurrently and pick the first to return,
202
+ // or grab the cache value and then the network value if the cache value returns undefined.
203
+ // For summarizer which could call this during refreshing of summary parent, always use the cache
204
+ // first. Also for other clients, if it is not critical path which is determined by firstSnapshotFetchCall,
205
+ // then also check the cache first.
206
+ if (this.firstSnapshotFetchCall &&
207
+ this.hostPolicy.concurrentSnapshotFetch &&
208
+ !this.hostPolicy.summarizerClient) {
209
+ const networkSnapshotP = this.fetchSnapshotFromNetwork(hostSnapshotOptions, snapshotFetchOptions.loadingGroupIds, snapshotFetchOptions.scenarioName);
210
+ // Ensure that failures on both paths are ignored initially.
211
+ // I.e. if cache fails for some reason, we will proceed with network result.
212
+ // And vice versa - if (for example) client is offline and network request fails first, we
213
+ // do want to attempt to succeed with cached data!
214
+ const promiseRaceWinner = await promiseRaceWithWinner([
215
+ cachedSnapshotP.catch(() => undefined),
216
+ networkSnapshotP.catch(() => undefined),
217
+ ]);
218
+ retrievedSnapshot = promiseRaceWinner.value;
219
+ method = promiseRaceWinner.index === 0 ? "cache" : "network";
220
+ if (retrievedSnapshot === undefined) {
221
+ // if network failed -> wait for cache ( then return network failure)
222
+ // If cache returned empty or failed -> wait for network (success of failure)
223
+ try {
224
+ if (promiseRaceWinner.index === 1) {
225
+ retrievedSnapshot = await cachedSnapshotP;
226
+ method = "cache";
227
+ }
228
+ if (retrievedSnapshot === undefined) {
229
+ retrievedSnapshot = await networkSnapshotP;
230
+ method = "network";
231
+ }
232
+ }
233
+ catch (error) {
234
+ // The call stacks of any errors thrown by cached snapshot or network snapshot aren't very useful:
235
+ // they get truncated at this stack frame due to the promise race and how v8 tracks async stack traces--
236
+ // see https://v8.dev/docs/stack-trace-api#async-stack-traces and the "zero-cost async stack traces" document
237
+ // linked there. https://v8.dev/blog/fast-async#await-under-the-hood may also be helpful for context on internals.
238
+ // Regenerating the stack at this level provides more information for logged errors.
239
+ // Once FF uses an ES2021 target, we could convert the above promise race to use `Promise.any` + AggregateError and
240
+ // get similar quality stacks with less hand-crafted code.
241
+ const innerStack = error.stack;
242
+ const normalizedError = normalizeError(error);
243
+ normalizedError.addTelemetryProperties({ innerStack });
244
+ const newStack = `<<STACK TRUNCATED: see innerStack property>> \n${generateStack()}`;
245
+ overwriteStack(normalizedError, newStack);
246
+ throw normalizedError;
247
+ }
248
+ }
249
+ }
250
+ else {
251
+ // Note: There's a race condition here - another caller may come past the undefined check
252
+ // while the first caller is awaiting later async code in this block.
253
+ const startTime = performance.now();
254
+ retrievedSnapshot = await cachedSnapshotP;
255
+ cacheLookupTimeInSerialFetch = performance.now() - startTime;
256
+ method = retrievedSnapshot === undefined ? "network" : "cache";
257
+ if (retrievedSnapshot === undefined) {
258
+ prefetchWaitStartTime = performance.now();
259
+ retrievedSnapshot = await this.fetchSnapshotFromNetwork(hostSnapshotOptions, snapshotFetchOptions.loadingGroupIds, snapshotFetchOptions.scenarioName);
260
+ }
261
+ }
262
+ }
263
+ if (method === "network") {
264
+ props.cacheEntryAge = undefined;
265
+ }
266
+ if (this.firstSnapshotFetchCall) {
267
+ this._isFirstSnapshotFromNetwork = method === "cache" ? false : true;
268
+ }
269
+ const prefetchStartTime = retrievedSnapshot.prefetchStartTime;
270
+ event.end({
271
+ ...props,
272
+ method,
273
+ fetchSnapshotForInitialLoad: this.firstSnapshotFetchCall,
274
+ useLegacyFlowWithoutGroups: useLegacyFlowWithoutGroupsForSnapshotFetch(snapshotFetchOptions.loadingGroupIds),
275
+ avoidPrefetchSnapshotCache: this.hostPolicy.avoidPrefetchSnapshotCache,
276
+ ...evalBlobsAndTrees(retrievedSnapshot),
277
+ cacheLookupTimeInSerialFetch,
278
+ prefetchSavedDuration: prefetchStartTime !== undefined && method !== "cache"
279
+ ? prefetchWaitStartTime - prefetchStartTime
280
+ : undefined,
281
+ });
282
+ return retrievedSnapshot;
283
+ });
284
+ const stTime = performance.now();
285
+ // Don't override ops which were fetched during initial load, since we could still need them.
286
+ const id = this.initializeFromSnapshot(odspSnapshotCacheValue, this.firstSnapshotFetchCall, snapshotFetchOptions?.cacheSnapshot ?? this.firstSnapshotFetchCall);
287
+ this.logger.sendTelemetryEvent({
288
+ eventName: "SnapshotInitializeTime",
289
+ duration: performance.now() - stTime,
290
+ }, undefined, LogLevel.verbose);
291
+ this.firstSnapshotFetchCall = false;
292
+ return { snapshot: odspSnapshotCacheValue, id };
122
293
  }
123
294
  async getVersions(
124
295
  // eslint-disable-next-line @rushstack/no-new-null
@@ -142,150 +313,12 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
142
313
  }
143
314
  // If count is one, we can use the trees/latest API, which returns the latest version and trees in a single request for better performance
144
315
  if (count === 1 && (blobid === null || blobid === this.documentId)) {
145
- const hostSnapshotOptions = this.hostPolicy.snapshotOptions;
146
- const odspSnapshotCacheValue = await PerformanceEvent.timedExecAsync(this.logger, { eventName: "ObtainSnapshot", fetchSource }, async (event) => {
147
- const props = {};
148
- let cacheLookupTimeInSerialFetch = 0;
149
- let retrievedSnapshot;
150
- let method;
151
- let prefetchWaitStartTime = performance.now();
152
- if (fetchSource === FetchSource.noCache) {
153
- retrievedSnapshot = await this.fetchSnapshot(hostSnapshotOptions, scenarioName);
154
- method = "networkOnly";
155
- }
156
- else {
157
- // Here's the logic to grab the persistent cache snapshot implemented by the host
158
- // Epoch tracker is responsible for communicating with the persistent cache, handling epochs and cache versions
159
- const cachedSnapshotP = this.epochTracker
160
- .get(createCacheSnapshotKey(this.odspResolvedUrl))
161
- .then(async (snapshotCachedEntry) => {
162
- if (snapshotCachedEntry !== undefined) {
163
- // If the cached entry does not contain the entry time, then assign it a default of 30 days old.
164
- const age = Date.now() -
165
- (snapshotCachedEntry.cacheEntryTime ??
166
- Date.now() - 30 * 24 * 60 * 60 * 1000);
167
- // In order to decrease the number of times we have to execute a snapshot refresh,
168
- // if this is the summarizer and we have a cache entry but it is past the defaultSummarizerCacheExpiryTimeout,
169
- // force the network retrieval instead as there might be a more recent snapshot available.
170
- // See: https://github.com/microsoft/FluidFramework/issues/8995 for additional information.
171
- if (this.hostPolicy.summarizerClient) {
172
- if (age > defaultSummarizerCacheExpiryTimeout) {
173
- props.cacheSummarizerExpired = true;
174
- return undefined;
175
- }
176
- else {
177
- props.cacheSummarizerExpired = false;
178
- }
179
- }
180
- // Record the cache age
181
- props.cacheEntryAge = age;
182
- // Snapshot from cache could be in older format, so transform that before returning.
183
- if (isInstanceOfISnapshot(snapshotCachedEntry)) {
184
- return snapshotCachedEntry;
185
- }
186
- else {
187
- const snapshot = {
188
- snapshotTree: snapshotCachedEntry.snapshotTree,
189
- blobContents: snapshotCachedEntry.blobs,
190
- ops: snapshotCachedEntry.ops,
191
- latestSequenceNumber: snapshotCachedEntry.latestSequenceNumber,
192
- sequenceNumber: snapshotCachedEntry.sequenceNumber,
193
- snapshotFormatV: 1,
194
- };
195
- return snapshot;
196
- }
197
- }
198
- });
199
- // Based on the concurrentSnapshotFetch policy:
200
- // Either retrieve both the network and cache snapshots concurrently and pick the first to return,
201
- // or grab the cache value and then the network value if the cache value returns undefined.
202
- // For summarizer which could call this during refreshing of summary parent, always use the cache
203
- // first. Also for other clients, if it is not critical path which is determined by firstVersionCall,
204
- // then also check the cache first.
205
- if (this.firstVersionCall &&
206
- this.hostPolicy.concurrentSnapshotFetch &&
207
- !this.hostPolicy.summarizerClient) {
208
- const networkSnapshotP = this.fetchSnapshot(hostSnapshotOptions, scenarioName);
209
- // Ensure that failures on both paths are ignored initially.
210
- // I.e. if cache fails for some reason, we will proceed with network result.
211
- // And vice versa - if (for example) client is offline and network request fails first, we
212
- // do want to attempt to succeed with cached data!
213
- const promiseRaceWinner = await promiseRaceWithWinner([
214
- cachedSnapshotP.catch(() => undefined),
215
- networkSnapshotP.catch(() => undefined),
216
- ]);
217
- retrievedSnapshot = promiseRaceWinner.value;
218
- method = promiseRaceWinner.index === 0 ? "cache" : "network";
219
- if (retrievedSnapshot === undefined) {
220
- // if network failed -> wait for cache ( then return network failure)
221
- // If cache returned empty or failed -> wait for network (success of failure)
222
- try {
223
- if (promiseRaceWinner.index === 1) {
224
- retrievedSnapshot = await cachedSnapshotP;
225
- method = "cache";
226
- }
227
- if (retrievedSnapshot === undefined) {
228
- retrievedSnapshot = await networkSnapshotP;
229
- method = "network";
230
- }
231
- }
232
- catch (err) {
233
- // The call stacks of any errors thrown by cached snapshot or network snapshot aren't very useful:
234
- // they get truncated at this stack frame due to the promise race and how v8 tracks async stack traces--
235
- // see https://v8.dev/docs/stack-trace-api#async-stack-traces and the "zero-cost async stack traces" document
236
- // linked there. https://v8.dev/blog/fast-async#await-under-the-hood may also be helpful for context on internals.
237
- // Regenerating the stack at this level provides more information for logged errors.
238
- // Once FF uses an ES2021 target, we could convert the above promise race to use `Promise.any` + AggregateError and
239
- // get similar quality stacks with less hand-crafted code.
240
- const innerStack = err.stack;
241
- const normalizedError = normalizeError(err);
242
- normalizedError.addTelemetryProperties({ innerStack });
243
- const newStack = `<<STACK TRUNCATED: see innerStack property>> \n${generateStack()}`;
244
- overwriteStack(normalizedError, newStack);
245
- throw normalizedError;
246
- }
247
- }
248
- }
249
- else {
250
- // Note: There's a race condition here - another caller may come past the undefined check
251
- // while the first caller is awaiting later async code in this block.
252
- const startTime = performance.now();
253
- retrievedSnapshot = await cachedSnapshotP;
254
- cacheLookupTimeInSerialFetch = performance.now() - startTime;
255
- method = retrievedSnapshot !== undefined ? "cache" : "network";
256
- if (retrievedSnapshot === undefined) {
257
- prefetchWaitStartTime = performance.now();
258
- retrievedSnapshot = await this.fetchSnapshot(hostSnapshotOptions, scenarioName);
259
- }
260
- }
261
- }
262
- if (method === "network") {
263
- props.cacheEntryAge = undefined;
264
- }
265
- if (this.firstVersionCall) {
266
- this._isFirstSnapshotFromNetwork = method === "cache" ? false : true;
267
- }
268
- const prefetchStartTime = retrievedSnapshot.prefetchStartTime;
269
- event.end({
270
- ...props,
271
- method,
272
- avoidPrefetchSnapshotCache: this.hostPolicy.avoidPrefetchSnapshotCache,
273
- ...evalBlobsAndTrees(retrievedSnapshot),
274
- cacheLookupTimeInSerialFetch,
275
- prefetchSavedDuration: prefetchStartTime !== undefined && method !== "cache"
276
- ? prefetchWaitStartTime - prefetchStartTime
277
- : undefined,
278
- });
279
- return retrievedSnapshot;
316
+ const { id } = await this.fetchSnapshot({
317
+ cacheSnapshot: true,
318
+ scenarioName,
319
+ versionId: blobid ?? undefined,
320
+ fetchSource,
280
321
  });
281
- const stTime = performance.now();
282
- // Don't override ops which were fetched during initial load, since we could still need them.
283
- const id = this.initializeFromSnapshot(odspSnapshotCacheValue, this.firstVersionCall);
284
- this.logger.sendTelemetryEvent({
285
- eventName: "SnapshotInitializeTime",
286
- duration: performance.now() - stTime,
287
- }, undefined, LogLevel.verbose);
288
- this.firstVersionCall = false;
289
322
  return id ? [{ id, treeId: undefined }] : [];
290
323
  }
291
324
  return getWithRetryForTokenRefresh(async (options) => {
@@ -294,7 +327,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
294
327
  // Fetch the latest snapshot versions for the document
295
328
  const response = await PerformanceEvent.timedExecAsync(this.logger, {
296
329
  eventName: "getVersions",
297
- headers: Object.keys(headers).length !== 0 ? true : undefined,
330
+ headers: Object.keys(headers).length > 0 ? true : undefined,
298
331
  }, async () => this.epochTracker.fetchAndParseAsJSON(url, { headers }, "versions", undefined, scenarioName));
299
332
  const versionsResponse = response.content;
300
333
  if (!versionsResponse) {
@@ -311,22 +344,24 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
311
344
  });
312
345
  });
313
346
  }
314
- async fetchSnapshot(hostSnapshotOptions, scenarioName) {
315
- return this.fetchSnapshotCore(hostSnapshotOptions, scenarioName).catch((error) => {
347
+ async fetchSnapshotFromNetwork(hostSnapshotOptions, loadingGroupIds, scenarioName) {
348
+ return this.fetchSnapshotFromNetworkCore(hostSnapshotOptions, loadingGroupIds, scenarioName).catch((error) => {
316
349
  // Issue #5895:
317
350
  // If we are offline, this error is retryable. But that means that RetriableDocumentStorageService
318
351
  // will run in circles calling getSnapshotTree, which would result in OdspDocumentStorageService class
319
352
  // going getVersions / individual blob download path. This path is very slow, and will not work with
320
353
  // delay-loaded data stores and ODSP storage deleting old snapshots and blobs.
321
354
  if (typeof error === "object" && error !== null) {
355
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
322
356
  error.canRetry = false;
323
357
  }
324
358
  throw error;
325
359
  });
326
360
  }
327
- async fetchSnapshotCore(hostSnapshotOptions, scenarioName) {
328
- // Don't look into cache, if the host specifically tells us so.
329
- if (!this.hostPolicy.avoidPrefetchSnapshotCache) {
361
+ async fetchSnapshotFromNetworkCore(hostSnapshotOptions, loadingGroupIds, scenarioName) {
362
+ // Don't look into cache, if the host specifically tells us so. Also, if request is
363
+ // for initial snapshot, don't consult the prefetch cache.
364
+ if (!this.hostPolicy.avoidPrefetchSnapshotCache && this.firstSnapshotFetchCall) {
330
365
  const prefetchCacheKey = getKeyForCacheEntry(createCacheSnapshotKey(this.odspResolvedUrl));
331
366
  const result = await this.cache.snapshotPrefetchResultCache
332
367
  ?.get(prefetchCacheKey)
@@ -337,11 +372,11 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
337
372
  await this.epochTracker.validateEpoch(response.fluidEpoch, "treesLatest");
338
373
  return response;
339
374
  })
340
- .catch(async (err) => {
375
+ .catch(async (error) => {
341
376
  this.logger.sendTelemetryEvent({
342
377
  eventName: "PrefetchSnapshotError",
343
378
  concurrentSnapshotFetch: this.hostPolicy.concurrentSnapshotFetch,
344
- }, err);
379
+ }, error);
345
380
  return undefined;
346
381
  });
347
382
  // If the prefetch call, is successful, then return the contents otherwise as backup for now, just
@@ -362,8 +397,8 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
362
397
  snapshotOptions.mds = undefined;
363
398
  snapshotOptions.timeout = undefined;
364
399
  }
365
- const snapshotDownloader = async (finalOdspResolvedUrl, storageToken, options, controller) => {
366
- return downloadSnapshot(finalOdspResolvedUrl, storageToken, this.logger, options, this.snapshotFormatFetchType, controller, this.epochTracker, scenarioName);
400
+ const snapshotDownloader = async (finalOdspResolvedUrl, storageToken, loadingGroupId, options, controller) => {
401
+ return downloadSnapshot(finalOdspResolvedUrl, storageToken, loadingGroupId, options, this.snapshotFormatFetchType, controller, this.epochTracker, scenarioName);
367
402
  };
368
403
  const putInCache = async (valueWithEpoch) => {
369
404
  return this.cache.persistedCache.put(createCacheSnapshotKey(this.odspResolvedUrl),
@@ -372,10 +407,12 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
372
407
  };
373
408
  const removeEntries = async () => this.cache.persistedCache.removeEntries();
374
409
  try {
375
- const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getStorageToken, snapshotOptions, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, this.hostPolicy.enableRedeemFallback);
410
+ const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getStorageToken, snapshotOptions, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, loadingGroupIds, this.hostPolicy.enableRedeemFallback);
376
411
  return odspSnapshot;
412
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
377
413
  }
378
414
  catch (error) {
415
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
379
416
  const errorType = error.errorType;
380
417
  // If the snapshot size is too big and the host specified the size limitation(specified in hostSnapshotOptions), then don't try to fetch the snapshot again.
381
418
  if (errorType === OdspErrorTypes.snapshotTooBig &&
@@ -389,6 +426,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
389
426
  snapshotOptions.blobs) {
390
427
  this.logger.sendErrorEvent({
391
428
  eventName: "TreeLatest_SecondCall",
429
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
392
430
  errorType,
393
431
  });
394
432
  const snapshotOptionsWithoutBlobs = {
@@ -397,7 +435,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
397
435
  mds: undefined,
398
436
  timeout: undefined,
399
437
  };
400
- const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getStorageToken, snapshotOptionsWithoutBlobs, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, this.hostPolicy.enableRedeemFallback);
438
+ const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getStorageToken, snapshotOptionsWithoutBlobs, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, loadingGroupIds, this.hostPolicy.enableRedeemFallback);
401
439
  return odspSnapshot;
402
440
  }
403
441
  throw error;
@@ -454,7 +492,9 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
454
492
  }
455
493
  async getDelayLoadedSummaryManager() {
456
494
  assert(this.odspSummaryModuleLoaded === false, 0x56f /* Should be loaded only once */);
457
- const module = await import("./odspSummaryUploadManager.mjs").then((m) => {
495
+ const module = await import(
496
+ /* webpackChunkName: "summaryModule" */ "./odspSummaryUploadManager.js")
497
+ .then((m) => {
458
498
  this.logger.sendTelemetryEvent({ eventName: "SummaryModuleLoaded" });
459
499
  return m;
460
500
  })
@@ -502,4 +542,4 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
502
542
  });
503
543
  }
504
544
  }
505
- //# sourceMappingURL=odspDocumentStorageManager.mjs.map
545
+ //# sourceMappingURL=odspDocumentStorageManager.js.map