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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/.eslintrc.cjs +33 -0
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +44 -0
  4. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  5. package/api-extractor-lint.json +1 -1
  6. package/api-extractor.json +1 -1
  7. package/api-report/odsp-driver.api.md +16 -17
  8. package/dist/ReadBufferUtils.d.ts.map +1 -1
  9. package/dist/ReadBufferUtils.js.map +1 -1
  10. package/dist/WriteBufferUtils.d.ts +1 -1
  11. package/dist/WriteBufferUtils.d.ts.map +1 -1
  12. package/dist/WriteBufferUtils.js +12 -12
  13. package/dist/WriteBufferUtils.js.map +1 -1
  14. package/dist/checkUrl.d.ts.map +1 -1
  15. package/dist/checkUrl.js +5 -3
  16. package/dist/checkUrl.js.map +1 -1
  17. package/dist/compactSnapshotParser.d.ts +2 -2
  18. package/dist/compactSnapshotParser.d.ts.map +1 -1
  19. package/dist/compactSnapshotParser.js +94 -75
  20. package/dist/compactSnapshotParser.js.map +1 -1
  21. package/dist/compactSnapshotWriter.d.ts +2 -2
  22. package/dist/compactSnapshotWriter.d.ts.map +1 -1
  23. package/dist/compactSnapshotWriter.js +26 -20
  24. package/dist/compactSnapshotWriter.js.map +1 -1
  25. package/dist/contracts.d.ts +24 -4
  26. package/dist/contracts.d.ts.map +1 -1
  27. package/dist/contracts.js +5 -1
  28. package/dist/contracts.js.map +1 -1
  29. package/dist/createFile.d.ts +4 -4
  30. package/dist/createFile.d.ts.map +1 -1
  31. package/dist/createFile.js +36 -52
  32. package/dist/createFile.js.map +1 -1
  33. package/dist/createNewContainerOnExistingFile.d.ts +2 -2
  34. package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
  35. package/dist/createNewContainerOnExistingFile.js +14 -14
  36. package/dist/createNewContainerOnExistingFile.js.map +1 -1
  37. package/dist/createNewModule.d.ts +2 -2
  38. package/dist/createNewModule.d.ts.map +1 -1
  39. package/dist/createNewModule.js +4 -4
  40. package/dist/createNewModule.js.map +1 -1
  41. package/dist/createNewUtils.d.ts +4 -4
  42. package/dist/createNewUtils.d.ts.map +1 -1
  43. package/dist/createNewUtils.js +16 -11
  44. package/dist/createNewUtils.js.map +1 -1
  45. package/dist/createOdspCreateContainerRequest.d.ts +2 -2
  46. package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
  47. package/dist/createOdspCreateContainerRequest.js +2 -2
  48. package/dist/createOdspCreateContainerRequest.js.map +1 -1
  49. package/dist/createOdspUrl.d.ts +1 -1
  50. package/dist/createOdspUrl.d.ts.map +1 -1
  51. package/dist/createOdspUrl.js.map +1 -1
  52. package/dist/epochTracker.d.ts +10 -9
  53. package/dist/epochTracker.d.ts.map +1 -1
  54. package/dist/epochTracker.js +67 -45
  55. package/dist/epochTracker.js.map +1 -1
  56. package/dist/fetchSnapshot.d.ts +14 -11
  57. package/dist/fetchSnapshot.d.ts.map +1 -1
  58. package/dist/fetchSnapshot.js +91 -71
  59. package/dist/fetchSnapshot.js.map +1 -1
  60. package/dist/getFileLink.d.ts.map +1 -1
  61. package/dist/getFileLink.js +25 -18
  62. package/dist/getFileLink.js.map +1 -1
  63. package/dist/getQueryString.d.ts.map +1 -1
  64. package/dist/getQueryString.js +2 -0
  65. package/dist/getQueryString.js.map +1 -1
  66. package/dist/index.d.ts +19 -19
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +44 -44
  69. package/dist/index.js.map +1 -1
  70. package/dist/localOdspDriver/localOdspDocumentService.d.ts +4 -3
  71. package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
  72. package/dist/localOdspDriver/localOdspDocumentService.js +8 -6
  73. package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -1
  74. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts +8 -6
  75. package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -1
  76. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js +10 -9
  77. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -1
  78. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +3 -2
  79. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
  80. package/dist/localOdspDriver/localOdspDocumentStorageManager.js +9 -6
  81. package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
  82. package/dist/odsp-driver-alpha.d.ts +31 -15
  83. package/dist/odsp-driver-beta.d.ts +4 -5
  84. package/dist/odsp-driver-public.d.ts +4 -5
  85. package/dist/odsp-driver-untrimmed.d.ts +34 -16
  86. package/dist/odspCache.d.ts +5 -5
  87. package/dist/odspCache.d.ts.map +1 -1
  88. package/dist/odspCache.js +1 -2
  89. package/dist/odspCache.js.map +1 -1
  90. package/dist/odspDelayLoadedDeltaStream.d.ts +12 -6
  91. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  92. package/dist/odspDelayLoadedDeltaStream.js +89 -25
  93. package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
  94. package/dist/odspDeltaStorageService.d.ts +7 -7
  95. package/dist/odspDeltaStorageService.d.ts.map +1 -1
  96. package/dist/odspDeltaStorageService.js +5 -5
  97. package/dist/odspDeltaStorageService.js.map +1 -1
  98. package/dist/odspDocumentDeltaConnection.d.ts +1 -1
  99. package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
  100. package/dist/odspDocumentDeltaConnection.js +41 -23
  101. package/dist/odspDocumentDeltaConnection.js.map +1 -1
  102. package/dist/odspDocumentService.d.ts +9 -6
  103. package/dist/odspDocumentService.d.ts.map +1 -1
  104. package/dist/odspDocumentService.js +25 -19
  105. package/dist/odspDocumentService.js.map +1 -1
  106. package/dist/odspDocumentServiceFactory.d.ts +6 -1
  107. package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
  108. package/dist/odspDocumentServiceFactory.js +9 -4
  109. package/dist/odspDocumentServiceFactory.js.map +1 -1
  110. package/dist/odspDocumentServiceFactoryCore.d.ts +4 -4
  111. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  112. package/dist/odspDocumentServiceFactoryCore.js +27 -30
  113. package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
  114. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts +1 -1
  115. package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -1
  116. package/dist/odspDocumentServiceFactoryWithCodeSplit.js +2 -2
  117. package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -1
  118. package/dist/odspDocumentStorageManager.d.ts +17 -10
  119. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  120. package/dist/odspDocumentStorageManager.js +226 -169
  121. package/dist/odspDocumentStorageManager.js.map +1 -1
  122. package/dist/odspDocumentStorageServiceBase.d.ts +4 -6
  123. package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
  124. package/dist/odspDocumentStorageServiceBase.js +34 -31
  125. package/dist/odspDocumentStorageServiceBase.js.map +1 -1
  126. package/dist/odspDriverUrlResolver.d.ts +1 -1
  127. package/dist/odspDriverUrlResolver.d.ts.map +1 -1
  128. package/dist/odspDriverUrlResolver.js +26 -32
  129. package/dist/odspDriverUrlResolver.js.map +1 -1
  130. package/dist/odspDriverUrlResolverForShareLink.d.ts +13 -6
  131. package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  132. package/dist/odspDriverUrlResolverForShareLink.js +47 -37
  133. package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
  134. package/dist/odspError.d.ts +1 -1
  135. package/dist/odspError.d.ts.map +1 -1
  136. package/dist/odspError.js +6 -6
  137. package/dist/odspError.js.map +1 -1
  138. package/dist/odspFluidFileLink.d.ts +1 -1
  139. package/dist/odspFluidFileLink.d.ts.map +1 -1
  140. package/dist/odspFluidFileLink.js +2 -2
  141. package/dist/odspFluidFileLink.js.map +1 -1
  142. package/dist/odspLocationRedirection.js +2 -2
  143. package/dist/odspLocationRedirection.js.map +1 -1
  144. package/dist/odspPublicUtils.d.ts +4 -0
  145. package/dist/odspPublicUtils.d.ts.map +1 -1
  146. package/dist/odspPublicUtils.js +3 -0
  147. package/dist/odspPublicUtils.js.map +1 -1
  148. package/dist/odspSnapshotParser.d.ts +3 -3
  149. package/dist/odspSnapshotParser.d.ts.map +1 -1
  150. package/dist/odspSnapshotParser.js +5 -3
  151. package/dist/odspSnapshotParser.js.map +1 -1
  152. package/dist/odspSummaryUploadManager.d.ts +1 -1
  153. package/dist/odspSummaryUploadManager.d.ts.map +1 -1
  154. package/dist/odspSummaryUploadManager.js +9 -6
  155. package/dist/odspSummaryUploadManager.js.map +1 -1
  156. package/dist/odspUrlHelper.d.ts.map +1 -1
  157. package/dist/odspUrlHelper.js +1 -2
  158. package/dist/odspUrlHelper.js.map +1 -1
  159. package/dist/odspUtils.d.ts +29 -13
  160. package/dist/odspUtils.d.ts.map +1 -1
  161. package/dist/odspUtils.js +75 -41
  162. package/dist/odspUtils.js.map +1 -1
  163. package/dist/opsCaching.d.ts +1 -1
  164. package/dist/opsCaching.d.ts.map +1 -1
  165. package/dist/opsCaching.js +2 -1
  166. package/dist/opsCaching.js.map +1 -1
  167. package/dist/package.json +3 -0
  168. package/dist/packageVersion.d.ts +1 -1
  169. package/dist/packageVersion.js +1 -1
  170. package/dist/packageVersion.js.map +1 -1
  171. package/dist/prefetchLatestSnapshot.d.ts +2 -2
  172. package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
  173. package/dist/prefetchLatestSnapshot.js +17 -12
  174. package/dist/prefetchLatestSnapshot.js.map +1 -1
  175. package/dist/retryErrorsStorageAdapter.d.ts +2 -2
  176. package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
  177. package/dist/retryErrorsStorageAdapter.js +10 -5
  178. package/dist/retryErrorsStorageAdapter.js.map +1 -1
  179. package/dist/retryUtils.d.ts.map +1 -1
  180. package/dist/retryUtils.js +7 -3
  181. package/dist/retryUtils.js.map +1 -1
  182. package/dist/socketModule.d.ts.map +1 -1
  183. package/dist/socketModule.js +2 -0
  184. package/dist/socketModule.js.map +1 -1
  185. package/dist/tsdoc-metadata.json +1 -1
  186. package/dist/vroom.d.ts +2 -2
  187. package/dist/vroom.d.ts.map +1 -1
  188. package/dist/vroom.js +5 -5
  189. package/dist/vroom.js.map +1 -1
  190. package/dist/zipItDataRepresentationUtils.d.ts +1 -1
  191. package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
  192. package/dist/zipItDataRepresentationUtils.js +17 -13
  193. package/dist/zipItDataRepresentationUtils.js.map +1 -1
  194. package/lib/{ReadBufferUtils.d.mts → ReadBufferUtils.d.ts} +1 -1
  195. package/lib/ReadBufferUtils.d.ts.map +1 -0
  196. package/lib/{ReadBufferUtils.mjs → ReadBufferUtils.js} +1 -1
  197. package/lib/ReadBufferUtils.js.map +1 -0
  198. package/lib/{WriteBufferUtils.d.mts → WriteBufferUtils.d.ts} +2 -2
  199. package/lib/WriteBufferUtils.d.ts.map +1 -0
  200. package/lib/{WriteBufferUtils.mjs → WriteBufferUtils.js} +2 -2
  201. package/lib/WriteBufferUtils.js.map +1 -0
  202. package/lib/{checkUrl.d.mts → checkUrl.d.ts} +1 -1
  203. package/lib/checkUrl.d.ts.map +1 -0
  204. package/lib/{checkUrl.mjs → checkUrl.js} +5 -3
  205. package/lib/checkUrl.js.map +1 -0
  206. package/lib/{compactSnapshotParser.d.mts → compactSnapshotParser.d.ts} +3 -3
  207. package/lib/compactSnapshotParser.d.ts.map +1 -0
  208. package/lib/{compactSnapshotParser.mjs → compactSnapshotParser.js} +69 -50
  209. package/lib/compactSnapshotParser.js.map +1 -0
  210. package/lib/{compactSnapshotWriter.d.mts → compactSnapshotWriter.d.ts} +3 -3
  211. package/lib/compactSnapshotWriter.d.ts.map +1 -0
  212. package/lib/{compactSnapshotWriter.mjs → compactSnapshotWriter.js} +14 -8
  213. package/lib/compactSnapshotWriter.js.map +1 -0
  214. package/lib/{constants.d.mts → constants.d.ts} +1 -1
  215. package/lib/constants.d.ts.map +1 -0
  216. package/lib/{constants.mjs → constants.js} +1 -1
  217. package/lib/constants.js.map +1 -0
  218. package/lib/{contracts.d.mts → contracts.d.ts} +25 -5
  219. package/lib/contracts.d.ts.map +1 -0
  220. package/lib/contracts.js +10 -0
  221. package/lib/contracts.js.map +1 -0
  222. package/lib/{contractsPublic.d.mts → contractsPublic.d.ts} +1 -1
  223. package/lib/contractsPublic.d.ts.map +1 -0
  224. package/lib/{contractsPublic.mjs → contractsPublic.js} +1 -1
  225. package/lib/contractsPublic.js.map +1 -0
  226. package/lib/{createFile.d.mts → createFile.d.ts} +5 -5
  227. package/lib/createFile.d.ts.map +1 -0
  228. package/lib/{createFile.mjs → createFile.js} +25 -41
  229. package/lib/createFile.js.map +1 -0
  230. package/lib/{createNewContainerOnExistingFile.d.mts → createNewContainerOnExistingFile.d.ts} +3 -3
  231. package/lib/createNewContainerOnExistingFile.d.ts.map +1 -0
  232. package/lib/{createNewContainerOnExistingFile.mjs → createNewContainerOnExistingFile.js} +7 -7
  233. package/lib/createNewContainerOnExistingFile.js.map +1 -0
  234. package/lib/{createNewModule.mjs → createNewModule.d.ts} +3 -3
  235. package/lib/createNewModule.d.ts.map +1 -0
  236. package/lib/{createNewModule.d.mts → createNewModule.js} +3 -3
  237. package/lib/createNewModule.js.map +1 -0
  238. package/lib/{createNewUtils.d.mts → createNewUtils.d.ts} +5 -5
  239. package/lib/createNewUtils.d.ts.map +1 -0
  240. package/lib/{createNewUtils.mjs → createNewUtils.js} +13 -8
  241. package/lib/createNewUtils.js.map +1 -0
  242. package/lib/{createOdspCreateContainerRequest.d.mts → createOdspCreateContainerRequest.d.ts} +7 -3
  243. package/lib/createOdspCreateContainerRequest.d.ts.map +1 -0
  244. package/lib/{createOdspCreateContainerRequest.mjs → createOdspCreateContainerRequest.js} +2 -2
  245. package/lib/createOdspCreateContainerRequest.js.map +1 -0
  246. package/lib/{createOdspUrl.d.mts → createOdspUrl.d.ts} +2 -2
  247. package/lib/createOdspUrl.d.ts.map +1 -0
  248. package/lib/{createOdspUrl.mjs → createOdspUrl.js} +1 -1
  249. package/lib/createOdspUrl.js.map +1 -0
  250. package/lib/{epochTracker.d.mts → epochTracker.d.ts} +11 -10
  251. package/lib/epochTracker.d.ts.map +1 -0
  252. package/lib/{epochTracker.mjs → epochTracker.js} +58 -36
  253. package/lib/epochTracker.js.map +1 -0
  254. package/lib/{fetch.d.mts → fetch.d.ts} +1 -1
  255. package/lib/fetch.d.ts.map +1 -0
  256. package/lib/{fetch.mjs → fetch.js} +1 -1
  257. package/lib/fetch.js.map +1 -0
  258. package/lib/{fetchSnapshot.d.mts → fetchSnapshot.d.ts} +15 -12
  259. package/lib/fetchSnapshot.d.ts.map +1 -0
  260. package/lib/{fetchSnapshot.mjs → fetchSnapshot.js} +74 -54
  261. package/lib/fetchSnapshot.js.map +1 -0
  262. package/lib/{getFileLink.d.mts → getFileLink.d.ts} +1 -1
  263. package/lib/getFileLink.d.ts.map +1 -0
  264. package/lib/{getFileLink.mjs → getFileLink.js} +17 -10
  265. package/lib/getFileLink.js.map +1 -0
  266. package/lib/{getQueryString.d.mts → getQueryString.d.ts} +5 -1
  267. package/lib/getQueryString.d.ts.map +1 -0
  268. package/lib/{getQueryString.mjs → getQueryString.js} +3 -1
  269. package/lib/getQueryString.js.map +1 -0
  270. package/lib/{getUrlAndHeadersWithAuth.d.mts → getUrlAndHeadersWithAuth.d.ts} +1 -1
  271. package/lib/getUrlAndHeadersWithAuth.d.ts.map +1 -0
  272. package/lib/{getUrlAndHeadersWithAuth.mjs → getUrlAndHeadersWithAuth.js} +1 -1
  273. package/lib/getUrlAndHeadersWithAuth.js.map +1 -0
  274. package/lib/{index.d.mts → index.d.ts} +20 -20
  275. package/lib/index.d.ts.map +1 -0
  276. package/lib/index.js +29 -0
  277. package/lib/index.js.map +1 -0
  278. package/lib/localOdspDriver/{localOdspDeltaStorageService.d.mts → localOdspDeltaStorageService.d.ts} +1 -1
  279. package/lib/localOdspDriver/localOdspDeltaStorageService.d.ts.map +1 -0
  280. package/lib/localOdspDriver/{localOdspDeltaStorageService.mjs → localOdspDeltaStorageService.js} +1 -1
  281. package/lib/localOdspDriver/localOdspDeltaStorageService.js.map +1 -0
  282. package/lib/localOdspDriver/{localOdspDocumentService.d.mts → localOdspDocumentService.d.ts} +5 -4
  283. package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +1 -0
  284. package/lib/localOdspDriver/{localOdspDocumentService.mjs → localOdspDocumentService.js} +7 -5
  285. package/lib/localOdspDriver/localOdspDocumentService.js.map +1 -0
  286. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.d.mts → localOdspDocumentServiceFactory.d.ts} +9 -7
  287. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -0
  288. package/lib/localOdspDriver/{localOdspDocumentServiceFactory.mjs → localOdspDocumentServiceFactory.js} +9 -8
  289. package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -0
  290. package/lib/localOdspDriver/{localOdspDocumentStorageManager.d.mts → localOdspDocumentStorageManager.d.ts} +4 -3
  291. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -0
  292. package/lib/localOdspDriver/{localOdspDocumentStorageManager.mjs → localOdspDocumentStorageManager.js} +7 -4
  293. package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -0
  294. package/lib/{odsp-driver-alpha.d.mts → odsp-driver-alpha.d.ts} +31 -15
  295. package/lib/{odsp-driver-beta.d.mts → odsp-driver-beta.d.ts} +4 -5
  296. package/lib/{odsp-driver-public.d.mts → odsp-driver-public.d.ts} +4 -5
  297. package/lib/{odsp-driver-untrimmed.d.mts → odsp-driver-untrimmed.d.ts} +34 -16
  298. package/lib/{odspCache.d.mts → odspCache.d.ts} +10 -6
  299. package/lib/odspCache.d.ts.map +1 -0
  300. package/lib/{odspCache.mjs → odspCache.js} +6 -3
  301. package/lib/odspCache.js.map +1 -0
  302. package/lib/{odspDelayLoadedDeltaStream.d.mts → odspDelayLoadedDeltaStream.d.ts} +13 -7
  303. package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -0
  304. package/lib/{odspDelayLoadedDeltaStream.mjs → odspDelayLoadedDeltaStream.js} +84 -20
  305. package/lib/odspDelayLoadedDeltaStream.js.map +1 -0
  306. package/lib/{odspDeltaStorageService.d.mts → odspDeltaStorageService.d.ts} +8 -8
  307. package/lib/odspDeltaStorageService.d.ts.map +1 -0
  308. package/lib/{odspDeltaStorageService.mjs → odspDeltaStorageService.js} +5 -5
  309. package/lib/odspDeltaStorageService.js.map +1 -0
  310. package/lib/{odspDocumentDeltaConnection.d.mts → odspDocumentDeltaConnection.d.ts} +2 -2
  311. package/lib/odspDocumentDeltaConnection.d.ts.map +1 -0
  312. package/lib/{odspDocumentDeltaConnection.mjs → odspDocumentDeltaConnection.js} +34 -16
  313. package/lib/odspDocumentDeltaConnection.js.map +1 -0
  314. package/lib/{odspDocumentService.d.mts → odspDocumentService.d.ts} +10 -7
  315. package/lib/odspDocumentService.d.ts.map +1 -0
  316. package/lib/{odspDocumentService.mjs → odspDocumentService.js} +22 -14
  317. package/lib/odspDocumentService.js.map +1 -0
  318. package/lib/{odspDocumentServiceFactory.d.mts → odspDocumentServiceFactory.d.ts} +7 -2
  319. package/lib/odspDocumentServiceFactory.d.ts.map +1 -0
  320. package/lib/{odspDocumentServiceFactory.mjs → odspDocumentServiceFactory.js} +9 -3
  321. package/lib/odspDocumentServiceFactory.js.map +1 -0
  322. package/lib/{odspDocumentServiceFactoryCore.d.mts → odspDocumentServiceFactoryCore.d.ts} +5 -5
  323. package/lib/odspDocumentServiceFactoryCore.d.ts.map +1 -0
  324. package/lib/{odspDocumentServiceFactoryCore.mjs → odspDocumentServiceFactoryCore.js} +25 -26
  325. package/lib/odspDocumentServiceFactoryCore.js.map +1 -0
  326. package/lib/{odspDocumentServiceFactoryWithCodeSplit.d.mts → odspDocumentServiceFactoryWithCodeSplit.d.ts} +2 -2
  327. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -0
  328. package/lib/{odspDocumentServiceFactoryWithCodeSplit.mjs → odspDocumentServiceFactoryWithCodeSplit.js} +2 -2
  329. package/lib/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -0
  330. package/lib/{odspDocumentStorageManager.d.mts → odspDocumentStorageManager.d.ts} +18 -11
  331. package/lib/odspDocumentStorageManager.d.ts.map +1 -0
  332. package/lib/{odspDocumentStorageManager.mjs → odspDocumentStorageManager.js} +221 -162
  333. package/lib/odspDocumentStorageManager.js.map +1 -0
  334. package/lib/{odspDocumentStorageServiceBase.d.mts → odspDocumentStorageServiceBase.d.ts} +5 -7
  335. package/lib/odspDocumentStorageServiceBase.d.ts.map +1 -0
  336. package/lib/{odspDocumentStorageServiceBase.mjs → odspDocumentStorageServiceBase.js} +34 -31
  337. package/lib/odspDocumentStorageServiceBase.js.map +1 -0
  338. package/lib/{odspDriverUrlResolver.d.mts → odspDriverUrlResolver.d.ts} +2 -2
  339. package/lib/odspDriverUrlResolver.d.ts.map +1 -0
  340. package/lib/{odspDriverUrlResolver.mjs → odspDriverUrlResolver.js} +27 -29
  341. package/lib/odspDriverUrlResolver.js.map +1 -0
  342. package/lib/{odspDriverUrlResolverForShareLink.d.mts → odspDriverUrlResolverForShareLink.d.ts} +14 -7
  343. package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -0
  344. package/lib/{odspDriverUrlResolverForShareLink.mjs → odspDriverUrlResolverForShareLink.js} +41 -27
  345. package/lib/odspDriverUrlResolverForShareLink.js.map +1 -0
  346. package/lib/{odspError.d.mts → odspError.d.ts} +2 -2
  347. package/lib/odspError.d.ts.map +1 -0
  348. package/lib/{odspError.mjs → odspError.js} +6 -6
  349. package/lib/odspError.js.map +1 -0
  350. package/lib/{odspFluidFileLink.d.mts → odspFluidFileLink.d.ts} +2 -2
  351. package/lib/odspFluidFileLink.d.ts.map +1 -0
  352. package/lib/{odspFluidFileLink.mjs → odspFluidFileLink.js} +2 -2
  353. package/lib/odspFluidFileLink.js.map +1 -0
  354. package/lib/{odspLocationRedirection.d.mts → odspLocationRedirection.d.ts} +1 -1
  355. package/lib/odspLocationRedirection.d.ts.map +1 -0
  356. package/lib/{odspLocationRedirection.mjs → odspLocationRedirection.js} +2 -2
  357. package/lib/odspLocationRedirection.js.map +1 -0
  358. package/lib/{odspPublicUtils.d.mts → odspPublicUtils.d.ts} +5 -1
  359. package/lib/odspPublicUtils.d.ts.map +1 -0
  360. package/lib/{odspPublicUtils.mjs → odspPublicUtils.js} +4 -1
  361. package/lib/odspPublicUtils.js.map +1 -0
  362. package/lib/{odspSnapshotParser.d.mts → odspSnapshotParser.d.ts} +4 -4
  363. package/lib/odspSnapshotParser.d.ts.map +1 -0
  364. package/lib/{odspSnapshotParser.mjs → odspSnapshotParser.js} +6 -4
  365. package/lib/odspSnapshotParser.js.map +1 -0
  366. package/lib/{odspSummaryUploadManager.d.mts → odspSummaryUploadManager.d.ts} +2 -2
  367. package/lib/odspSummaryUploadManager.d.ts.map +1 -0
  368. package/lib/{odspSummaryUploadManager.mjs → odspSummaryUploadManager.js} +8 -5
  369. package/lib/odspSummaryUploadManager.js.map +1 -0
  370. package/lib/{odspUrlHelper.d.mts → odspUrlHelper.d.ts} +1 -1
  371. package/lib/odspUrlHelper.d.ts.map +1 -0
  372. package/lib/{odspUrlHelper.mjs → odspUrlHelper.js} +2 -3
  373. package/lib/odspUrlHelper.js.map +1 -0
  374. package/lib/{odspUtils.d.mts → odspUtils.d.ts} +30 -14
  375. package/lib/odspUtils.d.ts.map +1 -0
  376. package/lib/{odspUtils.mjs → odspUtils.js} +61 -30
  377. package/lib/odspUtils.js.map +1 -0
  378. package/lib/{opsCaching.d.mts → opsCaching.d.ts} +2 -2
  379. package/lib/opsCaching.d.ts.map +1 -0
  380. package/lib/{opsCaching.mjs → opsCaching.js} +3 -2
  381. package/lib/opsCaching.js.map +1 -0
  382. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  383. package/lib/packageVersion.d.ts.map +1 -0
  384. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  385. package/lib/packageVersion.js.map +1 -0
  386. package/lib/{prefetchLatestSnapshot.d.mts → prefetchLatestSnapshot.d.ts} +3 -3
  387. package/lib/prefetchLatestSnapshot.d.ts.map +1 -0
  388. package/lib/{prefetchLatestSnapshot.mjs → prefetchLatestSnapshot.js} +16 -11
  389. package/lib/prefetchLatestSnapshot.js.map +1 -0
  390. package/lib/{retryErrorsStorageAdapter.d.mts → retryErrorsStorageAdapter.d.ts} +3 -3
  391. package/lib/retryErrorsStorageAdapter.d.ts.map +1 -0
  392. package/lib/{retryErrorsStorageAdapter.mjs → retryErrorsStorageAdapter.js} +11 -6
  393. package/lib/retryErrorsStorageAdapter.js.map +1 -0
  394. package/lib/{retryUtils.d.mts → retryUtils.d.ts} +1 -1
  395. package/lib/retryUtils.d.ts.map +1 -0
  396. package/lib/{retryUtils.mjs → retryUtils.js} +8 -4
  397. package/lib/retryUtils.js.map +1 -0
  398. package/lib/{socketModule.d.mts → socketModule.d.ts} +1 -1
  399. package/lib/socketModule.d.ts.map +1 -0
  400. package/lib/{socketModule.mjs → socketModule.js} +3 -1
  401. package/lib/socketModule.js.map +1 -0
  402. package/lib/test/buildOdspShareLinkReqParams.spec.js +25 -0
  403. package/lib/test/buildOdspShareLinkReqParams.spec.js.map +1 -0
  404. package/lib/test/createNewUtilsTests.spec.js +221 -0
  405. package/lib/test/createNewUtilsTests.spec.js.map +1 -0
  406. package/lib/test/deltaStorageService.spec.js +176 -0
  407. package/lib/test/deltaStorageService.spec.js.map +1 -0
  408. package/lib/test/epochTests.spec.js +340 -0
  409. package/lib/test/epochTests.spec.js.map +1 -0
  410. package/lib/test/epochTestsWithRedemption.spec.js +119 -0
  411. package/lib/test/epochTestsWithRedemption.spec.js.map +1 -0
  412. package/lib/test/fetchSnapshot.spec.js +412 -0
  413. package/lib/test/fetchSnapshot.spec.js.map +1 -0
  414. package/lib/test/getFileLink.spec.js +62 -0
  415. package/lib/test/getFileLink.spec.js.map +1 -0
  416. package/lib/test/getUrlAndHeadersWithAuth.spec.js +66 -0
  417. package/lib/test/getUrlAndHeadersWithAuth.spec.js.map +1 -0
  418. package/lib/test/getVersions.spec.js +284 -0
  419. package/lib/test/getVersions.spec.js.map +1 -0
  420. package/lib/test/joinSessionCacheTests.spec.js +53 -0
  421. package/lib/test/joinSessionCacheTests.spec.js.map +1 -0
  422. package/lib/test/joinSessionPeriodicCall.spec.js +158 -0
  423. package/lib/test/joinSessionPeriodicCall.spec.js.map +1 -0
  424. package/lib/test/jsonSnapshotFormatTests.spec.js +107 -0
  425. package/lib/test/jsonSnapshotFormatTests.spec.js.map +1 -0
  426. package/lib/test/localOdspDriver.spec.js +177 -0
  427. package/lib/test/localOdspDriver.spec.js.map +1 -0
  428. package/lib/test/mockFetch.js +61 -0
  429. package/lib/test/mockFetch.js.map +1 -0
  430. package/lib/test/odspCreateContainer.spec.js +116 -0
  431. package/lib/test/odspCreateContainer.spec.js.map +1 -0
  432. package/lib/test/odspDriverResolverTest.spec.js +289 -0
  433. package/lib/test/odspDriverResolverTest.spec.js.map +1 -0
  434. package/lib/test/odspDriverUrlResolverForShareLink.spec.js +287 -0
  435. package/lib/test/odspDriverUrlResolverForShareLink.spec.js.map +1 -0
  436. package/lib/test/odspError.spec.js +299 -0
  437. package/lib/test/odspError.spec.js.map +1 -0
  438. package/lib/test/opsCaching.spec.js +357 -0
  439. package/lib/test/opsCaching.spec.js.map +1 -0
  440. package/lib/test/prefetchSnapshotTests.spec.js +420 -0
  441. package/lib/test/prefetchSnapshotTests.spec.js.map +1 -0
  442. package/lib/test/snapshotFormatTests.spec.js +218 -0
  443. package/lib/test/snapshotFormatTests.spec.js.map +1 -0
  444. package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js +152 -0
  445. package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js.map +1 -0
  446. package/lib/test/socketTests/socketMock.js +109 -0
  447. package/lib/test/socketTests/socketMock.js.map +1 -0
  448. package/lib/test/socketTests/socketTests.spec.js +256 -0
  449. package/lib/test/socketTests/socketTests.spec.js.map +1 -0
  450. package/lib/test/tokenFetch.spec.js +39 -0
  451. package/lib/test/tokenFetch.spec.js.map +1 -0
  452. package/lib/test/types/validateOdspDriverPrevious.generated.js +96 -0
  453. package/lib/test/types/validateOdspDriverPrevious.generated.js.map +1 -0
  454. package/lib/test/zipItDataRepresentationTests.spec.js +207 -0
  455. package/lib/test/zipItDataRepresentationTests.spec.js.map +1 -0
  456. package/lib/{vroom.d.mts → vroom.d.ts} +3 -3
  457. package/lib/vroom.d.ts.map +1 -0
  458. package/lib/{vroom.mjs → vroom.js} +4 -4
  459. package/lib/vroom.js.map +1 -0
  460. package/lib/{zipItDataRepresentationUtils.d.mts → zipItDataRepresentationUtils.d.ts} +2 -2
  461. package/lib/zipItDataRepresentationUtils.d.ts.map +1 -0
  462. package/lib/{zipItDataRepresentationUtils.mjs → zipItDataRepresentationUtils.js} +19 -11
  463. package/lib/zipItDataRepresentationUtils.js.map +1 -0
  464. package/package.json +100 -32
  465. package/src/ReadBufferUtils.ts +7 -7
  466. package/src/WriteBufferUtils.ts +13 -9
  467. package/src/checkUrl.ts +4 -2
  468. package/src/compactSnapshotParser.ts +97 -61
  469. package/src/compactSnapshotWriter.ts +22 -15
  470. package/src/contracts.ts +33 -4
  471. package/src/createFile.ts +26 -51
  472. package/src/createNewContainerOnExistingFile.ts +10 -10
  473. package/src/createNewModule.ts +2 -2
  474. package/src/createNewUtils.ts +26 -15
  475. package/src/createOdspCreateContainerRequest.ts +3 -3
  476. package/src/createOdspUrl.ts +1 -1
  477. package/src/epochTracker.ts +93 -58
  478. package/src/fetchSnapshot.ts +122 -66
  479. package/src/getFileLink.ts +24 -16
  480. package/src/getQueryString.ts +2 -0
  481. package/src/index.ts +27 -19
  482. package/src/localOdspDriver/localOdspDocumentService.ts +12 -5
  483. package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +12 -11
  484. package/src/localOdspDriver/localOdspDocumentStorageManager.ts +15 -8
  485. package/src/odspCache.ts +14 -11
  486. package/src/odspDelayLoadedDeltaStream.ts +113 -31
  487. package/src/odspDeltaStorageService.ts +17 -16
  488. package/src/odspDocumentDeltaConnection.ts +52 -34
  489. package/src/odspDocumentService.ts +33 -22
  490. package/src/odspDocumentServiceFactory.ts +7 -2
  491. package/src/odspDocumentServiceFactoryCore.ts +28 -29
  492. package/src/odspDocumentServiceFactoryWithCodeSplit.ts +1 -1
  493. package/src/odspDocumentStorageManager.ts +303 -210
  494. package/src/odspDocumentStorageServiceBase.ts +52 -47
  495. package/src/odspDriverUrlResolver.ts +41 -41
  496. package/src/odspDriverUrlResolverForShareLink.ts +50 -31
  497. package/src/odspError.ts +6 -7
  498. package/src/odspFluidFileLink.ts +3 -3
  499. package/src/odspLocationRedirection.ts +1 -1
  500. package/src/odspPublicUtils.ts +4 -0
  501. package/src/odspSnapshotParser.ts +9 -9
  502. package/src/odspSummaryUploadManager.ts +21 -9
  503. package/src/odspUrlHelper.ts +2 -3
  504. package/src/odspUtils.ts +102 -53
  505. package/src/opsCaching.ts +13 -12
  506. package/src/packageVersion.ts +1 -1
  507. package/src/prefetchLatestSnapshot.ts +24 -15
  508. package/src/retryErrorsStorageAdapter.ts +16 -9
  509. package/src/retryUtils.ts +8 -4
  510. package/src/socketModule.ts +2 -0
  511. package/src/vroom.ts +6 -6
  512. package/src/zipItDataRepresentationUtils.ts +65 -37
  513. package/tsconfig.cjs.json +7 -0
  514. package/tsconfig.json +2 -5
  515. package/.eslintrc.js +0 -18
  516. package/lib/ReadBufferUtils.d.mts.map +0 -1
  517. package/lib/ReadBufferUtils.mjs.map +0 -1
  518. package/lib/WriteBufferUtils.d.mts.map +0 -1
  519. package/lib/WriteBufferUtils.mjs.map +0 -1
  520. package/lib/checkUrl.d.mts.map +0 -1
  521. package/lib/checkUrl.mjs.map +0 -1
  522. package/lib/compactSnapshotParser.d.mts.map +0 -1
  523. package/lib/compactSnapshotParser.mjs.map +0 -1
  524. package/lib/compactSnapshotWriter.d.mts.map +0 -1
  525. package/lib/compactSnapshotWriter.mjs.map +0 -1
  526. package/lib/constants.d.mts.map +0 -1
  527. package/lib/constants.mjs.map +0 -1
  528. package/lib/contracts.d.mts.map +0 -1
  529. package/lib/contracts.mjs +0 -6
  530. package/lib/contracts.mjs.map +0 -1
  531. package/lib/contractsPublic.d.mts.map +0 -1
  532. package/lib/contractsPublic.mjs.map +0 -1
  533. package/lib/createFile.d.mts.map +0 -1
  534. package/lib/createFile.mjs.map +0 -1
  535. package/lib/createNewContainerOnExistingFile.d.mts.map +0 -1
  536. package/lib/createNewContainerOnExistingFile.mjs.map +0 -1
  537. package/lib/createNewModule.d.mts.map +0 -1
  538. package/lib/createNewModule.mjs.map +0 -1
  539. package/lib/createNewUtils.d.mts.map +0 -1
  540. package/lib/createNewUtils.mjs.map +0 -1
  541. package/lib/createOdspCreateContainerRequest.d.mts.map +0 -1
  542. package/lib/createOdspCreateContainerRequest.mjs.map +0 -1
  543. package/lib/createOdspUrl.d.mts.map +0 -1
  544. package/lib/createOdspUrl.mjs.map +0 -1
  545. package/lib/epochTracker.d.mts.map +0 -1
  546. package/lib/epochTracker.mjs.map +0 -1
  547. package/lib/fetch.d.mts.map +0 -1
  548. package/lib/fetch.mjs.map +0 -1
  549. package/lib/fetchSnapshot.d.mts.map +0 -1
  550. package/lib/fetchSnapshot.mjs.map +0 -1
  551. package/lib/getFileLink.d.mts.map +0 -1
  552. package/lib/getFileLink.mjs.map +0 -1
  553. package/lib/getQueryString.d.mts.map +0 -1
  554. package/lib/getQueryString.mjs.map +0 -1
  555. package/lib/getUrlAndHeadersWithAuth.d.mts.map +0 -1
  556. package/lib/getUrlAndHeadersWithAuth.mjs.map +0 -1
  557. package/lib/index.d.mts.map +0 -1
  558. package/lib/index.mjs +0 -22
  559. package/lib/index.mjs.map +0 -1
  560. package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts.map +0 -1
  561. package/lib/localOdspDriver/localOdspDeltaStorageService.mjs.map +0 -1
  562. package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +0 -1
  563. package/lib/localOdspDriver/localOdspDocumentService.mjs.map +0 -1
  564. package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.mts.map +0 -1
  565. package/lib/localOdspDriver/localOdspDocumentServiceFactory.mjs.map +0 -1
  566. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +0 -1
  567. package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +0 -1
  568. package/lib/odspCache.d.mts.map +0 -1
  569. package/lib/odspCache.mjs.map +0 -1
  570. package/lib/odspDelayLoadedDeltaStream.d.mts.map +0 -1
  571. package/lib/odspDelayLoadedDeltaStream.mjs.map +0 -1
  572. package/lib/odspDeltaStorageService.d.mts.map +0 -1
  573. package/lib/odspDeltaStorageService.mjs.map +0 -1
  574. package/lib/odspDocumentDeltaConnection.d.mts.map +0 -1
  575. package/lib/odspDocumentDeltaConnection.mjs.map +0 -1
  576. package/lib/odspDocumentService.d.mts.map +0 -1
  577. package/lib/odspDocumentService.mjs.map +0 -1
  578. package/lib/odspDocumentServiceFactory.d.mts.map +0 -1
  579. package/lib/odspDocumentServiceFactory.mjs.map +0 -1
  580. package/lib/odspDocumentServiceFactoryCore.d.mts.map +0 -1
  581. package/lib/odspDocumentServiceFactoryCore.mjs.map +0 -1
  582. package/lib/odspDocumentServiceFactoryWithCodeSplit.d.mts.map +0 -1
  583. package/lib/odspDocumentServiceFactoryWithCodeSplit.mjs.map +0 -1
  584. package/lib/odspDocumentStorageManager.d.mts.map +0 -1
  585. package/lib/odspDocumentStorageManager.mjs.map +0 -1
  586. package/lib/odspDocumentStorageServiceBase.d.mts.map +0 -1
  587. package/lib/odspDocumentStorageServiceBase.mjs.map +0 -1
  588. package/lib/odspDriverUrlResolver.d.mts.map +0 -1
  589. package/lib/odspDriverUrlResolver.mjs.map +0 -1
  590. package/lib/odspDriverUrlResolverForShareLink.d.mts.map +0 -1
  591. package/lib/odspDriverUrlResolverForShareLink.mjs.map +0 -1
  592. package/lib/odspError.d.mts.map +0 -1
  593. package/lib/odspError.mjs.map +0 -1
  594. package/lib/odspFluidFileLink.d.mts.map +0 -1
  595. package/lib/odspFluidFileLink.mjs.map +0 -1
  596. package/lib/odspLocationRedirection.d.mts.map +0 -1
  597. package/lib/odspLocationRedirection.mjs.map +0 -1
  598. package/lib/odspPublicUtils.d.mts.map +0 -1
  599. package/lib/odspPublicUtils.mjs.map +0 -1
  600. package/lib/odspSnapshotParser.d.mts.map +0 -1
  601. package/lib/odspSnapshotParser.mjs.map +0 -1
  602. package/lib/odspSummaryUploadManager.d.mts.map +0 -1
  603. package/lib/odspSummaryUploadManager.mjs.map +0 -1
  604. package/lib/odspUrlHelper.d.mts.map +0 -1
  605. package/lib/odspUrlHelper.mjs.map +0 -1
  606. package/lib/odspUtils.d.mts.map +0 -1
  607. package/lib/odspUtils.mjs.map +0 -1
  608. package/lib/opsCaching.d.mts.map +0 -1
  609. package/lib/opsCaching.mjs.map +0 -1
  610. package/lib/packageVersion.d.mts.map +0 -1
  611. package/lib/packageVersion.mjs.map +0 -1
  612. package/lib/prefetchLatestSnapshot.d.mts.map +0 -1
  613. package/lib/prefetchLatestSnapshot.mjs.map +0 -1
  614. package/lib/retryErrorsStorageAdapter.d.mts.map +0 -1
  615. package/lib/retryErrorsStorageAdapter.mjs.map +0 -1
  616. package/lib/retryUtils.d.mts.map +0 -1
  617. package/lib/retryUtils.mjs.map +0 -1
  618. package/lib/socketModule.d.mts.map +0 -1
  619. package/lib/socketModule.mjs.map +0 -1
  620. package/lib/vroom.d.mts.map +0 -1
  621. package/lib/vroom.mjs.map +0 -1
  622. package/lib/zipItDataRepresentationUtils.d.mts.map +0 -1
  623. package/lib/zipItDataRepresentationUtils.mjs.map +0 -1
package/src/index.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  // Constants
7
- export { OdcApiSiteOrigin, OdcFileSiteOrigin } from "./constants";
7
+ export { OdcApiSiteOrigin, OdcFileSiteOrigin } from "./constants.js";
8
8
 
9
9
  export {
10
10
  ClpCompliantAppHeader,
@@ -12,34 +12,34 @@ export {
12
12
  ISharingLinkHeader,
13
13
  OdspFluidDataStoreLocator,
14
14
  SharingLinkHeader,
15
- } from "./contractsPublic";
15
+ } from "./contractsPublic.js";
16
16
 
17
17
  // public utils
18
- export { checkUrl } from "./checkUrl";
19
- export { createOdspUrl } from "./createOdspUrl";
20
- export { getHashedDocumentId, ISnapshotContents } from "./odspPublicUtils";
21
- export { getApiRoot, getOdspUrlParts, isOdcOrigin, isOdcUrl, isSpoUrl } from "./odspUrlHelper";
18
+ export { checkUrl } from "./checkUrl.js";
19
+ export { createOdspUrl } from "./createOdspUrl.js";
20
+ export { getHashedDocumentId, ISnapshotContents } from "./odspPublicUtils.js";
21
+ export { getApiRoot, getOdspUrlParts, isOdcOrigin, isOdcUrl, isSpoUrl } from "./odspUrlHelper.js";
22
22
 
23
23
  // prefetch latest snapshot before container load
24
- export { prefetchLatestSnapshot } from "./prefetchLatestSnapshot";
24
+ export { prefetchLatestSnapshot } from "./prefetchLatestSnapshot.js";
25
25
 
26
26
  // Factory
27
27
  export {
28
28
  createLocalOdspDocumentServiceFactory,
29
29
  OdspDocumentServiceFactory,
30
- } from "./odspDocumentServiceFactory";
31
- export { OdspDocumentServiceFactoryCore } from "./odspDocumentServiceFactoryCore";
32
- export { OdspDocumentServiceFactoryWithCodeSplit } from "./odspDocumentServiceFactoryWithCodeSplit";
30
+ } from "./odspDocumentServiceFactory.js";
31
+ export { OdspDocumentServiceFactoryCore } from "./odspDocumentServiceFactoryCore.js";
32
+ export { OdspDocumentServiceFactoryWithCodeSplit } from "./odspDocumentServiceFactoryWithCodeSplit.js";
33
33
 
34
34
  // File creation
35
- export { createOdspCreateContainerRequest } from "./createOdspCreateContainerRequest";
35
+ export { createOdspCreateContainerRequest } from "./createOdspCreateContainerRequest.js";
36
36
 
37
37
  // URI Resolver functionality, URI management
38
- export { OdspDriverUrlResolver } from "./odspDriverUrlResolver";
38
+ export { OdspDriverUrlResolver } from "./odspDriverUrlResolver.js";
39
39
  export {
40
40
  OdspDriverUrlResolverForShareLink,
41
41
  ShareLinkFetcherProps,
42
- } from "./odspDriverUrlResolverForShareLink";
42
+ } from "./odspDriverUrlResolverForShareLink.js";
43
43
 
44
44
  // It's used by URL resolve code, but also has some public functions
45
45
  export {
@@ -47,15 +47,23 @@ export {
47
47
  getLocatorFromOdspUrl,
48
48
  locatorQueryParamName,
49
49
  storeLocatorInOdspUrl,
50
- } from "./odspFluidFileLink";
50
+ } from "./odspFluidFileLink.js";
51
51
 
52
52
  export {
53
53
  IOdspCache,
54
54
  IPersistedFileCache,
55
55
  INonPersistentCache,
56
56
  IPrefetchSnapshotContents,
57
- } from "./odspCache";
58
- export { ICacheAndTracker, type EpochTracker, FetchType, FetchTypeInternal } from "./epochTracker";
59
- export { IOdspResponse, isOdspResolvedUrl } from "./odspUtils";
60
- export { SnapshotFormatSupportType } from "./fetchSnapshot";
61
- export { ISnapshotContentsWithProps, parseCompactSnapshotResponse } from "./compactSnapshotParser";
57
+ } from "./odspCache.js";
58
+ export {
59
+ ICacheAndTracker,
60
+ type EpochTracker,
61
+ FetchType,
62
+ FetchTypeInternal,
63
+ } from "./epochTracker.js";
64
+ export { IOdspResponse, isOdspResolvedUrl } from "./odspUtils.js";
65
+ export { SnapshotFormatSupportType } from "./fetchSnapshot.js";
66
+ export {
67
+ ISnapshotContentsWithProps,
68
+ parseCompactSnapshotResponse,
69
+ } from "./compactSnapshotParser.js";
@@ -3,23 +3,28 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
6
7
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
8
  import {
8
9
  IDocumentDeltaStorageService,
9
10
  IDocumentService,
11
+ IDocumentServiceEvents,
10
12
  IDocumentStorageService,
11
13
  IResolvedUrl,
12
14
  } from "@fluidframework/driver-definitions";
13
15
  import { UsageError } from "@fluidframework/driver-utils";
14
16
  import { IOdspResolvedUrl } from "@fluidframework/odsp-driver-definitions";
15
17
  import { IClient } from "@fluidframework/protocol-definitions";
16
- import { LocalOdspDeltaStorageService } from "./localOdspDeltaStorageService";
17
- import { LocalOdspDocumentStorageService } from "./localOdspDocumentStorageManager";
18
+ import { LocalOdspDeltaStorageService } from "./localOdspDeltaStorageService.js";
19
+ import { LocalOdspDocumentStorageService } from "./localOdspDocumentStorageManager.js";
18
20
 
19
21
  /**
20
22
  * IDocumentService implementation that provides explicit snapshot to the document storage service.
21
23
  */
22
- export class LocalOdspDocumentService implements IDocumentService {
24
+ export class LocalOdspDocumentService
25
+ extends TypedEventEmitter<IDocumentServiceEvents>
26
+ implements IDocumentService
27
+ {
23
28
  public policies = { storageOnly: true };
24
29
  private storageManager?: LocalOdspDocumentStorageService;
25
30
 
@@ -27,7 +32,9 @@ export class LocalOdspDocumentService implements IDocumentService {
27
32
  private readonly odspResolvedUrl: IOdspResolvedUrl,
28
33
  private readonly logger: ITelemetryLoggerExt,
29
34
  private readonly localSnapshot: Uint8Array | string,
30
- ) {}
35
+ ) {
36
+ super();
37
+ }
31
38
 
32
39
  public get resolvedUrl(): IResolvedUrl {
33
40
  return this.odspResolvedUrl;
@@ -50,7 +57,7 @@ export class LocalOdspDocumentService implements IDocumentService {
50
57
  throw toThrow;
51
58
  }
52
59
 
53
- public dispose(_error?: any): void {
60
+ public dispose(error?: unknown): void {
54
61
  // Do nothing
55
62
  }
56
63
  }
@@ -6,19 +6,21 @@
6
6
  import { IDocumentService, IResolvedUrl } from "@fluidframework/driver-definitions";
7
7
  import { UsageError } from "@fluidframework/driver-utils";
8
8
  import { ISummaryTree } from "@fluidframework/protocol-definitions";
9
- import { ITelemetryBaseLogger, ITelemetryLogger } from "@fluidframework/core-interfaces";
10
- import { createOdspLogger, getOdspResolvedUrl } from "../odspUtils";
11
- import { ICacheAndTracker } from "../epochTracker";
12
- import { OdspDocumentServiceFactoryCore } from "../odspDocumentServiceFactoryCore";
13
- import { LocalOdspDocumentService } from "./localOdspDocumentService";
9
+ import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
10
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
11
+ import { createOdspLogger, getOdspResolvedUrl } from "../odspUtils.js";
12
+ import { ICacheAndTracker } from "../epochTracker.js";
13
+ import { OdspDocumentServiceFactoryCore } from "../odspDocumentServiceFactoryCore.js";
14
+ import { LocalOdspDocumentService } from "./localOdspDocumentService.js";
14
15
 
15
16
  /**
16
17
  * Factory for creating sharepoint document service with a provided snapshot.
17
- * Use if you don't want to connect to any kind of external/internal storages and want to provide
18
+ *
19
+ * @remarks Use if you don't want to connect to any kind of external/internal storages and want to provide
18
20
  * content directly.
19
21
  */
20
22
  export class LocalOdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {
21
- private logger: ITelemetryLogger | undefined;
23
+ private readonly logger: ITelemetryLoggerExt = createOdspLogger();
22
24
 
23
25
  constructor(private readonly localSnapshot: Uint8Array | string) {
24
26
  super(
@@ -31,7 +33,7 @@ export class LocalOdspDocumentServiceFactory extends OdspDocumentServiceFactoryC
31
33
  const toThrow = new UsageError(
32
34
  `${unsupportedFuncName} is not supported by LocalOdspDocumentServiceFactory`,
33
35
  );
34
- this.logger?.sendErrorEvent({ eventName: "UnsupportedUsage" }, toThrow);
36
+ this.logger.sendErrorEvent({ eventName: "UnsupportedUsage" }, toThrow);
35
37
  throw toThrow;
36
38
  }
37
39
 
@@ -44,13 +46,13 @@ export class LocalOdspDocumentServiceFactory extends OdspDocumentServiceFactoryC
44
46
  const toThrow = new UsageError(
45
47
  '"createContainer" is not supported by LocalOdspDocumentServiceFactory',
46
48
  );
47
- createOdspLogger(logger).sendErrorEvent({ eventName: "UnsupportedUsage" }, toThrow);
49
+ this.logger.sendErrorEvent({ eventName: "UnsupportedUsage" }, toThrow);
48
50
  throw toThrow;
49
51
  }
50
52
 
51
53
  protected async createDocumentServiceCore(
52
54
  resolvedUrl: IResolvedUrl,
53
- odspLogger: ITelemetryLogger,
55
+ odspLogger: ITelemetryLoggerExt,
54
56
  _cacheAndTrackerArg?: ICacheAndTracker,
55
57
  _clientIsSummarizer?: boolean,
56
58
  ): Promise<IDocumentService> {
@@ -60,7 +62,6 @@ export class LocalOdspDocumentServiceFactory extends OdspDocumentServiceFactoryC
60
62
  if (_clientIsSummarizer) {
61
63
  throw new UsageError('Invalid usage. "_clientIsSummarizer" should not be provided');
62
64
  }
63
- this.logger = odspLogger;
64
65
  return new LocalOdspDocumentService(
65
66
  getOdspResolvedUrl(resolvedUrl),
66
67
  odspLogger,
@@ -5,14 +5,17 @@
5
5
 
6
6
  import { assert } from "@fluidframework/core-utils";
7
7
  import { ITelemetryLoggerExt, loggerToMonitoringContext } from "@fluidframework/telemetry-utils";
8
- import { ISummaryContext } from "@fluidframework/driver-definitions";
8
+ import {
9
+ ISnapshot,
10
+ ISnapshotFetchOptions,
11
+ ISummaryContext,
12
+ } from "@fluidframework/driver-definitions";
9
13
  import { UsageError } from "@fluidframework/driver-utils";
10
14
  import * as api from "@fluidframework/protocol-definitions";
11
- import { OdspDocumentStorageServiceBase } from "../odspDocumentStorageServiceBase";
12
- import { ISnapshotContents } from "../odspPublicUtils";
13
- import { IOdspSnapshot } from "../contracts";
14
- import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "../odspSnapshotParser";
15
- import { parseCompactSnapshotResponse } from "../compactSnapshotParser";
15
+ import { OdspDocumentStorageServiceBase } from "../odspDocumentStorageServiceBase.js";
16
+ import { IOdspSnapshot } from "../contracts.js";
17
+ import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "../odspSnapshotParser.js";
18
+ import { parseCompactSnapshotResponse } from "../compactSnapshotParser.js";
16
19
 
17
20
  /**
18
21
  * ODSP document storage service that works on a provided snapshot for all its processing.
@@ -45,10 +48,10 @@ export class LocalOdspDocumentStorageService extends OdspDocumentStorageServiceB
45
48
  }
46
49
  this.calledGetVersions = true;
47
50
 
48
- let snapshotContents: ISnapshotContents;
51
+ let snapshotContents: ISnapshot;
49
52
 
50
53
  if (typeof this.localSnapshot === "string") {
51
- const content: IOdspSnapshot = JSON.parse(this.localSnapshot);
54
+ const content: IOdspSnapshot = JSON.parse(this.localSnapshot) as IOdspSnapshot;
52
55
  snapshotContents = convertOdspSnapshotToSnapshotTreeAndBlobs(content);
53
56
  } else {
54
57
  snapshotContents = parseCompactSnapshotResponse(this.localSnapshot, this.logger);
@@ -58,6 +61,10 @@ export class LocalOdspDocumentStorageService extends OdspDocumentStorageServiceB
58
61
  return this.getSnapshotVersion();
59
62
  }
60
63
 
64
+ public async getSnapshot(snapshotFetchOptions?: ISnapshotFetchOptions): Promise<ISnapshot> {
65
+ this.throwUsageError("getSnapshot");
66
+ }
67
+
61
68
  private getSnapshotVersion(): api.IVersion[] {
62
69
  return this.snapshotTreeId ? [{ id: this.snapshotTreeId, treeId: undefined! }] : [];
63
70
  }
package/src/odspCache.ts CHANGED
@@ -12,14 +12,18 @@ import {
12
12
  ISocketStorageDiscovery,
13
13
  getKeyForCacheEntry,
14
14
  } from "@fluidframework/odsp-driver-definitions";
15
- import { ISnapshotContents } from "./odspPublicUtils";
15
+ import { ISnapshot } from "@fluidframework/driver-definitions";
16
16
 
17
17
  /**
18
18
  * Similar to IPersistedCache, but exposes cache interface for single file
19
19
  * @alpha
20
20
  */
21
21
  export interface IPersistedFileCache {
22
+ // TODO: use a stronger type
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
24
  get(entry: IEntry): Promise<any>;
25
+ // TODO: use a stronger type
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
27
  put(entry: IEntry, value: any): Promise<void>;
24
28
  removeEntries(): Promise<void>;
25
29
  }
@@ -29,19 +33,18 @@ export interface IPersistedFileCache {
29
33
  * used if no persisted cache is provided by the host
30
34
  */
31
35
  export class LocalPersistentCache implements IPersistedCache {
32
- private readonly cache = new Map<string, any>();
36
+ private readonly cache = new Map<string, unknown>();
33
37
  // For every document id there will be a single expiration entry inspite of the number of cache entries.
34
38
  private readonly docIdExpirationMap = new Map<string, ReturnType<typeof setTimeout>>();
35
39
 
36
40
  public constructor(private readonly snapshotExpiryPolicy = 3600 * 1000) {}
37
41
 
38
- async get(entry: ICacheEntry): Promise<any> {
42
+ async get(entry: ICacheEntry): Promise<unknown> {
39
43
  const key = getKeyForCacheEntry(entry);
40
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
41
44
  return this.cache.get(key);
42
45
  }
43
46
 
44
- async put(entry: ICacheEntry, value: any) {
47
+ async put(entry: ICacheEntry, value: unknown): Promise<void> {
45
48
  const key = getKeyForCacheEntry(entry);
46
49
  this.cache.set(key, value);
47
50
  this.updateExpirationEntry(entry.file.docId);
@@ -51,9 +54,9 @@ export class LocalPersistentCache implements IPersistedCache {
51
54
  this.removeDocIdEntriesFromCache(file.docId);
52
55
  }
53
56
 
54
- private removeDocIdEntriesFromCache(docId: string) {
57
+ private removeDocIdEntriesFromCache(docId: string): void[] {
55
58
  this.removeExpirationEntry(docId);
56
- return Array.from(this.cache)
59
+ return [...this.cache]
57
60
  .filter(([cachekey]) => {
58
61
  const docIdFromKey = cachekey.split("_");
59
62
  if (docIdFromKey[0] === docId) {
@@ -65,7 +68,7 @@ export class LocalPersistentCache implements IPersistedCache {
65
68
  });
66
69
  }
67
70
 
68
- private removeExpirationEntry(docId: string) {
71
+ private removeExpirationEntry(docId: string): void {
69
72
  const timeout = this.docIdExpirationMap.get(docId);
70
73
  if (timeout !== undefined) {
71
74
  clearTimeout(timeout);
@@ -73,7 +76,7 @@ export class LocalPersistentCache implements IPersistedCache {
73
76
  }
74
77
  }
75
78
 
76
- private updateExpirationEntry(docId: string) {
79
+ private updateExpirationEntry(docId: string): void {
77
80
  this.removeExpirationEntry(docId);
78
81
  this.docIdExpirationMap.set(
79
82
  docId,
@@ -84,7 +87,7 @@ export class LocalPersistentCache implements IPersistedCache {
84
87
  }
85
88
  }
86
89
  export class PromiseCacheWithOneHourSlidingExpiry<T> extends PromiseCache<string, T> {
87
- constructor(removeOnError?: (e: any) => boolean) {
90
+ constructor(removeOnError?: (error: unknown) => boolean) {
88
91
  super({ expiry: { policy: "sliding", durationMs: 3600000 }, removeOnError });
89
92
  }
90
93
  }
@@ -142,7 +145,7 @@ export class NonPersistentCache implements INonPersistentCache {
142
145
  /**
143
146
  * @alpha
144
147
  */
145
- export interface IPrefetchSnapshotContents extends ISnapshotContents {
148
+ export interface IPrefetchSnapshotContents extends ISnapshot {
146
149
  fluidEpoch: string;
147
150
  prefetchStartTime: number;
148
151
  }
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { performance } from "@fluid-internal/client-utils";
7
+ import { ISignalEnvelope } from "@fluidframework/core-interfaces";
7
8
  import { assert } from "@fluidframework/core-utils";
8
9
  import {
9
10
  IFluidErrorBase,
@@ -14,32 +15,37 @@ import {
14
15
  IDocumentDeltaConnection,
15
16
  IResolvedUrl,
16
17
  IDocumentServicePolicies,
17
- DriverErrorType,
18
18
  } from "@fluidframework/driver-definitions";
19
19
  import {
20
20
  DeltaStreamConnectionForbiddenError,
21
21
  NonRetryableError,
22
22
  } from "@fluidframework/driver-utils";
23
- import { IClient, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
23
+ import {
24
+ IClient,
25
+ ISequencedDocumentMessage,
26
+ ISignalMessage,
27
+ } from "@fluidframework/protocol-definitions";
24
28
  import {
25
29
  IOdspResolvedUrl,
26
30
  TokenFetchOptions,
27
31
  HostStoragePolicy,
28
32
  InstrumentedStorageTokenFetcher,
29
33
  ISocketStorageDiscovery,
30
- OdspErrorType,
34
+ OdspErrorTypes,
35
+ type IOdspError,
31
36
  } from "@fluidframework/odsp-driver-definitions";
32
- import { hasFacetCodes } from "@fluidframework/odsp-doclib-utils";
33
- import { IOdspCache } from "./odspCache";
34
- import { OdspDocumentDeltaConnection } from "./odspDocumentDeltaConnection";
37
+ import { hasFacetCodes } from "@fluidframework/odsp-doclib-utils/internal";
38
+ import { IOdspCache } from "./odspCache.js";
39
+ import { OdspDocumentDeltaConnection } from "./odspDocumentDeltaConnection.js";
35
40
  import {
36
41
  getJoinSessionCacheKey,
37
42
  getWithRetryForTokenRefresh,
38
43
  TokenFetchOptionsEx,
39
- } from "./odspUtils";
40
- import { fetchJoinSession } from "./vroom";
41
- import { EpochTracker } from "./epochTracker";
42
- import { pkgVersion as driverVersion } from "./packageVersion";
44
+ } from "./odspUtils.js";
45
+ import { fetchJoinSession } from "./vroom.js";
46
+ import { EpochTracker } from "./epochTracker.js";
47
+ import { pkgVersion as driverVersion } from "./packageVersion.js";
48
+ import { policyLabelsUpdatesSignalType } from "./contracts.js";
43
49
 
44
50
  /**
45
51
  * This OdspDelayLoadedDeltaStream is used by OdspDocumentService.ts to delay load the delta connection
@@ -55,6 +61,12 @@ export class OdspDelayLoadedDeltaStream {
55
61
 
56
62
  private _relayServiceTenantAndSessionId: string | undefined;
57
63
 
64
+ // Tracks the time at which the Policy Labels were updated the last time. This is used to resolve race conditions
65
+ // between label updates from the join session and the Fluid signals and they could have same or different timestamps.
66
+ // So this timestamp is updated with timestamp from the service/signals with the most recent timestamp. We could also
67
+ // receive stale data from join session as that call is made at intervals, so we need to update with only most recent data.
68
+ private labelUpdateTimestamp: number = -1;
69
+
58
70
  /**
59
71
  * @param odspResolvedUrl - resolved url identifying document that will be managed by this service instance.
60
72
  * @param policies - Document service policies.
@@ -82,6 +94,7 @@ export class OdspDelayLoadedDeltaStream {
82
94
  private readonly hostPolicy: HostStoragePolicy,
83
95
  private readonly epochTracker: EpochTracker,
84
96
  private readonly opsReceived: (ops: ISequencedDocumentMessage[]) => void,
97
+ private readonly metadataUpdateHandler: (metadata: Record<string, string>) => void,
85
98
  private readonly socketReferenceKeyPrefix?: string,
86
99
  ) {
87
100
  this.joinSessionKey = getJoinSessionCacheKey(this.odspResolvedUrl);
@@ -99,9 +112,11 @@ export class OdspDelayLoadedDeltaStream {
99
112
  return this._relayServiceTenantAndSessionId;
100
113
  }
101
114
 
102
- /** Annotate the given error indicating which connection step failed */
115
+ /**
116
+ * Annotate the given error indicating which connection step failed
117
+ */
103
118
  private annotateConnectionError(
104
- error: any,
119
+ error: unknown,
105
120
  failedConnectionStep: string,
106
121
  separateTokenRequest: boolean,
107
122
  ): IFluidErrorBase {
@@ -129,10 +144,11 @@ export class OdspDelayLoadedDeltaStream {
129
144
  // websocket token or whether it is returned with joinSession response payload
130
145
  const requestWebsocketTokenFromJoinSession = this.getWebsocketToken === undefined;
131
146
  const websocketTokenPromise = requestWebsocketTokenFromJoinSession
132
- ? Promise.resolve(null)
147
+ ? // eslint-disable-next-line unicorn/no-null
148
+ Promise.resolve(null)
133
149
  : this.getWebsocketToken!(options);
134
150
 
135
- const annotateAndRethrowConnectionError = (step: string) => (error: any) => {
151
+ const annotateAndRethrowConnectionError = (step: string) => (error: unknown) => {
136
152
  throw this.annotateConnectionError(
137
153
  error,
138
154
  step,
@@ -150,18 +166,24 @@ export class OdspDelayLoadedDeltaStream {
150
166
  websocketTokenPromise.catch(annotateAndRethrowConnectionError("getWebsocketToken")),
151
167
  ]);
152
168
 
169
+ // eslint-disable-next-line unicorn/no-null
153
170
  const finalWebsocketToken = websocketToken ?? websocketEndpoint.socketToken ?? null;
154
171
  if (finalWebsocketToken === null) {
155
172
  throw this.annotateConnectionError(
156
173
  new NonRetryableError(
157
174
  "Websocket token is null",
158
- OdspErrorType.fetchTokenError,
175
+ OdspErrorTypes.fetchTokenError,
159
176
  { driverVersion },
160
177
  ),
161
178
  "getWebsocketToken",
162
179
  !requestWebsocketTokenFromJoinSession,
163
180
  );
164
181
  }
182
+ if (websocketEndpoint.sensitivityLabelsInfo !== undefined) {
183
+ this.emitMetaDataUpdateEvent({
184
+ sensitivityLabelsInfo: websocketEndpoint.sensitivityLabelsInfo,
185
+ });
186
+ }
165
187
  try {
166
188
  const connection = await this.createDeltaConnection(
167
189
  websocketEndpoint.tenantId,
@@ -173,15 +195,19 @@ export class OdspDelayLoadedDeltaStream {
173
195
  connection.on("op", (documentId, ops: ISequencedDocumentMessage[]) => {
174
196
  this.opsReceived(ops);
175
197
  });
198
+ connection.on("signal", this.signalHandler);
199
+ // Also process the initial signals
200
+ this.signalHandler(connection.initialSignals);
176
201
  // On disconnect with 401/403 error code, we can just clear the joinSession cache as we will again
177
202
  // get the auth error on reconnecting and face latency.
178
- connection.once("disconnect", (error: any) => {
203
+ connection.once("disconnect", (error: unknown) => {
179
204
  // Clear the join session refresh timer so that it can be restarted on reconnection.
180
205
  this.clearJoinSessionTimer();
181
206
  if (
182
207
  typeof error === "object" &&
183
208
  error !== null &&
184
- error.errorType === DriverErrorType.authorizationError
209
+ (error as Partial<IOdspError>).errorType ===
210
+ OdspErrorTypes.authorizationError
185
211
  ) {
186
212
  this.cache.sessionJoinCache.remove(this.joinSessionKey);
187
213
  }
@@ -211,7 +237,29 @@ export class OdspDelayLoadedDeltaStream {
211
237
  });
212
238
  }
213
239
 
214
- private clearJoinSessionTimer() {
240
+ private readonly signalHandler = (signalsArg: ISignalMessage | ISignalMessage[]): void => {
241
+ const signals = Array.isArray(signalsArg) ? signalsArg : [signalsArg];
242
+ for (const signal of signals) {
243
+ // Make sure it is not for a specific client as `PolicyLabelsUpdate` is meant for all clients.
244
+ if (signal.clientId === null) {
245
+ // We could have some issues/irregularities in parsing signals, so put it in try/catch block
246
+ // and ignore the error as we can have labels update later on through join session response.
247
+ let envelope: ISignalEnvelope | undefined;
248
+ try {
249
+ envelope = JSON.parse(signal.content as string) as ISignalEnvelope;
250
+ } catch {
251
+ // Drop error
252
+ }
253
+ if (envelope?.contents?.type === policyLabelsUpdatesSignalType) {
254
+ this.emitMetaDataUpdateEvent({
255
+ sensitivityLabelsInfo: JSON.stringify(envelope.contents.content),
256
+ });
257
+ }
258
+ }
259
+ }
260
+ };
261
+
262
+ private clearJoinSessionTimer(): void {
215
263
  if (this.joinSessionRefreshTimer !== undefined) {
216
264
  clearTimeout(this.joinSessionRefreshTimer);
217
265
  this.joinSessionRefreshTimer = undefined;
@@ -222,10 +270,13 @@ export class OdspDelayLoadedDeltaStream {
222
270
  delta: number,
223
271
  requestSocketToken: boolean,
224
272
  clientId: string | undefined,
225
- ) {
273
+ ): Promise<void> {
226
274
  if (this.joinSessionRefreshTimer !== undefined) {
227
275
  this.clearJoinSessionTimer();
276
+ // TODO: use a stronger type
277
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
228
278
  const originalStackTraceLimit = (Error as any).stackTraceLimit;
279
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
229
280
  (Error as any).stackTraceLimit = 50;
230
281
  this.mc.logger.sendTelemetryEvent(
231
282
  {
@@ -233,6 +284,7 @@ export class OdspDelayLoadedDeltaStream {
233
284
  },
234
285
  new Error("DuplicateJoinSessionRefresh"),
235
286
  );
287
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
236
288
  (Error as any).stackTraceLimit = originalStackTraceLimit;
237
289
  }
238
290
 
@@ -260,7 +312,7 @@ export class OdspDelayLoadedDeltaStream {
260
312
  options: TokenFetchOptionsEx,
261
313
  isRefreshingJoinSession: boolean,
262
314
  clientId?: string,
263
- ) {
315
+ ): Promise<ISocketStorageDiscovery> {
264
316
  // If this call is to refresh the join session for the current connection but we are already disconnected in
265
317
  // the meantime or disconnected and then reconnected then do not make the call. However, we should not have
266
318
  // come here if that is the case because timer should have been disposed, but due to race condition with the
@@ -273,7 +325,7 @@ export class OdspDelayLoadedDeltaStream {
273
325
  this.clearJoinSessionTimer();
274
326
  throw new NonRetryableError(
275
327
  "JoinSessionRefreshTimerNotCancelled",
276
- DriverErrorType.genericError,
328
+ OdspErrorTypes.genericError,
277
329
  {
278
330
  driverVersion,
279
331
  details: JSON.stringify({
@@ -287,16 +339,16 @@ export class OdspDelayLoadedDeltaStream {
287
339
  requestSocketToken,
288
340
  options,
289
341
  isRefreshingJoinSession,
290
- ).catch((e) => {
291
- if (hasFacetCodes(e) && e.facetCodes !== undefined) {
292
- for (const code of e.facetCodes) {
342
+ ).catch((error) => {
343
+ if (hasFacetCodes(error) && error.facetCodes !== undefined) {
344
+ for (const code of error.facetCodes) {
293
345
  switch (code) {
294
346
  case "sessionForbidden":
295
347
  case "sessionForbiddenOnPreservedFiles":
296
348
  case "sessionForbiddenOnModerationEnabledLibrary":
297
349
  case "sessionForbiddenOnRequireCheckout":
298
350
  case "sessionForbiddenOnCheckoutFile":
299
- case "sessionForbiddenOnInvisibleMinorVersion":
351
+ case "sessionForbiddenOnInvisibleMinorVersion": {
300
352
  // This document can only be opened in storage-only mode.
301
353
  // DeltaManager will recognize this error
302
354
  // and load without a delta stream connection.
@@ -306,12 +358,14 @@ export class OdspDelayLoadedDeltaStream {
306
358
  { driverVersion },
307
359
  code,
308
360
  );
309
- default:
361
+ }
362
+ default: {
310
363
  continue;
364
+ }
311
365
  }
312
366
  }
313
367
  }
314
- throw e;
368
+ throw error;
315
369
  });
316
370
  this._relayServiceTenantAndSessionId = `${response.tenantId}/${response.id}`;
317
371
  return response;
@@ -325,7 +379,10 @@ export class OdspDelayLoadedDeltaStream {
325
379
  const disableJoinSessionRefresh = this.mc.config.getBoolean(
326
380
  "Fluid.Driver.Odsp.disableJoinSessionRefresh",
327
381
  );
328
- const executeFetch = async () => {
382
+ const executeFetch = async (): Promise<{
383
+ entryTime: number;
384
+ joinSessionResponse: ISocketStorageDiscovery;
385
+ }> => {
329
386
  const joinSessionResponse = await fetchJoinSession(
330
387
  this.odspResolvedUrl,
331
388
  "opStream/joinSession",
@@ -339,13 +396,23 @@ export class OdspDelayLoadedDeltaStream {
339
396
  isRefreshingJoinSession,
340
397
  this.hostPolicy.sessionOptions?.unauthenticatedUserDisplayName,
341
398
  );
399
+ // Emit event only in case it is fetched from the network.
400
+ if (joinSessionResponse.sensitivityLabelsInfo !== undefined) {
401
+ this.emitMetaDataUpdateEvent({
402
+ sensitivityLabelsInfo: joinSessionResponse.sensitivityLabelsInfo,
403
+ });
404
+ }
342
405
  return {
343
406
  entryTime: Date.now(),
344
407
  joinSessionResponse,
345
408
  };
346
409
  };
347
410
 
348
- const getResponseAndRefreshAfterDeltaMs = async () => {
411
+ const getResponseAndRefreshAfterDeltaMs = async (): Promise<{
412
+ refreshAfterDeltaMs: number;
413
+ entryTime: number;
414
+ joinSessionResponse: ISocketStorageDiscovery;
415
+ }> => {
349
416
  const _response = await this.cache.sessionJoinCache.addOrGet(
350
417
  this.joinSessionKey,
351
418
  executeFetch,
@@ -402,10 +469,25 @@ export class OdspDelayLoadedDeltaStream {
402
469
  return response.joinSessionResponse;
403
470
  }
404
471
 
472
+ private emitMetaDataUpdateEvent(metadata: Record<string, string>): void {
473
+ const label = JSON.parse(metadata.sensitivityLabelsInfo) as {
474
+ labels: unknown;
475
+ timestamp: number;
476
+ };
477
+ const time = label.timestamp;
478
+ assert(time > 0, 0x8e0 /* time should be positive */);
479
+ if (time > this.labelUpdateTimestamp) {
480
+ this.labelUpdateTimestamp = time;
481
+ this.metadataUpdateHandler({
482
+ sensitivityLabelsInfo: metadata.sensitivityLabelsInfo,
483
+ });
484
+ }
485
+ }
486
+
405
487
  private calculateJoinSessionRefreshDelta(
406
488
  responseFetchTime: number,
407
489
  refreshSessionDurationSeconds: number,
408
- ) {
490
+ ): number {
409
491
  // 30 seconds is buffer time to refresh the session.
410
492
  return responseFetchTime + (refreshSessionDurationSeconds * 1000 - 30000) - Date.now();
411
493
  }
@@ -451,7 +533,7 @@ export class OdspDelayLoadedDeltaStream {
451
533
  return connection;
452
534
  }
453
535
 
454
- public dispose(error?: any) {
536
+ public dispose(error?: unknown): void {
455
537
  this.clearJoinSessionTimer();
456
538
  this.currentConnection?.dispose();
457
539
  this.currentConnection = undefined;