@fluidframework/odsp-driver 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.224419

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 (661) hide show
  1. package/.eslintrc.js +12 -12
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +162 -0
  4. package/README.md +56 -0
  5. package/api-extractor-lint.json +4 -0
  6. package/api-extractor.json +2 -2
  7. package/api-report/odsp-driver.api.md +310 -0
  8. package/dist/{ReadBufferUtils.js → ReadBufferUtils.cjs} +16 -9
  9. package/dist/ReadBufferUtils.cjs.map +1 -0
  10. package/dist/ReadBufferUtils.d.ts.map +1 -1
  11. package/dist/{WriteBufferUtils.js → WriteBufferUtils.cjs} +73 -69
  12. package/dist/WriteBufferUtils.cjs.map +1 -0
  13. package/dist/WriteBufferUtils.d.ts +3 -5
  14. package/dist/WriteBufferUtils.d.ts.map +1 -1
  15. package/dist/{checkUrl.js → checkUrl.cjs} +7 -6
  16. package/dist/checkUrl.cjs.map +1 -0
  17. package/dist/checkUrl.d.ts +1 -0
  18. package/dist/checkUrl.d.ts.map +1 -1
  19. package/dist/compactSnapshotParser.cjs +207 -0
  20. package/dist/compactSnapshotParser.cjs.map +1 -0
  21. package/dist/compactSnapshotParser.d.ts +12 -3
  22. package/dist/compactSnapshotParser.d.ts.map +1 -1
  23. package/dist/{compactSnapshotWriter.js → compactSnapshotWriter.cjs} +43 -33
  24. package/dist/compactSnapshotWriter.cjs.map +1 -0
  25. package/dist/compactSnapshotWriter.d.ts +2 -3
  26. package/dist/compactSnapshotWriter.d.ts.map +1 -1
  27. package/dist/{constants.js → constants.cjs} +7 -1
  28. package/dist/constants.cjs.map +1 -0
  29. package/dist/constants.d.ts +6 -0
  30. package/dist/constants.d.ts.map +1 -1
  31. package/dist/{contracts.js → contracts.cjs} +1 -1
  32. package/dist/contracts.cjs.map +1 -0
  33. package/dist/contracts.d.ts +16 -53
  34. package/dist/contracts.d.ts.map +1 -1
  35. package/dist/{contractsPublic.js → contractsPublic.cjs} +9 -3
  36. package/dist/contractsPublic.cjs.map +1 -0
  37. package/dist/contractsPublic.d.ts +15 -0
  38. package/dist/contractsPublic.d.ts.map +1 -1
  39. package/dist/createFile.cjs +177 -0
  40. package/dist/createFile.cjs.map +1 -0
  41. package/dist/createFile.d.ts +6 -10
  42. package/dist/createFile.d.ts.map +1 -1
  43. package/dist/createNewContainerOnExistingFile.cjs +60 -0
  44. package/dist/createNewContainerOnExistingFile.cjs.map +1 -0
  45. package/dist/createNewContainerOnExistingFile.d.ts +22 -0
  46. package/dist/createNewContainerOnExistingFile.d.ts.map +1 -0
  47. package/dist/createNewModule.cjs +12 -0
  48. package/dist/createNewModule.cjs.map +1 -0
  49. package/dist/createNewModule.d.ts +7 -0
  50. package/dist/createNewModule.d.ts.map +1 -0
  51. package/dist/createNewUtils.cjs +203 -0
  52. package/dist/createNewUtils.cjs.map +1 -0
  53. package/dist/createNewUtils.d.ts +16 -0
  54. package/dist/createNewUtils.d.ts.map +1 -1
  55. package/dist/{createOdspCreateContainerRequest.js → createOdspCreateContainerRequest.cjs} +8 -4
  56. package/dist/createOdspCreateContainerRequest.cjs.map +1 -0
  57. package/dist/createOdspCreateContainerRequest.d.ts +5 -3
  58. package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
  59. package/dist/{createOdspUrl.js → createOdspUrl.cjs} +2 -1
  60. package/dist/createOdspUrl.cjs.map +1 -0
  61. package/dist/createOdspUrl.d.ts +1 -0
  62. package/dist/createOdspUrl.d.ts.map +1 -1
  63. package/dist/{epochTracker.js → epochTracker.cjs} +102 -48
  64. package/dist/epochTracker.cjs.map +1 -0
  65. package/dist/epochTracker.d.ts +32 -8
  66. package/dist/epochTracker.d.ts.map +1 -1
  67. package/dist/{fetch.js → fetch.cjs} +1 -1
  68. package/dist/fetch.cjs.map +1 -0
  69. package/dist/fetch.d.ts +1 -1
  70. package/dist/fetch.d.ts.map +1 -1
  71. package/dist/{fetchSnapshot.js → fetchSnapshot.cjs} +192 -176
  72. package/dist/fetchSnapshot.cjs.map +1 -0
  73. package/dist/fetchSnapshot.d.ts +10 -5
  74. package/dist/fetchSnapshot.d.ts.map +1 -1
  75. package/dist/{getFileLink.js → getFileLink.cjs} +52 -41
  76. package/dist/getFileLink.cjs.map +1 -0
  77. package/dist/getFileLink.d.ts +4 -7
  78. package/dist/getFileLink.d.ts.map +1 -1
  79. package/dist/{getQueryString.js → getQueryString.cjs} +1 -1
  80. package/dist/getQueryString.cjs.map +1 -0
  81. package/dist/getQueryString.d.ts.map +1 -1
  82. package/dist/{getUrlAndHeadersWithAuth.js → getUrlAndHeadersWithAuth.cjs} +4 -2
  83. package/dist/getUrlAndHeadersWithAuth.cjs.map +1 -0
  84. package/dist/getUrlAndHeadersWithAuth.d.ts.map +1 -1
  85. package/dist/index.cjs +59 -0
  86. package/dist/index.cjs.map +1 -0
  87. package/dist/index.d.ts +19 -16
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/localOdspDriver/localOdspDeltaStorageService.cjs +35 -0
  90. package/dist/localOdspDriver/localOdspDeltaStorageService.cjs.map +1 -0
  91. package/dist/localOdspDriver/localOdspDeltaStorageService.d.ts +17 -0
  92. package/dist/localOdspDriver/localOdspDeltaStorageService.d.ts.map +1 -0
  93. package/dist/localOdspDriver/{localOdspDocumentService.js → localOdspDocumentService.cjs} +7 -5
  94. package/dist/localOdspDriver/localOdspDocumentService.cjs.map +1 -0
  95. package/dist/localOdspDriver/localOdspDocumentService.d.ts +3 -2
  96. package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
  97. package/dist/localOdspDriver/{localOdspDocumentServiceFactory.js → localOdspDocumentServiceFactory.cjs} +9 -10
  98. package/dist/localOdspDriver/localOdspDocumentServiceFactory.cjs.map +1 -0
  99. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts +2 -3
  100. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -1
  101. package/dist/localOdspDriver/{localOdspDocumentStorageManager.js → localOdspDocumentStorageManager.cjs} +13 -11
  102. package/dist/localOdspDriver/localOdspDocumentStorageManager.cjs.map +1 -0
  103. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +2 -2
  104. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
  105. package/dist/odsp-driver-alpha.d.ts +497 -0
  106. package/dist/odsp-driver-beta.d.ts +159 -0
  107. package/dist/odsp-driver-public.d.ts +159 -0
  108. package/dist/odsp-driver-untrimmed.d.ts +566 -0
  109. package/dist/{odspCache.js → odspCache.cjs} +9 -10
  110. package/dist/odspCache.cjs.map +1 -0
  111. package/dist/odspCache.d.ts +19 -4
  112. package/dist/odspCache.d.ts.map +1 -1
  113. package/dist/odspDelayLoadedDeltaStream.cjs +291 -0
  114. package/dist/odspDelayLoadedDeltaStream.cjs.map +1 -0
  115. package/dist/odspDelayLoadedDeltaStream.d.ts +75 -0
  116. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -0
  117. package/dist/{odspDeltaStorageService.js → odspDeltaStorageService.cjs} +70 -71
  118. package/dist/odspDeltaStorageService.cjs.map +1 -0
  119. package/dist/odspDeltaStorageService.d.ts +8 -6
  120. package/dist/odspDeltaStorageService.d.ts.map +1 -1
  121. package/dist/{odspDocumentDeltaConnection.js → odspDocumentDeltaConnection.cjs} +224 -113
  122. package/dist/odspDocumentDeltaConnection.cjs.map +1 -0
  123. package/dist/odspDocumentDeltaConnection.d.ts +32 -12
  124. package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
  125. package/dist/odspDocumentService.cjs +225 -0
  126. package/dist/odspDocumentService.cjs.map +1 -0
  127. package/dist/odspDocumentService.d.ts +11 -25
  128. package/dist/odspDocumentService.d.ts.map +1 -1
  129. package/dist/{odspDocumentServiceFactory.js → odspDocumentServiceFactory.cjs} +8 -5
  130. package/dist/odspDocumentServiceFactory.cjs.map +1 -0
  131. package/dist/odspDocumentServiceFactory.d.ts +4 -0
  132. package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
  133. package/dist/odspDocumentServiceFactoryCore.cjs +196 -0
  134. package/dist/odspDocumentServiceFactoryCore.cjs.map +1 -0
  135. package/dist/odspDocumentServiceFactoryCore.d.ts +16 -11
  136. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  137. package/dist/odspDocumentServiceFactoryWithCodeSplit.cjs +20 -0
  138. package/dist/odspDocumentServiceFactoryWithCodeSplit.cjs.map +1 -0
  139. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts +5 -0
  140. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -1
  141. package/dist/odspDocumentStorageManager.cjs +490 -0
  142. package/dist/odspDocumentStorageManager.cjs.map +1 -0
  143. package/dist/odspDocumentStorageManager.d.ts +11 -5
  144. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  145. package/dist/{odspDocumentStorageServiceBase.js → odspDocumentStorageServiceBase.cjs} +32 -34
  146. package/dist/odspDocumentStorageServiceBase.cjs.map +1 -0
  147. package/dist/odspDocumentStorageServiceBase.d.ts +7 -9
  148. package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
  149. package/dist/{odspDriverUrlResolver.js → odspDriverUrlResolver.cjs} +50 -36
  150. package/dist/odspDriverUrlResolver.cjs.map +1 -0
  151. package/dist/odspDriverUrlResolver.d.ts +12 -0
  152. package/dist/odspDriverUrlResolver.d.ts.map +1 -1
  153. package/dist/{odspDriverUrlResolverForShareLink.js → odspDriverUrlResolverForShareLink.cjs} +37 -26
  154. package/dist/odspDriverUrlResolverForShareLink.cjs.map +1 -0
  155. package/dist/odspDriverUrlResolverForShareLink.d.ts +5 -3
  156. package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  157. package/dist/{odspError.js → odspError.cjs} +7 -3
  158. package/dist/odspError.cjs.map +1 -0
  159. package/dist/odspError.d.ts.map +1 -1
  160. package/dist/{odspFluidFileLink.js → odspFluidFileLink.cjs} +25 -18
  161. package/dist/odspFluidFileLink.cjs.map +1 -0
  162. package/dist/odspFluidFileLink.d.ts +10 -1
  163. package/dist/odspFluidFileLink.d.ts.map +1 -1
  164. package/dist/odspLocationRedirection.cjs +24 -0
  165. package/dist/odspLocationRedirection.cjs.map +1 -0
  166. package/dist/odspLocationRedirection.d.ts +14 -0
  167. package/dist/odspLocationRedirection.d.ts.map +1 -0
  168. package/dist/{odspPublicUtils.js → odspPublicUtils.cjs} +7 -4
  169. package/dist/odspPublicUtils.cjs.map +1 -0
  170. package/dist/odspPublicUtils.d.ts +6 -0
  171. package/dist/odspPublicUtils.d.ts.map +1 -1
  172. package/dist/{odspSnapshotParser.js → odspSnapshotParser.cjs} +11 -12
  173. package/dist/odspSnapshotParser.cjs.map +1 -0
  174. package/dist/odspSnapshotParser.d.ts.map +1 -1
  175. package/dist/{odspSummaryUploadManager.js → odspSummaryUploadManager.cjs} +47 -34
  176. package/dist/odspSummaryUploadManager.cjs.map +1 -0
  177. package/dist/odspSummaryUploadManager.d.ts +7 -4
  178. package/dist/odspSummaryUploadManager.d.ts.map +1 -1
  179. package/dist/{odspUrlHelper.js → odspUrlHelper.cjs} +9 -3
  180. package/dist/odspUrlHelper.cjs.map +1 -0
  181. package/dist/odspUrlHelper.d.ts +5 -0
  182. package/dist/odspUrlHelper.d.ts.map +1 -1
  183. package/dist/{odspUtils.js → odspUtils.cjs} +118 -30
  184. package/dist/odspUtils.cjs.map +1 -0
  185. package/dist/odspUtils.d.ts +35 -6
  186. package/dist/odspUtils.d.ts.map +1 -1
  187. package/dist/{opsCaching.js → opsCaching.cjs} +25 -9
  188. package/dist/opsCaching.cjs.map +1 -0
  189. package/dist/opsCaching.d.ts +3 -3
  190. package/dist/opsCaching.d.ts.map +1 -1
  191. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  192. package/dist/packageVersion.cjs.map +1 -0
  193. package/dist/packageVersion.d.ts +1 -1
  194. package/dist/packageVersion.d.ts.map +1 -1
  195. package/dist/prefetchLatestSnapshot.cjs +100 -0
  196. package/dist/prefetchLatestSnapshot.cjs.map +1 -0
  197. package/dist/prefetchLatestSnapshot.d.ts +12 -7
  198. package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
  199. package/dist/{retryErrorsStorageAdapter.js → retryErrorsStorageAdapter.cjs} +13 -6
  200. package/dist/retryErrorsStorageAdapter.cjs.map +1 -0
  201. package/dist/retryErrorsStorageAdapter.d.ts +5 -4
  202. package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
  203. package/dist/{retryUtils.js → retryUtils.cjs} +30 -14
  204. package/dist/retryUtils.cjs.map +1 -0
  205. package/dist/retryUtils.d.ts +2 -2
  206. package/dist/retryUtils.d.ts.map +1 -1
  207. package/dist/socketModule.cjs +10 -0
  208. package/dist/socketModule.cjs.map +1 -0
  209. package/dist/socketModule.d.ts +7 -0
  210. package/dist/socketModule.d.ts.map +1 -0
  211. package/dist/tsdoc-metadata.json +11 -0
  212. package/dist/{vroom.js → vroom.cjs} +24 -9
  213. package/dist/vroom.cjs.map +1 -0
  214. package/dist/vroom.d.ts +4 -4
  215. package/dist/vroom.d.ts.map +1 -1
  216. package/dist/{zipItDataRepresentationUtils.js → zipItDataRepresentationUtils.cjs} +227 -118
  217. package/dist/zipItDataRepresentationUtils.cjs.map +1 -0
  218. package/dist/zipItDataRepresentationUtils.d.ts +47 -20
  219. package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
  220. package/lib/ReadBufferUtils.d.mts.map +1 -0
  221. package/lib/{ReadBufferUtils.js → ReadBufferUtils.mjs} +14 -7
  222. package/lib/ReadBufferUtils.mjs.map +1 -0
  223. package/lib/{WriteBufferUtils.d.ts → WriteBufferUtils.d.mts} +3 -5
  224. package/lib/WriteBufferUtils.d.mts.map +1 -0
  225. package/lib/{WriteBufferUtils.js → WriteBufferUtils.mjs} +68 -64
  226. package/lib/WriteBufferUtils.mjs.map +1 -0
  227. package/lib/{checkUrl.d.ts → checkUrl.d.mts} +1 -0
  228. package/lib/checkUrl.d.mts.map +1 -0
  229. package/lib/{checkUrl.js → checkUrl.mjs} +7 -6
  230. package/lib/checkUrl.mjs.map +1 -0
  231. package/lib/compactSnapshotParser.d.mts +24 -0
  232. package/lib/compactSnapshotParser.d.mts.map +1 -0
  233. package/lib/compactSnapshotParser.mjs +203 -0
  234. package/lib/compactSnapshotParser.mjs.map +1 -0
  235. package/lib/{compactSnapshotWriter.d.ts → compactSnapshotWriter.d.mts} +3 -4
  236. package/lib/compactSnapshotWriter.d.mts.map +1 -0
  237. package/lib/{compactSnapshotWriter.js → compactSnapshotWriter.mjs} +41 -31
  238. package/lib/compactSnapshotWriter.mjs.map +1 -0
  239. package/lib/{constants.d.ts → constants.d.mts} +6 -0
  240. package/lib/constants.d.mts.map +1 -0
  241. package/lib/{constants.js → constants.mjs} +7 -1
  242. package/lib/constants.mjs.map +1 -0
  243. package/lib/{contracts.d.ts → contracts.d.mts} +17 -54
  244. package/lib/contracts.d.mts.map +1 -0
  245. package/lib/{contracts.js → contracts.mjs} +1 -1
  246. package/lib/contracts.mjs.map +1 -0
  247. package/lib/{contractsPublic.d.ts → contractsPublic.d.mts} +15 -0
  248. package/lib/contractsPublic.d.mts.map +1 -0
  249. package/lib/{contractsPublic.js → contractsPublic.mjs} +7 -1
  250. package/lib/contractsPublic.mjs.map +1 -0
  251. package/lib/createFile.d.mts +18 -0
  252. package/lib/createFile.d.mts.map +1 -0
  253. package/lib/createFile.mjs +171 -0
  254. package/lib/createFile.mjs.map +1 -0
  255. package/lib/createNewContainerOnExistingFile.d.mts +22 -0
  256. package/lib/createNewContainerOnExistingFile.d.mts.map +1 -0
  257. package/lib/createNewContainerOnExistingFile.mjs +56 -0
  258. package/lib/createNewContainerOnExistingFile.mjs.map +1 -0
  259. package/lib/createNewModule.d.mts +7 -0
  260. package/lib/createNewModule.d.mts.map +1 -0
  261. package/lib/createNewModule.mjs +7 -0
  262. package/lib/createNewModule.mjs.map +1 -0
  263. package/lib/createNewUtils.d.mts +27 -0
  264. package/lib/createNewUtils.d.mts.map +1 -0
  265. package/lib/createNewUtils.mjs +197 -0
  266. package/lib/createNewUtils.mjs.map +1 -0
  267. package/lib/{createOdspCreateContainerRequest.d.ts → createOdspCreateContainerRequest.d.mts} +5 -7
  268. package/lib/createOdspCreateContainerRequest.d.mts.map +1 -0
  269. package/lib/{createOdspCreateContainerRequest.js → createOdspCreateContainerRequest.mjs} +8 -4
  270. package/lib/createOdspCreateContainerRequest.mjs.map +1 -0
  271. package/lib/{createOdspUrl.d.ts → createOdspUrl.d.mts} +2 -1
  272. package/lib/{createOdspUrl.d.ts.map → createOdspUrl.d.mts.map} +1 -1
  273. package/lib/{createOdspUrl.js → createOdspUrl.mjs} +2 -1
  274. package/lib/createOdspUrl.mjs.map +1 -0
  275. package/lib/{epochTracker.d.ts → epochTracker.d.mts} +34 -10
  276. package/lib/epochTracker.d.mts.map +1 -0
  277. package/lib/{epochTracker.js → epochTracker.mjs} +97 -43
  278. package/lib/epochTracker.mjs.map +1 -0
  279. package/lib/{fetch.d.ts → fetch.d.mts} +1 -1
  280. package/lib/{fetch.d.ts.map → fetch.d.mts.map} +1 -1
  281. package/lib/{fetch.js → fetch.mjs} +1 -1
  282. package/lib/fetch.mjs.map +1 -0
  283. package/lib/{fetchSnapshot.d.ts → fetchSnapshot.d.mts} +14 -9
  284. package/lib/fetchSnapshot.d.mts.map +1 -0
  285. package/lib/{fetchSnapshot.js → fetchSnapshot.mjs} +185 -167
  286. package/lib/fetchSnapshot.mjs.map +1 -0
  287. package/lib/{getFileLink.d.ts → getFileLink.d.mts} +4 -7
  288. package/lib/getFileLink.d.mts.map +1 -0
  289. package/lib/{getFileLink.js → getFileLink.mjs} +49 -38
  290. package/lib/getFileLink.mjs.map +1 -0
  291. package/lib/{getQueryString.d.ts → getQueryString.d.mts} +0 -4
  292. package/lib/getQueryString.d.mts.map +1 -0
  293. package/lib/{getQueryString.js → getQueryString.mjs} +1 -1
  294. package/lib/getQueryString.mjs.map +1 -0
  295. package/lib/{getUrlAndHeadersWithAuth.d.ts.map → getUrlAndHeadersWithAuth.d.mts.map} +1 -1
  296. package/lib/{getUrlAndHeadersWithAuth.js → getUrlAndHeadersWithAuth.mjs} +4 -2
  297. package/lib/getUrlAndHeadersWithAuth.mjs.map +1 -0
  298. package/lib/index.d.mts +24 -0
  299. package/lib/index.d.mts.map +1 -0
  300. package/lib/index.mjs +22 -0
  301. package/lib/index.mjs.map +1 -0
  302. package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts +17 -0
  303. package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts.map +1 -0
  304. package/lib/localOdspDriver/localOdspDeltaStorageService.mjs +31 -0
  305. package/lib/localOdspDriver/localOdspDeltaStorageService.mjs.map +1 -0
  306. package/lib/localOdspDriver/{localOdspDocumentService.d.ts → localOdspDocumentService.d.mts} +3 -2
  307. package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +1 -0
  308. package/lib/localOdspDriver/{localOdspDocumentService.js → localOdspDocumentService.mjs} +8 -6
  309. package/lib/localOdspDriver/localOdspDocumentService.mjs.map +1 -0
  310. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.d.ts → localOdspDocumentServiceFactory.d.mts} +4 -5
  311. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.mts.map +1 -0
  312. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.js → localOdspDocumentServiceFactory.mjs} +9 -10
  313. package/lib/localOdspDriver/localOdspDocumentServiceFactory.mjs.map +1 -0
  314. package/lib/localOdspDriver/{localOdspDocumentStorageManager.d.ts → localOdspDocumentStorageManager.d.mts} +3 -3
  315. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +1 -0
  316. package/lib/localOdspDriver/{localOdspDocumentStorageManager.js → localOdspDocumentStorageManager.mjs} +11 -9
  317. package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +1 -0
  318. package/lib/odsp-driver-alpha.d.mts +497 -0
  319. package/lib/odsp-driver-beta.d.mts +159 -0
  320. package/lib/odsp-driver-public.d.mts +159 -0
  321. package/lib/odsp-driver-untrimmed.d.mts +566 -0
  322. package/lib/{odspCache.d.ts → odspCache.d.mts} +19 -8
  323. package/lib/odspCache.d.mts.map +1 -0
  324. package/lib/{odspCache.js → odspCache.mjs} +6 -11
  325. package/lib/odspCache.mjs.map +1 -0
  326. package/lib/odspDelayLoadedDeltaStream.d.mts +75 -0
  327. package/lib/odspDelayLoadedDeltaStream.d.mts.map +1 -0
  328. package/lib/odspDelayLoadedDeltaStream.mjs +287 -0
  329. package/lib/odspDelayLoadedDeltaStream.mjs.map +1 -0
  330. package/lib/{odspDeltaStorageService.d.ts → odspDeltaStorageService.d.mts} +9 -7
  331. package/lib/odspDeltaStorageService.d.mts.map +1 -0
  332. package/lib/{odspDeltaStorageService.js → odspDeltaStorageService.mjs} +70 -68
  333. package/lib/odspDeltaStorageService.mjs.map +1 -0
  334. package/lib/{odspDocumentDeltaConnection.d.ts → odspDocumentDeltaConnection.d.mts} +33 -13
  335. package/lib/odspDocumentDeltaConnection.d.mts.map +1 -0
  336. package/lib/{odspDocumentDeltaConnection.js → odspDocumentDeltaConnection.mjs} +214 -103
  337. package/lib/odspDocumentDeltaConnection.mjs.map +1 -0
  338. package/lib/{odspDocumentService.d.ts → odspDocumentService.d.mts} +14 -28
  339. package/lib/odspDocumentService.d.mts.map +1 -0
  340. package/lib/odspDocumentService.mjs +221 -0
  341. package/lib/odspDocumentService.mjs.map +1 -0
  342. package/lib/{odspDocumentServiceFactory.d.ts → odspDocumentServiceFactory.d.mts} +5 -1
  343. package/lib/odspDocumentServiceFactory.d.mts.map +1 -0
  344. package/lib/{odspDocumentServiceFactory.js → odspDocumentServiceFactory.mjs} +8 -6
  345. package/lib/odspDocumentServiceFactory.mjs.map +1 -0
  346. package/lib/{odspDocumentServiceFactoryCore.d.ts → odspDocumentServiceFactoryCore.d.mts} +17 -12
  347. package/lib/odspDocumentServiceFactoryCore.d.mts.map +1 -0
  348. package/lib/odspDocumentServiceFactoryCore.mjs +192 -0
  349. package/lib/odspDocumentServiceFactoryCore.mjs.map +1 -0
  350. package/lib/{odspDocumentServiceFactoryWithCodeSplit.d.ts → odspDocumentServiceFactoryWithCodeSplit.d.mts} +6 -1
  351. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.mts.map +1 -0
  352. package/lib/{odspDocumentServiceFactoryWithCodeSplit.js → odspDocumentServiceFactoryWithCodeSplit.mjs} +8 -3
  353. package/lib/odspDocumentServiceFactoryWithCodeSplit.mjs.map +1 -0
  354. package/lib/{odspDocumentStorageManager.d.ts → odspDocumentStorageManager.d.mts} +17 -11
  355. package/lib/odspDocumentStorageManager.d.mts.map +1 -0
  356. package/lib/odspDocumentStorageManager.mjs +486 -0
  357. package/lib/odspDocumentStorageManager.mjs.map +1 -0
  358. package/lib/{odspDocumentStorageServiceBase.d.ts → odspDocumentStorageServiceBase.d.mts} +8 -10
  359. package/lib/odspDocumentStorageServiceBase.d.mts.map +1 -0
  360. package/lib/{odspDocumentStorageServiceBase.js → odspDocumentStorageServiceBase.mjs} +31 -33
  361. package/lib/odspDocumentStorageServiceBase.mjs.map +1 -0
  362. package/lib/{odspDriverUrlResolver.d.ts → odspDriverUrlResolver.d.mts} +12 -0
  363. package/lib/odspDriverUrlResolver.d.mts.map +1 -0
  364. package/lib/{odspDriverUrlResolver.js → odspDriverUrlResolver.mjs} +50 -40
  365. package/lib/odspDriverUrlResolver.mjs.map +1 -0
  366. package/lib/{odspDriverUrlResolverForShareLink.d.ts → odspDriverUrlResolverForShareLink.d.mts} +6 -4
  367. package/lib/odspDriverUrlResolverForShareLink.d.mts.map +1 -0
  368. package/lib/{odspDriverUrlResolverForShareLink.js → odspDriverUrlResolverForShareLink.mjs} +36 -29
  369. package/lib/odspDriverUrlResolverForShareLink.mjs.map +1 -0
  370. package/lib/{odspError.d.ts → odspError.d.mts} +1 -1
  371. package/lib/odspError.d.mts.map +1 -0
  372. package/lib/{odspError.js → odspError.mjs} +7 -3
  373. package/lib/odspError.mjs.map +1 -0
  374. package/lib/{odspFluidFileLink.d.ts → odspFluidFileLink.d.mts} +11 -2
  375. package/lib/odspFluidFileLink.d.mts.map +1 -0
  376. package/lib/{odspFluidFileLink.js → odspFluidFileLink.mjs} +23 -16
  377. package/lib/odspFluidFileLink.mjs.map +1 -0
  378. package/lib/odspLocationRedirection.d.mts +14 -0
  379. package/lib/odspLocationRedirection.d.mts.map +1 -0
  380. package/lib/odspLocationRedirection.mjs +20 -0
  381. package/lib/odspLocationRedirection.mjs.map +1 -0
  382. package/lib/{odspPublicUtils.d.ts → odspPublicUtils.d.mts} +6 -0
  383. package/lib/odspPublicUtils.d.mts.map +1 -0
  384. package/lib/{odspPublicUtils.js → odspPublicUtils.mjs} +5 -2
  385. package/lib/odspPublicUtils.mjs.map +1 -0
  386. package/lib/{odspSnapshotParser.d.ts → odspSnapshotParser.d.mts} +2 -2
  387. package/lib/odspSnapshotParser.d.mts.map +1 -0
  388. package/lib/{odspSnapshotParser.js → odspSnapshotParser.mjs} +10 -11
  389. package/lib/odspSnapshotParser.mjs.map +1 -0
  390. package/lib/{odspSummaryUploadManager.d.ts → odspSummaryUploadManager.d.mts} +8 -5
  391. package/lib/odspSummaryUploadManager.d.mts.map +1 -0
  392. package/lib/{odspSummaryUploadManager.js → odspSummaryUploadManager.mjs} +41 -32
  393. package/lib/odspSummaryUploadManager.mjs.map +1 -0
  394. package/lib/{odspUrlHelper.d.ts → odspUrlHelper.d.mts} +5 -0
  395. package/lib/odspUrlHelper.d.mts.map +1 -0
  396. package/lib/{odspUrlHelper.js → odspUrlHelper.mjs} +9 -3
  397. package/lib/odspUrlHelper.mjs.map +1 -0
  398. package/lib/{odspUtils.d.ts → odspUtils.d.mts} +36 -7
  399. package/lib/odspUtils.d.mts.map +1 -0
  400. package/lib/{odspUtils.js → odspUtils.mjs} +109 -27
  401. package/lib/odspUtils.mjs.map +1 -0
  402. package/lib/{opsCaching.d.ts → opsCaching.d.mts} +3 -3
  403. package/lib/opsCaching.d.mts.map +1 -0
  404. package/lib/{opsCaching.js → opsCaching.mjs} +23 -7
  405. package/lib/opsCaching.mjs.map +1 -0
  406. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
  407. package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
  408. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  409. package/lib/packageVersion.mjs.map +1 -0
  410. package/lib/{prefetchLatestSnapshot.d.ts → prefetchLatestSnapshot.d.mts} +13 -8
  411. package/lib/prefetchLatestSnapshot.d.mts.map +1 -0
  412. package/lib/prefetchLatestSnapshot.mjs +96 -0
  413. package/lib/prefetchLatestSnapshot.mjs.map +1 -0
  414. package/lib/{retryErrorsStorageAdapter.d.ts → retryErrorsStorageAdapter.d.mts} +5 -4
  415. package/lib/retryErrorsStorageAdapter.d.mts.map +1 -0
  416. package/lib/{retryErrorsStorageAdapter.js → retryErrorsStorageAdapter.mjs} +13 -6
  417. package/lib/retryErrorsStorageAdapter.mjs.map +1 -0
  418. package/lib/{retryUtils.d.ts → retryUtils.d.mts} +2 -2
  419. package/lib/retryUtils.d.mts.map +1 -0
  420. package/lib/{retryUtils.js → retryUtils.mjs} +27 -11
  421. package/lib/retryUtils.mjs.map +1 -0
  422. package/lib/socketModule.d.mts +7 -0
  423. package/lib/socketModule.d.mts.map +1 -0
  424. package/lib/socketModule.mjs +7 -0
  425. package/lib/socketModule.mjs.map +1 -0
  426. package/lib/{vroom.d.ts → vroom.d.mts} +6 -6
  427. package/lib/vroom.d.mts.map +1 -0
  428. package/lib/{vroom.js → vroom.mjs} +24 -9
  429. package/lib/vroom.mjs.map +1 -0
  430. package/lib/{zipItDataRepresentationUtils.d.ts → zipItDataRepresentationUtils.d.mts} +48 -21
  431. package/lib/zipItDataRepresentationUtils.d.mts.map +1 -0
  432. package/lib/{zipItDataRepresentationUtils.js → zipItDataRepresentationUtils.mjs} +213 -111
  433. package/lib/zipItDataRepresentationUtils.mjs.map +1 -0
  434. package/package.json +89 -69
  435. package/prettier.config.cjs +8 -0
  436. package/src/ReadBufferUtils.ts +51 -44
  437. package/src/WriteBufferUtils.ts +203 -181
  438. package/src/checkUrl.ts +16 -15
  439. package/src/compactSnapshotParser.ts +219 -103
  440. package/src/compactSnapshotWriter.ts +118 -97
  441. package/src/constants.ts +7 -0
  442. package/src/contracts.ts +96 -136
  443. package/src/contractsPublic.ts +31 -16
  444. package/src/createFile.ts +243 -305
  445. package/src/createNewContainerOnExistingFile.ts +93 -0
  446. package/src/createNewModule.ts +7 -0
  447. package/src/createNewUtils.ts +266 -56
  448. package/src/createOdspCreateContainerRequest.ts +22 -18
  449. package/src/createOdspUrl.ts +12 -13
  450. package/src/epochTracker.ts +596 -457
  451. package/src/fetch.ts +4 -4
  452. package/src/fetchSnapshot.ts +583 -508
  453. package/src/getFileLink.ts +194 -155
  454. package/src/getQueryString.ts +11 -9
  455. package/src/getUrlAndHeadersWithAuth.ts +34 -33
  456. package/src/index.ts +42 -18
  457. package/src/localOdspDriver/localOdspDeltaStorageService.ts +49 -0
  458. package/src/localOdspDriver/localOdspDocumentService.ts +40 -38
  459. package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +46 -43
  460. package/src/localOdspDriver/localOdspDocumentStorageManager.ts +55 -50
  461. package/src/odspCache.ts +112 -90
  462. package/src/odspDelayLoadedDeltaStream.ts +459 -0
  463. package/src/odspDeltaStorageService.ts +232 -221
  464. package/src/odspDocumentDeltaConnection.ts +751 -563
  465. package/src/odspDocumentService.ts +324 -523
  466. package/src/odspDocumentServiceFactory.ts +20 -21
  467. package/src/odspDocumentServiceFactoryCore.ts +325 -202
  468. package/src/odspDocumentServiceFactoryWithCodeSplit.ts +20 -20
  469. package/src/odspDocumentStorageManager.ts +730 -534
  470. package/src/odspDocumentStorageServiceBase.ts +279 -254
  471. package/src/odspDriverUrlResolver.ts +230 -188
  472. package/src/odspDriverUrlResolverForShareLink.ts +223 -203
  473. package/src/odspError.ts +27 -19
  474. package/src/odspFluidFileLink.ts +106 -87
  475. package/src/odspLocationRedirection.ts +26 -0
  476. package/src/odspPublicUtils.ts +20 -14
  477. package/src/odspSnapshotParser.ts +53 -46
  478. package/src/odspSummaryUploadManager.ts +243 -218
  479. package/src/odspUrlHelper.ts +81 -71
  480. package/src/odspUtils.ts +401 -259
  481. package/src/opsCaching.ts +214 -193
  482. package/src/packageVersion.ts +1 -1
  483. package/src/prefetchLatestSnapshot.ts +142 -80
  484. package/src/retryErrorsStorageAdapter.ts +92 -77
  485. package/src/retryUtils.ts +80 -57
  486. package/src/socketModule.ts +8 -0
  487. package/src/vroom.ts +92 -83
  488. package/src/zipItDataRepresentationUtils.ts +534 -394
  489. package/tsc-multi.test.json +4 -0
  490. package/tsconfig.json +11 -13
  491. package/.editorconfig +0 -7
  492. package/dist/ReadBufferUtils.js.map +0 -1
  493. package/dist/WriteBufferUtils.js.map +0 -1
  494. package/dist/checkUrl.js.map +0 -1
  495. package/dist/compactSnapshotParser.js +0 -115
  496. package/dist/compactSnapshotParser.js.map +0 -1
  497. package/dist/compactSnapshotWriter.js.map +0 -1
  498. package/dist/constants.js.map +0 -1
  499. package/dist/contracts.js.map +0 -1
  500. package/dist/contractsPublic.js.map +0 -1
  501. package/dist/createFile.js +0 -242
  502. package/dist/createFile.js.map +0 -1
  503. package/dist/createNewUtils.js +0 -67
  504. package/dist/createNewUtils.js.map +0 -1
  505. package/dist/createOdspCreateContainerRequest.js.map +0 -1
  506. package/dist/createOdspUrl.js.map +0 -1
  507. package/dist/epochTracker.js.map +0 -1
  508. package/dist/fetch.js.map +0 -1
  509. package/dist/fetchSnapshot.js.map +0 -1
  510. package/dist/getFileLink.js.map +0 -1
  511. package/dist/getQueryString.js.map +0 -1
  512. package/dist/getSocketIo.d.ts +0 -11
  513. package/dist/getSocketIo.d.ts.map +0 -1
  514. package/dist/getSocketIo.js +0 -20
  515. package/dist/getSocketIo.js.map +0 -1
  516. package/dist/getUrlAndHeadersWithAuth.js.map +0 -1
  517. package/dist/index.js +0 -41
  518. package/dist/index.js.map +0 -1
  519. package/dist/localOdspDriver/localOdspDocumentService.js.map +0 -1
  520. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +0 -1
  521. package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +0 -1
  522. package/dist/odspCache.js.map +0 -1
  523. package/dist/odspDeltaStorageService.js.map +0 -1
  524. package/dist/odspDocumentDeltaConnection.js.map +0 -1
  525. package/dist/odspDocumentService.js +0 -364
  526. package/dist/odspDocumentService.js.map +0 -1
  527. package/dist/odspDocumentServiceFactory.js.map +0 -1
  528. package/dist/odspDocumentServiceFactoryCore.js +0 -118
  529. package/dist/odspDocumentServiceFactoryCore.js.map +0 -1
  530. package/dist/odspDocumentServiceFactoryWithCodeSplit.js +0 -34
  531. package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +0 -1
  532. package/dist/odspDocumentStorageManager.js +0 -356
  533. package/dist/odspDocumentStorageManager.js.map +0 -1
  534. package/dist/odspDocumentStorageServiceBase.js.map +0 -1
  535. package/dist/odspDriverUrlResolver.js.map +0 -1
  536. package/dist/odspDriverUrlResolverForShareLink.js.map +0 -1
  537. package/dist/odspError.js.map +0 -1
  538. package/dist/odspFluidFileLink.js.map +0 -1
  539. package/dist/odspPublicUtils.js.map +0 -1
  540. package/dist/odspSnapshotParser.js.map +0 -1
  541. package/dist/odspSummaryUploadManager.js.map +0 -1
  542. package/dist/odspUrlHelper.js.map +0 -1
  543. package/dist/odspUtils.js.map +0 -1
  544. package/dist/opsCaching.js.map +0 -1
  545. package/dist/packageVersion.js.map +0 -1
  546. package/dist/prefetchLatestSnapshot.js +0 -57
  547. package/dist/prefetchLatestSnapshot.js.map +0 -1
  548. package/dist/retryErrorsStorageAdapter.js.map +0 -1
  549. package/dist/retryUtils.js.map +0 -1
  550. package/dist/vroom.js.map +0 -1
  551. package/dist/zipItDataRepresentationUtils.js.map +0 -1
  552. package/lib/ReadBufferUtils.d.ts.map +0 -1
  553. package/lib/ReadBufferUtils.js.map +0 -1
  554. package/lib/WriteBufferUtils.d.ts.map +0 -1
  555. package/lib/WriteBufferUtils.js.map +0 -1
  556. package/lib/checkUrl.d.ts.map +0 -1
  557. package/lib/checkUrl.js.map +0 -1
  558. package/lib/compactSnapshotParser.d.ts +0 -15
  559. package/lib/compactSnapshotParser.d.ts.map +0 -1
  560. package/lib/compactSnapshotParser.js +0 -111
  561. package/lib/compactSnapshotParser.js.map +0 -1
  562. package/lib/compactSnapshotWriter.d.ts.map +0 -1
  563. package/lib/compactSnapshotWriter.js.map +0 -1
  564. package/lib/constants.d.ts.map +0 -1
  565. package/lib/constants.js.map +0 -1
  566. package/lib/contracts.d.ts.map +0 -1
  567. package/lib/contracts.js.map +0 -1
  568. package/lib/contractsPublic.d.ts.map +0 -1
  569. package/lib/contractsPublic.js.map +0 -1
  570. package/lib/createFile.d.ts +0 -22
  571. package/lib/createFile.d.ts.map +0 -1
  572. package/lib/createFile.js +0 -235
  573. package/lib/createFile.js.map +0 -1
  574. package/lib/createNewUtils.d.ts +0 -11
  575. package/lib/createNewUtils.d.ts.map +0 -1
  576. package/lib/createNewUtils.js +0 -63
  577. package/lib/createNewUtils.js.map +0 -1
  578. package/lib/createOdspCreateContainerRequest.d.ts.map +0 -1
  579. package/lib/createOdspCreateContainerRequest.js.map +0 -1
  580. package/lib/createOdspUrl.js.map +0 -1
  581. package/lib/epochTracker.d.ts.map +0 -1
  582. package/lib/epochTracker.js.map +0 -1
  583. package/lib/fetch.js.map +0 -1
  584. package/lib/fetchSnapshot.d.ts.map +0 -1
  585. package/lib/fetchSnapshot.js.map +0 -1
  586. package/lib/getFileLink.d.ts.map +0 -1
  587. package/lib/getFileLink.js.map +0 -1
  588. package/lib/getQueryString.d.ts.map +0 -1
  589. package/lib/getQueryString.js.map +0 -1
  590. package/lib/getSocketIo.d.ts +0 -11
  591. package/lib/getSocketIo.d.ts.map +0 -1
  592. package/lib/getSocketIo.js +0 -13
  593. package/lib/getSocketIo.js.map +0 -1
  594. package/lib/getUrlAndHeadersWithAuth.js.map +0 -1
  595. package/lib/index.d.ts +0 -21
  596. package/lib/index.d.ts.map +0 -1
  597. package/lib/index.js +0 -29
  598. package/lib/index.js.map +0 -1
  599. package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +0 -1
  600. package/lib/localOdspDriver/localOdspDocumentService.js.map +0 -1
  601. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +0 -1
  602. package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +0 -1
  603. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +0 -1
  604. package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +0 -1
  605. package/lib/odspCache.d.ts.map +0 -1
  606. package/lib/odspCache.js.map +0 -1
  607. package/lib/odspDeltaStorageService.d.ts.map +0 -1
  608. package/lib/odspDeltaStorageService.js.map +0 -1
  609. package/lib/odspDocumentDeltaConnection.d.ts.map +0 -1
  610. package/lib/odspDocumentDeltaConnection.js.map +0 -1
  611. package/lib/odspDocumentService.d.ts.map +0 -1
  612. package/lib/odspDocumentService.js +0 -360
  613. package/lib/odspDocumentService.js.map +0 -1
  614. package/lib/odspDocumentServiceFactory.d.ts.map +0 -1
  615. package/lib/odspDocumentServiceFactory.js.map +0 -1
  616. package/lib/odspDocumentServiceFactoryCore.d.ts.map +0 -1
  617. package/lib/odspDocumentServiceFactoryCore.js +0 -114
  618. package/lib/odspDocumentServiceFactoryCore.js.map +0 -1
  619. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +0 -1
  620. package/lib/odspDocumentServiceFactoryWithCodeSplit.js.map +0 -1
  621. package/lib/odspDocumentStorageManager.d.ts.map +0 -1
  622. package/lib/odspDocumentStorageManager.js +0 -352
  623. package/lib/odspDocumentStorageManager.js.map +0 -1
  624. package/lib/odspDocumentStorageServiceBase.d.ts.map +0 -1
  625. package/lib/odspDocumentStorageServiceBase.js.map +0 -1
  626. package/lib/odspDriverUrlResolver.d.ts.map +0 -1
  627. package/lib/odspDriverUrlResolver.js.map +0 -1
  628. package/lib/odspDriverUrlResolverForShareLink.d.ts.map +0 -1
  629. package/lib/odspDriverUrlResolverForShareLink.js.map +0 -1
  630. package/lib/odspError.d.ts.map +0 -1
  631. package/lib/odspError.js.map +0 -1
  632. package/lib/odspFluidFileLink.d.ts.map +0 -1
  633. package/lib/odspFluidFileLink.js.map +0 -1
  634. package/lib/odspPublicUtils.d.ts.map +0 -1
  635. package/lib/odspPublicUtils.js.map +0 -1
  636. package/lib/odspSnapshotParser.d.ts.map +0 -1
  637. package/lib/odspSnapshotParser.js.map +0 -1
  638. package/lib/odspSummaryUploadManager.d.ts.map +0 -1
  639. package/lib/odspSummaryUploadManager.js.map +0 -1
  640. package/lib/odspUrlHelper.d.ts.map +0 -1
  641. package/lib/odspUrlHelper.js.map +0 -1
  642. package/lib/odspUtils.d.ts.map +0 -1
  643. package/lib/odspUtils.js.map +0 -1
  644. package/lib/opsCaching.d.ts.map +0 -1
  645. package/lib/opsCaching.js.map +0 -1
  646. package/lib/packageVersion.js.map +0 -1
  647. package/lib/prefetchLatestSnapshot.d.ts.map +0 -1
  648. package/lib/prefetchLatestSnapshot.js +0 -53
  649. package/lib/prefetchLatestSnapshot.js.map +0 -1
  650. package/lib/retryErrorsStorageAdapter.d.ts.map +0 -1
  651. package/lib/retryErrorsStorageAdapter.js.map +0 -1
  652. package/lib/retryUtils.d.ts.map +0 -1
  653. package/lib/retryUtils.js.map +0 -1
  654. package/lib/vroom.d.ts.map +0 -1
  655. package/lib/vroom.js.map +0 -1
  656. package/lib/zipItDataRepresentationUtils.d.ts.map +0 -1
  657. package/lib/zipItDataRepresentationUtils.js.map +0 -1
  658. package/src/getSocketIo.ts +0 -14
  659. package/tsconfig.esnext.json +0 -7
  660. /package/lib/{ReadBufferUtils.d.ts → ReadBufferUtils.d.mts} +0 -0
  661. /package/lib/{getUrlAndHeadersWithAuth.d.ts → getUrlAndHeadersWithAuth.d.mts} +0 -0
@@ -2,23 +2,25 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { default as AbortController } from "abort-controller";
6
5
  import { v4 as uuid } from "uuid";
7
- import { assert, fromUtf8ToBase64, performance } from "@fluidframework/common-utils";
6
+ import { isFluidError, PerformanceEvent, wrapError, } from "@fluidframework/telemetry-utils";
7
+ import { fromUtf8ToBase64 } from "@fluid-internal/client-utils";
8
+ import { assert } from "@fluidframework/core-utils";
9
+ import { getW3CData } from "@fluidframework/driver-base";
8
10
  import { DriverErrorType } from "@fluidframework/driver-definitions";
9
- import { isFluidError, PerformanceEvent, wrapError } from "@fluidframework/telemetry-utils";
10
11
  import { OdspErrorType, } from "@fluidframework/odsp-driver-definitions";
11
- import { isRuntimeMessage, NonRetryableError } from "@fluidframework/driver-utils";
12
- import { persistedCacheValueVersion } from "./contracts";
13
- import { getQueryString } from "./getQueryString";
14
- import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth";
15
- import { fetchAndParseAsJSONHelper, fetchHelper, getWithRetryForTokenRefresh, getWithRetryForTokenRefreshRepeat, } from "./odspUtils";
16
- import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "./odspSnapshotParser";
17
- import { currentReadVersion, parseCompactSnapshotResponse } from "./compactSnapshotParser";
18
- import { ReadBuffer } from "./ReadBufferUtils";
19
- import { pkgVersion } from "./packageVersion";
12
+ import { isRuntimeMessage, NonRetryableError, } from "@fluidframework/driver-utils";
13
+ import { fetchIncorrectResponse, throwOdspNetworkError } from "@fluidframework/odsp-doclib-utils";
14
+ import { persistedCacheValueVersion, } from "./contracts.mjs";
15
+ import { getQueryString } from "./getQueryString.mjs";
16
+ import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.mjs";
17
+ import { fetchAndParseAsJSONHelper, fetchHelper, getWithRetryForTokenRefresh, getWithRetryForTokenRefreshRepeat, measure, measureP, } from "./odspUtils.mjs";
18
+ import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "./odspSnapshotParser.mjs";
19
+ import { currentReadVersion, parseCompactSnapshotResponse, } from "./compactSnapshotParser.mjs";
20
+ import { pkgVersion } from "./packageVersion.mjs";
20
21
  /**
21
22
  * Enum to support different types of snapshot formats.
23
+ * @alpha
22
24
  */
23
25
  export var SnapshotFormatSupportType;
24
26
  (function (SnapshotFormatSupportType) {
@@ -36,51 +38,62 @@ export var SnapshotFormatSupportType;
36
38
  * @param forceAccessTokenViaAuthorizationHeader - whether to force passing given token via authorization header
37
39
  * @returns A promise of the snapshot and the status code of the response
38
40
  */
39
- export async function fetchSnapshot(snapshotUrl, token, versionId, fetchFullSnapshot, forceAccessTokenViaAuthorizationHeader, logger, snapshotDownloader) {
41
+ export async function fetchSnapshot(snapshotUrl,
42
+ // eslint-disable-next-line @rushstack/no-new-null
43
+ token, versionId, fetchFullSnapshot, forceAccessTokenViaAuthorizationHeader, logger, snapshotDownloader) {
40
44
  const path = `/trees/${versionId}`;
41
45
  let queryParams = {};
42
46
  if (fetchFullSnapshot) {
43
- if (versionId !== "latest") {
44
- queryParams = { channels: 1, blobs: 2 };
45
- }
46
- else {
47
- queryParams = { deltas: 1, channels: 1, blobs: 2 };
48
- }
47
+ queryParams = versionId !== "latest" ? { blobs: 2 } : { deltas: 1, blobs: 2 };
49
48
  }
50
49
  const queryString = getQueryString(queryParams);
51
50
  const { url, headers } = getUrlAndHeadersWithAuth(`${snapshotUrl}${path}${queryString}`, token, forceAccessTokenViaAuthorizationHeader);
52
- const response = await PerformanceEvent.timedExecAsync(logger, {
51
+ const response = (await PerformanceEvent.timedExecAsync(logger, {
53
52
  eventName: "fetchSnapshot",
54
53
  headers: Object.keys(headers).length !== 0 ? true : undefined,
55
- }, async () => snapshotDownloader(url, { headers }));
54
+ }, async () => snapshotDownloader(url, { headers })));
56
55
  return convertOdspSnapshotToSnapshotTreeAndBlobs(response.content);
57
56
  }
58
57
  export async function fetchSnapshotWithRedeem(odspResolvedUrl, storageTokenFetcher, snapshotOptions, forceAccessTokenViaAuthorizationHeader, logger, snapshotDownloader, putInCache, removeEntries, enableRedeemFallback) {
59
58
  // back-compat: This block to be removed with #8784 when we only consume/consider odsp resolvers that are >= 0.51
60
59
  const sharingLinkToRedeem = odspResolvedUrl.sharingLinkToRedeem;
61
60
  if (sharingLinkToRedeem) {
62
- odspResolvedUrl.shareLinkInfo = Object.assign(Object.assign({}, odspResolvedUrl.shareLinkInfo), { sharingLinkToRedeem });
61
+ odspResolvedUrl.shareLinkInfo = { ...odspResolvedUrl.shareLinkInfo, sharingLinkToRedeem };
63
62
  }
64
- return fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache, enableRedeemFallback).catch(async (error) => {
63
+ return fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache, enableRedeemFallback)
64
+ .catch(async (error) => {
65
65
  if (enableRedeemFallback && isRedeemSharingLinkError(odspResolvedUrl, error)) {
66
66
  // Execute the redeem fallback
67
- logger.sendErrorEvent({
67
+ await redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, forceAccessTokenViaAuthorizationHeader);
68
+ const odspResolvedUrlWithoutShareLink = {
69
+ ...odspResolvedUrl,
70
+ shareLinkInfo: {
71
+ ...odspResolvedUrl.shareLinkInfo,
72
+ sharingLinkToRedeem: undefined,
73
+ },
74
+ };
75
+ // Log initial failure only if redeem succeeded - it points out to some bug somewhere
76
+ // If redeem failed, that most likely means user has no permissions to access a file,
77
+ // and thus it's not worth it logging extra errors - same error will be logged by end-to-end
78
+ // flow (container open) based on a failure above.
79
+ logger.sendTelemetryEvent({
68
80
  eventName: "RedeemFallback",
69
81
  errorType: error.errorType,
70
82
  }, error);
71
- await redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, forceAccessTokenViaAuthorizationHeader);
72
- const odspResolvedUrlWithoutShareLink = Object.assign(Object.assign({}, odspResolvedUrl), { shareLinkInfo: Object.assign(Object.assign({}, odspResolvedUrl.shareLinkInfo), { sharingLinkToRedeem: undefined }) });
73
83
  return fetchLatestSnapshotCore(odspResolvedUrlWithoutShareLink, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache);
74
84
  }
75
85
  else {
76
86
  throw error;
77
87
  }
78
- }).catch(async (error) => {
88
+ })
89
+ .catch(async (error) => {
79
90
  // Clear the cache on 401/403/404 on snapshot fetch from network because this means either the user doesn't
80
91
  // have permissions for the file or it was deleted. So, if we do not clear cache, we will continue fetching
81
92
  // snapshot from cache in the future.
82
- if (typeof error === "object" && error !== null && error.errorType === DriverErrorType.authorizationError
83
- || error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError) {
93
+ if ((typeof error === "object" &&
94
+ error !== null &&
95
+ error.errorType === DriverErrorType.authorizationError) ||
96
+ error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError) {
84
97
  await removeEntries();
85
98
  }
86
99
  throw error;
@@ -90,10 +103,9 @@ async function redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, f
90
103
  return PerformanceEvent.timedExecAsync(logger, {
91
104
  eventName: "RedeemShareLink",
92
105
  }, async () => getWithRetryForTokenRefresh(async (tokenFetchOptions) => {
93
- var _a, _b;
94
- assert(!!((_a = odspResolvedUrl.shareLinkInfo) === null || _a === void 0 ? void 0 : _a.sharingLinkToRedeem), 0x1ed /* "Share link should be present" */);
106
+ assert(!!odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem, 0x1ed /* "Share link should be present" */);
95
107
  const storageToken = await storageTokenFetcher(tokenFetchOptions, "RedeemShareLink");
96
- const encodedShareUrl = getEncodedShareUrl((_b = odspResolvedUrl.shareLinkInfo) === null || _b === void 0 ? void 0 : _b.sharingLinkToRedeem);
108
+ const encodedShareUrl = getEncodedShareUrl(odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem);
97
109
  const redeemUrl = `${odspResolvedUrl.siteUrl}/_api/v2.0/shares/${encodedShareUrl}`;
98
110
  const { url, headers } = getUrlAndHeadersWithAuth(redeemUrl, storageToken, forceAccessTokenViaAuthorizationHeader);
99
111
  headers.prefer = "redeemSharingLink";
@@ -102,18 +114,12 @@ async function redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, f
102
114
  }
103
115
  async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache, enableRedeemFallback) {
104
116
  return getWithRetryForTokenRefresh(async (tokenFetchOptions) => {
105
- var _a;
106
117
  const storageToken = await storageTokenFetcher(tokenFetchOptions, "TreesLatest", true);
107
118
  assert(storageToken !== null, 0x1e5 /* "Storage token should not be null" */);
108
- let controller;
109
- if ((snapshotOptions === null || snapshotOptions === void 0 ? void 0 : snapshotOptions.timeout) !== undefined) {
110
- controller = new AbortController();
111
- setTimeout(() => controller.abort(), snapshotOptions.timeout);
112
- }
113
119
  const perfEvent = {
114
120
  eventName: "TreesLatest",
115
121
  attempts: tokenFetchOptions.refresh ? 2 : 1,
116
- shareLinkPresent: ((_a = odspResolvedUrl.shareLinkInfo) === null || _a === void 0 ? void 0 : _a.sharingLinkToRedeem) !== undefined,
122
+ shareLinkPresent: odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem !== undefined,
117
123
  isSummarizer: odspResolvedUrl.summarizer,
118
124
  redeemFallbackEnabled: enableRedeemFallback,
119
125
  };
@@ -126,38 +132,87 @@ async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, sna
126
132
  }
127
133
  // This event measures only successful cases of getLatest call (no tokens, no retries).
128
134
  return PerformanceEvent.timedExecAsync(logger, perfEvent, async (event) => {
129
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
130
- const response = await snapshotDownloader(odspResolvedUrl, storageToken, snapshotOptions, controller);
135
+ let controller;
136
+ let fetchTimeout;
137
+ if (snapshotOptions?.timeout !== undefined) {
138
+ controller = new AbortController();
139
+ fetchTimeout = setTimeout(() => controller.abort(), snapshotOptions.timeout);
140
+ }
141
+ const [response, fetchTime] = await measureP(async () => snapshotDownloader(odspResolvedUrl, storageToken, snapshotOptions, controller)).finally(() => {
142
+ // Clear the fetchTimeout once the response is fetched.
143
+ if (fetchTimeout !== undefined) {
144
+ clearTimeout(fetchTimeout);
145
+ fetchTimeout = undefined;
146
+ }
147
+ });
131
148
  const odspResponse = response.odspResponse;
132
149
  const contentType = odspResponse.headers.get("content-type");
133
- // Measure how much time we spend processing payload
134
- const snapshotParseEvent = PerformanceEvent.start(logger, {
135
- eventName: "SnapshotParse",
136
- driverVersion: pkgVersion,
150
+ const propsToLog = {
151
+ ...odspResponse.propsToLog,
137
152
  contentType,
138
- });
139
- const propsToLog = Object.assign(Object.assign({}, odspResponse.propsToLog), { contentType, accept: response.requestHeaders.accept, driverVersion: pkgVersion });
153
+ accept: response.requestHeaders.accept,
154
+ driverVersion: pkgVersion,
155
+ };
140
156
  let parsedSnapshotContents;
157
+ let contentTypeToRead;
158
+ if (contentType?.includes("application/ms-fluid")) {
159
+ contentTypeToRead = "application/ms-fluid";
160
+ }
161
+ else if (contentType?.includes("application/json")) {
162
+ contentTypeToRead = "application/json";
163
+ }
164
+ let parseTime;
165
+ let receiveContentTime;
141
166
  try {
142
- switch (contentType) {
167
+ switch (contentTypeToRead) {
143
168
  case "application/json": {
144
- const text = await odspResponse.content.text();
169
+ let text;
170
+ [text, receiveContentTime] = await measureP(async () => odspResponse.content.text().catch((err) =>
171
+ // Parsing can fail and message could contain full request URI, including
172
+ // tokens, etc. So do not log error object itself.
173
+ throwOdspNetworkError("Error while parsing fetch response", fetchIncorrectResponse, odspResponse.content, // response
174
+ undefined, // response text
175
+ propsToLog)));
145
176
  propsToLog.bodySize = text.length;
146
- const content = JSON.parse(text);
177
+ let content;
178
+ [content, parseTime] = measure(() => JSON.parse(text));
147
179
  validateBlobsAndTrees(content);
148
180
  const snapshotContents = convertOdspSnapshotToSnapshotTreeAndBlobs(content);
149
- parsedSnapshotContents = Object.assign(Object.assign({}, odspResponse), { content: snapshotContents });
181
+ parsedSnapshotContents = {
182
+ ...odspResponse,
183
+ content: {
184
+ ...snapshotContents,
185
+ telemetryProps: {},
186
+ },
187
+ };
150
188
  break;
151
189
  }
152
190
  case "application/ms-fluid": {
153
- const content = await odspResponse.content.arrayBuffer();
191
+ let content;
192
+ [content, receiveContentTime] = await measureP(async () => odspResponse.content.arrayBuffer().catch((err) =>
193
+ // Parsing can fail and message could contain full request URI, including
194
+ // tokens, etc. So do not log error object itself.
195
+ throwOdspNetworkError("Error while parsing fetch response", fetchIncorrectResponse, odspResponse.content, // response
196
+ undefined, // response text
197
+ propsToLog)));
154
198
  propsToLog.bodySize = content.byteLength;
155
- const snapshotContents = parseCompactSnapshotResponse(new ReadBuffer(new Uint8Array(content)));
199
+ let snapshotContents;
200
+ [snapshotContents, parseTime] = measure(() => parseCompactSnapshotResponse(new Uint8Array(content), logger));
156
201
  if (snapshotContents.snapshotTree.trees === undefined ||
157
202
  snapshotContents.snapshotTree.blobs === undefined) {
158
203
  throw new NonRetryableError("Returned odsp snapshot is malformed. No trees or blobs!", DriverErrorType.incorrectServerResponse, propsToLog);
159
204
  }
160
- parsedSnapshotContents = Object.assign(Object.assign({}, odspResponse), { content: snapshotContents });
205
+ const props = snapshotContents.telemetryProps;
206
+ const slowTreeParseCodePaths = props.slowTreeStructureCount ?? 0;
207
+ const slowBlobParseCodePaths = props.slowBlobStructureCount ?? 0;
208
+ if (slowTreeParseCodePaths > 10 || slowBlobParseCodePaths > 10) {
209
+ logger.sendErrorEvent({
210
+ eventName: "SlowSnapshotParseCodePaths",
211
+ slowTreeStructureCount: slowTreeParseCodePaths,
212
+ slowBlobStructureCount: slowBlobParseCodePaths,
213
+ });
214
+ }
215
+ parsedSnapshotContents = { ...odspResponse, content: snapshotContents };
161
216
  break;
162
217
  }
163
218
  default:
@@ -175,72 +230,29 @@ async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, sna
175
230
  assert(parsedSnapshotContents !== undefined, 0x312 /* snapshot should be parsed */);
176
231
  const snapshot = parsedSnapshotContents.content;
177
232
  const { trees, numBlobs, encodedBlobsSize } = evalBlobsAndTrees(snapshot);
178
- // From: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming
179
- // fetchStart: immediately before the browser starts to fetch the resource.
180
- // requestStart: immediately before the browser starts requesting the resource from the server
181
- // responseStart: immediately after the browser receives the first byte of the response from the server.
182
- // responseEnd: immediately after the browser receives the last byte of the resource
183
- // or immediately before the transport connection is closed, whichever comes first.
184
- // secureConnectionStart: immediately before the browser starts the handshake process to secure the
185
- // current connection. If a secure connection is not used, this property returns zero.
186
- // startTime: Time when the resource fetch started. This value is equivalent to fetchStart.
187
- // domainLookupStart: immediately before the browser starts the domain name lookup for the resource.
188
- // domainLookupEnd: immediately after the browser finishes the domain name lookup for the resource.
189
- // redirectStart: start time of the fetch which that initiates the redirect.
190
- // redirectEnd: immediately after receiving the last byte of the response of the last redirect.
191
- let dnsLookupTime; // domainLookupEnd - domainLookupStart
192
- let redirectTime; // redirectEnd - redirectStart
193
- let tcpHandshakeTime; // connectEnd - connectStart
194
- let secureConnectionTime; // connectEnd - secureConnectionStart
195
- let responseNetworkTime; // responsEnd - responseStart
196
- let fetchStartToResponseEndTime; // responseEnd - fetchStart
197
- let reqStartToResponseEndTime; // responseEnd - requestStart
198
- let networkTime; // responseEnd - startTime
199
- const spReqDuration = odspResponse.headers.get("sprequestduration");
200
- // getEntriesByType is only available in browser performance object
201
- const resources1 = (_b = (_a = performance.getEntriesByType) === null || _a === void 0 ? void 0 : _a.call(performance, "resource")) !== null && _b !== void 0 ? _b : [];
202
- // Usually the latest fetch call is to the end of resources, so we start from the end.
203
- for (let i = resources1.length - 1; i > 0; i--) {
204
- const indResTime = resources1[i];
205
- const resource_name = indResTime.name;
206
- const resource_initiatortype = indResTime.initiatorType;
207
- if ((resource_initiatortype.localeCompare("fetch") === 0)
208
- && (resource_name.localeCompare(response.requestUrl) === 0)) {
209
- redirectTime = indResTime.redirectEnd - indResTime.redirectStart;
210
- dnsLookupTime = indResTime.domainLookupEnd - indResTime.domainLookupStart;
211
- tcpHandshakeTime = indResTime.connectEnd - indResTime.connectStart;
212
- secureConnectionTime = (indResTime.secureConnectionStart > 0) ?
213
- (indResTime.connectEnd - indResTime.secureConnectionStart) : undefined;
214
- responseNetworkTime = (indResTime.responseStart > 0) ?
215
- (indResTime.responseEnd - indResTime.responseStart) : undefined;
216
- fetchStartToResponseEndTime = (indResTime.fetchStart > 0) ?
217
- (indResTime.responseEnd - indResTime.fetchStart) : undefined;
218
- reqStartToResponseEndTime = (indResTime.requestStart > 0) ?
219
- (indResTime.responseEnd - indResTime.requestStart) : undefined;
220
- networkTime = (indResTime.startTime > 0) ?
221
- (indResTime.responseEnd - indResTime.fetchStart) : undefined;
222
- if (spReqDuration !== undefined && networkTime !== undefined) {
223
- networkTime = networkTime - parseInt(spReqDuration, 10);
224
- }
225
- break;
226
- }
227
- }
228
233
  // There are some scenarios in ODSP where we cannot cache, trees/latest will explicitly tell us when we
229
234
  // cannot cache using an HTTP response header.
230
235
  const canCache = odspResponse.headers.get("disablebrowsercachingofusercontent") !== "true";
231
- const sequenceNumber = (_c = snapshot.sequenceNumber) !== null && _c !== void 0 ? _c : 0;
232
- const seqNumberFromOps = snapshot.ops && snapshot.ops.length > 0 ?
233
- snapshot.ops[0].sequenceNumber - 1 :
234
- undefined;
235
- if (!Number.isInteger(sequenceNumber)
236
- || seqNumberFromOps !== undefined && seqNumberFromOps !== sequenceNumber) {
237
- logger.sendErrorEvent({ eventName: "fetchSnapshotError", sequenceNumber, seqNumberFromOps });
236
+ const sequenceNumber = snapshot.sequenceNumber ?? 0;
237
+ const seqNumberFromOps = snapshot.ops && snapshot.ops.length > 0
238
+ ? snapshot.ops[0].sequenceNumber - 1
239
+ : undefined;
240
+ if (!Number.isInteger(sequenceNumber) ||
241
+ (seqNumberFromOps !== undefined && seqNumberFromOps !== sequenceNumber)) {
242
+ logger.sendErrorEvent({
243
+ eventName: "fetchSnapshotError",
244
+ sequenceNumber,
245
+ seqNumberFromOps,
246
+ });
238
247
  snapshot.sequenceNumber = undefined;
239
248
  }
240
249
  else if (canCache) {
241
250
  const fluidEpoch = odspResponse.headers.get("x-fluid-epoch");
242
251
  assert(fluidEpoch !== undefined, 0x1e6 /* "Epoch should be present in response" */);
243
- const value = Object.assign(Object.assign({}, snapshot), { cacheEntryTime: Date.now() });
252
+ const value = {
253
+ ...snapshot,
254
+ cacheEntryTime: Date.now(),
255
+ };
244
256
  const valueWithEpoch = {
245
257
  value,
246
258
  fluidEpoch,
@@ -249,57 +261,59 @@ async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, sna
249
261
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
250
262
  putInCache(valueWithEpoch);
251
263
  }
252
- snapshotParseEvent.end();
253
- event.end(Object.assign({ trees, blobs: (_e = (_d = snapshot.blobs) === null || _d === void 0 ? void 0 : _d.size) !== null && _e !== void 0 ? _e : 0, leafNodes: numBlobs, encodedBlobsSize,
254
- sequenceNumber, ops: (_g = (_f = snapshot.ops) === null || _f === void 0 ? void 0 : _f.length) !== null && _g !== void 0 ? _g : 0, userOps: (_j = (_h = snapshot.ops) === null || _h === void 0 ? void 0 : _h.filter((op) => isRuntimeMessage(op)).length) !== null && _j !== void 0 ? _j : 0, headers: Object.keys(response.requestHeaders).length !== 0 ? true : undefined,
255
- // Interval between the first fetch until the last byte of the last redirect.
256
- redirectTime,
257
- // Interval between start and finish of the domain name lookup for the resource.
258
- dnsLookupTime,
259
- // Interval to receive all (first to last) bytes form the server.
260
- responseNetworkTime,
261
- // Time to establish the connection to the server to retrieve the resource.
262
- tcpHandshakeTime,
263
- // Time from the end of the connection until the inital handshake process to secure the connection.
264
- secureConnectionTime,
265
- // Interval between the initial fetch until the last byte is received.
266
- fetchStartToResponseEndTime,
267
- // Interval between starting the request for the resource until receiving the last byte.
268
- reqStartToResponseEndTime,
269
- // Interval between starting the request for the resource until receiving the last byte but
270
- // excluding the Snaphot request duration indicated on the snapshot response header.
271
- networkTime,
264
+ event.end({
265
+ trees,
266
+ blobs: snapshot.blobs?.size ?? 0,
267
+ leafNodes: numBlobs,
268
+ encodedBlobsSize,
269
+ sequenceNumber,
270
+ ops: snapshot.ops?.length ?? 0,
271
+ userOps: snapshot.ops?.filter((op) => isRuntimeMessage(op)).length ?? 0,
272
+ headers: Object.keys(response.requestHeaders).length !== 0 ? true : undefined,
273
+ // Measures time to make fetch call. Should be similar to
274
+ // fetchStartToResponseEndTime - receiveContentTime, i.e. it looks like it's time till first byte /
275
+ // end of response headers
276
+ fetchTime,
277
+ // time it takes client to parse payload. Same payload as in "SnapshotParse" event, here for
278
+ // easier analyzes.
279
+ parseTime,
280
+ // Time it takes to receive content (text of buffer) from Response object.
281
+ // This time likely is very closely correlated with networkTime, i.e. time it takes to receive
282
+ // actual content (starting measuring from first bite / end of response header)
283
+ receiveContentTime,
284
+ ...getW3CData(response.requestUrl, "fetch"),
272
285
  // Sharing link telemetry regarding sharing link redeem status and performance. Ex: FRL; dur=100,
273
286
  // Azure Fluid Relay service; desc=S, FRP; desc=False. Here, FRL is the duration taken for redeem,
274
287
  // Azure Fluid Relay service is the redeem status (S means success), and FRP is a flag to indicate
275
288
  // if the permission has changed.
276
- sltelemetry: odspResponse.headers.get("x-fluid-sltelemetry") }, propsToLog));
289
+ sltelemetry: odspResponse.headers.get("x-fluid-sltelemetry"),
290
+ // All other props
291
+ ...propsToLog,
292
+ // Various perf counters and measures collected by binary parsing code:
293
+ // slowTreeStructureCount, slowBlobStructureCount, durationStructure, durationStrings,
294
+ // durationSnapshotTree, durationBlobs, etc.
295
+ ...parsedSnapshotContents.content.telemetryProps,
296
+ });
277
297
  return snapshot;
278
298
  }).catch((error) => {
279
299
  // We hit these errors in stress tests, under load
280
300
  // It's useful to try one more time in such case.
281
- if (typeof error === "object" && error !== null && (error.errorType === DriverErrorType.fetchFailure ||
282
- error.errorType === OdspErrorType.fetchTimeout)) {
301
+ if (typeof error === "object" &&
302
+ error !== null &&
303
+ (error.errorType === DriverErrorType.fetchFailure ||
304
+ error.errorType === OdspErrorType.fetchTimeout)) {
283
305
  error[getWithRetryForTokenRefreshRepeat] = true;
284
306
  }
285
307
  throw error;
286
308
  });
287
309
  });
288
310
  }
289
- function getFormBodyAndHeaders(odspResolvedUrl, storageToken, snapshotOptions, headers) {
290
- var _a, _b;
311
+ function getFormBodyAndHeaders(odspResolvedUrl, storageToken, headers) {
291
312
  const formBoundary = uuid();
292
313
  const formParams = [];
293
314
  formParams.push(`--${formBoundary}`);
294
315
  formParams.push(`Authorization: Bearer ${storageToken}`);
295
316
  formParams.push(`X-HTTP-Method-Override: GET`);
296
- if (snapshotOptions !== undefined) {
297
- Object.entries(snapshotOptions).forEach(([key, value]) => {
298
- if (value !== undefined) {
299
- formParams.push(`${key}: ${value}`);
300
- }
301
- });
302
- }
303
317
  if (headers !== undefined) {
304
318
  Object.entries(headers).forEach(([key, value]) => {
305
319
  if (value !== undefined) {
@@ -307,8 +321,8 @@ function getFormBodyAndHeaders(odspResolvedUrl, storageToken, snapshotOptions, h
307
321
  }
308
322
  });
309
323
  }
310
- if ((_a = odspResolvedUrl.shareLinkInfo) === null || _a === void 0 ? void 0 : _a.sharingLinkToRedeem) {
311
- formParams.push(`sl: ${(_b = odspResolvedUrl.shareLinkInfo) === null || _b === void 0 ? void 0 : _b.sharingLinkToRedeem}`);
324
+ if (odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem) {
325
+ formParams.push(`sl: ${odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem}`);
312
326
  }
313
327
  formParams.push(`_post: 1`);
314
328
  formParams.push(`\r\n--${formBoundary}--`);
@@ -318,7 +332,7 @@ function getFormBodyAndHeaders(odspResolvedUrl, storageToken, snapshotOptions, h
318
332
  };
319
333
  return { body: postBody, headers: header };
320
334
  }
321
- function evalBlobsAndTrees(snapshot) {
335
+ export function evalBlobsAndTrees(snapshot) {
322
336
  const trees = countTreesInSnapshotTree(snapshot.snapshotTree);
323
337
  const numBlobs = snapshot.blobs.size;
324
338
  let encodedBlobsSize = 0;
@@ -351,38 +365,45 @@ function countTreesInSnapshotTree(snapshotTree) {
351
365
  * @returns fetched snapshot.
352
366
  */
353
367
  export async function downloadSnapshot(odspResolvedUrl, storageToken, logger, snapshotOptions, snapshotFormatFetchType, controller, epochTracker, scenarioName) {
354
- var _a;
355
368
  // back-compat: This block to be removed with #8784 when we only consume/consider odsp resolvers that are >= 0.51
356
369
  const sharingLinkToRedeem = odspResolvedUrl.sharingLinkToRedeem;
357
370
  if (sharingLinkToRedeem) {
358
- odspResolvedUrl.shareLinkInfo = Object.assign(Object.assign({}, odspResolvedUrl.shareLinkInfo), { sharingLinkToRedeem });
371
+ odspResolvedUrl.shareLinkInfo = { ...odspResolvedUrl.shareLinkInfo, sharingLinkToRedeem };
359
372
  }
360
373
  const snapshotUrl = odspResolvedUrl.endpoints.snapshotStorageUrl;
361
- const url = `${snapshotUrl}/trees/latest?ump=1`;
374
+ const queryParams = { ump: 1 };
375
+ if (snapshotOptions !== undefined) {
376
+ Object.entries(snapshotOptions).forEach(([key, value]) => {
377
+ // Exclude "timeout" from query string
378
+ if (value !== undefined && key !== "timeout") {
379
+ queryParams[key] = value;
380
+ }
381
+ });
382
+ }
383
+ const queryString = getQueryString(queryParams);
384
+ const url = `${snapshotUrl}/trees/latest${queryString}`;
362
385
  // The location of file can move on Spo in which case server returns 308(Permanent Redirect) error.
363
386
  // Adding below header will make VROOM API return 404 instead of 308 and browser can intercept it.
364
387
  // This error thrown by server will contain the new redirect location. Look at the 404 error parsing
365
388
  // for futher reference here: \packages\utils\odsp-doclib-utils\src\odspErrorUtils.ts
366
389
  const header = { prefer: "manualredirect" };
367
- const { body, headers } = getFormBodyAndHeaders(odspResolvedUrl, storageToken, snapshotOptions, header);
390
+ const { body, headers } = getFormBodyAndHeaders(odspResolvedUrl, storageToken, header);
368
391
  const fetchOptions = {
369
392
  body,
370
393
  headers,
371
- signal: controller === null || controller === void 0 ? void 0 : controller.signal,
394
+ signal: controller?.signal,
372
395
  method: "POST",
373
396
  };
374
397
  // Decide what snapshot format to fetch as per the feature gate.
375
398
  switch (snapshotFormatFetchType) {
376
- case SnapshotFormatSupportType.JsonAndBinary:
377
- headers.accept = `application/json, application/ms-fluid; v=${currentReadVersion}`;
378
- break;
379
399
  case SnapshotFormatSupportType.Binary:
380
400
  headers.accept = `application/ms-fluid; v=${currentReadVersion}`;
381
401
  break;
382
402
  default:
383
- headers.accept = "application/json";
403
+ // By default ask both versions and let the server decide the format.
404
+ headers.accept = `application/json, application/ms-fluid; v=${currentReadVersion}`;
384
405
  }
385
- const odspResponse = await ((_a = epochTracker === null || epochTracker === void 0 ? void 0 : epochTracker.fetch(url, fetchOptions, "treesLatest", true, scenarioName)) !== null && _a !== void 0 ? _a : fetchHelper(url, fetchOptions));
406
+ const odspResponse = await (epochTracker?.fetch(url, fetchOptions, "treesLatest", true, scenarioName) ?? fetchHelper(url, fetchOptions));
386
407
  return {
387
408
  odspResponse,
388
409
  requestHeaders: headers,
@@ -390,11 +411,11 @@ export async function downloadSnapshot(odspResolvedUrl, storageToken, logger, sn
390
411
  };
391
412
  }
392
413
  function isRedeemSharingLinkError(odspResolvedUrl, error) {
393
- var _a;
394
- if (((_a = odspResolvedUrl.shareLinkInfo) === null || _a === void 0 ? void 0 : _a.sharingLinkToRedeem) !== undefined
395
- && (typeof error === "object" && error !== null)
396
- && (error.errorType === DriverErrorType.authorizationError
397
- || error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError)) {
414
+ if (odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem !== undefined &&
415
+ typeof error === "object" &&
416
+ error !== null &&
417
+ (error.errorType === DriverErrorType.authorizationError ||
418
+ error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError)) {
398
419
  return true;
399
420
  }
400
421
  return false;
@@ -405,11 +426,8 @@ function getEncodedShareUrl(url) {
405
426
  * https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/shares_get
406
427
  */
407
428
  let encodedUrl = fromUtf8ToBase64(encodeURI(url));
408
- encodedUrl = encodedUrl
409
- .replace(/=+$/g, "")
410
- .replace(/\//g, "_")
411
- .replace(/\+/g, "-");
429
+ encodedUrl = encodedUrl.replace(/=+$/g, "").replace(/\//g, "_").replace(/\+/g, "-");
412
430
  encodedUrl = "u!".concat(encodedUrl);
413
431
  return encodedUrl;
414
432
  }
415
- //# sourceMappingURL=fetchSnapshot.js.map
433
+ //# sourceMappingURL=fetchSnapshot.mjs.map