@fluidframework/odsp-driver 2.0.0-dev-rc.1.0.0.228517 → 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 (623) hide show
  1. package/.eslintrc.cjs +33 -0
  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 +16 -17
  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 +2 -2
  18. package/dist/compactSnapshotParser.d.ts.map +1 -1
  19. package/dist/compactSnapshotParser.js +94 -75
  20. package/dist/compactSnapshotParser.js.map +1 -1
  21. package/dist/compactSnapshotWriter.d.ts +2 -2
  22. package/dist/compactSnapshotWriter.d.ts.map +1 -1
  23. package/dist/compactSnapshotWriter.js +26 -20
  24. package/dist/compactSnapshotWriter.js.map +1 -1
  25. package/dist/contracts.d.ts +24 -4
  26. package/dist/contracts.d.ts.map +1 -1
  27. package/dist/contracts.js +5 -1
  28. package/dist/contracts.js.map +1 -1
  29. package/dist/createFile.d.ts +4 -4
  30. package/dist/createFile.d.ts.map +1 -1
  31. package/dist/createFile.js +36 -52
  32. package/dist/createFile.js.map +1 -1
  33. package/dist/createNewContainerOnExistingFile.d.ts +2 -2
  34. package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
  35. package/dist/createNewContainerOnExistingFile.js +14 -14
  36. package/dist/createNewContainerOnExistingFile.js.map +1 -1
  37. package/dist/createNewModule.d.ts +2 -2
  38. package/dist/createNewModule.d.ts.map +1 -1
  39. package/dist/createNewModule.js +4 -4
  40. package/dist/createNewModule.js.map +1 -1
  41. package/dist/createNewUtils.d.ts +4 -4
  42. package/dist/createNewUtils.d.ts.map +1 -1
  43. package/dist/createNewUtils.js +16 -11
  44. package/dist/createNewUtils.js.map +1 -1
  45. package/dist/createOdspCreateContainerRequest.d.ts +2 -2
  46. package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
  47. package/dist/createOdspCreateContainerRequest.js +2 -2
  48. package/dist/createOdspCreateContainerRequest.js.map +1 -1
  49. package/dist/createOdspUrl.d.ts +1 -1
  50. package/dist/createOdspUrl.d.ts.map +1 -1
  51. package/dist/createOdspUrl.js.map +1 -1
  52. package/dist/epochTracker.d.ts +10 -9
  53. package/dist/epochTracker.d.ts.map +1 -1
  54. package/dist/epochTracker.js +67 -45
  55. package/dist/epochTracker.js.map +1 -1
  56. package/dist/fetchSnapshot.d.ts +14 -11
  57. package/dist/fetchSnapshot.d.ts.map +1 -1
  58. package/dist/fetchSnapshot.js +91 -71
  59. package/dist/fetchSnapshot.js.map +1 -1
  60. package/dist/getFileLink.d.ts.map +1 -1
  61. package/dist/getFileLink.js +25 -18
  62. package/dist/getFileLink.js.map +1 -1
  63. package/dist/getQueryString.d.ts.map +1 -1
  64. package/dist/getQueryString.js +2 -0
  65. package/dist/getQueryString.js.map +1 -1
  66. package/dist/index.d.ts +19 -19
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +44 -44
  69. package/dist/index.js.map +1 -1
  70. package/dist/localOdspDriver/localOdspDocumentService.d.ts +4 -3
  71. package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
  72. package/dist/localOdspDriver/localOdspDocumentService.js +8 -6
  73. package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -1
  74. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts +8 -6
  75. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -1
  76. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js +10 -9
  77. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -1
  78. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +3 -2
  79. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
  80. package/dist/localOdspDriver/localOdspDocumentStorageManager.js +9 -6
  81. package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
  82. package/dist/odsp-driver-alpha.d.ts +31 -15
  83. package/dist/odsp-driver-beta.d.ts +4 -5
  84. package/dist/odsp-driver-public.d.ts +4 -5
  85. package/dist/odsp-driver-untrimmed.d.ts +34 -16
  86. package/dist/odspCache.d.ts +5 -5
  87. package/dist/odspCache.d.ts.map +1 -1
  88. package/dist/odspCache.js +1 -2
  89. package/dist/odspCache.js.map +1 -1
  90. package/dist/odspDelayLoadedDeltaStream.d.ts +12 -6
  91. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  92. package/dist/odspDelayLoadedDeltaStream.js +89 -25
  93. package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
  94. package/dist/odspDeltaStorageService.d.ts +7 -7
  95. package/dist/odspDeltaStorageService.d.ts.map +1 -1
  96. package/dist/odspDeltaStorageService.js +5 -5
  97. package/dist/odspDeltaStorageService.js.map +1 -1
  98. package/dist/odspDocumentDeltaConnection.d.ts +1 -1
  99. package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
  100. package/dist/odspDocumentDeltaConnection.js +41 -23
  101. package/dist/odspDocumentDeltaConnection.js.map +1 -1
  102. package/dist/odspDocumentService.d.ts +9 -6
  103. package/dist/odspDocumentService.d.ts.map +1 -1
  104. package/dist/odspDocumentService.js +25 -19
  105. package/dist/odspDocumentService.js.map +1 -1
  106. package/dist/odspDocumentServiceFactory.d.ts +6 -1
  107. package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
  108. package/dist/odspDocumentServiceFactory.js +9 -4
  109. package/dist/odspDocumentServiceFactory.js.map +1 -1
  110. package/dist/odspDocumentServiceFactoryCore.d.ts +4 -4
  111. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  112. package/dist/odspDocumentServiceFactoryCore.js +27 -30
  113. package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
  114. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts +1 -1
  115. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -1
  116. package/dist/odspDocumentServiceFactoryWithCodeSplit.js +2 -2
  117. package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -1
  118. package/dist/odspDocumentStorageManager.d.ts +17 -10
  119. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  120. package/dist/odspDocumentStorageManager.js +226 -169
  121. package/dist/odspDocumentStorageManager.js.map +1 -1
  122. package/dist/odspDocumentStorageServiceBase.d.ts +4 -6
  123. package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
  124. package/dist/odspDocumentStorageServiceBase.js +34 -31
  125. package/dist/odspDocumentStorageServiceBase.js.map +1 -1
  126. package/dist/odspDriverUrlResolver.d.ts +1 -1
  127. package/dist/odspDriverUrlResolver.d.ts.map +1 -1
  128. package/dist/odspDriverUrlResolver.js +26 -32
  129. package/dist/odspDriverUrlResolver.js.map +1 -1
  130. package/dist/odspDriverUrlResolverForShareLink.d.ts +13 -6
  131. package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  132. package/dist/odspDriverUrlResolverForShareLink.js +47 -37
  133. package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
  134. package/dist/odspError.d.ts +1 -1
  135. package/dist/odspError.d.ts.map +1 -1
  136. package/dist/odspError.js +6 -6
  137. package/dist/odspError.js.map +1 -1
  138. package/dist/odspFluidFileLink.d.ts +1 -1
  139. package/dist/odspFluidFileLink.d.ts.map +1 -1
  140. package/dist/odspFluidFileLink.js +2 -2
  141. package/dist/odspFluidFileLink.js.map +1 -1
  142. package/dist/odspLocationRedirection.js +2 -2
  143. package/dist/odspLocationRedirection.js.map +1 -1
  144. package/dist/odspPublicUtils.d.ts +4 -0
  145. package/dist/odspPublicUtils.d.ts.map +1 -1
  146. package/dist/odspPublicUtils.js +3 -0
  147. package/dist/odspPublicUtils.js.map +1 -1
  148. package/dist/odspSnapshotParser.d.ts +3 -3
  149. package/dist/odspSnapshotParser.d.ts.map +1 -1
  150. package/dist/odspSnapshotParser.js +5 -3
  151. package/dist/odspSnapshotParser.js.map +1 -1
  152. package/dist/odspSummaryUploadManager.d.ts +1 -1
  153. package/dist/odspSummaryUploadManager.d.ts.map +1 -1
  154. package/dist/odspSummaryUploadManager.js +9 -6
  155. package/dist/odspSummaryUploadManager.js.map +1 -1
  156. package/dist/odspUrlHelper.d.ts.map +1 -1
  157. package/dist/odspUrlHelper.js +1 -2
  158. package/dist/odspUrlHelper.js.map +1 -1
  159. package/dist/odspUtils.d.ts +29 -13
  160. package/dist/odspUtils.d.ts.map +1 -1
  161. package/dist/odspUtils.js +75 -41
  162. package/dist/odspUtils.js.map +1 -1
  163. package/dist/opsCaching.d.ts +1 -1
  164. package/dist/opsCaching.d.ts.map +1 -1
  165. package/dist/opsCaching.js +2 -1
  166. package/dist/opsCaching.js.map +1 -1
  167. package/dist/package.json +3 -0
  168. package/dist/packageVersion.d.ts +1 -1
  169. package/dist/packageVersion.js +1 -1
  170. package/dist/packageVersion.js.map +1 -1
  171. package/dist/prefetchLatestSnapshot.d.ts +2 -2
  172. package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
  173. package/dist/prefetchLatestSnapshot.js +17 -12
  174. package/dist/prefetchLatestSnapshot.js.map +1 -1
  175. package/dist/retryErrorsStorageAdapter.d.ts +2 -2
  176. package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
  177. package/dist/retryErrorsStorageAdapter.js +10 -5
  178. package/dist/retryErrorsStorageAdapter.js.map +1 -1
  179. package/dist/retryUtils.d.ts.map +1 -1
  180. package/dist/retryUtils.js +7 -3
  181. package/dist/retryUtils.js.map +1 -1
  182. package/dist/socketModule.d.ts.map +1 -1
  183. package/dist/socketModule.js +2 -0
  184. package/dist/socketModule.js.map +1 -1
  185. package/dist/tsdoc-metadata.json +1 -1
  186. package/dist/vroom.d.ts +2 -2
  187. package/dist/vroom.d.ts.map +1 -1
  188. package/dist/vroom.js +5 -5
  189. package/dist/vroom.js.map +1 -1
  190. package/dist/zipItDataRepresentationUtils.d.ts +1 -1
  191. package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
  192. package/dist/zipItDataRepresentationUtils.js +17 -13
  193. package/dist/zipItDataRepresentationUtils.js.map +1 -1
  194. package/lib/{ReadBufferUtils.d.mts → ReadBufferUtils.d.ts} +1 -1
  195. package/lib/ReadBufferUtils.d.ts.map +1 -0
  196. package/lib/{ReadBufferUtils.mjs → ReadBufferUtils.js} +1 -1
  197. package/lib/ReadBufferUtils.js.map +1 -0
  198. package/lib/{WriteBufferUtils.d.mts → WriteBufferUtils.d.ts} +2 -2
  199. package/lib/WriteBufferUtils.d.ts.map +1 -0
  200. package/lib/{WriteBufferUtils.mjs → WriteBufferUtils.js} +2 -2
  201. package/lib/WriteBufferUtils.js.map +1 -0
  202. package/lib/{checkUrl.d.mts → checkUrl.d.ts} +1 -1
  203. package/lib/checkUrl.d.ts.map +1 -0
  204. package/lib/{checkUrl.mjs → checkUrl.js} +5 -3
  205. package/lib/checkUrl.js.map +1 -0
  206. package/lib/{compactSnapshotParser.d.mts → compactSnapshotParser.d.ts} +3 -3
  207. package/lib/compactSnapshotParser.d.ts.map +1 -0
  208. package/lib/{compactSnapshotParser.mjs → compactSnapshotParser.js} +69 -50
  209. package/lib/compactSnapshotParser.js.map +1 -0
  210. package/lib/{compactSnapshotWriter.d.mts → compactSnapshotWriter.d.ts} +3 -3
  211. package/lib/compactSnapshotWriter.d.ts.map +1 -0
  212. package/lib/{compactSnapshotWriter.mjs → compactSnapshotWriter.js} +14 -8
  213. package/lib/compactSnapshotWriter.js.map +1 -0
  214. package/lib/{constants.d.mts → constants.d.ts} +1 -1
  215. package/lib/constants.d.ts.map +1 -0
  216. package/lib/{constants.mjs → constants.js} +1 -1
  217. package/lib/constants.js.map +1 -0
  218. package/lib/{contracts.d.mts → contracts.d.ts} +25 -5
  219. package/lib/contracts.d.ts.map +1 -0
  220. package/lib/contracts.js +10 -0
  221. package/lib/contracts.js.map +1 -0
  222. package/lib/{contractsPublic.d.mts → contractsPublic.d.ts} +1 -1
  223. package/lib/contractsPublic.d.ts.map +1 -0
  224. package/lib/{contractsPublic.mjs → contractsPublic.js} +1 -1
  225. package/lib/contractsPublic.js.map +1 -0
  226. package/lib/{createFile.d.mts → createFile.d.ts} +5 -5
  227. package/lib/createFile.d.ts.map +1 -0
  228. package/lib/{createFile.mjs → createFile.js} +25 -41
  229. package/lib/createFile.js.map +1 -0
  230. package/lib/{createNewContainerOnExistingFile.d.mts → createNewContainerOnExistingFile.d.ts} +3 -3
  231. package/lib/createNewContainerOnExistingFile.d.ts.map +1 -0
  232. package/lib/{createNewContainerOnExistingFile.mjs → createNewContainerOnExistingFile.js} +7 -7
  233. package/lib/createNewContainerOnExistingFile.js.map +1 -0
  234. package/lib/{createNewModule.mjs → createNewModule.d.ts} +3 -3
  235. package/lib/createNewModule.d.ts.map +1 -0
  236. package/lib/{createNewModule.d.mts → createNewModule.js} +3 -3
  237. package/lib/createNewModule.js.map +1 -0
  238. package/lib/{createNewUtils.d.mts → createNewUtils.d.ts} +5 -5
  239. package/lib/createNewUtils.d.ts.map +1 -0
  240. package/lib/{createNewUtils.mjs → createNewUtils.js} +13 -8
  241. package/lib/createNewUtils.js.map +1 -0
  242. package/lib/{createOdspCreateContainerRequest.d.mts → createOdspCreateContainerRequest.d.ts} +7 -3
  243. package/lib/createOdspCreateContainerRequest.d.ts.map +1 -0
  244. package/lib/{createOdspCreateContainerRequest.mjs → createOdspCreateContainerRequest.js} +2 -2
  245. package/lib/createOdspCreateContainerRequest.js.map +1 -0
  246. package/lib/{createOdspUrl.d.mts → createOdspUrl.d.ts} +2 -2
  247. package/lib/createOdspUrl.d.ts.map +1 -0
  248. package/lib/{createOdspUrl.mjs → createOdspUrl.js} +1 -1
  249. package/lib/createOdspUrl.js.map +1 -0
  250. package/lib/{epochTracker.d.mts → epochTracker.d.ts} +11 -10
  251. package/lib/epochTracker.d.ts.map +1 -0
  252. package/lib/{epochTracker.mjs → epochTracker.js} +58 -36
  253. package/lib/epochTracker.js.map +1 -0
  254. package/lib/{fetch.d.mts → fetch.d.ts} +1 -1
  255. package/lib/fetch.d.ts.map +1 -0
  256. package/lib/{fetch.mjs → fetch.js} +1 -1
  257. package/lib/fetch.js.map +1 -0
  258. package/lib/{fetchSnapshot.d.mts → fetchSnapshot.d.ts} +15 -12
  259. package/lib/fetchSnapshot.d.ts.map +1 -0
  260. package/lib/{fetchSnapshot.mjs → fetchSnapshot.js} +74 -54
  261. package/lib/fetchSnapshot.js.map +1 -0
  262. package/lib/{getFileLink.d.mts → getFileLink.d.ts} +1 -1
  263. package/lib/getFileLink.d.ts.map +1 -0
  264. package/lib/{getFileLink.mjs → getFileLink.js} +17 -10
  265. package/lib/getFileLink.js.map +1 -0
  266. package/lib/{getQueryString.d.mts → getQueryString.d.ts} +5 -1
  267. package/lib/getQueryString.d.ts.map +1 -0
  268. package/lib/{getQueryString.mjs → getQueryString.js} +3 -1
  269. package/lib/getQueryString.js.map +1 -0
  270. package/lib/{getUrlAndHeadersWithAuth.d.mts → getUrlAndHeadersWithAuth.d.ts} +1 -1
  271. package/lib/getUrlAndHeadersWithAuth.d.ts.map +1 -0
  272. package/lib/{getUrlAndHeadersWithAuth.mjs → getUrlAndHeadersWithAuth.js} +1 -1
  273. package/lib/getUrlAndHeadersWithAuth.js.map +1 -0
  274. package/lib/{index.d.mts → index.d.ts} +20 -20
  275. package/lib/index.d.ts.map +1 -0
  276. package/lib/index.js +29 -0
  277. package/lib/index.js.map +1 -0
  278. package/lib/localOdspDriver/{localOdspDeltaStorageService.d.mts → localOdspDeltaStorageService.d.ts} +1 -1
  279. package/lib/localOdspDriver/localOdspDeltaStorageService.d.ts.map +1 -0
  280. package/lib/localOdspDriver/{localOdspDeltaStorageService.mjs → localOdspDeltaStorageService.js} +1 -1
  281. package/lib/localOdspDriver/localOdspDeltaStorageService.js.map +1 -0
  282. package/lib/localOdspDriver/{localOdspDocumentService.d.mts → localOdspDocumentService.d.ts} +5 -4
  283. package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +1 -0
  284. package/lib/localOdspDriver/{localOdspDocumentService.mjs → localOdspDocumentService.js} +7 -5
  285. package/lib/localOdspDriver/localOdspDocumentService.js.map +1 -0
  286. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.d.mts → localOdspDocumentServiceFactory.d.ts} +9 -7
  287. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -0
  288. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.mjs → localOdspDocumentServiceFactory.js} +9 -8
  289. package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -0
  290. package/lib/localOdspDriver/{localOdspDocumentStorageManager.d.mts → localOdspDocumentStorageManager.d.ts} +4 -3
  291. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -0
  292. package/lib/localOdspDriver/{localOdspDocumentStorageManager.mjs → localOdspDocumentStorageManager.js} +7 -4
  293. package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -0
  294. package/lib/{odsp-driver-alpha.d.mts → odsp-driver-alpha.d.ts} +31 -15
  295. package/lib/{odsp-driver-beta.d.mts → odsp-driver-beta.d.ts} +4 -5
  296. package/lib/{odsp-driver-public.d.mts → odsp-driver-public.d.ts} +4 -5
  297. package/lib/{odsp-driver-untrimmed.d.mts → odsp-driver-untrimmed.d.ts} +34 -16
  298. package/lib/{odspCache.d.mts → odspCache.d.ts} +10 -6
  299. package/lib/odspCache.d.ts.map +1 -0
  300. package/lib/{odspCache.mjs → odspCache.js} +6 -3
  301. package/lib/odspCache.js.map +1 -0
  302. package/lib/{odspDelayLoadedDeltaStream.d.mts → odspDelayLoadedDeltaStream.d.ts} +13 -7
  303. package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -0
  304. package/lib/{odspDelayLoadedDeltaStream.mjs → odspDelayLoadedDeltaStream.js} +84 -20
  305. package/lib/odspDelayLoadedDeltaStream.js.map +1 -0
  306. package/lib/{odspDeltaStorageService.d.mts → odspDeltaStorageService.d.ts} +8 -8
  307. package/lib/odspDeltaStorageService.d.ts.map +1 -0
  308. package/lib/{odspDeltaStorageService.mjs → odspDeltaStorageService.js} +5 -5
  309. package/lib/odspDeltaStorageService.js.map +1 -0
  310. package/lib/{odspDocumentDeltaConnection.d.mts → odspDocumentDeltaConnection.d.ts} +2 -2
  311. package/lib/odspDocumentDeltaConnection.d.ts.map +1 -0
  312. package/lib/{odspDocumentDeltaConnection.mjs → odspDocumentDeltaConnection.js} +34 -16
  313. package/lib/odspDocumentDeltaConnection.js.map +1 -0
  314. package/lib/{odspDocumentService.d.mts → odspDocumentService.d.ts} +10 -7
  315. package/lib/odspDocumentService.d.ts.map +1 -0
  316. package/lib/{odspDocumentService.mjs → odspDocumentService.js} +22 -14
  317. package/lib/odspDocumentService.js.map +1 -0
  318. package/lib/{odspDocumentServiceFactory.d.mts → odspDocumentServiceFactory.d.ts} +7 -2
  319. package/lib/odspDocumentServiceFactory.d.ts.map +1 -0
  320. package/lib/{odspDocumentServiceFactory.mjs → odspDocumentServiceFactory.js} +9 -3
  321. package/lib/odspDocumentServiceFactory.js.map +1 -0
  322. package/lib/{odspDocumentServiceFactoryCore.d.mts → odspDocumentServiceFactoryCore.d.ts} +5 -5
  323. package/lib/odspDocumentServiceFactoryCore.d.ts.map +1 -0
  324. package/lib/{odspDocumentServiceFactoryCore.mjs → odspDocumentServiceFactoryCore.js} +25 -26
  325. package/lib/odspDocumentServiceFactoryCore.js.map +1 -0
  326. package/lib/{odspDocumentServiceFactoryWithCodeSplit.d.mts → odspDocumentServiceFactoryWithCodeSplit.d.ts} +2 -2
  327. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -0
  328. package/lib/{odspDocumentServiceFactoryWithCodeSplit.mjs → odspDocumentServiceFactoryWithCodeSplit.js} +2 -2
  329. package/lib/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -0
  330. package/lib/{odspDocumentStorageManager.d.mts → odspDocumentStorageManager.d.ts} +18 -11
  331. package/lib/odspDocumentStorageManager.d.ts.map +1 -0
  332. package/lib/{odspDocumentStorageManager.mjs → odspDocumentStorageManager.js} +221 -162
  333. package/lib/odspDocumentStorageManager.js.map +1 -0
  334. package/lib/{odspDocumentStorageServiceBase.d.mts → odspDocumentStorageServiceBase.d.ts} +5 -7
  335. package/lib/odspDocumentStorageServiceBase.d.ts.map +1 -0
  336. package/lib/{odspDocumentStorageServiceBase.mjs → odspDocumentStorageServiceBase.js} +34 -31
  337. package/lib/odspDocumentStorageServiceBase.js.map +1 -0
  338. package/lib/{odspDriverUrlResolver.d.mts → odspDriverUrlResolver.d.ts} +2 -2
  339. package/lib/odspDriverUrlResolver.d.ts.map +1 -0
  340. package/lib/{odspDriverUrlResolver.mjs → odspDriverUrlResolver.js} +27 -29
  341. package/lib/odspDriverUrlResolver.js.map +1 -0
  342. package/lib/{odspDriverUrlResolverForShareLink.d.mts → odspDriverUrlResolverForShareLink.d.ts} +14 -7
  343. package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -0
  344. package/lib/{odspDriverUrlResolverForShareLink.mjs → odspDriverUrlResolverForShareLink.js} +41 -27
  345. package/lib/odspDriverUrlResolverForShareLink.js.map +1 -0
  346. package/lib/{odspError.d.mts → odspError.d.ts} +2 -2
  347. package/lib/odspError.d.ts.map +1 -0
  348. package/lib/{odspError.mjs → odspError.js} +6 -6
  349. package/lib/odspError.js.map +1 -0
  350. package/lib/{odspFluidFileLink.d.mts → odspFluidFileLink.d.ts} +2 -2
  351. package/lib/odspFluidFileLink.d.ts.map +1 -0
  352. package/lib/{odspFluidFileLink.mjs → odspFluidFileLink.js} +2 -2
  353. package/lib/odspFluidFileLink.js.map +1 -0
  354. package/lib/{odspLocationRedirection.d.mts → odspLocationRedirection.d.ts} +1 -1
  355. package/lib/odspLocationRedirection.d.ts.map +1 -0
  356. package/lib/{odspLocationRedirection.mjs → odspLocationRedirection.js} +2 -2
  357. package/lib/odspLocationRedirection.js.map +1 -0
  358. package/lib/{odspPublicUtils.d.mts → odspPublicUtils.d.ts} +5 -1
  359. package/lib/odspPublicUtils.d.ts.map +1 -0
  360. package/lib/{odspPublicUtils.mjs → odspPublicUtils.js} +4 -1
  361. package/lib/odspPublicUtils.js.map +1 -0
  362. package/lib/{odspSnapshotParser.d.mts → odspSnapshotParser.d.ts} +4 -4
  363. package/lib/odspSnapshotParser.d.ts.map +1 -0
  364. package/lib/{odspSnapshotParser.mjs → odspSnapshotParser.js} +6 -4
  365. package/lib/odspSnapshotParser.js.map +1 -0
  366. package/lib/{odspSummaryUploadManager.d.mts → odspSummaryUploadManager.d.ts} +2 -2
  367. package/lib/odspSummaryUploadManager.d.ts.map +1 -0
  368. package/lib/{odspSummaryUploadManager.mjs → odspSummaryUploadManager.js} +8 -5
  369. package/lib/odspSummaryUploadManager.js.map +1 -0
  370. package/lib/{odspUrlHelper.d.mts → odspUrlHelper.d.ts} +1 -1
  371. package/lib/odspUrlHelper.d.ts.map +1 -0
  372. package/lib/{odspUrlHelper.mjs → odspUrlHelper.js} +2 -3
  373. package/lib/odspUrlHelper.js.map +1 -0
  374. package/lib/{odspUtils.d.mts → odspUtils.d.ts} +30 -14
  375. package/lib/odspUtils.d.ts.map +1 -0
  376. package/lib/{odspUtils.mjs → odspUtils.js} +61 -30
  377. package/lib/odspUtils.js.map +1 -0
  378. package/lib/{opsCaching.d.mts → opsCaching.d.ts} +2 -2
  379. package/lib/opsCaching.d.ts.map +1 -0
  380. package/lib/{opsCaching.mjs → opsCaching.js} +3 -2
  381. package/lib/opsCaching.js.map +1 -0
  382. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  383. package/lib/packageVersion.d.ts.map +1 -0
  384. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  385. package/lib/packageVersion.js.map +1 -0
  386. package/lib/{prefetchLatestSnapshot.d.mts → prefetchLatestSnapshot.d.ts} +3 -3
  387. package/lib/prefetchLatestSnapshot.d.ts.map +1 -0
  388. package/lib/{prefetchLatestSnapshot.mjs → prefetchLatestSnapshot.js} +16 -11
  389. package/lib/prefetchLatestSnapshot.js.map +1 -0
  390. package/lib/{retryErrorsStorageAdapter.d.mts → retryErrorsStorageAdapter.d.ts} +3 -3
  391. package/lib/retryErrorsStorageAdapter.d.ts.map +1 -0
  392. package/lib/{retryErrorsStorageAdapter.mjs → retryErrorsStorageAdapter.js} +11 -6
  393. package/lib/retryErrorsStorageAdapter.js.map +1 -0
  394. package/lib/{retryUtils.d.mts → retryUtils.d.ts} +1 -1
  395. package/lib/retryUtils.d.ts.map +1 -0
  396. package/lib/{retryUtils.mjs → retryUtils.js} +8 -4
  397. package/lib/retryUtils.js.map +1 -0
  398. package/lib/{socketModule.d.mts → socketModule.d.ts} +1 -1
  399. package/lib/socketModule.d.ts.map +1 -0
  400. package/lib/{socketModule.mjs → socketModule.js} +3 -1
  401. package/lib/socketModule.js.map +1 -0
  402. package/lib/test/buildOdspShareLinkReqParams.spec.js +25 -0
  403. package/lib/test/buildOdspShareLinkReqParams.spec.js.map +1 -0
  404. package/lib/test/createNewUtilsTests.spec.js +221 -0
  405. package/lib/test/createNewUtilsTests.spec.js.map +1 -0
  406. package/lib/test/deltaStorageService.spec.js +176 -0
  407. package/lib/test/deltaStorageService.spec.js.map +1 -0
  408. package/lib/test/epochTests.spec.js +340 -0
  409. package/lib/test/epochTests.spec.js.map +1 -0
  410. package/lib/test/epochTestsWithRedemption.spec.js +119 -0
  411. package/lib/test/epochTestsWithRedemption.spec.js.map +1 -0
  412. package/lib/test/fetchSnapshot.spec.js +412 -0
  413. package/lib/test/fetchSnapshot.spec.js.map +1 -0
  414. package/lib/test/getFileLink.spec.js +62 -0
  415. package/lib/test/getFileLink.spec.js.map +1 -0
  416. package/lib/test/getUrlAndHeadersWithAuth.spec.js +66 -0
  417. package/lib/test/getUrlAndHeadersWithAuth.spec.js.map +1 -0
  418. package/lib/test/getVersions.spec.js +284 -0
  419. package/lib/test/getVersions.spec.js.map +1 -0
  420. package/lib/test/joinSessionCacheTests.spec.js +53 -0
  421. package/lib/test/joinSessionCacheTests.spec.js.map +1 -0
  422. package/lib/test/joinSessionPeriodicCall.spec.js +158 -0
  423. package/lib/test/joinSessionPeriodicCall.spec.js.map +1 -0
  424. package/lib/test/jsonSnapshotFormatTests.spec.js +107 -0
  425. package/lib/test/jsonSnapshotFormatTests.spec.js.map +1 -0
  426. package/lib/test/localOdspDriver.spec.js +177 -0
  427. package/lib/test/localOdspDriver.spec.js.map +1 -0
  428. package/lib/test/mockFetch.js +61 -0
  429. package/lib/test/mockFetch.js.map +1 -0
  430. package/lib/test/odspCreateContainer.spec.js +116 -0
  431. package/lib/test/odspCreateContainer.spec.js.map +1 -0
  432. package/lib/test/odspDriverResolverTest.spec.js +289 -0
  433. package/lib/test/odspDriverResolverTest.spec.js.map +1 -0
  434. package/lib/test/odspDriverUrlResolverForShareLink.spec.js +287 -0
  435. package/lib/test/odspDriverUrlResolverForShareLink.spec.js.map +1 -0
  436. package/lib/test/odspError.spec.js +299 -0
  437. package/lib/test/odspError.spec.js.map +1 -0
  438. package/lib/test/opsCaching.spec.js +357 -0
  439. package/lib/test/opsCaching.spec.js.map +1 -0
  440. package/lib/test/prefetchSnapshotTests.spec.js +420 -0
  441. package/lib/test/prefetchSnapshotTests.spec.js.map +1 -0
  442. package/lib/test/snapshotFormatTests.spec.js +218 -0
  443. package/lib/test/snapshotFormatTests.spec.js.map +1 -0
  444. package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js +152 -0
  445. package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js.map +1 -0
  446. package/lib/test/socketTests/socketMock.js +109 -0
  447. package/lib/test/socketTests/socketMock.js.map +1 -0
  448. package/lib/test/socketTests/socketTests.spec.js +256 -0
  449. package/lib/test/socketTests/socketTests.spec.js.map +1 -0
  450. package/lib/test/tokenFetch.spec.js +39 -0
  451. package/lib/test/tokenFetch.spec.js.map +1 -0
  452. package/lib/test/types/validateOdspDriverPrevious.generated.js +96 -0
  453. package/lib/test/types/validateOdspDriverPrevious.generated.js.map +1 -0
  454. package/lib/test/zipItDataRepresentationTests.spec.js +207 -0
  455. package/lib/test/zipItDataRepresentationTests.spec.js.map +1 -0
  456. package/lib/{vroom.d.mts → vroom.d.ts} +3 -3
  457. package/lib/vroom.d.ts.map +1 -0
  458. package/lib/{vroom.mjs → vroom.js} +4 -4
  459. package/lib/vroom.js.map +1 -0
  460. package/lib/{zipItDataRepresentationUtils.d.mts → zipItDataRepresentationUtils.d.ts} +2 -2
  461. package/lib/zipItDataRepresentationUtils.d.ts.map +1 -0
  462. package/lib/{zipItDataRepresentationUtils.mjs → zipItDataRepresentationUtils.js} +19 -11
  463. package/lib/zipItDataRepresentationUtils.js.map +1 -0
  464. package/package.json +100 -32
  465. package/src/ReadBufferUtils.ts +7 -7
  466. package/src/WriteBufferUtils.ts +13 -9
  467. package/src/checkUrl.ts +4 -2
  468. package/src/compactSnapshotParser.ts +97 -61
  469. package/src/compactSnapshotWriter.ts +22 -15
  470. package/src/contracts.ts +33 -4
  471. package/src/createFile.ts +26 -51
  472. package/src/createNewContainerOnExistingFile.ts +10 -10
  473. package/src/createNewModule.ts +2 -2
  474. package/src/createNewUtils.ts +26 -15
  475. package/src/createOdspCreateContainerRequest.ts +3 -3
  476. package/src/createOdspUrl.ts +1 -1
  477. package/src/epochTracker.ts +93 -58
  478. package/src/fetchSnapshot.ts +122 -66
  479. package/src/getFileLink.ts +24 -16
  480. package/src/getQueryString.ts +2 -0
  481. package/src/index.ts +27 -19
  482. package/src/localOdspDriver/localOdspDocumentService.ts +12 -5
  483. package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +12 -11
  484. package/src/localOdspDriver/localOdspDocumentStorageManager.ts +15 -8
  485. package/src/odspCache.ts +14 -11
  486. package/src/odspDelayLoadedDeltaStream.ts +113 -31
  487. package/src/odspDeltaStorageService.ts +17 -16
  488. package/src/odspDocumentDeltaConnection.ts +52 -34
  489. package/src/odspDocumentService.ts +33 -22
  490. package/src/odspDocumentServiceFactory.ts +7 -2
  491. package/src/odspDocumentServiceFactoryCore.ts +28 -29
  492. package/src/odspDocumentServiceFactoryWithCodeSplit.ts +1 -1
  493. package/src/odspDocumentStorageManager.ts +303 -210
  494. package/src/odspDocumentStorageServiceBase.ts +52 -47
  495. package/src/odspDriverUrlResolver.ts +41 -41
  496. package/src/odspDriverUrlResolverForShareLink.ts +50 -31
  497. package/src/odspError.ts +6 -7
  498. package/src/odspFluidFileLink.ts +3 -3
  499. package/src/odspLocationRedirection.ts +1 -1
  500. package/src/odspPublicUtils.ts +4 -0
  501. package/src/odspSnapshotParser.ts +9 -9
  502. package/src/odspSummaryUploadManager.ts +21 -9
  503. package/src/odspUrlHelper.ts +2 -3
  504. package/src/odspUtils.ts +102 -53
  505. package/src/opsCaching.ts +13 -12
  506. package/src/packageVersion.ts +1 -1
  507. package/src/prefetchLatestSnapshot.ts +24 -15
  508. package/src/retryErrorsStorageAdapter.ts +16 -9
  509. package/src/retryUtils.ts +8 -4
  510. package/src/socketModule.ts +2 -0
  511. package/src/vroom.ts +6 -6
  512. package/src/zipItDataRepresentationUtils.ts +65 -37
  513. package/tsconfig.cjs.json +7 -0
  514. package/tsconfig.json +2 -5
  515. package/.eslintrc.js +0 -18
  516. package/lib/ReadBufferUtils.d.mts.map +0 -1
  517. package/lib/ReadBufferUtils.mjs.map +0 -1
  518. package/lib/WriteBufferUtils.d.mts.map +0 -1
  519. package/lib/WriteBufferUtils.mjs.map +0 -1
  520. package/lib/checkUrl.d.mts.map +0 -1
  521. package/lib/checkUrl.mjs.map +0 -1
  522. package/lib/compactSnapshotParser.d.mts.map +0 -1
  523. package/lib/compactSnapshotParser.mjs.map +0 -1
  524. package/lib/compactSnapshotWriter.d.mts.map +0 -1
  525. package/lib/compactSnapshotWriter.mjs.map +0 -1
  526. package/lib/constants.d.mts.map +0 -1
  527. package/lib/constants.mjs.map +0 -1
  528. package/lib/contracts.d.mts.map +0 -1
  529. package/lib/contracts.mjs +0 -6
  530. package/lib/contracts.mjs.map +0 -1
  531. package/lib/contractsPublic.d.mts.map +0 -1
  532. package/lib/contractsPublic.mjs.map +0 -1
  533. package/lib/createFile.d.mts.map +0 -1
  534. package/lib/createFile.mjs.map +0 -1
  535. package/lib/createNewContainerOnExistingFile.d.mts.map +0 -1
  536. package/lib/createNewContainerOnExistingFile.mjs.map +0 -1
  537. package/lib/createNewModule.d.mts.map +0 -1
  538. package/lib/createNewModule.mjs.map +0 -1
  539. package/lib/createNewUtils.d.mts.map +0 -1
  540. package/lib/createNewUtils.mjs.map +0 -1
  541. package/lib/createOdspCreateContainerRequest.d.mts.map +0 -1
  542. package/lib/createOdspCreateContainerRequest.mjs.map +0 -1
  543. package/lib/createOdspUrl.d.mts.map +0 -1
  544. package/lib/createOdspUrl.mjs.map +0 -1
  545. package/lib/epochTracker.d.mts.map +0 -1
  546. package/lib/epochTracker.mjs.map +0 -1
  547. package/lib/fetch.d.mts.map +0 -1
  548. package/lib/fetch.mjs.map +0 -1
  549. package/lib/fetchSnapshot.d.mts.map +0 -1
  550. package/lib/fetchSnapshot.mjs.map +0 -1
  551. package/lib/getFileLink.d.mts.map +0 -1
  552. package/lib/getFileLink.mjs.map +0 -1
  553. package/lib/getQueryString.d.mts.map +0 -1
  554. package/lib/getQueryString.mjs.map +0 -1
  555. package/lib/getUrlAndHeadersWithAuth.d.mts.map +0 -1
  556. package/lib/getUrlAndHeadersWithAuth.mjs.map +0 -1
  557. package/lib/index.d.mts.map +0 -1
  558. package/lib/index.mjs +0 -22
  559. package/lib/index.mjs.map +0 -1
  560. package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts.map +0 -1
  561. package/lib/localOdspDriver/localOdspDeltaStorageService.mjs.map +0 -1
  562. package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +0 -1
  563. package/lib/localOdspDriver/localOdspDocumentService.mjs.map +0 -1
  564. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.mts.map +0 -1
  565. package/lib/localOdspDriver/localOdspDocumentServiceFactory.mjs.map +0 -1
  566. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +0 -1
  567. package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +0 -1
  568. package/lib/odspCache.d.mts.map +0 -1
  569. package/lib/odspCache.mjs.map +0 -1
  570. package/lib/odspDelayLoadedDeltaStream.d.mts.map +0 -1
  571. package/lib/odspDelayLoadedDeltaStream.mjs.map +0 -1
  572. package/lib/odspDeltaStorageService.d.mts.map +0 -1
  573. package/lib/odspDeltaStorageService.mjs.map +0 -1
  574. package/lib/odspDocumentDeltaConnection.d.mts.map +0 -1
  575. package/lib/odspDocumentDeltaConnection.mjs.map +0 -1
  576. package/lib/odspDocumentService.d.mts.map +0 -1
  577. package/lib/odspDocumentService.mjs.map +0 -1
  578. package/lib/odspDocumentServiceFactory.d.mts.map +0 -1
  579. package/lib/odspDocumentServiceFactory.mjs.map +0 -1
  580. package/lib/odspDocumentServiceFactoryCore.d.mts.map +0 -1
  581. package/lib/odspDocumentServiceFactoryCore.mjs.map +0 -1
  582. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.mts.map +0 -1
  583. package/lib/odspDocumentServiceFactoryWithCodeSplit.mjs.map +0 -1
  584. package/lib/odspDocumentStorageManager.d.mts.map +0 -1
  585. package/lib/odspDocumentStorageManager.mjs.map +0 -1
  586. package/lib/odspDocumentStorageServiceBase.d.mts.map +0 -1
  587. package/lib/odspDocumentStorageServiceBase.mjs.map +0 -1
  588. package/lib/odspDriverUrlResolver.d.mts.map +0 -1
  589. package/lib/odspDriverUrlResolver.mjs.map +0 -1
  590. package/lib/odspDriverUrlResolverForShareLink.d.mts.map +0 -1
  591. package/lib/odspDriverUrlResolverForShareLink.mjs.map +0 -1
  592. package/lib/odspError.d.mts.map +0 -1
  593. package/lib/odspError.mjs.map +0 -1
  594. package/lib/odspFluidFileLink.d.mts.map +0 -1
  595. package/lib/odspFluidFileLink.mjs.map +0 -1
  596. package/lib/odspLocationRedirection.d.mts.map +0 -1
  597. package/lib/odspLocationRedirection.mjs.map +0 -1
  598. package/lib/odspPublicUtils.d.mts.map +0 -1
  599. package/lib/odspPublicUtils.mjs.map +0 -1
  600. package/lib/odspSnapshotParser.d.mts.map +0 -1
  601. package/lib/odspSnapshotParser.mjs.map +0 -1
  602. package/lib/odspSummaryUploadManager.d.mts.map +0 -1
  603. package/lib/odspSummaryUploadManager.mjs.map +0 -1
  604. package/lib/odspUrlHelper.d.mts.map +0 -1
  605. package/lib/odspUrlHelper.mjs.map +0 -1
  606. package/lib/odspUtils.d.mts.map +0 -1
  607. package/lib/odspUtils.mjs.map +0 -1
  608. package/lib/opsCaching.d.mts.map +0 -1
  609. package/lib/opsCaching.mjs.map +0 -1
  610. package/lib/packageVersion.d.mts.map +0 -1
  611. package/lib/packageVersion.mjs.map +0 -1
  612. package/lib/prefetchLatestSnapshot.d.mts.map +0 -1
  613. package/lib/prefetchLatestSnapshot.mjs.map +0 -1
  614. package/lib/retryErrorsStorageAdapter.d.mts.map +0 -1
  615. package/lib/retryErrorsStorageAdapter.mjs.map +0 -1
  616. package/lib/retryUtils.d.mts.map +0 -1
  617. package/lib/retryUtils.mjs.map +0 -1
  618. package/lib/socketModule.d.mts.map +0 -1
  619. package/lib/socketModule.mjs.map +0 -1
  620. package/lib/vroom.d.mts.map +0 -1
  621. package/lib/vroom.mjs.map +0 -1
  622. package/lib/zipItDataRepresentationUtils.d.mts.map +0 -1
  623. package/lib/zipItDataRepresentationUtils.mjs.map +0 -1
@@ -13,12 +13,13 @@ import {
13
13
  import { fromUtf8ToBase64 } from "@fluid-internal/client-utils";
14
14
  import { assert } from "@fluidframework/core-utils";
15
15
  import { getW3CData } from "@fluidframework/driver-base";
16
- import { DriverErrorType } from "@fluidframework/driver-definitions";
16
+ import { ISnapshot } from "@fluidframework/driver-definitions";
17
17
  import {
18
18
  IOdspResolvedUrl,
19
19
  ISnapshotOptions,
20
- OdspErrorType,
20
+ OdspErrorTypes,
21
21
  InstrumentedStorageTokenFetcher,
22
+ type IOdspError,
22
23
  } from "@fluidframework/odsp-driver-definitions";
23
24
  import { ISnapshotTree } from "@fluidframework/protocol-definitions";
24
25
  import {
@@ -26,33 +27,37 @@ import {
26
27
  isRuntimeMessage,
27
28
  NonRetryableError,
28
29
  } from "@fluidframework/driver-utils";
29
- import { fetchIncorrectResponse, throwOdspNetworkError } from "@fluidframework/odsp-doclib-utils";
30
+ import {
31
+ fetchIncorrectResponse,
32
+ throwOdspNetworkError,
33
+ } from "@fluidframework/odsp-doclib-utils/internal";
30
34
  import {
31
35
  IOdspSnapshot,
32
- ISnapshotCachedEntry,
36
+ ISnapshotCachedEntry2,
33
37
  IVersionedValueWithEpoch,
34
38
  persistedCacheValueVersion,
35
- } from "./contracts";
36
- import { getQueryString } from "./getQueryString";
37
- import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth";
39
+ } from "./contracts.js";
40
+ import { getQueryString } from "./getQueryString.js";
41
+ import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
38
42
  import {
39
43
  fetchAndParseAsJSONHelper,
40
44
  fetchHelper,
41
45
  getWithRetryForTokenRefresh,
42
46
  getWithRetryForTokenRefreshRepeat,
43
47
  IOdspResponse,
48
+ isSnapshotFetchForLoadingGroup,
44
49
  measure,
45
50
  measureP,
46
- } from "./odspUtils";
47
- import { ISnapshotContents } from "./odspPublicUtils";
48
- import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "./odspSnapshotParser";
51
+ useLegacyFlowWithoutGroupsForSnapshotFetch,
52
+ } from "./odspUtils.js";
53
+ import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "./odspSnapshotParser.js";
49
54
  import {
50
55
  currentReadVersion,
51
56
  ISnapshotContentsWithProps,
52
57
  parseCompactSnapshotResponse,
53
- } from "./compactSnapshotParser";
54
- import { EpochTracker } from "./epochTracker";
55
- import { pkgVersion } from "./packageVersion";
58
+ } from "./compactSnapshotParser.js";
59
+ import { EpochTracker } from "./epochTracker.js";
60
+ import { pkgVersion } from "./packageVersion.js";
56
61
 
57
62
  /**
58
63
  * Enum to support different types of snapshot formats.
@@ -84,14 +89,14 @@ export async function fetchSnapshot(
84
89
  logger: ITelemetryLoggerExt,
85
90
  snapshotDownloader: (
86
91
  url: string,
87
- fetchOptions: { [index: string]: any },
92
+ fetchOptions: { [index: string]: RequestInit },
88
93
  ) => Promise<IOdspResponse<unknown>>,
89
- ): Promise<ISnapshotContents> {
94
+ ): Promise<ISnapshot> {
90
95
  const path = `/trees/${versionId}`;
91
96
  let queryParams: ISnapshotOptions = {};
92
97
 
93
98
  if (fetchFullSnapshot) {
94
- queryParams = versionId !== "latest" ? { blobs: 2 } : { deltas: 1, blobs: 2 };
99
+ queryParams = versionId === "latest" ? { deltas: 1, blobs: 2 } : { blobs: 2 };
95
100
  }
96
101
 
97
102
  const queryString = getQueryString(queryParams);
@@ -104,7 +109,7 @@ export async function fetchSnapshot(
104
109
  logger,
105
110
  {
106
111
  eventName: "fetchSnapshot",
107
- headers: Object.keys(headers).length !== 0 ? true : undefined,
112
+ headers: Object.keys(headers).length > 0 ? true : undefined,
108
113
  },
109
114
  async () => snapshotDownloader(url, { headers }),
110
115
  )) as IOdspResponse<IOdspSnapshot>;
@@ -120,16 +125,20 @@ export async function fetchSnapshotWithRedeem(
120
125
  snapshotDownloader: (
121
126
  finalOdspResolvedUrl: IOdspResolvedUrl,
122
127
  storageToken: string,
128
+ loadingGroupIds: string[] | undefined,
123
129
  snapshotOptions: ISnapshotOptions | undefined,
124
130
  controller?: AbortController,
125
131
  ) => Promise<ISnapshotRequestAndResponseOptions>,
126
132
  putInCache: (valueWithEpoch: IVersionedValueWithEpoch) => Promise<void>,
127
133
  removeEntries: () => Promise<void>,
134
+ loadingGroupIds: string[] | undefined,
128
135
  enableRedeemFallback?: boolean,
129
- ): Promise<ISnapshotContents> {
136
+ ): Promise<ISnapshot> {
130
137
  // back-compat: This block to be removed with #8784 when we only consume/consider odsp resolvers that are >= 0.51
138
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
131
139
  const sharingLinkToRedeem = (odspResolvedUrl as any).sharingLinkToRedeem;
132
140
  if (sharingLinkToRedeem) {
141
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
133
142
  odspResolvedUrl.shareLinkInfo = { ...odspResolvedUrl.shareLinkInfo, sharingLinkToRedeem };
134
143
  }
135
144
 
@@ -140,9 +149,11 @@ export async function fetchSnapshotWithRedeem(
140
149
  logger,
141
150
  snapshotDownloader,
142
151
  putInCache,
152
+ loadingGroupIds,
143
153
  enableRedeemFallback,
144
154
  )
145
155
  .catch(async (error) => {
156
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
146
157
  if (enableRedeemFallback && isRedeemSharingLinkError(odspResolvedUrl, error)) {
147
158
  // Execute the redeem fallback
148
159
 
@@ -167,6 +178,7 @@ export async function fetchSnapshotWithRedeem(
167
178
  logger.sendTelemetryEvent(
168
179
  {
169
180
  eventName: "RedeemFallback",
181
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
170
182
  errorType: error.errorType,
171
183
  },
172
184
  error,
@@ -179,6 +191,7 @@ export async function fetchSnapshotWithRedeem(
179
191
  logger,
180
192
  snapshotDownloader,
181
193
  putInCache,
194
+ loadingGroupIds,
182
195
  );
183
196
  } else {
184
197
  throw error;
@@ -191,8 +204,10 @@ export async function fetchSnapshotWithRedeem(
191
204
  if (
192
205
  (typeof error === "object" &&
193
206
  error !== null &&
194
- error.errorType === DriverErrorType.authorizationError) ||
195
- error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError
207
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
208
+ error.errorType === OdspErrorTypes.authorizationError) ||
209
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
210
+ error.errorType === OdspErrorTypes.fileNotFoundOrAccessDeniedError
196
211
  ) {
197
212
  await removeEntries();
198
213
  }
@@ -205,7 +220,7 @@ async function redeemSharingLink(
205
220
  storageTokenFetcher: InstrumentedStorageTokenFetcher,
206
221
  logger: ITelemetryLoggerExt,
207
222
  forceAccessTokenViaAuthorizationHeader: boolean,
208
- ) {
223
+ ): Promise<IOdspResponse<unknown>> {
209
224
  return PerformanceEvent.timedExecAsync(
210
225
  logger,
211
226
  {
@@ -244,29 +259,34 @@ async function fetchLatestSnapshotCore(
244
259
  snapshotDownloader: (
245
260
  finalOdspResolvedUrl: IOdspResolvedUrl,
246
261
  storageToken: string,
262
+ loadingGroupIds: string[] | undefined,
247
263
  snapshotOptions: ISnapshotOptions | undefined,
248
264
  controller?: AbortController,
249
265
  ) => Promise<ISnapshotRequestAndResponseOptions>,
250
266
  putInCache: (valueWithEpoch: IVersionedValueWithEpoch) => Promise<void>,
267
+ loadingGroupIds: string[] | undefined,
251
268
  enableRedeemFallback?: boolean,
252
- ): Promise<ISnapshotContents> {
269
+ ): Promise<ISnapshot> {
253
270
  return getWithRetryForTokenRefresh(async (tokenFetchOptions) => {
254
- const storageToken = await storageTokenFetcher(tokenFetchOptions, "TreesLatest", true);
271
+ const fetchSnapshotForLoadingGroup = isSnapshotFetchForLoadingGroup(loadingGroupIds);
272
+ const eventName = fetchSnapshotForLoadingGroup ? "TreesLatestForGroup" : "TreesLatest";
273
+ const storageToken = await storageTokenFetcher(tokenFetchOptions, eventName, true);
255
274
  assert(storageToken !== null, 0x1e5 /* "Storage token should not be null" */);
256
275
 
257
276
  const perfEvent = {
258
- eventName: "TreesLatest",
277
+ eventName,
259
278
  attempts: tokenFetchOptions.refresh ? 2 : 1,
260
279
  shareLinkPresent: odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem !== undefined,
261
280
  isSummarizer: odspResolvedUrl.summarizer,
262
281
  redeemFallbackEnabled: enableRedeemFallback,
263
282
  };
264
283
  if (snapshotOptions !== undefined) {
265
- Object.entries(snapshotOptions).forEach(([key, value]) => {
284
+ for (const [key, value] of Object.entries(snapshotOptions)) {
266
285
  if (value !== undefined) {
286
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
267
287
  perfEvent[`snapshotOption_${key}`] = value;
268
288
  }
269
- });
289
+ }
270
290
  }
271
291
  // This event measures only successful cases of getLatest call (no tokens, no retries).
272
292
  return PerformanceEvent.timedExecAsync(logger, perfEvent, async (event) => {
@@ -278,7 +298,13 @@ async function fetchLatestSnapshotCore(
278
298
  }
279
299
 
280
300
  const [response, fetchTime] = await measureP(async () =>
281
- snapshotDownloader(odspResolvedUrl, storageToken, snapshotOptions, controller),
301
+ snapshotDownloader(
302
+ odspResolvedUrl,
303
+ storageToken,
304
+ loadingGroupIds,
305
+ snapshotOptions,
306
+ controller,
307
+ ),
282
308
  ).finally(() => {
283
309
  // Clear the fetchTimeout once the response is fetched.
284
310
  if (fetchTimeout !== undefined) {
@@ -312,7 +338,7 @@ async function fetchLatestSnapshotCore(
312
338
  case "application/json": {
313
339
  let text: string;
314
340
  [text, receiveContentTime] = await measureP(async () =>
315
- odspResponse.content.text().catch((err) =>
341
+ odspResponse.content.text().catch((error) =>
316
342
  // Parsing can fail and message could contain full request URI, including
317
343
  // tokens, etc. So do not log error object itself.
318
344
  throwOdspNetworkError(
@@ -328,7 +354,7 @@ async function fetchLatestSnapshotCore(
328
354
  let content: IOdspSnapshot;
329
355
  [content, parseTime] = measure(() => JSON.parse(text) as IOdspSnapshot);
330
356
  validateBlobsAndTrees(content);
331
- const snapshotContents: ISnapshotContents =
357
+ const snapshotContents: ISnapshot =
332
358
  convertOdspSnapshotToSnapshotTreeAndBlobs(content);
333
359
  parsedSnapshotContents = {
334
360
  ...odspResponse,
@@ -342,7 +368,7 @@ async function fetchLatestSnapshotCore(
342
368
  case "application/ms-fluid": {
343
369
  let content: ArrayBuffer;
344
370
  [content, receiveContentTime] = await measureP(async () =>
345
- odspResponse.content.arrayBuffer().catch((err) =>
371
+ odspResponse.content.arrayBuffer().catch((error) =>
346
372
  // Parsing can fail and message could contain full request URI, including
347
373
  // tokens, etc. So do not log error object itself.
348
374
  throwOdspNetworkError(
@@ -365,7 +391,7 @@ async function fetchLatestSnapshotCore(
365
391
  ) {
366
392
  throw new NonRetryableError(
367
393
  "Returned odsp snapshot is malformed. No trees or blobs!",
368
- DriverErrorType.incorrectServerResponse,
394
+ OdspErrorTypes.incorrectServerResponse,
369
395
  propsToLog,
370
396
  );
371
397
  }
@@ -383,12 +409,13 @@ async function fetchLatestSnapshotCore(
383
409
  parsedSnapshotContents = { ...odspResponse, content: snapshotContents };
384
410
  break;
385
411
  }
386
- default:
412
+ default: {
387
413
  throw new NonRetryableError(
388
414
  "Unknown snapshot content type",
389
- DriverErrorType.incorrectServerResponse,
415
+ OdspErrorTypes.incorrectServerResponse,
390
416
  propsToLog,
391
417
  );
418
+ }
392
419
  }
393
420
  } catch (error) {
394
421
  if (isFluidError(error)) {
@@ -400,7 +427,7 @@ async function fetchLatestSnapshotCore(
400
427
  (errorMessage) =>
401
428
  new NonRetryableError(
402
429
  `Error parsing snapshot response: ${errorMessage}`,
403
- DriverErrorType.genericError,
430
+ OdspErrorTypes.genericError,
404
431
  propsToLog,
405
432
  ),
406
433
  );
@@ -412,9 +439,10 @@ async function fetchLatestSnapshotCore(
412
439
  const { trees, numBlobs, encodedBlobsSize } = evalBlobsAndTrees(snapshot);
413
440
 
414
441
  // There are some scenarios in ODSP where we cannot cache, trees/latest will explicitly tell us when we
415
- // cannot cache using an HTTP response header.
442
+ // cannot cache using an HTTP response header. Only cache snapshot if it is not for a loading group.
416
443
  const canCache =
417
- odspResponse.headers.get("disablebrowsercachingofusercontent") !== "true";
444
+ odspResponse.headers.get("disablebrowsercachingofusercontent") !== "true" &&
445
+ !fetchSnapshotForLoadingGroup;
418
446
  const sequenceNumber: number = snapshot.sequenceNumber ?? 0;
419
447
  const seqNumberFromOps =
420
448
  snapshot.ops && snapshot.ops.length > 0
@@ -437,7 +465,7 @@ async function fetchLatestSnapshotCore(
437
465
  fluidEpoch !== undefined,
438
466
  0x1e6 /* "Epoch should be present in response" */,
439
467
  );
440
- const value: ISnapshotCachedEntry = {
468
+ const value: ISnapshotCachedEntry2 = {
441
469
  ...snapshot,
442
470
  cacheEntryTime: Date.now(),
443
471
  };
@@ -452,13 +480,16 @@ async function fetchLatestSnapshotCore(
452
480
 
453
481
  event.end({
454
482
  trees,
455
- blobs: snapshot.blobs?.size ?? 0,
483
+ blobs: snapshot.blobContents?.size ?? 0,
456
484
  leafNodes: numBlobs,
457
485
  encodedBlobsSize,
458
486
  sequenceNumber,
459
487
  ops: snapshot.ops?.length ?? 0,
488
+ fetchSnapshotForLoadingGroup,
489
+ useLegacyFlowWithoutGroups:
490
+ useLegacyFlowWithoutGroupsForSnapshotFetch(loadingGroupIds),
460
491
  userOps: snapshot.ops?.filter((op) => isRuntimeMessage(op)).length ?? 0,
461
- headers: Object.keys(response.requestHeaders).length !== 0 ? true : undefined,
492
+ headers: Object.keys(response.requestHeaders).length > 0 ? true : undefined,
462
493
  // Measures time to make fetch call. Should be similar to
463
494
  // fetchStartToResponseEndTime - receiveContentTime, i.e. it looks like it's time till first byte /
464
495
  // end of response headers
@@ -490,9 +521,10 @@ async function fetchLatestSnapshotCore(
490
521
  if (
491
522
  typeof error === "object" &&
492
523
  error !== null &&
493
- (error.errorType === DriverErrorType.fetchFailure ||
494
- error.errorType === OdspErrorType.fetchTimeout)
524
+ ((error as Partial<IOdspError>).errorType === OdspErrorTypes.fetchFailure ||
525
+ (error as Partial<IOdspError>).errorType === OdspErrorTypes.fetchTimeout)
495
526
  ) {
527
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
496
528
  error[getWithRetryForTokenRefreshRepeat] = true;
497
529
  }
498
530
  throw error;
@@ -503,50 +535,60 @@ async function fetchLatestSnapshotCore(
503
535
  export interface ISnapshotRequestAndResponseOptions {
504
536
  odspResponse: IOdspResponse<Response>;
505
537
  requestUrl: string;
506
- requestHeaders: { [index: string]: any };
538
+ requestHeaders: { [index: string]: string };
507
539
  }
508
540
 
509
541
  function getFormBodyAndHeaders(
510
542
  odspResolvedUrl: IOdspResolvedUrl,
511
543
  storageToken: string,
512
544
  headers?: { [index: string]: string },
513
- ) {
545
+ ): {
546
+ body: string;
547
+ headers: {
548
+ [index: string]: string;
549
+ };
550
+ } {
514
551
  const formBoundary = uuid();
515
552
  const formParams: string[] = [];
516
- formParams.push(`--${formBoundary}`);
517
- formParams.push(`Authorization: Bearer ${storageToken}`);
518
- formParams.push(`X-HTTP-Method-Override: GET`);
553
+ formParams.push(
554
+ `--${formBoundary}`,
555
+ `Authorization: Bearer ${storageToken}`,
556
+ `X-HTTP-Method-Override: GET`,
557
+ );
519
558
 
520
559
  if (headers !== undefined) {
521
- Object.entries(headers).forEach(([key, value]) => {
560
+ for (const [key, value] of Object.entries(headers)) {
522
561
  if (value !== undefined) {
523
562
  formParams.push(`${key}: ${value}`);
524
563
  }
525
- });
564
+ }
526
565
  }
527
566
  if (odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem) {
528
567
  formParams.push(`sl: ${odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem}`);
529
568
  }
530
- formParams.push(`_post: 1`);
531
- formParams.push(`\r\n--${formBoundary}--`);
569
+ formParams.push(`_post: 1`, `\r\n--${formBoundary}--`);
532
570
  const postBody = formParams.join("\r\n");
533
- const header: { [index: string]: any } = {
571
+ const header: { [index: string]: string } = {
534
572
  "Content-Type": `multipart/form-data;boundary=${formBoundary}`,
535
573
  };
536
574
  return { body: postBody, headers: header };
537
575
  }
538
576
 
539
- export function evalBlobsAndTrees(snapshot: ISnapshotContents) {
577
+ export function evalBlobsAndTrees(snapshot: ISnapshot): {
578
+ trees: number;
579
+ numBlobs: number;
580
+ encodedBlobsSize: number;
581
+ } {
540
582
  const trees = countTreesInSnapshotTree(snapshot.snapshotTree);
541
- const numBlobs = snapshot.blobs.size;
583
+ const numBlobs = snapshot.blobContents.size;
542
584
  let encodedBlobsSize = 0;
543
- for (const [_, blobContent] of snapshot.blobs) {
585
+ for (const [_, blobContent] of snapshot.blobContents) {
544
586
  encodedBlobsSize += blobContent.byteLength;
545
587
  }
546
588
  return { trees, numBlobs, encodedBlobsSize };
547
589
  }
548
590
 
549
- export function validateBlobsAndTrees(snapshot: IOdspSnapshot) {
591
+ export function validateBlobsAndTrees(snapshot: IOdspSnapshot): void {
550
592
  assert(
551
593
  snapshot.trees !== undefined,
552
594
  0x200 /* "Returned odsp snapshot is malformed. No trees!" */,
@@ -571,7 +613,10 @@ function countTreesInSnapshotTree(snapshotTree: ISnapshotTree): number {
571
613
  * @param odspResolvedUrl - resolved odsp url.
572
614
  * @param storageToken - token to do the auth for network request.
573
615
  * @param snapshotOptions - Options used to specify how and what to fetch in the snapshot.
574
- * @param logger - logger
616
+ * @param loadingGroupIds - loadingGroupIds for which snapshot needs to be downloaded. Note:
617
+ * 1.) If undefined, then legacy trees latest call will be used where no groupId query param would be specified.
618
+ * 2.) If [] is passed, then snapshot with all ungrouped data will be fetched.
619
+ * 3.) If any groupId is specified like ["g1"], then snapshot for g1 group will be fetched.
575
620
  * @param snapshotFormatFetchType - Snapshot format to fetch.
576
621
  * @param controller - abort controller if caller needs to abort the network call.
577
622
  * @param epochTracker - epoch tracker used to add/validate epoch in the network call.
@@ -580,7 +625,7 @@ function countTreesInSnapshotTree(snapshotTree: ISnapshotTree): number {
580
625
  export async function downloadSnapshot(
581
626
  odspResolvedUrl: IOdspResolvedUrl,
582
627
  storageToken: string,
583
- logger: ITelemetryLoggerExt,
628
+ loadingGroupIds: string[] | undefined,
584
629
  snapshotOptions: ISnapshotOptions | undefined,
585
630
  snapshotFormatFetchType?: SnapshotFormatSupportType,
586
631
  controller?: AbortController,
@@ -588,21 +633,27 @@ export async function downloadSnapshot(
588
633
  scenarioName?: string,
589
634
  ): Promise<ISnapshotRequestAndResponseOptions> {
590
635
  // back-compat: This block to be removed with #8784 when we only consume/consider odsp resolvers that are >= 0.51
636
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
591
637
  const sharingLinkToRedeem = (odspResolvedUrl as any).sharingLinkToRedeem;
592
638
  if (sharingLinkToRedeem) {
639
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
593
640
  odspResolvedUrl.shareLinkInfo = { ...odspResolvedUrl.shareLinkInfo, sharingLinkToRedeem };
594
641
  }
595
642
 
596
643
  const snapshotUrl = odspResolvedUrl.endpoints.snapshotStorageUrl;
597
644
 
598
- const queryParams = { ump: 1 };
645
+ const queryParams: Record<string, unknown> = { ump: 1 };
599
646
  if (snapshotOptions !== undefined) {
600
- Object.entries(snapshotOptions).forEach(([key, value]) => {
647
+ for (const [key, value] of Object.entries(snapshotOptions)) {
601
648
  // Exclude "timeout" from query string
602
649
  if (value !== undefined && key !== "timeout") {
603
650
  queryParams[key] = value;
604
651
  }
605
- });
652
+ }
653
+ }
654
+
655
+ if (loadingGroupIds !== undefined) {
656
+ queryParams.groupId = loadingGroupIds.join(",");
606
657
  }
607
658
 
608
659
  const queryString = getQueryString(queryParams);
@@ -610,7 +661,7 @@ export async function downloadSnapshot(
610
661
  // The location of file can move on Spo in which case server returns 308(Permanent Redirect) error.
611
662
  // Adding below header will make VROOM API return 404 instead of 308 and browser can intercept it.
612
663
  // This error thrown by server will contain the new redirect location. Look at the 404 error parsing
613
- // for futher reference here: \packages\utils\odsp-doclib-utils\src\odspErrorUtils.ts
664
+ // for further reference here: \packages\utils\odsp-doclib-utils\src\odspErrorUtils.ts
614
665
  const header = { prefer: "manualredirect" };
615
666
  const { body, headers } = getFormBodyAndHeaders(odspResolvedUrl, storageToken, header);
616
667
  const fetchOptions = {
@@ -621,12 +672,14 @@ export async function downloadSnapshot(
621
672
  };
622
673
  // Decide what snapshot format to fetch as per the feature gate.
623
674
  switch (snapshotFormatFetchType) {
624
- case SnapshotFormatSupportType.Binary:
675
+ case SnapshotFormatSupportType.Binary: {
625
676
  headers.accept = `application/ms-fluid; v=${currentReadVersion}`;
626
677
  break;
627
- default:
678
+ }
679
+ default: {
628
680
  // By default ask both versions and let the server decide the format.
629
681
  headers.accept = `application/json, application/ms-fluid; v=${currentReadVersion}`;
682
+ }
630
683
  }
631
684
 
632
685
  const odspResponse = await (epochTracker?.fetch(
@@ -644,13 +697,16 @@ export async function downloadSnapshot(
644
697
  };
645
698
  }
646
699
 
647
- function isRedeemSharingLinkError(odspResolvedUrl: IOdspResolvedUrl, error: any) {
700
+ function isRedeemSharingLinkError(
701
+ odspResolvedUrl: IOdspResolvedUrl,
702
+ error: Partial<IOdspError>,
703
+ ): boolean {
648
704
  if (
649
705
  odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem !== undefined &&
650
706
  typeof error === "object" &&
651
707
  error !== null &&
652
- (error.errorType === DriverErrorType.authorizationError ||
653
- error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError)
708
+ (error.errorType === OdspErrorTypes.authorizationError ||
709
+ error.errorType === OdspErrorTypes.fileNotFoundOrAccessDeniedError)
654
710
  ) {
655
711
  return true;
656
712
  }
@@ -3,23 +3,24 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import type { ITelemetryBaseProperties } from "@fluidframework/core-interfaces";
6
7
  import { ITelemetryLoggerExt, PerformanceEvent } from "@fluidframework/telemetry-utils";
7
8
  import { assert } from "@fluidframework/core-utils";
8
9
  import { NonRetryableError, runWithRetry } from "@fluidframework/driver-utils";
9
- import { DriverErrorType } from "@fluidframework/driver-definitions";
10
10
  import {
11
11
  IOdspUrlParts,
12
+ OdspErrorTypes,
12
13
  OdspResourceTokenFetchOptions,
13
14
  TokenFetcher,
14
15
  } from "@fluidframework/odsp-driver-definitions";
15
- import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth";
16
+ import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
16
17
  import {
17
18
  fetchHelper,
18
19
  getWithRetryForTokenRefresh,
19
20
  toInstrumentedOdspTokenFetcher,
20
- } from "./odspUtils";
21
- import { pkgVersion as driverVersion } from "./packageVersion";
22
- import { runWithRetry as runWithRetryForCoherencyAndServiceReadOnlyErrors } from "./retryUtils";
21
+ } from "./odspUtils.js";
22
+ import { pkgVersion as driverVersion } from "./packageVersion.js";
23
+ import { runWithRetry as runWithRetryForCoherencyAndServiceReadOnlyErrors } from "./retryUtils.js";
23
24
 
24
25
  // Store cached responses for the lifetime of web session as file link remains the same for given file item
25
26
  const fileLinkCache = new Map<string, Promise<string>>();
@@ -46,7 +47,7 @@ export async function getFileLink(
46
47
  return maybeFileLinkCacheEntry;
47
48
  }
48
49
 
49
- const fileLinkGenerator = async function () {
50
+ const fileLinkGenerator = async function (): Promise<string> {
50
51
  let fileLinkCore: string;
51
52
  try {
52
53
  let retryCount = 0;
@@ -60,10 +61,13 @@ export async function getFileLink(
60
61
  "getShareLink",
61
62
  logger,
62
63
  {
64
+ // TODO: use a stronger type
65
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
66
  onRetry(delayInMs: number, error: any) {
64
67
  retryCount++;
65
68
  if (retryCount === 5) {
66
69
  if (error !== undefined && typeof error === "object") {
70
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
67
71
  error.canRetry = false;
68
72
  throw error;
69
73
  }
@@ -72,10 +76,10 @@ export async function getFileLink(
72
76
  },
73
77
  },
74
78
  );
75
- } catch (err) {
79
+ } catch (error) {
76
80
  // Delete from the cache to permit retrying later.
77
81
  fileLinkCache.delete(cacheKey);
78
- throw err;
82
+ throw error;
79
83
  }
80
84
 
81
85
  // We are guaranteed to run the getFileLinkCore at least once with successful result (which must be a string)
@@ -144,18 +148,21 @@ async function getFileLinkCore(
144
148
  const response = await fetchHelper(url, requestInit);
145
149
  additionalProps = response.propsToLog;
146
150
 
151
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
147
152
  const sharingInfo = await response.content.json();
153
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
148
154
  const directUrl = sharingInfo?.d?.directUrl;
149
155
  if (typeof directUrl !== "string") {
150
156
  // This will retry once in getWithRetryForTokenRefresh
151
157
  throw new NonRetryableError(
152
158
  "Malformed GetSharingInformation response",
153
- DriverErrorType.incorrectServerResponse,
159
+ OdspErrorTypes.incorrectServerResponse,
154
160
  { driverVersion },
155
161
  );
156
162
  }
157
163
  return directUrl;
158
164
  });
165
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
159
166
  event.end({ ...additionalProps, attempts });
160
167
  return fileLink;
161
168
  },
@@ -183,10 +190,11 @@ interface FileItemLite {
183
190
  sharepointIds: IGraphSharepointIds;
184
191
  }
185
192
 
186
- const isFileItemLite = (maybeFileItemLite: any): maybeFileItemLite is FileItemLite =>
187
- typeof maybeFileItemLite.webUrl === "string" &&
188
- typeof maybeFileItemLite.webDavUrl === "string" &&
189
- typeof maybeFileItemLite.sharepointIds === "object";
193
+ const isFileItemLite = (maybeFileItemLite: unknown): maybeFileItemLite is FileItemLite =>
194
+ typeof (maybeFileItemLite as Partial<FileItemLite>).webUrl === "string" &&
195
+ typeof (maybeFileItemLite as Partial<FileItemLite>).webDavUrl === "string" &&
196
+ // TODO: stronger check
197
+ typeof (maybeFileItemLite as Partial<FileItemLite>).sharepointIds === "object";
190
198
 
191
199
  async function getFileItemLite(
192
200
  getToken: TokenFetcher<OdspResourceTokenFetchOptions>,
@@ -199,7 +207,7 @@ async function getFileItemLite(
199
207
  { eventName: "odspFileLink", requestName: "getFileItemLite" },
200
208
  async (event) => {
201
209
  let attempts = 0;
202
- let additionalProps;
210
+ let additionalProps: ITelemetryBaseProperties | undefined;
203
211
  const fileItem = await getWithRetryForTokenRefresh(async (options) => {
204
212
  attempts++;
205
213
  const { siteUrl, driveId, itemId } = odspUrlParts;
@@ -224,12 +232,12 @@ async function getFileItemLite(
224
232
  const response = await fetchHelper(url, requestInit);
225
233
  additionalProps = response.propsToLog;
226
234
 
227
- const responseJson = await response.content.json();
235
+ const responseJson: unknown = await response.content.json();
228
236
  if (!isFileItemLite(responseJson)) {
229
237
  // This will retry once in getWithRetryForTokenRefresh
230
238
  throw new NonRetryableError(
231
239
  "Malformed getFileItemLite response",
232
- DriverErrorType.incorrectServerResponse,
240
+ OdspErrorTypes.incorrectServerResponse,
233
241
  { driverVersion },
234
242
  );
235
243
  }
@@ -15,6 +15,8 @@ export function getQueryString(
15
15
  for (const key of Object.keys(queryParams)) {
16
16
  if (queryParams[key] !== undefined) {
17
17
  const startChar = queryString === "" ? "?" : "&";
18
+ // False-positive
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18
20
  queryString += `${startChar}${key}=${encodeURIComponent(queryParams[key])}`;
19
21
  }
20
22
  }