@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.
- package/.eslintrc.cjs +33 -0
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +44 -0
- package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/odsp-driver.api.md +16 -17
- package/dist/ReadBufferUtils.d.ts.map +1 -1
- package/dist/ReadBufferUtils.js.map +1 -1
- package/dist/WriteBufferUtils.d.ts +1 -1
- package/dist/WriteBufferUtils.d.ts.map +1 -1
- package/dist/WriteBufferUtils.js +12 -12
- package/dist/WriteBufferUtils.js.map +1 -1
- package/dist/checkUrl.d.ts.map +1 -1
- package/dist/checkUrl.js +5 -3
- package/dist/checkUrl.js.map +1 -1
- package/dist/compactSnapshotParser.d.ts +2 -2
- package/dist/compactSnapshotParser.d.ts.map +1 -1
- package/dist/compactSnapshotParser.js +94 -75
- package/dist/compactSnapshotParser.js.map +1 -1
- package/dist/compactSnapshotWriter.d.ts +2 -2
- package/dist/compactSnapshotWriter.d.ts.map +1 -1
- package/dist/compactSnapshotWriter.js +26 -20
- package/dist/compactSnapshotWriter.js.map +1 -1
- package/dist/contracts.d.ts +24 -4
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +5 -1
- package/dist/contracts.js.map +1 -1
- package/dist/createFile.d.ts +4 -4
- package/dist/createFile.d.ts.map +1 -1
- package/dist/createFile.js +36 -52
- package/dist/createFile.js.map +1 -1
- package/dist/createNewContainerOnExistingFile.d.ts +2 -2
- package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
- package/dist/createNewContainerOnExistingFile.js +14 -14
- package/dist/createNewContainerOnExistingFile.js.map +1 -1
- package/dist/createNewModule.d.ts +2 -2
- package/dist/createNewModule.d.ts.map +1 -1
- package/dist/createNewModule.js +4 -4
- package/dist/createNewModule.js.map +1 -1
- package/dist/createNewUtils.d.ts +4 -4
- package/dist/createNewUtils.d.ts.map +1 -1
- package/dist/createNewUtils.js +16 -11
- package/dist/createNewUtils.js.map +1 -1
- package/dist/createOdspCreateContainerRequest.d.ts +2 -2
- package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
- package/dist/createOdspCreateContainerRequest.js +2 -2
- package/dist/createOdspCreateContainerRequest.js.map +1 -1
- package/dist/createOdspUrl.d.ts +1 -1
- package/dist/createOdspUrl.d.ts.map +1 -1
- package/dist/createOdspUrl.js.map +1 -1
- package/dist/epochTracker.d.ts +10 -9
- package/dist/epochTracker.d.ts.map +1 -1
- package/dist/epochTracker.js +67 -45
- package/dist/epochTracker.js.map +1 -1
- package/dist/fetchSnapshot.d.ts +14 -11
- package/dist/fetchSnapshot.d.ts.map +1 -1
- package/dist/fetchSnapshot.js +91 -71
- package/dist/fetchSnapshot.js.map +1 -1
- package/dist/getFileLink.d.ts.map +1 -1
- package/dist/getFileLink.js +25 -18
- package/dist/getFileLink.js.map +1 -1
- package/dist/getQueryString.d.ts.map +1 -1
- package/dist/getQueryString.js +2 -0
- package/dist/getQueryString.js.map +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -44
- package/dist/index.js.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentService.d.ts +4 -3
- package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentService.js +8 -6
- package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts +8 -6
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.js +10 -9
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +3 -2
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js +9 -6
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
- package/dist/odsp-driver-alpha.d.ts +31 -15
- package/dist/odsp-driver-beta.d.ts +4 -5
- package/dist/odsp-driver-public.d.ts +4 -5
- package/dist/odsp-driver-untrimmed.d.ts +34 -16
- package/dist/odspCache.d.ts +5 -5
- package/dist/odspCache.d.ts.map +1 -1
- package/dist/odspCache.js +1 -2
- package/dist/odspCache.js.map +1 -1
- package/dist/odspDelayLoadedDeltaStream.d.ts +12 -6
- package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
- package/dist/odspDelayLoadedDeltaStream.js +89 -25
- package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
- package/dist/odspDeltaStorageService.d.ts +7 -7
- package/dist/odspDeltaStorageService.d.ts.map +1 -1
- package/dist/odspDeltaStorageService.js +5 -5
- package/dist/odspDeltaStorageService.js.map +1 -1
- package/dist/odspDocumentDeltaConnection.d.ts +1 -1
- package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
- package/dist/odspDocumentDeltaConnection.js +41 -23
- package/dist/odspDocumentDeltaConnection.js.map +1 -1
- package/dist/odspDocumentService.d.ts +9 -6
- package/dist/odspDocumentService.d.ts.map +1 -1
- package/dist/odspDocumentService.js +25 -19
- package/dist/odspDocumentService.js.map +1 -1
- package/dist/odspDocumentServiceFactory.d.ts +6 -1
- package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
- package/dist/odspDocumentServiceFactory.js +9 -4
- package/dist/odspDocumentServiceFactory.js.map +1 -1
- package/dist/odspDocumentServiceFactoryCore.d.ts +4 -4
- package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
- package/dist/odspDocumentServiceFactoryCore.js +27 -30
- package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
- package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts +1 -1
- package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -1
- package/dist/odspDocumentServiceFactoryWithCodeSplit.js +2 -2
- package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -1
- package/dist/odspDocumentStorageManager.d.ts +17 -10
- package/dist/odspDocumentStorageManager.d.ts.map +1 -1
- package/dist/odspDocumentStorageManager.js +226 -169
- package/dist/odspDocumentStorageManager.js.map +1 -1
- package/dist/odspDocumentStorageServiceBase.d.ts +4 -6
- package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
- package/dist/odspDocumentStorageServiceBase.js +34 -31
- package/dist/odspDocumentStorageServiceBase.js.map +1 -1
- package/dist/odspDriverUrlResolver.d.ts +1 -1
- package/dist/odspDriverUrlResolver.d.ts.map +1 -1
- package/dist/odspDriverUrlResolver.js +26 -32
- package/dist/odspDriverUrlResolver.js.map +1 -1
- package/dist/odspDriverUrlResolverForShareLink.d.ts +13 -6
- package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
- package/dist/odspDriverUrlResolverForShareLink.js +47 -37
- package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
- package/dist/odspError.d.ts +1 -1
- package/dist/odspError.d.ts.map +1 -1
- package/dist/odspError.js +6 -6
- package/dist/odspError.js.map +1 -1
- package/dist/odspFluidFileLink.d.ts +1 -1
- package/dist/odspFluidFileLink.d.ts.map +1 -1
- package/dist/odspFluidFileLink.js +2 -2
- package/dist/odspFluidFileLink.js.map +1 -1
- package/dist/odspLocationRedirection.js +2 -2
- package/dist/odspLocationRedirection.js.map +1 -1
- package/dist/odspPublicUtils.d.ts +4 -0
- package/dist/odspPublicUtils.d.ts.map +1 -1
- package/dist/odspPublicUtils.js +3 -0
- package/dist/odspPublicUtils.js.map +1 -1
- package/dist/odspSnapshotParser.d.ts +3 -3
- package/dist/odspSnapshotParser.d.ts.map +1 -1
- package/dist/odspSnapshotParser.js +5 -3
- package/dist/odspSnapshotParser.js.map +1 -1
- package/dist/odspSummaryUploadManager.d.ts +1 -1
- package/dist/odspSummaryUploadManager.d.ts.map +1 -1
- package/dist/odspSummaryUploadManager.js +9 -6
- package/dist/odspSummaryUploadManager.js.map +1 -1
- package/dist/odspUrlHelper.d.ts.map +1 -1
- package/dist/odspUrlHelper.js +1 -2
- package/dist/odspUrlHelper.js.map +1 -1
- package/dist/odspUtils.d.ts +29 -13
- package/dist/odspUtils.d.ts.map +1 -1
- package/dist/odspUtils.js +75 -41
- package/dist/odspUtils.js.map +1 -1
- package/dist/opsCaching.d.ts +1 -1
- package/dist/opsCaching.d.ts.map +1 -1
- package/dist/opsCaching.js +2 -1
- package/dist/opsCaching.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/prefetchLatestSnapshot.d.ts +2 -2
- package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
- package/dist/prefetchLatestSnapshot.js +17 -12
- package/dist/prefetchLatestSnapshot.js.map +1 -1
- package/dist/retryErrorsStorageAdapter.d.ts +2 -2
- package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
- package/dist/retryErrorsStorageAdapter.js +10 -5
- package/dist/retryErrorsStorageAdapter.js.map +1 -1
- package/dist/retryUtils.d.ts.map +1 -1
- package/dist/retryUtils.js +7 -3
- package/dist/retryUtils.js.map +1 -1
- package/dist/socketModule.d.ts.map +1 -1
- package/dist/socketModule.js +2 -0
- package/dist/socketModule.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/vroom.d.ts +2 -2
- package/dist/vroom.d.ts.map +1 -1
- package/dist/vroom.js +5 -5
- package/dist/vroom.js.map +1 -1
- package/dist/zipItDataRepresentationUtils.d.ts +1 -1
- package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
- package/dist/zipItDataRepresentationUtils.js +17 -13
- package/dist/zipItDataRepresentationUtils.js.map +1 -1
- package/lib/{ReadBufferUtils.d.mts → ReadBufferUtils.d.ts} +1 -1
- package/lib/ReadBufferUtils.d.ts.map +1 -0
- package/lib/{ReadBufferUtils.mjs → ReadBufferUtils.js} +1 -1
- package/lib/ReadBufferUtils.js.map +1 -0
- package/lib/{WriteBufferUtils.d.mts → WriteBufferUtils.d.ts} +2 -2
- package/lib/WriteBufferUtils.d.ts.map +1 -0
- package/lib/{WriteBufferUtils.mjs → WriteBufferUtils.js} +2 -2
- package/lib/WriteBufferUtils.js.map +1 -0
- package/lib/{checkUrl.d.mts → checkUrl.d.ts} +1 -1
- package/lib/checkUrl.d.ts.map +1 -0
- package/lib/{checkUrl.mjs → checkUrl.js} +5 -3
- package/lib/checkUrl.js.map +1 -0
- package/lib/{compactSnapshotParser.d.mts → compactSnapshotParser.d.ts} +3 -3
- package/lib/compactSnapshotParser.d.ts.map +1 -0
- package/lib/{compactSnapshotParser.mjs → compactSnapshotParser.js} +69 -50
- package/lib/compactSnapshotParser.js.map +1 -0
- package/lib/{compactSnapshotWriter.d.mts → compactSnapshotWriter.d.ts} +3 -3
- package/lib/compactSnapshotWriter.d.ts.map +1 -0
- package/lib/{compactSnapshotWriter.mjs → compactSnapshotWriter.js} +14 -8
- package/lib/compactSnapshotWriter.js.map +1 -0
- package/lib/{constants.d.mts → constants.d.ts} +1 -1
- package/lib/constants.d.ts.map +1 -0
- package/lib/{constants.mjs → constants.js} +1 -1
- package/lib/constants.js.map +1 -0
- package/lib/{contracts.d.mts → contracts.d.ts} +25 -5
- package/lib/contracts.d.ts.map +1 -0
- package/lib/contracts.js +10 -0
- package/lib/contracts.js.map +1 -0
- package/lib/{contractsPublic.d.mts → contractsPublic.d.ts} +1 -1
- package/lib/contractsPublic.d.ts.map +1 -0
- package/lib/{contractsPublic.mjs → contractsPublic.js} +1 -1
- package/lib/contractsPublic.js.map +1 -0
- package/lib/{createFile.d.mts → createFile.d.ts} +5 -5
- package/lib/createFile.d.ts.map +1 -0
- package/lib/{createFile.mjs → createFile.js} +25 -41
- package/lib/createFile.js.map +1 -0
- package/lib/{createNewContainerOnExistingFile.d.mts → createNewContainerOnExistingFile.d.ts} +3 -3
- package/lib/createNewContainerOnExistingFile.d.ts.map +1 -0
- package/lib/{createNewContainerOnExistingFile.mjs → createNewContainerOnExistingFile.js} +7 -7
- package/lib/createNewContainerOnExistingFile.js.map +1 -0
- package/lib/{createNewModule.mjs → createNewModule.d.ts} +3 -3
- package/lib/createNewModule.d.ts.map +1 -0
- package/lib/{createNewModule.d.mts → createNewModule.js} +3 -3
- package/lib/createNewModule.js.map +1 -0
- package/lib/{createNewUtils.d.mts → createNewUtils.d.ts} +5 -5
- package/lib/createNewUtils.d.ts.map +1 -0
- package/lib/{createNewUtils.mjs → createNewUtils.js} +13 -8
- package/lib/createNewUtils.js.map +1 -0
- package/lib/{createOdspCreateContainerRequest.d.mts → createOdspCreateContainerRequest.d.ts} +7 -3
- package/lib/createOdspCreateContainerRequest.d.ts.map +1 -0
- package/lib/{createOdspCreateContainerRequest.mjs → createOdspCreateContainerRequest.js} +2 -2
- package/lib/createOdspCreateContainerRequest.js.map +1 -0
- package/lib/{createOdspUrl.d.mts → createOdspUrl.d.ts} +2 -2
- package/lib/createOdspUrl.d.ts.map +1 -0
- package/lib/{createOdspUrl.mjs → createOdspUrl.js} +1 -1
- package/lib/createOdspUrl.js.map +1 -0
- package/lib/{epochTracker.d.mts → epochTracker.d.ts} +11 -10
- package/lib/epochTracker.d.ts.map +1 -0
- package/lib/{epochTracker.mjs → epochTracker.js} +58 -36
- package/lib/epochTracker.js.map +1 -0
- package/lib/{fetch.d.mts → fetch.d.ts} +1 -1
- package/lib/fetch.d.ts.map +1 -0
- package/lib/{fetch.mjs → fetch.js} +1 -1
- package/lib/fetch.js.map +1 -0
- package/lib/{fetchSnapshot.d.mts → fetchSnapshot.d.ts} +15 -12
- package/lib/fetchSnapshot.d.ts.map +1 -0
- package/lib/{fetchSnapshot.mjs → fetchSnapshot.js} +74 -54
- package/lib/fetchSnapshot.js.map +1 -0
- package/lib/{getFileLink.d.mts → getFileLink.d.ts} +1 -1
- package/lib/getFileLink.d.ts.map +1 -0
- package/lib/{getFileLink.mjs → getFileLink.js} +17 -10
- package/lib/getFileLink.js.map +1 -0
- package/lib/{getQueryString.d.mts → getQueryString.d.ts} +5 -1
- package/lib/getQueryString.d.ts.map +1 -0
- package/lib/{getQueryString.mjs → getQueryString.js} +3 -1
- package/lib/getQueryString.js.map +1 -0
- package/lib/{getUrlAndHeadersWithAuth.d.mts → getUrlAndHeadersWithAuth.d.ts} +1 -1
- package/lib/getUrlAndHeadersWithAuth.d.ts.map +1 -0
- package/lib/{getUrlAndHeadersWithAuth.mjs → getUrlAndHeadersWithAuth.js} +1 -1
- package/lib/getUrlAndHeadersWithAuth.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +20 -20
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +29 -0
- package/lib/index.js.map +1 -0
- package/lib/localOdspDriver/{localOdspDeltaStorageService.d.mts → localOdspDeltaStorageService.d.ts} +1 -1
- package/lib/localOdspDriver/localOdspDeltaStorageService.d.ts.map +1 -0
- package/lib/localOdspDriver/{localOdspDeltaStorageService.mjs → localOdspDeltaStorageService.js} +1 -1
- package/lib/localOdspDriver/localOdspDeltaStorageService.js.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentService.d.mts → localOdspDocumentService.d.ts} +5 -4
- package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentService.mjs → localOdspDocumentService.js} +7 -5
- package/lib/localOdspDriver/localOdspDocumentService.js.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentServiceFactory.d.mts → localOdspDocumentServiceFactory.d.ts} +9 -7
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentServiceFactory.mjs → localOdspDocumentServiceFactory.js} +9 -8
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentStorageManager.d.mts → localOdspDocumentStorageManager.d.ts} +4 -3
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentStorageManager.mjs → localOdspDocumentStorageManager.js} +7 -4
- package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -0
- package/lib/{odsp-driver-alpha.d.mts → odsp-driver-alpha.d.ts} +31 -15
- package/lib/{odsp-driver-beta.d.mts → odsp-driver-beta.d.ts} +4 -5
- package/lib/{odsp-driver-public.d.mts → odsp-driver-public.d.ts} +4 -5
- package/lib/{odsp-driver-untrimmed.d.mts → odsp-driver-untrimmed.d.ts} +34 -16
- package/lib/{odspCache.d.mts → odspCache.d.ts} +10 -6
- package/lib/odspCache.d.ts.map +1 -0
- package/lib/{odspCache.mjs → odspCache.js} +6 -3
- package/lib/odspCache.js.map +1 -0
- package/lib/{odspDelayLoadedDeltaStream.d.mts → odspDelayLoadedDeltaStream.d.ts} +13 -7
- package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -0
- package/lib/{odspDelayLoadedDeltaStream.mjs → odspDelayLoadedDeltaStream.js} +84 -20
- package/lib/odspDelayLoadedDeltaStream.js.map +1 -0
- package/lib/{odspDeltaStorageService.d.mts → odspDeltaStorageService.d.ts} +8 -8
- package/lib/odspDeltaStorageService.d.ts.map +1 -0
- package/lib/{odspDeltaStorageService.mjs → odspDeltaStorageService.js} +5 -5
- package/lib/odspDeltaStorageService.js.map +1 -0
- package/lib/{odspDocumentDeltaConnection.d.mts → odspDocumentDeltaConnection.d.ts} +2 -2
- package/lib/odspDocumentDeltaConnection.d.ts.map +1 -0
- package/lib/{odspDocumentDeltaConnection.mjs → odspDocumentDeltaConnection.js} +34 -16
- package/lib/odspDocumentDeltaConnection.js.map +1 -0
- package/lib/{odspDocumentService.d.mts → odspDocumentService.d.ts} +10 -7
- package/lib/odspDocumentService.d.ts.map +1 -0
- package/lib/{odspDocumentService.mjs → odspDocumentService.js} +22 -14
- package/lib/odspDocumentService.js.map +1 -0
- package/lib/{odspDocumentServiceFactory.d.mts → odspDocumentServiceFactory.d.ts} +7 -2
- package/lib/odspDocumentServiceFactory.d.ts.map +1 -0
- package/lib/{odspDocumentServiceFactory.mjs → odspDocumentServiceFactory.js} +9 -3
- package/lib/odspDocumentServiceFactory.js.map +1 -0
- package/lib/{odspDocumentServiceFactoryCore.d.mts → odspDocumentServiceFactoryCore.d.ts} +5 -5
- package/lib/odspDocumentServiceFactoryCore.d.ts.map +1 -0
- package/lib/{odspDocumentServiceFactoryCore.mjs → odspDocumentServiceFactoryCore.js} +25 -26
- package/lib/odspDocumentServiceFactoryCore.js.map +1 -0
- package/lib/{odspDocumentServiceFactoryWithCodeSplit.d.mts → odspDocumentServiceFactoryWithCodeSplit.d.ts} +2 -2
- package/lib/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -0
- package/lib/{odspDocumentServiceFactoryWithCodeSplit.mjs → odspDocumentServiceFactoryWithCodeSplit.js} +2 -2
- package/lib/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -0
- package/lib/{odspDocumentStorageManager.d.mts → odspDocumentStorageManager.d.ts} +18 -11
- package/lib/odspDocumentStorageManager.d.ts.map +1 -0
- package/lib/{odspDocumentStorageManager.mjs → odspDocumentStorageManager.js} +221 -162
- package/lib/odspDocumentStorageManager.js.map +1 -0
- package/lib/{odspDocumentStorageServiceBase.d.mts → odspDocumentStorageServiceBase.d.ts} +5 -7
- package/lib/odspDocumentStorageServiceBase.d.ts.map +1 -0
- package/lib/{odspDocumentStorageServiceBase.mjs → odspDocumentStorageServiceBase.js} +34 -31
- package/lib/odspDocumentStorageServiceBase.js.map +1 -0
- package/lib/{odspDriverUrlResolver.d.mts → odspDriverUrlResolver.d.ts} +2 -2
- package/lib/odspDriverUrlResolver.d.ts.map +1 -0
- package/lib/{odspDriverUrlResolver.mjs → odspDriverUrlResolver.js} +27 -29
- package/lib/odspDriverUrlResolver.js.map +1 -0
- package/lib/{odspDriverUrlResolverForShareLink.d.mts → odspDriverUrlResolverForShareLink.d.ts} +14 -7
- package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -0
- package/lib/{odspDriverUrlResolverForShareLink.mjs → odspDriverUrlResolverForShareLink.js} +41 -27
- package/lib/odspDriverUrlResolverForShareLink.js.map +1 -0
- package/lib/{odspError.d.mts → odspError.d.ts} +2 -2
- package/lib/odspError.d.ts.map +1 -0
- package/lib/{odspError.mjs → odspError.js} +6 -6
- package/lib/odspError.js.map +1 -0
- package/lib/{odspFluidFileLink.d.mts → odspFluidFileLink.d.ts} +2 -2
- package/lib/odspFluidFileLink.d.ts.map +1 -0
- package/lib/{odspFluidFileLink.mjs → odspFluidFileLink.js} +2 -2
- package/lib/odspFluidFileLink.js.map +1 -0
- package/lib/{odspLocationRedirection.d.mts → odspLocationRedirection.d.ts} +1 -1
- package/lib/odspLocationRedirection.d.ts.map +1 -0
- package/lib/{odspLocationRedirection.mjs → odspLocationRedirection.js} +2 -2
- package/lib/odspLocationRedirection.js.map +1 -0
- package/lib/{odspPublicUtils.d.mts → odspPublicUtils.d.ts} +5 -1
- package/lib/odspPublicUtils.d.ts.map +1 -0
- package/lib/{odspPublicUtils.mjs → odspPublicUtils.js} +4 -1
- package/lib/odspPublicUtils.js.map +1 -0
- package/lib/{odspSnapshotParser.d.mts → odspSnapshotParser.d.ts} +4 -4
- package/lib/odspSnapshotParser.d.ts.map +1 -0
- package/lib/{odspSnapshotParser.mjs → odspSnapshotParser.js} +6 -4
- package/lib/odspSnapshotParser.js.map +1 -0
- package/lib/{odspSummaryUploadManager.d.mts → odspSummaryUploadManager.d.ts} +2 -2
- package/lib/odspSummaryUploadManager.d.ts.map +1 -0
- package/lib/{odspSummaryUploadManager.mjs → odspSummaryUploadManager.js} +8 -5
- package/lib/odspSummaryUploadManager.js.map +1 -0
- package/lib/{odspUrlHelper.d.mts → odspUrlHelper.d.ts} +1 -1
- package/lib/odspUrlHelper.d.ts.map +1 -0
- package/lib/{odspUrlHelper.mjs → odspUrlHelper.js} +2 -3
- package/lib/odspUrlHelper.js.map +1 -0
- package/lib/{odspUtils.d.mts → odspUtils.d.ts} +30 -14
- package/lib/odspUtils.d.ts.map +1 -0
- package/lib/{odspUtils.mjs → odspUtils.js} +61 -30
- package/lib/odspUtils.js.map +1 -0
- package/lib/{opsCaching.d.mts → opsCaching.d.ts} +2 -2
- package/lib/opsCaching.d.ts.map +1 -0
- package/lib/{opsCaching.mjs → opsCaching.js} +3 -2
- package/lib/opsCaching.js.map +1 -0
- package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
- package/lib/packageVersion.js.map +1 -0
- package/lib/{prefetchLatestSnapshot.d.mts → prefetchLatestSnapshot.d.ts} +3 -3
- package/lib/prefetchLatestSnapshot.d.ts.map +1 -0
- package/lib/{prefetchLatestSnapshot.mjs → prefetchLatestSnapshot.js} +16 -11
- package/lib/prefetchLatestSnapshot.js.map +1 -0
- package/lib/{retryErrorsStorageAdapter.d.mts → retryErrorsStorageAdapter.d.ts} +3 -3
- package/lib/retryErrorsStorageAdapter.d.ts.map +1 -0
- package/lib/{retryErrorsStorageAdapter.mjs → retryErrorsStorageAdapter.js} +11 -6
- package/lib/retryErrorsStorageAdapter.js.map +1 -0
- package/lib/{retryUtils.d.mts → retryUtils.d.ts} +1 -1
- package/lib/retryUtils.d.ts.map +1 -0
- package/lib/{retryUtils.mjs → retryUtils.js} +8 -4
- package/lib/retryUtils.js.map +1 -0
- package/lib/{socketModule.d.mts → socketModule.d.ts} +1 -1
- package/lib/socketModule.d.ts.map +1 -0
- package/lib/{socketModule.mjs → socketModule.js} +3 -1
- package/lib/socketModule.js.map +1 -0
- package/lib/test/buildOdspShareLinkReqParams.spec.js +25 -0
- package/lib/test/buildOdspShareLinkReqParams.spec.js.map +1 -0
- package/lib/test/createNewUtilsTests.spec.js +221 -0
- package/lib/test/createNewUtilsTests.spec.js.map +1 -0
- package/lib/test/deltaStorageService.spec.js +176 -0
- package/lib/test/deltaStorageService.spec.js.map +1 -0
- package/lib/test/epochTests.spec.js +340 -0
- package/lib/test/epochTests.spec.js.map +1 -0
- package/lib/test/epochTestsWithRedemption.spec.js +119 -0
- package/lib/test/epochTestsWithRedemption.spec.js.map +1 -0
- package/lib/test/fetchSnapshot.spec.js +412 -0
- package/lib/test/fetchSnapshot.spec.js.map +1 -0
- package/lib/test/getFileLink.spec.js +62 -0
- package/lib/test/getFileLink.spec.js.map +1 -0
- package/lib/test/getUrlAndHeadersWithAuth.spec.js +66 -0
- package/lib/test/getUrlAndHeadersWithAuth.spec.js.map +1 -0
- package/lib/test/getVersions.spec.js +284 -0
- package/lib/test/getVersions.spec.js.map +1 -0
- package/lib/test/joinSessionCacheTests.spec.js +53 -0
- package/lib/test/joinSessionCacheTests.spec.js.map +1 -0
- package/lib/test/joinSessionPeriodicCall.spec.js +158 -0
- package/lib/test/joinSessionPeriodicCall.spec.js.map +1 -0
- package/lib/test/jsonSnapshotFormatTests.spec.js +107 -0
- package/lib/test/jsonSnapshotFormatTests.spec.js.map +1 -0
- package/lib/test/localOdspDriver.spec.js +177 -0
- package/lib/test/localOdspDriver.spec.js.map +1 -0
- package/lib/test/mockFetch.js +61 -0
- package/lib/test/mockFetch.js.map +1 -0
- package/lib/test/odspCreateContainer.spec.js +116 -0
- package/lib/test/odspCreateContainer.spec.js.map +1 -0
- package/lib/test/odspDriverResolverTest.spec.js +289 -0
- package/lib/test/odspDriverResolverTest.spec.js.map +1 -0
- package/lib/test/odspDriverUrlResolverForShareLink.spec.js +287 -0
- package/lib/test/odspDriverUrlResolverForShareLink.spec.js.map +1 -0
- package/lib/test/odspError.spec.js +299 -0
- package/lib/test/odspError.spec.js.map +1 -0
- package/lib/test/opsCaching.spec.js +357 -0
- package/lib/test/opsCaching.spec.js.map +1 -0
- package/lib/test/prefetchSnapshotTests.spec.js +420 -0
- package/lib/test/prefetchSnapshotTests.spec.js.map +1 -0
- package/lib/test/snapshotFormatTests.spec.js +218 -0
- package/lib/test/snapshotFormatTests.spec.js.map +1 -0
- package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js +152 -0
- package/lib/test/socketTests/deltaConnectionUpdateTests.spec.js.map +1 -0
- package/lib/test/socketTests/socketMock.js +109 -0
- package/lib/test/socketTests/socketMock.js.map +1 -0
- package/lib/test/socketTests/socketTests.spec.js +256 -0
- package/lib/test/socketTests/socketTests.spec.js.map +1 -0
- package/lib/test/tokenFetch.spec.js +39 -0
- package/lib/test/tokenFetch.spec.js.map +1 -0
- package/lib/test/types/validateOdspDriverPrevious.generated.js +96 -0
- package/lib/test/types/validateOdspDriverPrevious.generated.js.map +1 -0
- package/lib/test/zipItDataRepresentationTests.spec.js +207 -0
- package/lib/test/zipItDataRepresentationTests.spec.js.map +1 -0
- package/lib/{vroom.d.mts → vroom.d.ts} +3 -3
- package/lib/vroom.d.ts.map +1 -0
- package/lib/{vroom.mjs → vroom.js} +4 -4
- package/lib/vroom.js.map +1 -0
- package/lib/{zipItDataRepresentationUtils.d.mts → zipItDataRepresentationUtils.d.ts} +2 -2
- package/lib/zipItDataRepresentationUtils.d.ts.map +1 -0
- package/lib/{zipItDataRepresentationUtils.mjs → zipItDataRepresentationUtils.js} +19 -11
- package/lib/zipItDataRepresentationUtils.js.map +1 -0
- package/package.json +100 -32
- package/src/ReadBufferUtils.ts +7 -7
- package/src/WriteBufferUtils.ts +13 -9
- package/src/checkUrl.ts +4 -2
- package/src/compactSnapshotParser.ts +97 -61
- package/src/compactSnapshotWriter.ts +22 -15
- package/src/contracts.ts +33 -4
- package/src/createFile.ts +26 -51
- package/src/createNewContainerOnExistingFile.ts +10 -10
- package/src/createNewModule.ts +2 -2
- package/src/createNewUtils.ts +26 -15
- package/src/createOdspCreateContainerRequest.ts +3 -3
- package/src/createOdspUrl.ts +1 -1
- package/src/epochTracker.ts +93 -58
- package/src/fetchSnapshot.ts +122 -66
- package/src/getFileLink.ts +24 -16
- package/src/getQueryString.ts +2 -0
- package/src/index.ts +27 -19
- package/src/localOdspDriver/localOdspDocumentService.ts +12 -5
- package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +12 -11
- package/src/localOdspDriver/localOdspDocumentStorageManager.ts +15 -8
- package/src/odspCache.ts +14 -11
- package/src/odspDelayLoadedDeltaStream.ts +113 -31
- package/src/odspDeltaStorageService.ts +17 -16
- package/src/odspDocumentDeltaConnection.ts +52 -34
- package/src/odspDocumentService.ts +33 -22
- package/src/odspDocumentServiceFactory.ts +7 -2
- package/src/odspDocumentServiceFactoryCore.ts +28 -29
- package/src/odspDocumentServiceFactoryWithCodeSplit.ts +1 -1
- package/src/odspDocumentStorageManager.ts +303 -210
- package/src/odspDocumentStorageServiceBase.ts +52 -47
- package/src/odspDriverUrlResolver.ts +41 -41
- package/src/odspDriverUrlResolverForShareLink.ts +50 -31
- package/src/odspError.ts +6 -7
- package/src/odspFluidFileLink.ts +3 -3
- package/src/odspLocationRedirection.ts +1 -1
- package/src/odspPublicUtils.ts +4 -0
- package/src/odspSnapshotParser.ts +9 -9
- package/src/odspSummaryUploadManager.ts +21 -9
- package/src/odspUrlHelper.ts +2 -3
- package/src/odspUtils.ts +102 -53
- package/src/opsCaching.ts +13 -12
- package/src/packageVersion.ts +1 -1
- package/src/prefetchLatestSnapshot.ts +24 -15
- package/src/retryErrorsStorageAdapter.ts +16 -9
- package/src/retryUtils.ts +8 -4
- package/src/socketModule.ts +2 -0
- package/src/vroom.ts +6 -6
- package/src/zipItDataRepresentationUtils.ts +65 -37
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/.eslintrc.js +0 -18
- package/lib/ReadBufferUtils.d.mts.map +0 -1
- package/lib/ReadBufferUtils.mjs.map +0 -1
- package/lib/WriteBufferUtils.d.mts.map +0 -1
- package/lib/WriteBufferUtils.mjs.map +0 -1
- package/lib/checkUrl.d.mts.map +0 -1
- package/lib/checkUrl.mjs.map +0 -1
- package/lib/compactSnapshotParser.d.mts.map +0 -1
- package/lib/compactSnapshotParser.mjs.map +0 -1
- package/lib/compactSnapshotWriter.d.mts.map +0 -1
- package/lib/compactSnapshotWriter.mjs.map +0 -1
- package/lib/constants.d.mts.map +0 -1
- package/lib/constants.mjs.map +0 -1
- package/lib/contracts.d.mts.map +0 -1
- package/lib/contracts.mjs +0 -6
- package/lib/contracts.mjs.map +0 -1
- package/lib/contractsPublic.d.mts.map +0 -1
- package/lib/contractsPublic.mjs.map +0 -1
- package/lib/createFile.d.mts.map +0 -1
- package/lib/createFile.mjs.map +0 -1
- package/lib/createNewContainerOnExistingFile.d.mts.map +0 -1
- package/lib/createNewContainerOnExistingFile.mjs.map +0 -1
- package/lib/createNewModule.d.mts.map +0 -1
- package/lib/createNewModule.mjs.map +0 -1
- package/lib/createNewUtils.d.mts.map +0 -1
- package/lib/createNewUtils.mjs.map +0 -1
- package/lib/createOdspCreateContainerRequest.d.mts.map +0 -1
- package/lib/createOdspCreateContainerRequest.mjs.map +0 -1
- package/lib/createOdspUrl.d.mts.map +0 -1
- package/lib/createOdspUrl.mjs.map +0 -1
- package/lib/epochTracker.d.mts.map +0 -1
- package/lib/epochTracker.mjs.map +0 -1
- package/lib/fetch.d.mts.map +0 -1
- package/lib/fetch.mjs.map +0 -1
- package/lib/fetchSnapshot.d.mts.map +0 -1
- package/lib/fetchSnapshot.mjs.map +0 -1
- package/lib/getFileLink.d.mts.map +0 -1
- package/lib/getFileLink.mjs.map +0 -1
- package/lib/getQueryString.d.mts.map +0 -1
- package/lib/getQueryString.mjs.map +0 -1
- package/lib/getUrlAndHeadersWithAuth.d.mts.map +0 -1
- package/lib/getUrlAndHeadersWithAuth.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs +0 -22
- package/lib/index.mjs.map +0 -1
- package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts.map +0 -1
- package/lib/localOdspDriver/localOdspDeltaStorageService.mjs.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentService.mjs.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.mts.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.mjs.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +0 -1
- package/lib/odspCache.d.mts.map +0 -1
- package/lib/odspCache.mjs.map +0 -1
- package/lib/odspDelayLoadedDeltaStream.d.mts.map +0 -1
- package/lib/odspDelayLoadedDeltaStream.mjs.map +0 -1
- package/lib/odspDeltaStorageService.d.mts.map +0 -1
- package/lib/odspDeltaStorageService.mjs.map +0 -1
- package/lib/odspDocumentDeltaConnection.d.mts.map +0 -1
- package/lib/odspDocumentDeltaConnection.mjs.map +0 -1
- package/lib/odspDocumentService.d.mts.map +0 -1
- package/lib/odspDocumentService.mjs.map +0 -1
- package/lib/odspDocumentServiceFactory.d.mts.map +0 -1
- package/lib/odspDocumentServiceFactory.mjs.map +0 -1
- package/lib/odspDocumentServiceFactoryCore.d.mts.map +0 -1
- package/lib/odspDocumentServiceFactoryCore.mjs.map +0 -1
- package/lib/odspDocumentServiceFactoryWithCodeSplit.d.mts.map +0 -1
- package/lib/odspDocumentServiceFactoryWithCodeSplit.mjs.map +0 -1
- package/lib/odspDocumentStorageManager.d.mts.map +0 -1
- package/lib/odspDocumentStorageManager.mjs.map +0 -1
- package/lib/odspDocumentStorageServiceBase.d.mts.map +0 -1
- package/lib/odspDocumentStorageServiceBase.mjs.map +0 -1
- package/lib/odspDriverUrlResolver.d.mts.map +0 -1
- package/lib/odspDriverUrlResolver.mjs.map +0 -1
- package/lib/odspDriverUrlResolverForShareLink.d.mts.map +0 -1
- package/lib/odspDriverUrlResolverForShareLink.mjs.map +0 -1
- package/lib/odspError.d.mts.map +0 -1
- package/lib/odspError.mjs.map +0 -1
- package/lib/odspFluidFileLink.d.mts.map +0 -1
- package/lib/odspFluidFileLink.mjs.map +0 -1
- package/lib/odspLocationRedirection.d.mts.map +0 -1
- package/lib/odspLocationRedirection.mjs.map +0 -1
- package/lib/odspPublicUtils.d.mts.map +0 -1
- package/lib/odspPublicUtils.mjs.map +0 -1
- package/lib/odspSnapshotParser.d.mts.map +0 -1
- package/lib/odspSnapshotParser.mjs.map +0 -1
- package/lib/odspSummaryUploadManager.d.mts.map +0 -1
- package/lib/odspSummaryUploadManager.mjs.map +0 -1
- package/lib/odspUrlHelper.d.mts.map +0 -1
- package/lib/odspUrlHelper.mjs.map +0 -1
- package/lib/odspUtils.d.mts.map +0 -1
- package/lib/odspUtils.mjs.map +0 -1
- package/lib/opsCaching.d.mts.map +0 -1
- package/lib/opsCaching.mjs.map +0 -1
- package/lib/packageVersion.d.mts.map +0 -1
- package/lib/packageVersion.mjs.map +0 -1
- package/lib/prefetchLatestSnapshot.d.mts.map +0 -1
- package/lib/prefetchLatestSnapshot.mjs.map +0 -1
- package/lib/retryErrorsStorageAdapter.d.mts.map +0 -1
- package/lib/retryErrorsStorageAdapter.mjs.map +0 -1
- package/lib/retryUtils.d.mts.map +0 -1
- package/lib/retryUtils.mjs.map +0 -1
- package/lib/socketModule.d.mts.map +0 -1
- package/lib/socketModule.mjs.map +0 -1
- package/lib/vroom.d.mts.map +0 -1
- package/lib/vroom.mjs.map +0 -1
- package/lib/zipItDataRepresentationUtils.d.mts.map +0 -1
- 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 {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
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(
|
|
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
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
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
|
-
*
|
|
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:
|
|
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
|
|
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
|
-
|
|
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:
|
|
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 {
|
|
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 {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
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:
|
|
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 {
|
|
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,
|
|
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<
|
|
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:
|
|
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
|
|
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?: (
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Annotate the given error indicating which connection step failed
|
|
117
|
+
*/
|
|
103
118
|
private annotateConnectionError(
|
|
104
|
-
error:
|
|
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
|
-
?
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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 ===
|
|
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
|
|
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
|
-
|
|
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((
|
|
291
|
-
if (hasFacetCodes(
|
|
292
|
-
for (const code of
|
|
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
|
-
|
|
361
|
+
}
|
|
362
|
+
default: {
|
|
310
363
|
continue;
|
|
364
|
+
}
|
|
311
365
|
}
|
|
312
366
|
}
|
|
313
367
|
}
|
|
314
|
-
throw
|
|
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?:
|
|
536
|
+
public dispose(error?: unknown): void {
|
|
455
537
|
this.clearJoinSessionTimer();
|
|
456
538
|
this.currentConnection?.dispose();
|
|
457
539
|
this.currentConnection = undefined;
|