@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
@@ -5,51 +5,27 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.OdspDocumentDeltaConnection = void 0;
8
- const common_utils_1 = require("@fluidframework/common-utils");
9
- const driver_base_1 = require("@fluidframework/driver-base");
10
8
  const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
9
+ const client_utils_1 = require("@fluid-internal/client-utils");
10
+ const core_utils_1 = require("@fluidframework/core-utils");
11
+ const driver_base_1 = require("@fluidframework/driver-base");
11
12
  const uuid_1 = require("uuid");
12
- const odspError_1 = require("./odspError");
13
- const packageVersion_1 = require("./packageVersion");
13
+ const driver_utils_1 = require("@fluidframework/driver-utils");
14
+ const odspError_1 = require("./odspError.cjs");
15
+ const socketModule_1 = require("./socketModule.cjs");
16
+ const packageVersion_1 = require("./packageVersion.cjs");
14
17
  const protocolVersions = ["^0.4.0", "^0.3.0", "^0.2.0", "^0.1.0"];
15
18
  const feature_get_ops = "api_get_ops";
16
19
  const feature_flush_ops = "api_flush_ops";
20
+ const feature_submit_signals_v2 = "submit_signals_v2";
17
21
  // How long to wait before disconnecting the socket after the last reference is removed
18
22
  // This allows reconnection after receiving a nack to be smooth
19
23
  const socketReferenceBufferTime = 2000;
20
- class SocketReference extends common_utils_1.TypedEventEmitter {
21
- constructor(key, socket) {
22
- super();
23
- this.key = key;
24
- this.references = 1;
25
- // When making decisions about socket reuse, we do not reuse disconnected socket.
26
- // But we want to differentiate the following case from disconnected case:
27
- // Socket that never connected and never failed, it's in "attempting to connect" mode
28
- // such sockets should be reused, despite socket.disconnected === true
29
- this.isPendingInitialConnection = true;
30
- this._socket = socket;
31
- (0, common_utils_1.assert)(!SocketReference.socketIoSockets.has(key), 0x220 /* "socket key collision" */);
32
- SocketReference.socketIoSockets.set(key, this);
33
- // The server always closes the socket after sending this message
34
- // fully remove the socket reference now
35
- socket.on("server_disconnect", (socketError) => {
36
- // Treat all errors as recoverable, and rely on joinSession / reconnection flow to
37
- // filter out retryable vs. non-retryable cases.
38
- const error = (0, odspError_1.errorObjectFromSocketError)(socketError, "server_disconnect");
39
- error.canRetry = true;
40
- // see comment in disconnected() getter
41
- // Setting it here to ensure socket reuse does not happen if new request to connect
42
- // comes in from "disconnect" listener below, before we close socket.
43
- this.isPendingInitialConnection = false;
44
- // Explicitly cast error to the specified event args type to ensure type compatibility
45
- this.emit("server_disconnect", error);
46
- this.closeSocket();
47
- });
48
- }
24
+ class SocketReference extends client_utils_1.TypedEventEmitter {
49
25
  static find(key, logger) {
50
26
  const socketReference = SocketReference.socketIoSockets.get(key);
51
27
  // Verify the socket is healthy before reusing it
52
- if (socketReference === null || socketReference === void 0 ? void 0 : socketReference.disconnected) {
28
+ if (socketReference?.disconnected) {
53
29
  // The socket is in a bad state. fully remove the reference
54
30
  socketReference.closeSocket();
55
31
  return undefined;
@@ -64,22 +40,20 @@ class SocketReference extends common_utils_1.TypedEventEmitter {
64
40
  /**
65
41
  * Removes a reference for the given key
66
42
  * Once the ref count hits 0, the socket is disconnected and removed
67
- * @param key - socket reference key
68
- * @param isFatalError - true if the socket reference should be removed immediately due to a fatal error
69
43
  */
70
- removeSocketIoReference(isFatalError) {
71
- (0, common_utils_1.assert)(this.references > 0, 0x09f /* "No more socketIO refs to remove!" */);
44
+ removeSocketIoReference() {
45
+ (0, core_utils_1.assert)(this.references > 0, 0x09f /* "No more socketIO refs to remove!" */);
72
46
  this.references--;
73
47
  // see comment in disconnected() getter
74
48
  this.isPendingInitialConnection = false;
75
- if (isFatalError || this.disconnected) {
49
+ if (this.disconnected) {
76
50
  this.closeSocket();
77
51
  return;
78
52
  }
79
53
  if (this.references === 0 && this.delayDeleteTimeout === undefined) {
80
54
  this.delayDeleteTimeout = setTimeout(() => {
81
55
  // We should not get here with active users.
82
- (0, common_utils_1.assert)(this.references === 0, 0x0a0 /* "Unexpected socketIO references on timeout" */);
56
+ (0, core_utils_1.assert)(this.references === 0, 0x0a0 /* "Unexpected socketIO references on timeout" */);
83
57
  this.closeSocket();
84
58
  }, socketReferenceBufferTime);
85
59
  }
@@ -90,27 +64,68 @@ class SocketReference extends common_utils_1.TypedEventEmitter {
90
64
  }
91
65
  return this._socket;
92
66
  }
67
+ constructor(key, socket) {
68
+ super();
69
+ this.key = key;
70
+ this.references = 1;
71
+ // When making decisions about socket reuse, we do not reuse disconnected socket.
72
+ // But we want to differentiate the following case from disconnected case:
73
+ // Socket that never connected and never failed, it's in "attempting to connect" mode
74
+ // such sockets should be reused, despite socket.disconnected === true
75
+ this.isPendingInitialConnection = true;
76
+ this.serverDisconnectEventHandler = (socketError, clientId) => {
77
+ // Treat all errors as recoverable, and rely on joinSession / reconnection flow to
78
+ // filter out retryable vs. non-retryable cases.
79
+ const error = (0, odspError_1.errorObjectFromSocketError)(socketError, "server_disconnect");
80
+ error.addTelemetryProperties({ disconnectClientId: clientId });
81
+ error.canRetry = true;
82
+ // see comment in disconnected() getter
83
+ // Setting it here to ensure socket reuse does not happen if new request to connect
84
+ // comes in from "disconnect" listener below, before we close socket.
85
+ this.isPendingInitialConnection = false;
86
+ if (clientId === undefined) {
87
+ // We could first raise "disconnect" event, but that may result in socket reuse due to
88
+ // new connection comming in. So, it's better to have more explicit flow to make it impossible.
89
+ this.closeSocket(error);
90
+ }
91
+ else {
92
+ this.emit("disconnect", error, clientId);
93
+ }
94
+ };
95
+ this._socket = socket;
96
+ (0, core_utils_1.assert)(!SocketReference.socketIoSockets.has(key), 0x220 /* "socket key collision" */);
97
+ SocketReference.socketIoSockets.set(key, this);
98
+ // Server sends this event when it wants to disconnect a particular client in which case the client id would
99
+ // be present or if it wants to disconnect all the clients. The server always closes the socket in case all
100
+ // clients needs to be disconnected. So fully remove the socket reference in this case.
101
+ socket.on("server_disconnect", this.serverDisconnectEventHandler);
102
+ }
93
103
  clearTimer() {
94
104
  if (this.delayDeleteTimeout !== undefined) {
95
105
  clearTimeout(this.delayDeleteTimeout);
96
106
  this.delayDeleteTimeout = undefined;
97
107
  }
98
108
  }
99
- closeSocket() {
109
+ closeSocket(error) {
100
110
  if (!this._socket) {
101
111
  return;
102
112
  }
113
+ this._socket.off("server_disconnect", this.serverDisconnectEventHandler);
103
114
  this.clearTimer();
104
- (0, common_utils_1.assert)(SocketReference.socketIoSockets.get(this.key) === this, 0x0a1 /* "Socket reference set unexpectedly does not point to this socket!" */);
115
+ (0, core_utils_1.assert)(SocketReference.socketIoSockets.get(this.key) === this, 0x0a1 /* "Socket reference set unexpectedly does not point to this socket!" */);
116
+ // First, remove socket to ensure no socket reuse is possible.
105
117
  SocketReference.socketIoSockets.delete(this.key);
118
+ // Block access to socket. From now on, calls like flush() or requestOps()
119
+ // Disconnect flow should be synchronous and result in system fully forgetting about this connection / socket.
106
120
  const socket = this._socket;
107
121
  this._socket = undefined;
108
- // Delay closing socket, to make sure all users of socket observe the same event that causes
109
- // this instance to close, and thus properly record reason for closure.
110
- // All event raising is synchronous, so clients will have a chance to react before socket is
111
- // closed without any extra data on why it was closed.
112
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
113
- Promise.resolve().then(() => { socket.disconnect(); });
122
+ // Let all connections know they need to go through disconnect flow.
123
+ this.emit("disconnect", error ??
124
+ (0, driver_utils_1.createGenericNetworkError)("Socket closed without error", { canRetry: true }, { driverVersion: packageVersion_1.pkgVersion }), undefined /* clientId */);
125
+ // We should not have any users now, assuming synchronous disconnect flow in response to
126
+ // "disconnect" event
127
+ (0, core_utils_1.assert)(this.references === 0, 0x412 /* Nobody should be connected to this socket at this point! */);
128
+ socket.disconnect();
114
129
  }
115
130
  get disconnected() {
116
131
  if (this._socket === undefined) {
@@ -135,25 +150,6 @@ SocketReference.socketIoSockets = new Map();
135
150
  * Represents a connection to a stream of delta updates
136
151
  */
137
152
  class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection {
138
- /**
139
- * @param socket - websocket to be used
140
- * @param documentId - ID of the document
141
- * @param details - details of the websocket connection
142
- * @param socketReferenceKey - socket reference key
143
- * @param enableMultiplexing - If the websocket is multiplexing multiple documents
144
- */
145
- constructor(socket, documentId, socketReference, logger, enableMultiplexing) {
146
- super(socket, documentId, logger);
147
- this.enableMultiplexing = enableMultiplexing;
148
- this.pushCallCounter = 0;
149
- this.getOpsMap = new Map();
150
- this.serverDisconnectHandler = (error) => {
151
- this.logger.sendTelemetryEvent({ eventName: "ServerDisconnect", clientId: this.clientId }, error);
152
- this.disposeCore(true, error);
153
- };
154
- this.socketReference = socketReference;
155
- this.requestOpsNoncePrefix = `${(0, uuid_1.v4)()}-`;
156
- }
157
153
  /**
158
154
  * Create a OdspDocumentDeltaConnection
159
155
  * If url #1 fails to connect, will try url #2 if applicable.
@@ -161,7 +157,6 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
161
157
  * @param tenantId - the ID of the tenant
162
158
  * @param documentId - document ID
163
159
  * @param token - authorization token for storage service
164
- * @param io - websocket library
165
160
  * @param client - information about the client
166
161
  * @param mode - mode of the client
167
162
  * @param url - websocket URL
@@ -170,7 +165,9 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
170
165
  * @param epochTracker - track epoch changes
171
166
  * @param socketReferenceKeyPrefix - (optional) prefix to isolate socket reuse cache
172
167
  */
173
- static async create(tenantId, documentId, token, io, client, url, telemetryLogger, timeoutMs, epochTracker, socketReferenceKeyPrefix) {
168
+ static async create(tenantId, documentId,
169
+ // eslint-disable-next-line @rushstack/no-new-null
170
+ token, client, url, telemetryLogger, timeoutMs, epochTracker, socketReferenceKeyPrefix) {
174
171
  const mc = (0, telemetry_utils_1.loggerToMonitoringContext)(telemetryLogger);
175
172
  // enable multiplexing when the websocket url does not include the tenant/document id
176
173
  const parsedUrl = new URL(url);
@@ -179,8 +176,9 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
179
176
  // this will allow multiple documents to share the same websocket connection
180
177
  const key = socketReferenceKeyPrefix ? `${socketReferenceKeyPrefix},${url}` : url;
181
178
  const socketReferenceKey = enableMultiplexing ? key : `${key},${tenantId},${documentId}`;
182
- const socketReference = OdspDocumentDeltaConnection.getOrCreateSocketIoReference(io, timeoutMs, socketReferenceKey, url, enableMultiplexing, tenantId, documentId, telemetryLogger);
179
+ const socketReference = OdspDocumentDeltaConnection.getOrCreateSocketIoReference(timeoutMs, socketReferenceKey, url, enableMultiplexing, tenantId, documentId, telemetryLogger);
183
180
  const socket = socketReference.socket;
181
+ const connectionId = (0, uuid_1.v4)();
184
182
  const connectMessage = {
185
183
  client,
186
184
  id: documentId,
@@ -188,19 +186,22 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
188
186
  tenantId,
189
187
  token,
190
188
  versions: protocolVersions,
191
- nonce: (0, uuid_1.v4)(),
189
+ driverVersion: packageVersion_1.pkgVersion,
190
+ nonce: connectionId,
192
191
  epoch: epochTracker.fluidEpoch,
193
192
  relayUserAgent: [client.details.environment, ` driverVersion:${packageVersion_1.pkgVersion}`].join(";"),
194
193
  };
194
+ connectMessage.supportedFeatures = {
195
+ [feature_submit_signals_v2]: true,
196
+ };
195
197
  // Reference to this client supporting get_ops flow.
196
- connectMessage.supportedFeatures = {};
197
198
  if (mc.config.getBoolean("Fluid.Driver.Odsp.GetOpsEnabled") !== false) {
198
199
  connectMessage.supportedFeatures[feature_get_ops] = true;
199
200
  }
200
- const deltaConnection = new OdspDocumentDeltaConnection(socket, documentId, socketReference, telemetryLogger, enableMultiplexing);
201
+ const deltaConnection = new OdspDocumentDeltaConnection(socket, documentId, socketReference, telemetryLogger, enableMultiplexing, connectionId);
201
202
  try {
202
203
  await deltaConnection.initialize(connectMessage, timeoutMs);
203
- await epochTracker.validateEpochFromPush(deltaConnection.details);
204
+ await epochTracker.validateEpoch(deltaConnection.details.epoch, "push");
204
205
  }
205
206
  catch (errorObject) {
206
207
  if (errorObject !== null && typeof errorObject === "object") {
@@ -232,23 +233,20 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
232
233
  // Note: we suspect the incoming error object is either:
233
234
  // - a socketError: add it to the OdspError object for driver to be able to parse it and reason over it.
234
235
  // - anything else: let base class handle it
235
- if (canRetry && Number.isInteger(error === null || error === void 0 ? void 0 : error.code) && typeof (error === null || error === void 0 ? void 0 : error.message) === "string") {
236
- return (0, odspError_1.errorObjectFromSocketError)(error, handler);
237
- }
238
- else {
239
- return super.createErrorObject(handler, error, canRetry);
240
- }
236
+ return canRetry && Number.isInteger(error?.code) && typeof error?.message === "string"
237
+ ? (0, odspError_1.errorObjectFromSocketError)(error, handler)
238
+ : super.createErrorObject(handler, error, canRetry);
241
239
  }
242
240
  /**
243
241
  * Gets or create a socket io connection for the given key
244
242
  */
245
- static getOrCreateSocketIoReference(io, timeoutMs, key, url, enableMultiplexing, tenantId, documentId, logger) {
243
+ static getOrCreateSocketIoReference(timeoutMs, key, url, enableMultiplexing, tenantId, documentId, logger) {
246
244
  const existingSocketReference = SocketReference.find(key, logger);
247
245
  if (existingSocketReference) {
248
246
  return existingSocketReference;
249
247
  }
250
248
  const query = enableMultiplexing ? undefined : { documentId, tenantId };
251
- const socket = io(url, {
249
+ const socket = (0, socketModule_1.SocketIOClientStatic)(url, {
252
250
  multiplex: false,
253
251
  query,
254
252
  reconnection: false,
@@ -257,6 +255,33 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
257
255
  });
258
256
  return new SocketReference(key, socket);
259
257
  }
258
+ /**
259
+ * @param socket - websocket to be used
260
+ * @param documentId - ID of the document
261
+ * @param details - details of the websocket connection
262
+ * @param socketReferenceKey - socket reference key
263
+ * @param enableMultiplexing - If the websocket is multiplexing multiple documents
264
+ */
265
+ constructor(socket, documentId, socketReference, logger, enableMultiplexing, connectionId) {
266
+ super(socket, documentId, logger, false, connectionId);
267
+ this.enableMultiplexing = enableMultiplexing;
268
+ this.pushCallCounter = 0;
269
+ this.getOpsMap = new Map();
270
+ this.disconnectHandler = (error, clientId) => {
271
+ if (clientId === undefined || clientId === this.clientId) {
272
+ this.logger.sendTelemetryEvent({
273
+ eventName: "ServerDisconnect",
274
+ driverVersion: packageVersion_1.pkgVersion,
275
+ details: JSON.stringify({
276
+ ...this.getConnectionDetailsProps(),
277
+ }),
278
+ }, error);
279
+ this.disconnect(error);
280
+ }
281
+ };
282
+ this.socketReference = socketReference;
283
+ this.requestOpsNoncePrefix = `${(0, uuid_1.v4)()}-`;
284
+ }
260
285
  /**
261
286
  * Retrieves ops from PUSH
262
287
  * @param from - inclusive
@@ -264,17 +289,17 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
264
289
  * @returns ops retrieved
265
290
  */
266
291
  requestOps(from, to) {
267
- var _a;
292
+ (0, core_utils_1.assert)(!this.socketReference?.disconnected, 0x413 /* non-active socket */);
268
293
  // Given that to is exclusive, we should be asking for at least something!
269
- (0, common_utils_1.assert)(to > from, 0x272 /* "empty request" */);
294
+ (0, core_utils_1.assert)(to > from, 0x272 /* "empty request" */);
270
295
  // PUSH may disable this functionality
271
296
  // back-compat: remove cast to any once latest version of IConnected is consumed
272
- if (((_a = this.details.supportedFeatures) === null || _a === void 0 ? void 0 : _a[feature_get_ops]) !== true) {
297
+ if (this.details.supportedFeatures?.[feature_get_ops] !== true) {
273
298
  return;
274
299
  }
275
300
  this.pushCallCounter++;
276
301
  const nonce = `${this.requestOpsNoncePrefix}${this.pushCallCounter}`;
277
- const start = common_utils_1.performance.now();
302
+ const start = client_utils_1.performance.now();
278
303
  // We may keep keep accumulating memory for nothing, if we are not getting responses.
279
304
  // Note that we should not have overlapping requests, as DeltaManager allows only one
280
305
  // outstanding request to storage, and that's the only way to get here.
@@ -298,7 +323,7 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
298
323
  from: payloadToDelete.from,
299
324
  to: payloadToDelete.to,
300
325
  length: payloadToDelete.to - payloadToDelete.from,
301
- duration: common_utils_1.performance.now() - payloadToDelete.start,
326
+ duration: client_utils_1.performance.now() - payloadToDelete.start,
302
327
  });
303
328
  this.getOpsMap.delete(key);
304
329
  }
@@ -314,9 +339,9 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
314
339
  });
315
340
  }
316
341
  async flush() {
317
- var _a;
342
+ (0, core_utils_1.assert)(!this.socketReference?.disconnected, 0x414 /* non-active socket */);
318
343
  // back-compat: remove cast to any once latest version of IConnected is consumed
319
- if (((_a = this.details.supportedFeatures) === null || _a === void 0 ? void 0 : _a[feature_flush_ops]) !== true) {
344
+ if (this.details.supportedFeatures?.[feature_flush_ops] !== true) {
320
345
  // Once single-commit summary is enabled end-to-end, flush support is a must!
321
346
  // The only alternative is change in design where SPO fetches ops from PUSH OR
322
347
  // summary includes required ops and SPO has some validation mechanism to ensure
@@ -336,10 +361,11 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
336
361
  }
337
362
  this.socket.emit("flush_ops", this.clientId, { nonce });
338
363
  this.flushOpNonce = nonce;
339
- this.flushDeferred = new common_utils_1.Deferred();
364
+ this.flushDeferred = new core_utils_1.Deferred();
340
365
  return this.flushDeferred.promise;
341
366
  }
342
367
  async initialize(connectMessage, timeout) {
368
+ (0, core_utils_1.assert)(!this.socketReference?.disconnected, 0x415 /* non-active socket */);
343
369
  if (this.enableMultiplexing) {
344
370
  // multiplex compatible early handlers
345
371
  this.earlyOpHandler = (messageDocumentId, msgs) => {
@@ -349,39 +375,52 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
349
375
  };
350
376
  this.earlySignalHandler = (msg, messageDocumentId) => {
351
377
  if (messageDocumentId === undefined || messageDocumentId === this.documentId) {
352
- this.queuedSignals.push(msg);
378
+ if (Array.isArray(msg)) {
379
+ this.queuedSignals.push(...msg);
380
+ }
381
+ else {
382
+ this.queuedSignals.push(msg);
383
+ }
353
384
  }
354
385
  };
355
386
  }
356
- this.socketReference.on("server_disconnect", this.serverDisconnectHandler);
357
- this.socket.on("get_ops_response", (result) => {
387
+ this.socketReference.on("disconnect", this.disconnectHandler);
388
+ this.addTrackedListener("get_ops_response", (result) => {
358
389
  const messages = result.messages;
359
390
  const data = this.getOpsMap.get(result.nonce);
360
391
  // Due to socket multiplexing, this client may not have asked for any data
361
392
  // If so, there it most likely does not need these ops (otherwise it already asked for them)
362
393
  // Also we may have deleted entry in this.getOpsMap due to too many requests and too slow response.
363
394
  // But not processing such result may push us into infinite loop of fast requests and dropping all responses
364
- if (data !== undefined || result.nonce.indexOf(this.requestOpsNoncePrefix) === 0) {
395
+ if (data !== undefined || result.nonce.startsWith(this.requestOpsNoncePrefix)) {
365
396
  this.getOpsMap.delete(result.nonce);
366
397
  const common = {
367
398
  eventName: "GetOps",
368
399
  // We need nonce only to pair with GetOpsTooMany events, i.e. when record was deleted
369
400
  nonce: data === undefined ? result.nonce : undefined,
370
401
  code: result.code,
371
- from: data === null || data === void 0 ? void 0 : data.from,
372
- to: data === null || data === void 0 ? void 0 : data.to,
373
- duration: data === undefined ? undefined : common_utils_1.performance.now() - data.start,
402
+ from: data?.from,
403
+ to: data?.to,
404
+ duration: data === undefined ? undefined : client_utils_1.performance.now() - data.start,
374
405
  };
375
406
  if (messages !== undefined && messages.length > 0) {
376
- this.logger.sendPerformanceEvent(Object.assign(Object.assign({}, common), { first: messages[0].sequenceNumber, last: messages[messages.length - 1].sequenceNumber, length: messages.length }));
407
+ this.logger.sendPerformanceEvent({
408
+ ...common,
409
+ first: messages[0].sequenceNumber,
410
+ last: messages[messages.length - 1].sequenceNumber,
411
+ length: messages.length,
412
+ });
377
413
  this.emit("op", this.documentId, messages);
378
414
  }
379
415
  else {
380
- this.logger.sendPerformanceEvent(Object.assign(Object.assign({}, common), { length: 0 }));
416
+ this.logger.sendPerformanceEvent({
417
+ ...common,
418
+ length: 0,
419
+ });
381
420
  }
382
421
  }
383
422
  });
384
- this.socket.on("flush_ops_response", (result) => {
423
+ this.addTrackedListener("flush_ops_response", (result) => {
385
424
  if (this.flushOpNonce === result.nonce) {
386
425
  const seq = result.lastPersistedSequenceNumber;
387
426
  let category = "generic";
@@ -409,7 +448,12 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
409
448
  this.flushOpNonce = undefined;
410
449
  }
411
450
  });
412
- await super.initialize(connectMessage, timeout);
451
+ await super.initialize(connectMessage, timeout).finally(() => {
452
+ this.logger.sendTelemetryEvent({
453
+ eventName: "ConnectionAttemptInfo",
454
+ ...this.getConnectionDetailsProps(),
455
+ });
456
+ });
413
457
  }
414
458
  addTrackedListener(event, listener) {
415
459
  // override some event listeners in order to support multiple documents/clients over the same websocket
@@ -425,7 +469,9 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
425
469
  case "signal":
426
470
  // per document signal handling
427
471
  super.addTrackedListener(event, (msg, documentId) => {
428
- if (!this.enableMultiplexing || !documentId || documentId === this.documentId) {
472
+ if (!this.enableMultiplexing ||
473
+ !documentId ||
474
+ documentId === this.documentId) {
429
475
  listener(msg, documentId);
430
476
  }
431
477
  });
@@ -433,11 +479,11 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
433
479
  case "nack":
434
480
  // per client / document nack handling
435
481
  super.addTrackedListener(event, (clientIdOrDocumentId, nacks) => {
436
- var _a, _b;
437
482
  const handle = clientIdOrDocumentId.length === 0 ||
438
483
  clientIdOrDocumentId === this.documentId ||
439
- (clientIdOrDocumentId === this.clientId);
440
- const { code, type, message, retryAfter } = (_b = (_a = nacks[0]) === null || _a === void 0 ? void 0 : _a.content) !== null && _b !== void 0 ? _b : {};
484
+ clientIdOrDocumentId === this.clientId;
485
+ const { code, type, message, retryAfter } = nacks[0]?.content ?? {};
486
+ const { clientSequenceNumber, referenceSequenceNumber } = nacks[0]?.operation ?? {};
441
487
  this.logger.sendTelemetryEvent({
442
488
  eventName: "ServerNack",
443
489
  code,
@@ -446,6 +492,9 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
446
492
  retryAfterSeconds: retryAfter,
447
493
  clientId: this.clientId,
448
494
  handle,
495
+ clientSequenceNumber,
496
+ referenceSequenceNumber,
497
+ opType: nacks[0]?.operation?.type,
449
498
  });
450
499
  if (handle) {
451
500
  this.emit("nack", clientIdOrDocumentId, nacks);
@@ -457,22 +506,84 @@ class OdspDocumentDeltaConnection extends driver_base_1.DocumentDeltaConnection
457
506
  break;
458
507
  }
459
508
  }
509
+ get disposed() {
510
+ if (!(this._disposed || this.socket.connected)) {
511
+ // Send error event if this connection is not yet disposed after socket is disconnected for 15s.
512
+ if (this.connectionNotYetDisposedTimeout === undefined) {
513
+ this.connectionNotYetDisposedTimeout = setTimeout(() => {
514
+ if (!this._disposed) {
515
+ this.logger.sendErrorEvent({
516
+ eventName: "ConnectionNotYetDisposed",
517
+ driverVersion: packageVersion_1.pkgVersion,
518
+ details: JSON.stringify({
519
+ ...this.getConnectionDetailsProps(),
520
+ }),
521
+ });
522
+ }
523
+ }, 15000);
524
+ }
525
+ }
526
+ return this._disposed;
527
+ }
528
+ /**
529
+ * Returns true in case the connection is not yet disposed and the socket is also connected. The expectation is
530
+ * that it will be called only after connection is fully established. i.e. there should no way to submit an op
531
+ * while we are connecting, as connection object is not exposed to Loader layer until connection is established.
532
+ */
533
+ get connected() {
534
+ return !this.disposed && this.socket.connected;
535
+ }
536
+ emitMessages(type, messages) {
537
+ // Only submit the op/signals if we are connected.
538
+ if (this.connected) {
539
+ this.socket.emit(type, this.clientId, messages);
540
+ }
541
+ }
542
+ /**
543
+ * Submits a new delta operation to the server
544
+ * @param message - delta operation to submit
545
+ */
546
+ submit(messages) {
547
+ this.emitMessages("submitOp", [messages]);
548
+ }
549
+ /**
550
+ * Submits a new signal to the server
551
+ *
552
+ * @param content - Content of the signal.
553
+ * @param targetClientId - When specified, the signal is only sent to the provided client id.
554
+ */
555
+ submitSignal(content, targetClientId) {
556
+ const signal = {
557
+ content,
558
+ targetClientId,
559
+ };
560
+ // back-compat: the typing for this method and emitMessages is incorrect, will be fixed in a future PR
561
+ this.emitMessages("submitSignal", [signal]);
562
+ }
563
+ /**
564
+ * Critical path where we need to also close the socket for an error.
565
+ * @param error - Error causing the socket to close.
566
+ */
567
+ closeSocketCore(error) {
568
+ const socket = this.socketReference;
569
+ (0, core_utils_1.assert)(socket !== undefined, 0x416 /* reentrancy not supported in close socket */);
570
+ socket.closeSocket(error);
571
+ (0, core_utils_1.assert)(this.socketReference === undefined, 0x417 /* disconnect flow did not work correctly */);
572
+ }
460
573
  /**
461
574
  * Disconnect from the websocket
462
575
  */
463
- disconnect(socketProtocolError, reason) {
464
- var _a;
576
+ disconnectCore() {
465
577
  const socket = this.socketReference;
466
- (0, common_utils_1.assert)(socket !== undefined, 0x0a2 /* "reentrancy not supported!" */);
467
- (_a = this.socketReference) === null || _a === void 0 ? void 0 : _a.off("server_disconnect", this.serverDisconnectHandler);
578
+ (0, core_utils_1.assert)(socket !== undefined, 0x0a2 /* "reentrancy not supported!" */);
468
579
  this.socketReference = undefined;
469
- if (!socketProtocolError && this.hasDetails) {
580
+ socket.off("disconnect", this.disconnectHandler);
581
+ if (this.hasDetails) {
470
582
  // tell the server we are disconnecting this client from the document
471
583
  this.socket.emit("disconnect_document", this.clientId, this.documentId);
472
584
  }
473
- socket.removeSocketIoReference(socketProtocolError);
474
- this.emit("disconnect", reason);
585
+ socket.removeSocketIoReference();
475
586
  }
476
587
  }
477
588
  exports.OdspDocumentDeltaConnection = OdspDocumentDeltaConnection;
478
- //# sourceMappingURL=odspDocumentDeltaConnection.js.map
589
+ //# sourceMappingURL=odspDocumentDeltaConnection.cjs.map