@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
package/src/odspUtils.ts CHANGED
@@ -3,35 +3,43 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryProperties, ITelemetryBaseLogger, ITelemetryLogger } from "@fluidframework/common-definitions";
6
+ import { ITelemetryProperties, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
7
  import { IResolvedUrl, DriverErrorType } from "@fluidframework/driver-definitions";
8
8
  import {
9
- isOnline,
10
- OnlineStatus,
11
- RetryableError,
12
- NonRetryableError,
13
- NetworkErrorBasic,
9
+ isOnline,
10
+ OnlineStatus,
11
+ RetryableError,
12
+ NonRetryableError,
13
+ NetworkErrorBasic,
14
14
  } from "@fluidframework/driver-utils";
15
- import { assert, performance } from "@fluidframework/common-utils";
16
- import { ChildLogger, PerformanceEvent, wrapError } from "@fluidframework/telemetry-utils";
15
+ import { performance } from "@fluid-internal/client-utils";
16
+ import { assert } from "@fluidframework/core-utils";
17
17
  import {
18
- fetchIncorrectResponse,
19
- throwOdspNetworkError,
20
- getSPOAndGraphRequestIdsFromResponse,
18
+ ITelemetryLoggerExt,
19
+ PerformanceEvent,
20
+ TelemetryDataTag,
21
+ createChildLogger,
22
+ wrapError,
23
+ } from "@fluidframework/telemetry-utils";
24
+ import {
25
+ fetchIncorrectResponse,
26
+ throwOdspNetworkError,
27
+ getSPOAndGraphRequestIdsFromResponse,
21
28
  } from "@fluidframework/odsp-doclib-utils";
22
29
  import {
23
- IOdspResolvedUrl,
24
- TokenFetchOptions,
25
- OdspErrorType,
26
- tokenFromResponse,
27
- isTokenFromCache,
28
- OdspResourceTokenFetchOptions,
29
- ShareLinkTypes,
30
- TokenFetcher,
31
- ICacheEntry,
32
- snapshotKey,
33
- InstrumentedStorageTokenFetcher,
34
- IOdspUrlParts,
30
+ IOdspResolvedUrl,
31
+ TokenFetchOptions,
32
+ OdspErrorType,
33
+ tokenFromResponse,
34
+ isTokenFromCache,
35
+ OdspResourceTokenFetchOptions,
36
+ ShareLinkTypes,
37
+ ISharingLinkKind,
38
+ TokenFetcher,
39
+ ICacheEntry,
40
+ snapshotKey,
41
+ InstrumentedStorageTokenFetcher,
42
+ IOdspUrlParts,
35
43
  } from "@fluidframework/odsp-driver-definitions";
36
44
  import { fetch } from "./fetch";
37
45
  import { pkgVersion as driverVersion } from "./packageVersion";
@@ -42,24 +50,27 @@ export const getWithRetryForTokenRefreshRepeat = "getWithRetryForTokenRefreshRep
42
50
  /** Parse the given url and return the origin (host name) */
43
51
  export const getOrigin = (url: string) => new URL(url).origin;
44
52
 
53
+ /**
54
+ * @alpha
55
+ */
45
56
  export interface IOdspResponse<T> {
46
- content: T;
47
- headers: Map<string, string>;
48
- propsToLog: ITelemetryProperties;
49
- duration: number;
57
+ content: T;
58
+ headers: Map<string, string>;
59
+ propsToLog: ITelemetryProperties;
60
+ duration: number;
50
61
  }
51
62
 
52
63
  export interface TokenFetchOptionsEx extends TokenFetchOptions {
53
- /** previous error we hit in getWithRetryForTokenRefresh */
54
- previousError?: any;
64
+ /** previous error we hit in getWithRetryForTokenRefresh */
65
+ previousError?: any;
55
66
  }
56
67
 
57
68
  function headersToMap(headers: Headers) {
58
- const newHeaders = new Map<string, string>();
59
- for (const [key, value] of headers.entries()) {
60
- newHeaders.set(key, value);
61
- }
62
- return newHeaders;
69
+ const newHeaders = new Map<string, string>();
70
+ for (const [key, value] of headers.entries()) {
71
+ newHeaders.set(key, value);
72
+ }
73
+ return newHeaders;
63
74
  }
64
75
 
65
76
  /**
@@ -68,90 +79,118 @@ function headersToMap(headers: Headers) {
68
79
  * token on failure. Only specific cases get retry call with refresh = true, all other / unknown errors
69
80
  * simply propagate to caller
70
81
  */
71
- export async function getWithRetryForTokenRefresh<T>(get: (options: TokenFetchOptionsEx) => Promise<T>) {
72
- return get({ refresh: false }).catch(async (e) => {
73
- const options: TokenFetchOptionsEx = { refresh: true, previousError: e };
74
- switch (e.errorType) {
75
- // If the error is 401 or 403 refresh the token and try once more.
76
- case DriverErrorType.authorizationError:
77
- return get({ ...options, claims: e.claims, tenantId: e.tenantId });
78
-
79
- case DriverErrorType.incorrectServerResponse: // some error on the wire, retry once
80
- case OdspErrorType.fetchTokenError: // If the token was null, then retry once.
81
- return get(options);
82
-
83
- default:
84
- // Caller may determine that it wants one retry
85
- if (e[getWithRetryForTokenRefreshRepeat] === true) {
86
- return get(options);
87
- }
88
- throw e;
89
- }
90
- });
82
+ export async function getWithRetryForTokenRefresh<T>(
83
+ get: (options: TokenFetchOptionsEx) => Promise<T>,
84
+ ) {
85
+ return get({ refresh: false }).catch(async (e) => {
86
+ const options: TokenFetchOptionsEx = { refresh: true, previousError: e };
87
+ switch (e.errorType) {
88
+ // If the error is 401 or 403 refresh the token and try once more.
89
+ case DriverErrorType.authorizationError:
90
+ return get({ ...options, claims: e.claims, tenantId: e.tenantId });
91
+
92
+ case DriverErrorType.incorrectServerResponse: // some error on the wire, retry once
93
+ case OdspErrorType.fetchTokenError: // If the token was null, then retry once.
94
+ return get(options);
95
+
96
+ default:
97
+ // Caller may determine that it wants one retry
98
+ if (e[getWithRetryForTokenRefreshRepeat] === true) {
99
+ return get(options);
100
+ }
101
+ throw e;
102
+ }
103
+ });
91
104
  }
92
105
 
93
106
  export async function fetchHelper(
94
- requestInfo: RequestInfo,
95
- requestInit: RequestInit | undefined,
107
+ requestInfo: RequestInfo,
108
+ requestInit: RequestInit | undefined,
96
109
  ): Promise<IOdspResponse<Response>> {
97
- const start = performance.now();
98
-
99
- // Node-fetch and dom have conflicting typing, force them to work by casting for now
100
- return fetch(requestInfo, requestInit).then(async (fetchResponse) => {
101
- const response = fetchResponse as any as Response;
102
- // Let's assume we can retry.
103
- if (!response) {
104
- throw new NonRetryableError(
105
- // pre-0.58 error message: No response from fetch call
106
- "No response from ODSP fetch call",
107
- DriverErrorType.incorrectServerResponse,
108
- { driverVersion });
109
- }
110
- if (!response.ok || response.status < 200 || response.status >= 300) {
111
- throwOdspNetworkError(
112
- // pre-0.58 error message prefix: odspFetchError
113
- `ODSP fetch error [${response.status}]`, response.status, response, await response.text());
114
- }
115
-
116
- const headers = headersToMap(response.headers);
117
- return {
118
- content: response,
119
- headers,
120
- propsToLog: getSPOAndGraphRequestIdsFromResponse(headers),
121
- duration: performance.now() - start,
122
- };
123
- }, (error) => {
124
- const online = isOnline();
125
- const errorText = `${error}`;
126
-
127
- // This error is thrown by fetch() when AbortSignal is provided and it gets cancelled
128
- if (error.name === "AbortError") {
129
- throw new RetryableError(
130
- "Fetch Timeout (AbortError)", OdspErrorType.fetchTimeout, { driverVersion });
131
- }
132
- // TCP/IP timeout
133
- if (errorText.includes("ETIMEDOUT")) {
134
- throw new RetryableError(
135
- "Fetch Timeout (ETIMEDOUT)", OdspErrorType.fetchTimeout, { driverVersion });
136
- }
137
-
138
- //
139
- // WARNING: Do not log error object itself or any of its properties!
140
- // It could contain PII, like URI in message itself, or token in properties.
141
- // It is also non-serializable object due to circular references.
142
- //
143
- if (online === OnlineStatus.Offline) {
144
- throw new RetryableError(
145
- // pre-0.58 error message prefix: Offline
146
- `ODSP fetch failure (Offline): ${errorText}`, DriverErrorType.offlineError, { driverVersion });
147
- } else {
148
- // It is perhaps still possible that this is due to being offline, the error does not reveal enough
149
- // information to conclude. Could also be DNS errors, malformed fetch request, CSP violation, etc.
150
- throw new RetryableError(
151
- // pre-0.58 error message prefix: Fetch error
152
- `ODSP fetch failure: ${errorText}`, DriverErrorType.fetchFailure, { driverVersion });
153
- }
154
- });
110
+ const start = performance.now();
111
+
112
+ // Node-fetch and dom have conflicting typing, force them to work by casting for now
113
+ return fetch(requestInfo, requestInit).then(
114
+ async (fetchResponse) => {
115
+ const response = fetchResponse as any as Response;
116
+ // Let's assume we can retry.
117
+ if (!response) {
118
+ throw new NonRetryableError(
119
+ // pre-0.58 error message: No response from fetch call
120
+ "No response from ODSP fetch call",
121
+ DriverErrorType.incorrectServerResponse,
122
+ { driverVersion },
123
+ );
124
+ }
125
+ if (!response.ok || response.status < 200 || response.status >= 300) {
126
+ throwOdspNetworkError(
127
+ // pre-0.58 error message prefix: odspFetchError
128
+ `ODSP fetch error [${response.status}]`,
129
+ response.status,
130
+ response,
131
+ await response.text(),
132
+ );
133
+ }
134
+
135
+ const headers = headersToMap(response.headers);
136
+ return {
137
+ content: response,
138
+ headers,
139
+ propsToLog: getSPOAndGraphRequestIdsFromResponse(headers),
140
+ duration: performance.now() - start,
141
+ };
142
+ },
143
+ (error) => {
144
+ const online = isOnline();
145
+
146
+ // The error message may not be suitable to log for privacy reasons, so tag it as such
147
+ const taggedErrorMessage = {
148
+ value: `${error}`, // This uses toString for objects, which often results in `${error.name}: ${error.message}`
149
+ tag: TelemetryDataTag.UserData,
150
+ };
151
+ // After redacting URLs we believe the error message is safe to log
152
+ const urlRegex = /((http|https):\/\/(\S*))/i;
153
+ const redactedErrorText = taggedErrorMessage.value.replace(urlRegex, "REDACTED_URL");
154
+
155
+ // This error is thrown by fetch() when AbortSignal is provided and it gets cancelled
156
+ if (error.name === "AbortError") {
157
+ throw new RetryableError("Fetch Timeout (AbortError)", OdspErrorType.fetchTimeout, {
158
+ driverVersion,
159
+ });
160
+ }
161
+ // TCP/IP timeout
162
+ if (redactedErrorText.includes("ETIMEDOUT")) {
163
+ throw new RetryableError("Fetch Timeout (ETIMEDOUT)", OdspErrorType.fetchTimeout, {
164
+ driverVersion,
165
+ });
166
+ }
167
+
168
+ // eslint-disable-next-line unicorn/prefer-ternary
169
+ if (online === OnlineStatus.Offline) {
170
+ throw new RetryableError(
171
+ // pre-0.58 error message prefix: Offline
172
+ `ODSP fetch failure (Offline): ${redactedErrorText}`,
173
+ DriverErrorType.offlineError,
174
+ {
175
+ driverVersion,
176
+ rawErrorMessage: taggedErrorMessage,
177
+ },
178
+ );
179
+ } else {
180
+ // It is perhaps still possible that this is due to being offline, the error does not reveal enough
181
+ // information to conclude. Could also be DNS errors, malformed fetch request, CSP violation, etc.
182
+ throw new RetryableError(
183
+ // pre-0.58 error message prefix: Fetch error
184
+ `ODSP fetch failure: ${redactedErrorText}`,
185
+ DriverErrorType.fetchFailure,
186
+ {
187
+ driverVersion,
188
+ rawErrorMessage: taggedErrorMessage,
189
+ },
190
+ );
191
+ }
192
+ },
193
+ );
155
194
  }
156
195
 
157
196
  /**
@@ -160,19 +199,32 @@ export async function fetchHelper(
160
199
  * @param requestInit - fetch requestInit
161
200
  */
162
201
  export async function fetchArray(
163
- requestInfo: RequestInfo,
164
- requestInit: RequestInit | undefined,
202
+ requestInfo: RequestInfo,
203
+ requestInit: RequestInit | undefined,
165
204
  ): Promise<IOdspResponse<ArrayBuffer>> {
166
- const { content, headers, propsToLog, duration } = await fetchHelper(requestInfo, requestInit);
167
-
168
- const arrayBuffer = await content.arrayBuffer();
169
- propsToLog.bodySize = arrayBuffer.byteLength;
170
- return {
171
- headers,
172
- content: arrayBuffer,
173
- propsToLog,
174
- duration,
175
- };
205
+ const { content, headers, propsToLog, duration } = await fetchHelper(requestInfo, requestInit);
206
+ let arrayBuffer: ArrayBuffer;
207
+ try {
208
+ arrayBuffer = await content.arrayBuffer();
209
+ } catch (e) {
210
+ // Parsing can fail and message could contain full request URI, including
211
+ // tokens, etc. So do not log error object itself.
212
+ throwOdspNetworkError(
213
+ "Error while parsing fetch response",
214
+ fetchIncorrectResponse,
215
+ content, // response
216
+ undefined, // response text
217
+ propsToLog,
218
+ );
219
+ }
220
+
221
+ propsToLog.bodySize = arrayBuffer.byteLength;
222
+ return {
223
+ headers,
224
+ content: arrayBuffer,
225
+ propsToLog,
226
+ duration,
227
+ };
176
228
  }
177
229
 
178
230
  /**
@@ -181,159 +233,249 @@ export async function fetchArray(
181
233
  * @param requestInit - fetch requestInit
182
234
  */
183
235
  export async function fetchAndParseAsJSONHelper<T>(
184
- requestInfo: RequestInfo,
185
- requestInit: RequestInit | undefined,
236
+ requestInfo: RequestInfo,
237
+ requestInit: RequestInit | undefined,
186
238
  ): Promise<IOdspResponse<T>> {
187
- const { content, headers, propsToLog, duration } = await fetchHelper(requestInfo, requestInit);
188
- let text: string | undefined;
189
- try {
190
- text = await content.text();
191
- } catch (e) {
192
- // JSON.parse() can fail and message would container full request URI, including
193
- // tokens... It fails for me with "Unexpected end of JSON input" quite often - an attempt to download big file
194
- // (many ops) almost always ends up with this error - I'd guess 1% of op request end up here... It always
195
- // succeeds on retry.
196
- // So do not log error object itself.
197
- throwOdspNetworkError(
198
- // pre-0.58 error message: errorWhileParsingFetchResponse
199
- "Error while parsing fetch response",
200
- fetchIncorrectResponse,
201
- content, // response
202
- text,
203
- );
204
- }
205
-
206
- propsToLog.bodySize = text.length;
207
- const res = {
208
- headers,
209
- content: JSON.parse(text),
210
- propsToLog,
211
- duration,
212
- };
213
- return res;
239
+ const { content, headers, propsToLog, duration } = await fetchHelper(requestInfo, requestInit);
240
+ let text: string | undefined;
241
+ try {
242
+ text = await content.text();
243
+ } catch (e) {
244
+ // JSON.parse() can fail and message would container full request URI, including
245
+ // tokens... It fails for me with "Unexpected end of JSON input" quite often - an attempt to download big file
246
+ // (many ops) almost always ends up with this error - I'd guess 1% of op request end up here... It always
247
+ // succeeds on retry.
248
+ // So do not log error object itself.
249
+ throwOdspNetworkError(
250
+ // pre-0.58 error message: errorWhileParsingFetchResponse
251
+ "Error while parsing fetch response",
252
+ fetchIncorrectResponse,
253
+ content, // response
254
+ text,
255
+ propsToLog,
256
+ );
257
+ }
258
+
259
+ propsToLog.bodySize = text.length;
260
+ const res = {
261
+ headers,
262
+ content: JSON.parse(text),
263
+ propsToLog,
264
+ duration,
265
+ };
266
+ return res;
267
+ }
268
+
269
+ export interface IFileInfoBase {
270
+ type: "New" | "Existing";
271
+ siteUrl: string;
272
+ driveId: string;
273
+ }
274
+
275
+ export interface INewFileInfo extends IFileInfoBase {
276
+ type: "New";
277
+ filename: string;
278
+ filePath: string;
279
+ /**
280
+ * application can request creation of a share link along with the creation of a new file
281
+ * by passing in an optional param to specify the kind of sharing link
282
+ * (at the time of adding this comment Sept/2021), odsp only supports csl
283
+ * ShareLinkTypes will deprecated in future. Use ISharingLinkKind instead which specifies both
284
+ * share link type and the role type.
285
+ */
286
+ createLinkType?: ShareLinkTypes | ISharingLinkKind;
214
287
  }
215
288
 
216
- export interface INewFileInfo {
217
- siteUrl: string;
218
- driveId: string;
219
- filename: string;
220
- filePath: string;
221
- /**
222
- * application can request creation of a share link along with the creation of a new file
223
- * by passing in an optional param to specify the kind of sharing link
224
- * (at the time of adding this comment Sept/2021), odsp only supports csl
225
- */
226
- createLinkType?: ShareLinkTypes;
289
+ export interface IExistingFileInfo extends IFileInfoBase {
290
+ type: "Existing";
291
+ itemId: string;
292
+ }
293
+
294
+ export function isNewFileInfo(
295
+ fileInfo: INewFileInfo | IExistingFileInfo,
296
+ ): fileInfo is INewFileInfo {
297
+ return fileInfo.type === undefined || fileInfo.type === "New";
227
298
  }
228
299
 
229
300
  export function getOdspResolvedUrl(resolvedUrl: IResolvedUrl): IOdspResolvedUrl {
230
- assert((resolvedUrl as IOdspResolvedUrl).odspResolvedUrl === true, 0x1de /* "Not an ODSP resolved url" */);
231
- return resolvedUrl as IOdspResolvedUrl;
301
+ assert(
302
+ (resolvedUrl as IOdspResolvedUrl).odspResolvedUrl === true,
303
+ 0x1de /* "Not an ODSP resolved url" */,
304
+ );
305
+ return resolvedUrl as IOdspResolvedUrl;
306
+ }
307
+
308
+ /**
309
+ * @internal
310
+ */
311
+ export function isOdspResolvedUrl(resolvedUrl: IResolvedUrl): resolvedUrl is IOdspResolvedUrl {
312
+ return "odspResolvedUrl" in resolvedUrl && resolvedUrl.odspResolvedUrl === true;
232
313
  }
233
314
 
234
315
  export const createOdspLogger = (logger?: ITelemetryBaseLogger) =>
235
- ChildLogger.create(
236
- logger,
237
- "OdspDriver",
238
- {
239
- all:
240
- {
241
- driverVersion,
242
- },
243
- });
316
+ createChildLogger({
317
+ logger,
318
+ namespace: "OdspDriver",
319
+ properties: {
320
+ all: {
321
+ driverVersion,
322
+ },
323
+ },
324
+ });
244
325
 
245
326
  export function evalBlobsAndTrees(snapshot: IOdspSnapshot) {
246
- let numTrees = 0;
247
- let numBlobs = 0;
248
- let encodedBlobsSize = 0;
249
- let decodedBlobsSize = 0;
250
- for (const tree of snapshot.trees) {
251
- for (const treeEntry of tree.entries) {
252
- if (treeEntry.type === "blob") {
253
- numBlobs++;
254
- } else if (treeEntry.type === "tree") {
255
- numTrees++;
256
- }
257
- }
258
- }
259
- if (snapshot.blobs !== undefined) {
260
- for (const blob of snapshot.blobs) {
261
- decodedBlobsSize += blob.size;
262
- encodedBlobsSize += blob.content.length;
263
- }
264
- }
265
- return { numTrees, numBlobs, encodedBlobsSize, decodedBlobsSize };
327
+ let numTrees = 0;
328
+ let numBlobs = 0;
329
+ let encodedBlobsSize = 0;
330
+ let decodedBlobsSize = 0;
331
+ for (const tree of snapshot.trees) {
332
+ for (const treeEntry of tree.entries) {
333
+ if (treeEntry.type === "blob") {
334
+ numBlobs++;
335
+ } else if (treeEntry.type === "tree") {
336
+ numTrees++;
337
+ }
338
+ }
339
+ }
340
+ if (snapshot.blobs !== undefined) {
341
+ for (const blob of snapshot.blobs) {
342
+ decodedBlobsSize += blob.size;
343
+ encodedBlobsSize += blob.content.length;
344
+ }
345
+ }
346
+ return { numTrees, numBlobs, encodedBlobsSize, decodedBlobsSize };
266
347
  }
267
348
 
268
349
  export function toInstrumentedOdspTokenFetcher(
269
- logger: ITelemetryLogger,
270
- resolvedUrlParts: IOdspUrlParts,
271
- tokenFetcher: TokenFetcher<OdspResourceTokenFetchOptions>,
272
- throwOnNullToken: boolean,
350
+ logger: ITelemetryLoggerExt,
351
+ resolvedUrlParts: IOdspUrlParts,
352
+ tokenFetcher: TokenFetcher<OdspResourceTokenFetchOptions>,
353
+ throwOnNullToken: boolean,
273
354
  ): InstrumentedStorageTokenFetcher {
274
- return async (options: TokenFetchOptions, name: string, alwaysRecordTokenFetchTelemetry: boolean = false) => {
275
- // Telemetry note: if options.refresh is true, there is a potential perf issue:
276
- // Host should optimize and provide non-expired tokens on all critical paths.
277
- // Exceptions: race conditions around expiration, revoked tokens, host that does not care
278
- // (fluid-fetcher)
279
- return PerformanceEvent.timedExecAsync(
280
- logger,
281
- {
282
- eventName: `${name}_GetToken`,
283
- attempts: options.refresh ? 2 : 1,
284
- hasClaims: !!options.claims,
285
- hasTenantId: !!options.tenantId,
286
- },
287
- async (event) => tokenFetcher({
288
- ...options,
289
- ...resolvedUrlParts,
290
- }).then((tokenResponse) => {
291
- const token = tokenFromResponse(tokenResponse);
292
- // This event alone generates so many events that is materially impacts cost of telemetry
293
- // Thus do not report end event when it comes back quickly.
294
- // Note that most of the hosts do not report if result is comming from cache or not,
295
- // so we can't rely on that here. But always record if specified explicitly for cases such as
296
- // calling trees/latest during load.
297
- if (alwaysRecordTokenFetchTelemetry || event.duration >= 32) {
298
- event.end({ fromCache: isTokenFromCache(tokenResponse), isNull: token === null });
299
- }
300
- if (token === null && throwOnNullToken) {
301
- throw new NonRetryableError(
302
- // pre-0.58 error message: Token is null for ${name} call
303
- `The Host-provided token fetcher returned null`,
304
- OdspErrorType.fetchTokenError,
305
- { method: name, driverVersion });
306
- }
307
- return token;
308
- }, (error) => {
309
- // There is an important but unofficial contract here where token providers can set canRetry: true
310
- // to hook into the driver's retry logic (e.g. the retry loop when initiating a connection)
311
- const rawCanRetry = error?.canRetry;
312
- const tokenError = wrapError(
313
- error,
314
- (errorMessage) => new NetworkErrorBasic(
315
- `The Host-provided token fetcher threw an error: ${errorMessage}`,
316
- OdspErrorType.fetchTokenError,
317
- typeof rawCanRetry === "boolean" ? rawCanRetry : false /* canRetry */,
318
- { method: name, driverVersion }));
319
- throw tokenError;
320
- }),
321
- { cancel: "generic" });
322
- };
355
+ return async (
356
+ options: TokenFetchOptions,
357
+ name: string,
358
+ alwaysRecordTokenFetchTelemetry: boolean = false,
359
+ ) => {
360
+ // Telemetry note: if options.refresh is true, there is a potential perf issue:
361
+ // Host should optimize and provide non-expired tokens on all critical paths.
362
+ // Exceptions: race conditions around expiration, revoked tokens, host that does not care
363
+ // (fluid-fetcher)
364
+ return PerformanceEvent.timedExecAsync(
365
+ logger,
366
+ {
367
+ eventName: `${name}_GetToken`,
368
+ attempts: options.refresh ? 2 : 1,
369
+ hasClaims: !!options.claims,
370
+ hasTenantId: !!options.tenantId,
371
+ },
372
+ async (event) =>
373
+ tokenFetcher({
374
+ ...options,
375
+ ...resolvedUrlParts,
376
+ }).then(
377
+ (tokenResponse) => {
378
+ const token = tokenFromResponse(tokenResponse);
379
+ // This event alone generates so many events that is materially impacts cost of telemetry
380
+ // Thus do not report end event when it comes back quickly.
381
+ // Note that most of the hosts do not report if result is comming from cache or not,
382
+ // so we can't rely on that here. But always record if specified explicitly for cases such as
383
+ // calling trees/latest during load.
384
+ if (alwaysRecordTokenFetchTelemetry || event.duration >= 32) {
385
+ event.end({
386
+ fromCache: isTokenFromCache(tokenResponse),
387
+ isNull: token === null,
388
+ });
389
+ }
390
+ if (token === null && throwOnNullToken) {
391
+ throw new NonRetryableError(
392
+ // pre-0.58 error message: Token is null for ${name} call
393
+ `The Host-provided token fetcher returned null`,
394
+ OdspErrorType.fetchTokenError,
395
+ { method: name, driverVersion },
396
+ );
397
+ }
398
+ return token;
399
+ },
400
+ (error) => {
401
+ // There is an important but unofficial contract here where token providers can set canRetry: true
402
+ // to hook into the driver's retry logic (e.g. the retry loop when initiating a connection)
403
+ const rawCanRetry = error?.canRetry;
404
+ const tokenError = wrapError(
405
+ error,
406
+ (errorMessage) =>
407
+ new NetworkErrorBasic(
408
+ `The Host-provided token fetcher threw an error`,
409
+ OdspErrorType.fetchTokenError,
410
+ typeof rawCanRetry === "boolean"
411
+ ? rawCanRetry
412
+ : false /* canRetry */,
413
+ { method: name, errorMessage, driverVersion },
414
+ ),
415
+ );
416
+ throw tokenError;
417
+ },
418
+ ),
419
+ { cancel: "generic" },
420
+ );
421
+ };
323
422
  }
324
423
 
325
424
  export function createCacheSnapshotKey(odspResolvedUrl: IOdspResolvedUrl): ICacheEntry {
326
- const cacheEntry: ICacheEntry = {
327
- type: snapshotKey,
328
- key: "",
329
- file: {
330
- resolvedUrl: odspResolvedUrl,
331
- docId: odspResolvedUrl.hashedDocumentId,
332
- },
333
- };
334
- return cacheEntry;
425
+ const cacheEntry: ICacheEntry = {
426
+ type: snapshotKey,
427
+ key: odspResolvedUrl.fileVersion ?? "",
428
+ file: {
429
+ resolvedUrl: odspResolvedUrl,
430
+ docId: odspResolvedUrl.hashedDocumentId,
431
+ },
432
+ };
433
+ return cacheEntry;
335
434
  }
336
435
 
337
436
  // 80KB is the max body size that we can put in ump post body for server to be able to accept it.
338
437
  // Keeping it 78KB to be a little cautious. As per the telemetry 99p is less than 78KB.
339
438
  export const maxUmpPostBodySize = 79872;
439
+
440
+ /**
441
+ * Build request parameters to request for the creation of a sharing link along with the creation of the file
442
+ * through the /snapshot api call.
443
+ * @param shareLinkType - Kind of sharing link requested
444
+ * @returns A string of request parameters that can be concatenated with the base URI
445
+ */
446
+ export function buildOdspShareLinkReqParams(
447
+ shareLinkType: ShareLinkTypes | ISharingLinkKind | undefined,
448
+ ) {
449
+ if (!shareLinkType) {
450
+ return;
451
+ }
452
+ const scope = (shareLinkType as ISharingLinkKind).scope;
453
+ if (!scope) {
454
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
455
+ return `createLinkType=${shareLinkType}`;
456
+ }
457
+ let shareLinkRequestParams = `createLinkScope=${scope}`;
458
+ const role = (shareLinkType as ISharingLinkKind).role;
459
+ shareLinkRequestParams = role
460
+ ? `${shareLinkRequestParams}&createLinkRole=${role}`
461
+ : shareLinkRequestParams;
462
+ return shareLinkRequestParams;
463
+ }
464
+
465
+ export function measure<T>(callback: () => T): [T, number] {
466
+ const start = performance.now();
467
+ const result = callback();
468
+ const time = performance.now() - start;
469
+ return [result, time];
470
+ }
471
+
472
+ export async function measureP<T>(callback: () => Promise<T>): Promise<[T, number]> {
473
+ const start = performance.now();
474
+ const result = await callback();
475
+ const time = performance.now() - start;
476
+ return [result, time];
477
+ }
478
+
479
+ export function getJoinSessionCacheKey(odspResolvedUrl: IOdspResolvedUrl) {
480
+ return `${odspResolvedUrl.hashedDocumentId}/joinsession`;
481
+ }