@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
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import { stringToBuffer } from "@fluid-internal/client-utils";
|
|
7
7
|
import { assert } from "@fluidframework/core-utils";
|
|
8
8
|
import * as api from "@fluidframework/protocol-definitions";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { ISnapshot } from "@fluidframework/driver-definitions";
|
|
10
|
+
import { IOdspSnapshot, IOdspSnapshotCommit } from "./contracts.js";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Build a tree hierarchy base on a flat tree
|
|
@@ -36,6 +36,7 @@ function buildHierarchy(flatTree: IOdspSnapshotCommit): api.ISnapshotTree {
|
|
|
36
36
|
blobs: {},
|
|
37
37
|
trees: {},
|
|
38
38
|
unreferenced: entry.unreferenced,
|
|
39
|
+
groupId: entry.groupId,
|
|
39
40
|
};
|
|
40
41
|
node.trees[decodeURIComponent(entryPathBase)] = newTree;
|
|
41
42
|
lookup[entry.path] = newTree;
|
|
@@ -51,12 +52,10 @@ function buildHierarchy(flatTree: IOdspSnapshotCommit): api.ISnapshotTree {
|
|
|
51
52
|
* Converts existing IOdspSnapshot to snapshot tree, blob array and ops
|
|
52
53
|
* @param odspSnapshot - snapshot
|
|
53
54
|
*/
|
|
54
|
-
export function convertOdspSnapshotToSnapshotTreeAndBlobs(
|
|
55
|
-
odspSnapshot: IOdspSnapshot,
|
|
56
|
-
): ISnapshotContents {
|
|
55
|
+
export function convertOdspSnapshotToSnapshotTreeAndBlobs(odspSnapshot: IOdspSnapshot): ISnapshot {
|
|
57
56
|
const blobsWithBufferContent = new Map<string, ArrayBuffer>();
|
|
58
57
|
if (odspSnapshot.blobs) {
|
|
59
|
-
odspSnapshot.blobs
|
|
58
|
+
for (const blob of odspSnapshot.blobs) {
|
|
60
59
|
assert(
|
|
61
60
|
blob.encoding === "base64" || blob.encoding === undefined,
|
|
62
61
|
0x0a4 /* Unexpected blob encoding type */,
|
|
@@ -65,13 +64,13 @@ export function convertOdspSnapshotToSnapshotTreeAndBlobs(
|
|
|
65
64
|
blob.id,
|
|
66
65
|
stringToBuffer(blob.content, blob.encoding ?? "utf8"),
|
|
67
66
|
);
|
|
68
|
-
}
|
|
67
|
+
}
|
|
69
68
|
}
|
|
70
69
|
|
|
71
70
|
const sequenceNumber = odspSnapshot?.trees[0].sequenceNumber;
|
|
72
71
|
|
|
73
|
-
const val:
|
|
74
|
-
|
|
72
|
+
const val: ISnapshot = {
|
|
73
|
+
blobContents: blobsWithBufferContent,
|
|
75
74
|
ops: odspSnapshot.ops?.map((op) => op.op) ?? [],
|
|
76
75
|
sequenceNumber,
|
|
77
76
|
snapshotTree: buildHierarchy(odspSnapshot.trees[0]),
|
|
@@ -79,6 +78,7 @@ export function convertOdspSnapshotToSnapshotTreeAndBlobs(
|
|
|
79
78
|
odspSnapshot.ops && odspSnapshot.ops.length > 0
|
|
80
79
|
? odspSnapshot.ops[odspSnapshot.ops.length - 1].sequenceNumber
|
|
81
80
|
: sequenceNumber,
|
|
81
|
+
snapshotFormatV: 1,
|
|
82
82
|
};
|
|
83
83
|
return val;
|
|
84
84
|
}
|
|
@@ -23,10 +23,10 @@ import {
|
|
|
23
23
|
IOdspSummaryTreeBaseEntry,
|
|
24
24
|
OdspSummaryTreeEntry,
|
|
25
25
|
OdspSummaryTreeValue,
|
|
26
|
-
} from "./contracts";
|
|
27
|
-
import { EpochTracker } from "./epochTracker";
|
|
28
|
-
import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth";
|
|
29
|
-
import { getWithRetryForTokenRefresh } from "./odspUtils";
|
|
26
|
+
} from "./contracts.js";
|
|
27
|
+
import { EpochTracker } from "./epochTracker.js";
|
|
28
|
+
import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
|
|
29
|
+
import { getWithRetryForTokenRefresh } from "./odspUtils.js";
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* This class manages a summary upload. When it receives a call to upload summary, it converts the summary tree into
|
|
@@ -48,7 +48,10 @@ export class OdspSummaryUploadManager {
|
|
|
48
48
|
this.mc = loggerToMonitoringContext(logger);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
public async writeSummaryTree(
|
|
51
|
+
public async writeSummaryTree(
|
|
52
|
+
tree: api.ISummaryTree,
|
|
53
|
+
context: ISummaryContext,
|
|
54
|
+
): Promise<string> {
|
|
52
55
|
// If the last proposed handle is not the proposed handle of the acked summary(could happen when the last summary get nacked),
|
|
53
56
|
// then re-initialize the caches with the previous ones else just update the previous caches with the caches from acked summary.
|
|
54
57
|
// Don't bother logging if lastSummaryProposalHandle hasn't been set before; only log on a positive mismatch.
|
|
@@ -122,7 +125,7 @@ export class OdspSummaryUploadManager {
|
|
|
122
125
|
attempt: options.refresh ? 2 : 1,
|
|
123
126
|
hasClaims: !!options.claims,
|
|
124
127
|
hasTenantId: !!options.tenantId,
|
|
125
|
-
headers: Object.keys(headers).length
|
|
128
|
+
headers: Object.keys(headers).length > 0 ? true : undefined,
|
|
126
129
|
blobs,
|
|
127
130
|
size: postBody.length,
|
|
128
131
|
referenceSequenceNumber,
|
|
@@ -163,7 +166,10 @@ export class OdspSummaryUploadManager {
|
|
|
163
166
|
markUnreferencedNodes: boolean = this.mc.config.getBoolean(
|
|
164
167
|
"Fluid.Driver.Odsp.MarkUnreferencedNodes",
|
|
165
168
|
) ?? true,
|
|
166
|
-
) {
|
|
169
|
+
): Promise<{
|
|
170
|
+
snapshotTree: IOdspSummaryTree;
|
|
171
|
+
blobs: number;
|
|
172
|
+
}> {
|
|
167
173
|
const snapshotTree: IOdspSummaryTree = {
|
|
168
174
|
type: "tree",
|
|
169
175
|
entries: [] as OdspSummaryTreeEntry[],
|
|
@@ -181,6 +187,7 @@ export class OdspSummaryUploadManager {
|
|
|
181
187
|
// property is not present, the tree entry is considered referenced. If the property is present and is
|
|
182
188
|
// true (which is the only value it can have), the tree entry is considered unreferenced.
|
|
183
189
|
let unreferenced: true | undefined;
|
|
190
|
+
let groupId: string | undefined;
|
|
184
191
|
switch (summaryObject.type) {
|
|
185
192
|
case api.SummaryType.Tree: {
|
|
186
193
|
const result = await this.convertSummaryToSnapshotTree(
|
|
@@ -190,6 +197,7 @@ export class OdspSummaryUploadManager {
|
|
|
190
197
|
);
|
|
191
198
|
value = result.snapshotTree;
|
|
192
199
|
unreferenced = markUnreferencedNodes ? summaryObject.unreferenced : undefined;
|
|
200
|
+
groupId = summaryObject.groupId;
|
|
193
201
|
blobs += result.blobs;
|
|
194
202
|
break;
|
|
195
203
|
}
|
|
@@ -211,7 +219,7 @@ export class OdspSummaryUploadManager {
|
|
|
211
219
|
}
|
|
212
220
|
case api.SummaryType.Handle: {
|
|
213
221
|
if (!parentHandle) {
|
|
214
|
-
throw Error("Parent summary does not exist to reference by handle.");
|
|
222
|
+
throw new Error("Parent summary does not exist to reference by handle.");
|
|
215
223
|
}
|
|
216
224
|
let handlePath = summaryObject.handle;
|
|
217
225
|
if (handlePath.length > 0 && !handlePath.startsWith("/")) {
|
|
@@ -226,7 +234,10 @@ export class OdspSummaryUploadManager {
|
|
|
226
234
|
break;
|
|
227
235
|
}
|
|
228
236
|
default: {
|
|
229
|
-
unreachableCase(
|
|
237
|
+
unreachableCase(
|
|
238
|
+
summaryObject,
|
|
239
|
+
`Unknown type: ${(summaryObject as api.SummaryObject).type}`,
|
|
240
|
+
);
|
|
230
241
|
}
|
|
231
242
|
}
|
|
232
243
|
|
|
@@ -246,6 +257,7 @@ export class OdspSummaryUploadManager {
|
|
|
246
257
|
value,
|
|
247
258
|
...baseEntry,
|
|
248
259
|
unreferenced,
|
|
260
|
+
groupId,
|
|
249
261
|
};
|
|
250
262
|
} else if (id) {
|
|
251
263
|
entry = {
|
package/src/odspUrlHelper.ts
CHANGED
|
@@ -49,7 +49,7 @@ export function isSpoUrl(url: string): boolean {
|
|
|
49
49
|
|
|
50
50
|
// Format: foo.sharepoint.com/_api/v2.1./drives/bar/items/baz and foo.sharepoint-df.com/...
|
|
51
51
|
const spoRegex = /(.*\.sharepoint(-df)*\.com)\/_api\/v2.1\/drives\/([^/]*)\/items\/([^/]*)/;
|
|
52
|
-
return
|
|
52
|
+
return spoRegex.test(urlLower);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/**
|
|
@@ -88,7 +88,7 @@ export async function getOdspUrlParts(url: URL): Promise<IOdspUrlParts | undefin
|
|
|
88
88
|
// Joinsession like URL
|
|
89
89
|
// Pick a regex based on the hostname
|
|
90
90
|
// TODO This will only support ODC using api.onedrive.com, update to handle the future (share links etc)
|
|
91
|
-
let joinSessionMatch;
|
|
91
|
+
let joinSessionMatch: RegExpExecArray | null;
|
|
92
92
|
if (isOdcOrigin(url.origin)) {
|
|
93
93
|
// Capture groups:
|
|
94
94
|
// 0: match
|
|
@@ -97,7 +97,6 @@ export async function getOdspUrlParts(url: URL): Promise<IOdspUrlParts | undefin
|
|
|
97
97
|
// 3: optional captured drive ID
|
|
98
98
|
// 4: Item ID
|
|
99
99
|
// 5: Drive ID portion of Item ID
|
|
100
|
-
// eslint-disable-next-line unicorn/no-unsafe-regex
|
|
101
100
|
joinSessionMatch = /(.*)\/v2\.1\/drive(s\/([\dA-Za-z]+))?\/items\/(([\dA-Za-z]+)!\d+)/.exec(
|
|
102
101
|
pathname,
|
|
103
102
|
);
|
package/src/odspUtils.ts
CHANGED
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { IResolvedUrl,
|
|
6
|
+
import { ITelemetryBaseProperties, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
|
+
import { IResolvedUrl, ISnapshot } from "@fluidframework/driver-definitions";
|
|
8
8
|
import {
|
|
9
9
|
isOnline,
|
|
10
10
|
OnlineStatus,
|
|
11
11
|
RetryableError,
|
|
12
12
|
NonRetryableError,
|
|
13
13
|
NetworkErrorBasic,
|
|
14
|
+
type AuthorizationError,
|
|
14
15
|
} from "@fluidframework/driver-utils";
|
|
15
16
|
import { performance } from "@fluid-internal/client-utils";
|
|
16
17
|
import { assert } from "@fluidframework/core-utils";
|
|
@@ -20,20 +21,20 @@ import {
|
|
|
20
21
|
TelemetryDataTag,
|
|
21
22
|
createChildLogger,
|
|
22
23
|
wrapError,
|
|
24
|
+
type IFluidErrorBase,
|
|
23
25
|
} from "@fluidframework/telemetry-utils";
|
|
24
26
|
import {
|
|
25
27
|
fetchIncorrectResponse,
|
|
26
28
|
throwOdspNetworkError,
|
|
27
29
|
getSPOAndGraphRequestIdsFromResponse,
|
|
28
|
-
} from "@fluidframework/odsp-doclib-utils";
|
|
30
|
+
} from "@fluidframework/odsp-doclib-utils/internal";
|
|
29
31
|
import {
|
|
30
32
|
IOdspResolvedUrl,
|
|
31
33
|
TokenFetchOptions,
|
|
32
|
-
|
|
34
|
+
OdspErrorTypes,
|
|
33
35
|
tokenFromResponse,
|
|
34
36
|
isTokenFromCache,
|
|
35
37
|
OdspResourceTokenFetchOptions,
|
|
36
|
-
ShareLinkTypes,
|
|
37
38
|
ISharingLinkKind,
|
|
38
39
|
TokenFetcher,
|
|
39
40
|
ICacheEntry,
|
|
@@ -41,14 +42,18 @@ import {
|
|
|
41
42
|
InstrumentedStorageTokenFetcher,
|
|
42
43
|
IOdspUrlParts,
|
|
43
44
|
} from "@fluidframework/odsp-driver-definitions";
|
|
44
|
-
import { fetch } from "./fetch";
|
|
45
|
-
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
46
|
-
import { IOdspSnapshot } from "./contracts";
|
|
45
|
+
import { fetch } from "./fetch.js";
|
|
46
|
+
import { pkgVersion as driverVersion } from "./packageVersion.js";
|
|
47
|
+
import { IOdspSnapshot } from "./contracts.js";
|
|
48
|
+
// eslint-disable-next-line import/no-deprecated
|
|
49
|
+
import { ISnapshotContents } from "./odspPublicUtils.js";
|
|
47
50
|
|
|
48
51
|
export const getWithRetryForTokenRefreshRepeat = "getWithRetryForTokenRefreshRepeat";
|
|
49
52
|
|
|
50
|
-
/**
|
|
51
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Parse the given url and return the origin (host name)
|
|
55
|
+
*/
|
|
56
|
+
export const getOrigin = (url: string): string => new URL(url).origin;
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
59
|
* @alpha
|
|
@@ -56,16 +61,18 @@ export const getOrigin = (url: string) => new URL(url).origin;
|
|
|
56
61
|
export interface IOdspResponse<T> {
|
|
57
62
|
content: T;
|
|
58
63
|
headers: Map<string, string>;
|
|
59
|
-
propsToLog:
|
|
64
|
+
propsToLog: ITelemetryBaseProperties;
|
|
60
65
|
duration: number;
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
export interface TokenFetchOptionsEx extends TokenFetchOptions {
|
|
64
|
-
/**
|
|
65
|
-
|
|
69
|
+
/**
|
|
70
|
+
* The previous error we hit in {@link getWithRetryForTokenRefresh}.
|
|
71
|
+
*/
|
|
72
|
+
previousError?: unknown;
|
|
66
73
|
}
|
|
67
74
|
|
|
68
|
-
function headersToMap(headers: Headers) {
|
|
75
|
+
function headersToMap(headers: Headers): Map<string, string> {
|
|
69
76
|
const newHeaders = new Map<string, string>();
|
|
70
77
|
for (const [key, value] of headers.entries()) {
|
|
71
78
|
newHeaders.set(key, value);
|
|
@@ -81,24 +88,30 @@ function headersToMap(headers: Headers) {
|
|
|
81
88
|
*/
|
|
82
89
|
export async function getWithRetryForTokenRefresh<T>(
|
|
83
90
|
get: (options: TokenFetchOptionsEx) => Promise<T>,
|
|
84
|
-
) {
|
|
85
|
-
return get({ refresh: false }).catch(async (
|
|
86
|
-
const options: TokenFetchOptionsEx = { refresh: true, previousError:
|
|
87
|
-
switch (
|
|
91
|
+
): Promise<T> {
|
|
92
|
+
return get({ refresh: false }).catch(async (error) => {
|
|
93
|
+
const options: TokenFetchOptionsEx = { refresh: true, previousError: error };
|
|
94
|
+
switch ((error as Partial<IFluidErrorBase>).errorType) {
|
|
88
95
|
// If the error is 401 or 403 refresh the token and try once more.
|
|
89
|
-
case
|
|
90
|
-
|
|
96
|
+
case OdspErrorTypes.authorizationError: {
|
|
97
|
+
const authError = error as AuthorizationError;
|
|
98
|
+
return get({ ...options, claims: authError.claims, tenantId: authError.tenantId });
|
|
99
|
+
}
|
|
91
100
|
|
|
92
|
-
case
|
|
93
|
-
case
|
|
101
|
+
case OdspErrorTypes.incorrectServerResponse: // some error on the wire, retry once
|
|
102
|
+
case OdspErrorTypes.fetchTokenError: {
|
|
103
|
+
// If the token was null, then retry once.
|
|
94
104
|
return get(options);
|
|
105
|
+
}
|
|
95
106
|
|
|
96
|
-
default:
|
|
107
|
+
default: {
|
|
97
108
|
// Caller may determine that it wants one retry
|
|
98
|
-
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-explicit-any
|
|
110
|
+
if ((error as any)[getWithRetryForTokenRefreshRepeat] === true) {
|
|
99
111
|
return get(options);
|
|
100
112
|
}
|
|
101
|
-
throw
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
102
115
|
}
|
|
103
116
|
});
|
|
104
117
|
}
|
|
@@ -112,13 +125,13 @@ export async function fetchHelper(
|
|
|
112
125
|
// Node-fetch and dom have conflicting typing, force them to work by casting for now
|
|
113
126
|
return fetch(requestInfo, requestInit).then(
|
|
114
127
|
async (fetchResponse) => {
|
|
115
|
-
const response = fetchResponse as
|
|
128
|
+
const response = fetchResponse as unknown as Response;
|
|
116
129
|
// Let's assume we can retry.
|
|
117
130
|
if (!response) {
|
|
118
131
|
throw new NonRetryableError(
|
|
119
132
|
// pre-0.58 error message: No response from fetch call
|
|
120
133
|
"No response from ODSP fetch call",
|
|
121
|
-
|
|
134
|
+
OdspErrorTypes.incorrectServerResponse,
|
|
122
135
|
{ driverVersion },
|
|
123
136
|
);
|
|
124
137
|
}
|
|
@@ -153,14 +166,19 @@ export async function fetchHelper(
|
|
|
153
166
|
const redactedErrorText = taggedErrorMessage.value.replace(urlRegex, "REDACTED_URL");
|
|
154
167
|
|
|
155
168
|
// This error is thrown by fetch() when AbortSignal is provided and it gets cancelled
|
|
169
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
156
170
|
if (error.name === "AbortError") {
|
|
157
|
-
throw new RetryableError(
|
|
158
|
-
|
|
159
|
-
|
|
171
|
+
throw new RetryableError(
|
|
172
|
+
"Fetch Timeout (AbortError)",
|
|
173
|
+
OdspErrorTypes.fetchTimeout,
|
|
174
|
+
{
|
|
175
|
+
driverVersion,
|
|
176
|
+
},
|
|
177
|
+
);
|
|
160
178
|
}
|
|
161
179
|
// TCP/IP timeout
|
|
162
180
|
if (redactedErrorText.includes("ETIMEDOUT")) {
|
|
163
|
-
throw new RetryableError("Fetch Timeout (ETIMEDOUT)",
|
|
181
|
+
throw new RetryableError("Fetch Timeout (ETIMEDOUT)", OdspErrorTypes.fetchTimeout, {
|
|
164
182
|
driverVersion,
|
|
165
183
|
});
|
|
166
184
|
}
|
|
@@ -170,7 +188,7 @@ export async function fetchHelper(
|
|
|
170
188
|
throw new RetryableError(
|
|
171
189
|
// pre-0.58 error message prefix: Offline
|
|
172
190
|
`ODSP fetch failure (Offline): ${redactedErrorText}`,
|
|
173
|
-
|
|
191
|
+
OdspErrorTypes.offlineError,
|
|
174
192
|
{
|
|
175
193
|
driverVersion,
|
|
176
194
|
rawErrorMessage: taggedErrorMessage,
|
|
@@ -182,7 +200,7 @@ export async function fetchHelper(
|
|
|
182
200
|
throw new RetryableError(
|
|
183
201
|
// pre-0.58 error message prefix: Fetch error
|
|
184
202
|
`ODSP fetch failure: ${redactedErrorText}`,
|
|
185
|
-
|
|
203
|
+
OdspErrorTypes.fetchFailure,
|
|
186
204
|
{
|
|
187
205
|
driverVersion,
|
|
188
206
|
rawErrorMessage: taggedErrorMessage,
|
|
@@ -206,7 +224,7 @@ export async function fetchArray(
|
|
|
206
224
|
let arrayBuffer: ArrayBuffer;
|
|
207
225
|
try {
|
|
208
226
|
arrayBuffer = await content.arrayBuffer();
|
|
209
|
-
} catch
|
|
227
|
+
} catch {
|
|
210
228
|
// Parsing can fail and message could contain full request URI, including
|
|
211
229
|
// tokens, etc. So do not log error object itself.
|
|
212
230
|
throwOdspNetworkError(
|
|
@@ -240,7 +258,7 @@ export async function fetchAndParseAsJSONHelper<T>(
|
|
|
240
258
|
let text: string | undefined;
|
|
241
259
|
try {
|
|
242
260
|
text = await content.text();
|
|
243
|
-
} catch
|
|
261
|
+
} catch {
|
|
244
262
|
// JSON.parse() can fail and message would container full request URI, including
|
|
245
263
|
// tokens... It fails for me with "Unexpected end of JSON input" quite often - an attempt to download big file
|
|
246
264
|
// (many ops) almost always ends up with this error - I'd guess 1% of op request end up here... It always
|
|
@@ -259,7 +277,7 @@ export async function fetchAndParseAsJSONHelper<T>(
|
|
|
259
277
|
propsToLog.bodySize = text.length;
|
|
260
278
|
const res = {
|
|
261
279
|
headers,
|
|
262
|
-
content: JSON.parse(text),
|
|
280
|
+
content: JSON.parse(text) as T,
|
|
263
281
|
propsToLog,
|
|
264
282
|
duration,
|
|
265
283
|
};
|
|
@@ -279,11 +297,8 @@ export interface INewFileInfo extends IFileInfoBase {
|
|
|
279
297
|
/**
|
|
280
298
|
* application can request creation of a share link along with the creation of a new file
|
|
281
299
|
* by passing in an optional param to specify the kind of sharing link
|
|
282
|
-
* (at the time of adding this comment Sept/2021), odsp only supports csl
|
|
283
|
-
* ShareLinkTypes will deprecated in future. Use ISharingLinkKind instead which specifies both
|
|
284
|
-
* share link type and the role type.
|
|
285
300
|
*/
|
|
286
|
-
createLinkType?:
|
|
301
|
+
createLinkType?: ISharingLinkKind;
|
|
287
302
|
}
|
|
288
303
|
|
|
289
304
|
export interface IExistingFileInfo extends IFileInfoBase {
|
|
@@ -306,13 +321,15 @@ export function getOdspResolvedUrl(resolvedUrl: IResolvedUrl): IOdspResolvedUrl
|
|
|
306
321
|
}
|
|
307
322
|
|
|
308
323
|
/**
|
|
324
|
+
* Type narrowing utility to determine if the provided {@link @fluidframework/driver-definitions#IResolvedUrl}
|
|
325
|
+
* is an {@link @fluidframework/odsp-driver-definitions#IOdspResolvedUrl}.
|
|
309
326
|
* @internal
|
|
310
327
|
*/
|
|
311
328
|
export function isOdspResolvedUrl(resolvedUrl: IResolvedUrl): resolvedUrl is IOdspResolvedUrl {
|
|
312
329
|
return "odspResolvedUrl" in resolvedUrl && resolvedUrl.odspResolvedUrl === true;
|
|
313
330
|
}
|
|
314
331
|
|
|
315
|
-
export const createOdspLogger = (logger?: ITelemetryBaseLogger) =>
|
|
332
|
+
export const createOdspLogger = (logger?: ITelemetryBaseLogger): ITelemetryLoggerExt =>
|
|
316
333
|
createChildLogger({
|
|
317
334
|
logger,
|
|
318
335
|
namespace: "OdspDriver",
|
|
@@ -323,7 +340,12 @@ export const createOdspLogger = (logger?: ITelemetryBaseLogger) =>
|
|
|
323
340
|
},
|
|
324
341
|
});
|
|
325
342
|
|
|
326
|
-
export function evalBlobsAndTrees(snapshot: IOdspSnapshot) {
|
|
343
|
+
export function evalBlobsAndTrees(snapshot: IOdspSnapshot): {
|
|
344
|
+
numTrees: number;
|
|
345
|
+
numBlobs: number;
|
|
346
|
+
encodedBlobsSize: number;
|
|
347
|
+
decodedBlobsSize: number;
|
|
348
|
+
} {
|
|
327
349
|
let numTrees = 0;
|
|
328
350
|
let numBlobs = 0;
|
|
329
351
|
let encodedBlobsSize = 0;
|
|
@@ -391,7 +413,7 @@ export function toInstrumentedOdspTokenFetcher(
|
|
|
391
413
|
throw new NonRetryableError(
|
|
392
414
|
// pre-0.58 error message: Token is null for ${name} call
|
|
393
415
|
`The Host-provided token fetcher returned null`,
|
|
394
|
-
|
|
416
|
+
OdspErrorTypes.fetchTokenError,
|
|
395
417
|
{ method: name, driverVersion },
|
|
396
418
|
);
|
|
397
419
|
}
|
|
@@ -400,13 +422,14 @@ export function toInstrumentedOdspTokenFetcher(
|
|
|
400
422
|
(error) => {
|
|
401
423
|
// There is an important but unofficial contract here where token providers can set canRetry: true
|
|
402
424
|
// to hook into the driver's retry logic (e.g. the retry loop when initiating a connection)
|
|
425
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
|
403
426
|
const rawCanRetry = error?.canRetry;
|
|
404
427
|
const tokenError = wrapError(
|
|
405
428
|
error,
|
|
406
429
|
(errorMessage) =>
|
|
407
430
|
new NetworkErrorBasic(
|
|
408
431
|
`The Host-provided token fetcher threw an error`,
|
|
409
|
-
|
|
432
|
+
OdspErrorTypes.fetchTokenError,
|
|
410
433
|
typeof rawCanRetry === "boolean"
|
|
411
434
|
? rawCanRetry
|
|
412
435
|
: false /* canRetry */,
|
|
@@ -444,18 +467,14 @@ export const maxUmpPostBodySize = 79872;
|
|
|
444
467
|
* @returns A string of request parameters that can be concatenated with the base URI
|
|
445
468
|
*/
|
|
446
469
|
export function buildOdspShareLinkReqParams(
|
|
447
|
-
shareLinkType:
|
|
448
|
-
) {
|
|
470
|
+
shareLinkType: ISharingLinkKind | undefined,
|
|
471
|
+
): string | undefined {
|
|
449
472
|
if (!shareLinkType) {
|
|
450
473
|
return;
|
|
451
474
|
}
|
|
452
|
-
const scope =
|
|
453
|
-
if (!scope) {
|
|
454
|
-
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
455
|
-
return `createLinkType=${shareLinkType}`;
|
|
456
|
-
}
|
|
475
|
+
const scope = shareLinkType.scope;
|
|
457
476
|
let shareLinkRequestParams = `createLinkScope=${scope}`;
|
|
458
|
-
const role =
|
|
477
|
+
const role = shareLinkType.role;
|
|
459
478
|
shareLinkRequestParams = role
|
|
460
479
|
? `${shareLinkRequestParams}&createLinkRole=${role}`
|
|
461
480
|
: shareLinkRequestParams;
|
|
@@ -476,6 +495,36 @@ export async function measureP<T>(callback: () => Promise<T>): Promise<[T, numbe
|
|
|
476
495
|
return [result, time];
|
|
477
496
|
}
|
|
478
497
|
|
|
479
|
-
export function getJoinSessionCacheKey(odspResolvedUrl: IOdspResolvedUrl) {
|
|
498
|
+
export function getJoinSessionCacheKey(odspResolvedUrl: IOdspResolvedUrl): string {
|
|
480
499
|
return `${odspResolvedUrl.hashedDocumentId}/joinsession`;
|
|
481
500
|
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Utility API to check if the type of snapshot contents is `ISnapshot`.
|
|
504
|
+
* @internal
|
|
505
|
+
* @param obj - obj whose type needs to be identified.
|
|
506
|
+
*/
|
|
507
|
+
export function isInstanceOfISnapshot(
|
|
508
|
+
// eslint-disable-next-line import/no-deprecated
|
|
509
|
+
obj: ISnapshotContents | ISnapshot | undefined,
|
|
510
|
+
): obj is ISnapshot {
|
|
511
|
+
return obj !== undefined && "snapshotFormatV" in obj && obj.snapshotFormatV === 1;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* This tells whether request if for a specific loading group or not. The snapshot which
|
|
516
|
+
* we fetch on initial load, fetches all ungrouped content.
|
|
517
|
+
*/
|
|
518
|
+
export function isSnapshotFetchForLoadingGroup(loadingGroupIds: string[] | undefined): boolean {
|
|
519
|
+
return loadingGroupIds !== undefined && loadingGroupIds.length > 0;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/*
|
|
523
|
+
* This tells whether we are using legacy flow for fetching snapshot where we don't use
|
|
524
|
+
* groupId query param in the trees latest network call.
|
|
525
|
+
*/
|
|
526
|
+
export function useLegacyFlowWithoutGroupsForSnapshotFetch(
|
|
527
|
+
loadingGroupIds: string[] | undefined,
|
|
528
|
+
): boolean {
|
|
529
|
+
return loadingGroupIds === undefined;
|
|
530
|
+
}
|
package/src/opsCaching.ts
CHANGED
|
@@ -37,8 +37,8 @@ export class OpsCache {
|
|
|
37
37
|
private readonly logger: ITelemetryLoggerExt,
|
|
38
38
|
private readonly cache: ICache,
|
|
39
39
|
private readonly batchSize: number,
|
|
40
|
-
private readonly timerGranularity,
|
|
41
|
-
private totalOpsToCache,
|
|
40
|
+
private readonly timerGranularity: number,
|
|
41
|
+
private totalOpsToCache: number,
|
|
42
42
|
) {
|
|
43
43
|
/**
|
|
44
44
|
* Initial batch is a special case because it will never be full - all ops prior (inclusive) to
|
|
@@ -55,7 +55,7 @@ export class OpsCache {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
public dispose() {
|
|
58
|
+
public dispose(): void {
|
|
59
59
|
this.batches.clear();
|
|
60
60
|
if (this.timer !== undefined) {
|
|
61
61
|
clearTimeout(this.timer);
|
|
@@ -63,7 +63,7 @@ export class OpsCache {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
public flushOps() {
|
|
66
|
+
public flushOps(): void {
|
|
67
67
|
for (const [key, value] of this.batches) {
|
|
68
68
|
// Don't flush if the batch has no ops, already flushed or has empty slots at both beginning and end.
|
|
69
69
|
if (
|
|
@@ -80,7 +80,7 @@ export class OpsCache {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
public addOps(ops: IMessage[]) {
|
|
83
|
+
public addOps(ops: IMessage[]): void {
|
|
84
84
|
if (this.totalOpsToCache <= 0) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
@@ -114,6 +114,7 @@ export class OpsCache {
|
|
|
114
114
|
if (currentBatch.remainingSlots === 0) {
|
|
115
115
|
// batch is full, flush to cache
|
|
116
116
|
this.write(batchNumber, currentBatch);
|
|
117
|
+
// eslint-disable-next-line unicorn/no-null
|
|
117
118
|
this.batches.set(batchNumber, null);
|
|
118
119
|
} else {
|
|
119
120
|
this.scheduleTimer();
|
|
@@ -144,7 +145,7 @@ export class OpsCache {
|
|
|
144
145
|
if (res === undefined) {
|
|
145
146
|
return messages;
|
|
146
147
|
}
|
|
147
|
-
const result: CacheEntry = JSON.parse(res);
|
|
148
|
+
const result: CacheEntry = JSON.parse(res) as CacheEntry;
|
|
148
149
|
const prevMessagesLength = messages.length;
|
|
149
150
|
for (const op of result) {
|
|
150
151
|
// Note that we write out undefined, but due to JSON.stringify, it turns into null!
|
|
@@ -160,7 +161,7 @@ export class OpsCache {
|
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
messages.push(op);
|
|
163
|
-
} else if (messages.length
|
|
164
|
+
} else if (messages.length > 0) {
|
|
164
165
|
// If there is any gap, return the messages till now.
|
|
165
166
|
return messages;
|
|
166
167
|
}
|
|
@@ -199,7 +200,7 @@ export class OpsCache {
|
|
|
199
200
|
return messages;
|
|
200
201
|
}
|
|
201
202
|
|
|
202
|
-
protected write(batchNumber: number, payload: IBatch) {
|
|
203
|
+
protected write(batchNumber: number, payload: IBatch): void {
|
|
203
204
|
// Errors are caught and logged by PersistedCacheWithErrorHandling that sits
|
|
204
205
|
// in the adapter chain of cache adapters
|
|
205
206
|
this.cache
|
|
@@ -209,7 +210,7 @@ export class OpsCache {
|
|
|
209
210
|
});
|
|
210
211
|
}
|
|
211
212
|
|
|
212
|
-
protected scheduleTimer() {
|
|
213
|
+
protected scheduleTimer(): void {
|
|
213
214
|
if (!this.timer && this.timerGranularity > 0) {
|
|
214
215
|
this.timer = setTimeout(() => {
|
|
215
216
|
this.timer = undefined;
|
|
@@ -218,15 +219,15 @@ export class OpsCache {
|
|
|
218
219
|
}
|
|
219
220
|
}
|
|
220
221
|
|
|
221
|
-
private getBatchNumber(sequenceNumber: number) {
|
|
222
|
+
private getBatchNumber(sequenceNumber: number): number {
|
|
222
223
|
return Math.floor(sequenceNumber / this.batchSize);
|
|
223
224
|
}
|
|
224
225
|
|
|
225
|
-
private getPositionInBatchArray(sequenceNumber: number) {
|
|
226
|
+
private getPositionInBatchArray(sequenceNumber: number): number {
|
|
226
227
|
return sequenceNumber % this.batchSize;
|
|
227
228
|
}
|
|
228
229
|
|
|
229
|
-
private initializeNewBatchDataArray() {
|
|
230
|
+
private initializeNewBatchDataArray(): IMessage[] {
|
|
230
231
|
const tempArray: IMessage[] = [];
|
|
231
232
|
tempArray.length = this.batchSize; // fill with empty, undefined elements
|
|
232
233
|
return tempArray;
|
package/src/packageVersion.ts
CHANGED