@fluidframework/odsp-driver 2.0.0-dev-rc.1.0.0.232845 → 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 +18 -3
- 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 +11 -12
- 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.map +1 -1
- package/dist/compactSnapshotParser.js +87 -69
- package/dist/compactSnapshotParser.js.map +1 -1
- package/dist/compactSnapshotWriter.d.ts.map +1 -1
- package/dist/compactSnapshotWriter.js +25 -19
- package/dist/compactSnapshotWriter.js.map +1 -1
- package/dist/contracts.d.ts +10 -4
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/createFile.d.ts +3 -3
- package/dist/createFile.d.ts.map +1 -1
- package/dist/createFile.js +30 -27
- 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 +2 -2
- package/dist/createNewUtils.d.ts.map +1 -1
- package/dist/createNewUtils.js +12 -8
- package/dist/createNewUtils.js.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 +66 -43
- package/dist/epochTracker.js.map +1 -1
- package/dist/fetchSnapshot.d.ts +11 -8
- package/dist/fetchSnapshot.d.ts.map +1 -1
- package/dist/fetchSnapshot.js +79 -58
- package/dist/fetchSnapshot.js.map +1 -1
- package/dist/getFileLink.d.ts.map +1 -1
- package/dist/getFileLink.js +24 -17
- 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 +1 -1
- package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentService.js +5 -5
- 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 +1 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js +6 -6
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
- package/dist/odsp-driver-alpha.d.ts +27 -12
- package/dist/odsp-driver-beta.d.ts +1 -2
- package/dist/odsp-driver-public.d.ts +1 -2
- package/dist/odsp-driver-untrimmed.d.ts +29 -12
- package/dist/odspCache.d.ts +3 -3
- 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 +7 -5
- package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
- package/dist/odspDelayLoadedDeltaStream.js +41 -28
- 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 +6 -4
- package/dist/odspDocumentService.d.ts.map +1 -1
- package/dist/odspDocumentService.js +19 -16
- 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 +26 -22
- 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 +15 -9
- package/dist/odspDocumentStorageManager.d.ts.map +1 -1
- package/dist/odspDocumentStorageManager.js +219 -181
- package/dist/odspDocumentStorageManager.js.map +1 -1
- package/dist/odspDocumentStorageServiceBase.d.ts +2 -4
- package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
- package/dist/odspDocumentStorageServiceBase.js +32 -29
- 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 +25 -22
- 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 +5 -5
- 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 +3 -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 +1 -1
- package/dist/odspSnapshotParser.d.ts.map +1 -1
- package/dist/odspSnapshotParser.js +3 -2
- 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 +19 -7
- package/dist/odspUtils.d.ts.map +1 -1
- package/dist/odspUtils.js +61 -31
- 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 +0 -1
- package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
- package/dist/retryErrorsStorageAdapter.js +2 -5
- package/dist/retryErrorsStorageAdapter.js.map +1 -1
- package/dist/retryUtils.d.ts.map +1 -1
- package/dist/retryUtils.js +6 -2
- 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 +15 -11
- 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} +1 -1
- package/lib/compactSnapshotParser.d.ts.map +1 -0
- package/lib/{compactSnapshotParser.mjs → compactSnapshotParser.js} +61 -43
- package/lib/compactSnapshotParser.js.map +1 -0
- package/lib/{compactSnapshotWriter.d.mts → compactSnapshotWriter.d.ts} +1 -1
- package/lib/compactSnapshotWriter.d.ts.map +1 -0
- package/lib/{compactSnapshotWriter.mjs → compactSnapshotWriter.js} +13 -7
- 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} +11 -5
- package/lib/contracts.d.ts.map +1 -0
- package/lib/{contracts.mjs → contracts.js} +1 -1
- 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} +4 -4
- package/lib/createFile.d.ts.map +1 -0
- package/lib/{createFile.mjs → createFile.js} +15 -12
- 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} +3 -3
- package/lib/createNewUtils.d.ts.map +1 -0
- package/lib/{createNewUtils.mjs → createNewUtils.js} +9 -5
- package/lib/createNewUtils.js.map +1 -0
- package/lib/{createOdspCreateContainerRequest.d.mts → createOdspCreateContainerRequest.d.ts} +5 -1
- 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} +56 -33
- 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} +12 -9
- package/lib/fetchSnapshot.d.ts.map +1 -0
- package/lib/{fetchSnapshot.mjs → fetchSnapshot.js} +61 -40
- 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} +14 -7
- 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} +2 -2
- package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentService.mjs → localOdspDocumentService.js} +4 -4
- 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} +2 -2
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentStorageManager.mjs → localOdspDocumentStorageManager.js} +4 -4
- package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -0
- package/lib/{odsp-driver-alpha.d.mts → odsp-driver-alpha.d.ts} +27 -12
- package/lib/{odsp-driver-public.d.mts → odsp-driver-beta.d.ts} +1 -2
- package/lib/{odsp-driver-beta.d.mts → odsp-driver-public.d.ts} +1 -2
- package/lib/{odsp-driver-untrimmed.d.mts → odsp-driver-untrimmed.d.ts} +29 -12
- package/lib/{odspCache.d.mts → odspCache.d.ts} +8 -4
- 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} +8 -6
- package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -0
- package/lib/{odspDelayLoadedDeltaStream.mjs → odspDelayLoadedDeltaStream.js} +33 -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} +7 -5
- package/lib/odspDocumentService.d.ts.map +1 -0
- package/lib/{odspDocumentService.mjs → odspDocumentService.js} +16 -11
- 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} +23 -17
- 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} +16 -10
- package/lib/odspDocumentStorageManager.d.ts.map +1 -0
- package/lib/{odspDocumentStorageManager.mjs → odspDocumentStorageManager.js} +207 -167
- package/lib/odspDocumentStorageManager.js.map +1 -0
- package/lib/{odspDocumentStorageServiceBase.d.mts → odspDocumentStorageServiceBase.d.ts} +3 -5
- package/lib/odspDocumentStorageServiceBase.d.ts.map +1 -0
- package/lib/{odspDocumentStorageServiceBase.mjs → odspDocumentStorageServiceBase.js} +32 -29
- 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} +24 -17
- 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} +4 -4
- 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} +4 -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} +2 -2
- package/lib/odspSnapshotParser.d.ts.map +1 -0
- package/lib/{odspSnapshotParser.mjs → odspSnapshotParser.js} +4 -3
- 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} +20 -8
- package/lib/odspUtils.d.ts.map +1 -0
- package/lib/{odspUtils.mjs → odspUtils.js} +45 -17
- 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} +1 -2
- package/lib/retryErrorsStorageAdapter.d.ts.map +1 -0
- package/lib/{retryErrorsStorageAdapter.mjs → retryErrorsStorageAdapter.js} +2 -5
- 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} +6 -2
- 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} +17 -9
- package/lib/zipItDataRepresentationUtils.js.map +1 -0
- package/package.json +90 -31
- package/src/ReadBufferUtils.ts +7 -7
- package/src/WriteBufferUtils.ts +13 -9
- package/src/checkUrl.ts +4 -2
- package/src/compactSnapshotParser.ts +87 -52
- package/src/compactSnapshotWriter.ts +19 -12
- package/src/contracts.ts +16 -4
- package/src/createFile.ts +16 -13
- package/src/createNewContainerOnExistingFile.ts +8 -8
- package/src/createNewModule.ts +2 -2
- package/src/createNewUtils.ts +19 -9
- package/src/createOdspCreateContainerRequest.ts +1 -1
- package/src/createOdspUrl.ts +1 -1
- package/src/epochTracker.ts +90 -55
- package/src/fetchSnapshot.ts +104 -47
- package/src/getFileLink.ts +21 -13
- package/src/getQueryString.ts +2 -0
- package/src/index.ts +27 -19
- package/src/localOdspDriver/localOdspDocumentService.ts +3 -3
- package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +12 -11
- package/src/localOdspDriver/localOdspDocumentStorageManager.ts +5 -5
- package/src/odspCache.ts +12 -9
- package/src/odspDelayLoadedDeltaStream.ts +54 -33
- package/src/odspDeltaStorageService.ts +17 -16
- package/src/odspDocumentDeltaConnection.ts +52 -34
- package/src/odspDocumentService.ts +23 -20
- package/src/odspDocumentServiceFactory.ts +7 -2
- package/src/odspDocumentServiceFactoryCore.ts +25 -18
- package/src/odspDocumentServiceFactoryWithCodeSplit.ts +1 -1
- package/src/odspDocumentStorageManager.ts +276 -216
- package/src/odspDocumentStorageServiceBase.ts +45 -43
- package/src/odspDriverUrlResolver.ts +38 -24
- package/src/odspDriverUrlResolverForShareLink.ts +50 -31
- package/src/odspError.ts +4 -4
- package/src/odspFluidFileLink.ts +3 -3
- package/src/odspLocationRedirection.ts +1 -1
- package/src/odspPublicUtils.ts +3 -0
- package/src/odspSnapshotParser.ts +4 -3
- package/src/odspSummaryUploadManager.ts +21 -9
- package/src/odspUrlHelper.ts +2 -3
- package/src/odspUtils.ts +73 -30
- package/src/opsCaching.ts +13 -12
- package/src/packageVersion.ts +1 -1
- package/src/prefetchLatestSnapshot.ts +24 -15
- package/src/retryErrorsStorageAdapter.ts +4 -8
- package/src/retryUtils.ts +6 -2
- package/src/socketModule.ts +2 -0
- package/src/vroom.ts +6 -6
- package/src/zipItDataRepresentationUtils.ts +63 -35
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- 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.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
|
@@ -14,11 +14,10 @@ import {
|
|
|
14
14
|
ISnapshot,
|
|
15
15
|
ISnapshotFetchOptions,
|
|
16
16
|
} from "@fluidframework/driver-definitions";
|
|
17
|
+
import { maximumCacheDurationMs } from "@fluidframework/odsp-driver-definitions";
|
|
17
18
|
import * as api from "@fluidframework/protocol-definitions";
|
|
18
19
|
import { IConfigProvider } from "@fluidframework/telemetry-utils";
|
|
19
20
|
|
|
20
|
-
const maximumCacheDurationMs: FiveDaysMs = 432000000; // 5 * 24 * 60 * 60 * 1000 = 5 days in ms
|
|
21
|
-
|
|
22
21
|
class BlobCache {
|
|
23
22
|
// Save the timeout so we can cancel and reschedule it as needed
|
|
24
23
|
private blobCacheTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
@@ -43,14 +42,14 @@ class BlobCache {
|
|
|
43
42
|
// So for now, purging is disabled.
|
|
44
43
|
private readonly purgeEnabled = false;
|
|
45
44
|
|
|
46
|
-
public get value() {
|
|
45
|
+
public get value(): Map<string, ArrayBuffer> {
|
|
47
46
|
return this._blobCache;
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
public addBlobs(blobs: Map<string, ArrayBuffer>) {
|
|
51
|
-
blobs.
|
|
49
|
+
public addBlobs(blobs: Map<string, ArrayBuffer>): void {
|
|
50
|
+
for (const [blobId, value] of blobs.entries()) {
|
|
52
51
|
this._blobCache.set(blobId, value);
|
|
53
|
-
}
|
|
52
|
+
}
|
|
54
53
|
// Reset the timer on cache set
|
|
55
54
|
this.scheduleClearBlobsCache();
|
|
56
55
|
}
|
|
@@ -58,14 +57,14 @@ class BlobCache {
|
|
|
58
57
|
/**
|
|
59
58
|
* Schedule a timer for clearing the blob cache or defer the current one.
|
|
60
59
|
*/
|
|
61
|
-
private scheduleClearBlobsCache() {
|
|
60
|
+
private scheduleClearBlobsCache(): void {
|
|
62
61
|
if (this.blobCacheTimeout !== undefined) {
|
|
63
62
|
// If we already have an outstanding timer, just signal that we should defer the clear
|
|
64
63
|
this.deferBlobCacheClear = true;
|
|
65
64
|
} else if (this.purgeEnabled) {
|
|
66
65
|
// If we don't have an outstanding timer, set a timer
|
|
67
66
|
// When the timer runs out, we'll decide whether to proceed with the cache clear or reset the timer
|
|
68
|
-
const clearCacheOrDefer = () => {
|
|
67
|
+
const clearCacheOrDefer = (): void => {
|
|
69
68
|
this.blobCacheTimeout = undefined;
|
|
70
69
|
if (this.deferBlobCacheClear) {
|
|
71
70
|
this.deferBlobCacheClear = false;
|
|
@@ -77,7 +76,9 @@ class BlobCache {
|
|
|
77
76
|
// We want to optimize both - memory footprint and number of future requests to storage.
|
|
78
77
|
// Note that Container can realize data store or DDS on-demand at any point in time, so we do not
|
|
79
78
|
// control when blobs will be used.
|
|
80
|
-
|
|
79
|
+
for (const blobId of this._blobCache.keys()) {
|
|
80
|
+
this.blobsEvicted.add(blobId);
|
|
81
|
+
}
|
|
81
82
|
this._blobCache.clear();
|
|
82
83
|
}
|
|
83
84
|
};
|
|
@@ -88,7 +89,10 @@ class BlobCache {
|
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
public getBlob(blobId: string) {
|
|
92
|
+
public getBlob(blobId: string): {
|
|
93
|
+
blobContent: ArrayBuffer | undefined;
|
|
94
|
+
evicted: boolean;
|
|
95
|
+
} {
|
|
92
96
|
// Reset the timer on attempted cache read
|
|
93
97
|
this.scheduleClearBlobsCache();
|
|
94
98
|
const blobContent = this._blobCache.get(blobId);
|
|
@@ -96,7 +100,7 @@ class BlobCache {
|
|
|
96
100
|
return { blobContent, evicted };
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
public setBlob(blobId: string, blob: ArrayBuffer) {
|
|
103
|
+
public setBlob(blobId: string, blob: ArrayBuffer): Map<string, ArrayBuffer> | undefined {
|
|
100
104
|
// This API is called as result of cache miss and reading blob from storage.
|
|
101
105
|
// Runtime never reads same blob twice.
|
|
102
106
|
// The only reason we may get read request for same blob is blob de-duping in summaries.
|
|
@@ -137,8 +141,6 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
137
141
|
}
|
|
138
142
|
protected readonly commitCache: Map<string, api.ISnapshotTree> = new Map();
|
|
139
143
|
|
|
140
|
-
private readonly attributesBlobHandles: Set<string> = new Set();
|
|
141
|
-
|
|
142
144
|
private _ops: api.ISequencedDocumentMessage[] | undefined;
|
|
143
145
|
|
|
144
146
|
private _snapshotSequenceNumber: number | undefined;
|
|
@@ -154,12 +156,10 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
154
156
|
return this._ops;
|
|
155
157
|
}
|
|
156
158
|
|
|
157
|
-
public get snapshotSequenceNumber() {
|
|
159
|
+
public get snapshotSequenceNumber(): number | undefined {
|
|
158
160
|
return this._snapshotSequenceNumber;
|
|
159
161
|
}
|
|
160
162
|
|
|
161
|
-
public readonly repositoryUrl = "";
|
|
162
|
-
|
|
163
163
|
public abstract createBlob(file: ArrayBufferLike): Promise<api.ICreateBlobResponse>;
|
|
164
164
|
|
|
165
165
|
private async readBlobCore(blobId: string): Promise<ArrayBuffer> {
|
|
@@ -179,34 +179,25 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
179
179
|
// eslint-disable-next-line @rushstack/no-new-null
|
|
180
180
|
): Promise<api.ISnapshotTree | null> {
|
|
181
181
|
let id: string;
|
|
182
|
-
if (
|
|
182
|
+
if (version?.id) {
|
|
183
|
+
id = version.id;
|
|
184
|
+
} else {
|
|
185
|
+
// eslint-disable-next-line unicorn/no-null
|
|
183
186
|
const versions = await this.getVersions(null, 1, scenarioName);
|
|
184
187
|
if (!versions || versions.length === 0) {
|
|
188
|
+
// eslint-disable-next-line unicorn/no-null
|
|
185
189
|
return null;
|
|
186
190
|
}
|
|
187
191
|
id = versions[0].id;
|
|
188
|
-
} else {
|
|
189
|
-
id = version.id;
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
const snapshotTree = await this.readTree(id, scenarioName);
|
|
193
195
|
if (!snapshotTree) {
|
|
196
|
+
// eslint-disable-next-line unicorn/no-null
|
|
194
197
|
return null;
|
|
195
198
|
}
|
|
196
199
|
|
|
197
|
-
|
|
198
|
-
const attributesBlob = snapshotTree.blobs.attributes;
|
|
199
|
-
if (attributesBlob) {
|
|
200
|
-
this.attributesBlobHandles.add(attributesBlob);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// When we upload the container snapshot, we upload appTree in ".app" and protocol tree in ".protocol"
|
|
205
|
-
// So when we request the snapshot we get ".app" as tree and not as commit node as in the case just above.
|
|
206
|
-
const appTree = snapshotTree.trees[".app"];
|
|
207
|
-
const protocolTree = snapshotTree.trees[".protocol"];
|
|
208
|
-
|
|
209
|
-
return this.combineProtocolAndAppSnapshotTree(appTree, protocolTree);
|
|
200
|
+
return this.combineProtocolAndAppSnapshotTree(snapshotTree);
|
|
210
201
|
}
|
|
211
202
|
|
|
212
203
|
public abstract getSnapshot(snapshotFetchOptions?: ISnapshotFetchOptions): Promise<ISnapshot>;
|
|
@@ -228,11 +219,11 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
228
219
|
throw new Error("Not implemented yet");
|
|
229
220
|
}
|
|
230
221
|
|
|
231
|
-
protected setRootTree(id: string, tree: api.ISnapshotTree) {
|
|
222
|
+
protected setRootTree(id: string, tree: api.ISnapshotTree): void {
|
|
232
223
|
this.commitCache.set(id, tree);
|
|
233
224
|
}
|
|
234
225
|
|
|
235
|
-
protected initBlobsCache(blobs: Map<string, ArrayBuffer>) {
|
|
226
|
+
protected initBlobsCache(blobs: Map<string, ArrayBuffer>): void {
|
|
236
227
|
this.blobCache.addBlobs(blobs);
|
|
237
228
|
}
|
|
238
229
|
|
|
@@ -242,6 +233,7 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
242
233
|
tree = await this.fetchTreeFromSnapshot(id, scenarioName);
|
|
243
234
|
}
|
|
244
235
|
|
|
236
|
+
// eslint-disable-next-line unicorn/no-null
|
|
245
237
|
return tree ?? null;
|
|
246
238
|
}
|
|
247
239
|
|
|
@@ -250,28 +242,35 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
250
242
|
scenarioName?: string,
|
|
251
243
|
): Promise<api.ISnapshotTree | undefined>;
|
|
252
244
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
245
|
+
protected combineProtocolAndAppSnapshotTree(
|
|
246
|
+
snapshotTree: api.ISnapshotTree,
|
|
247
|
+
): api.ISnapshotTree {
|
|
248
|
+
// When we upload the container snapshot, we upload appTree in ".app" and protocol tree in ".protocol"
|
|
249
|
+
// So when we request the snapshot we get ".app" as tree and not as commit node as in the case just above.
|
|
250
|
+
const hierarchicalAppTree = snapshotTree.trees[".app"];
|
|
251
|
+
const hierarchicalProtocolTree = snapshotTree.trees[".protocol"];
|
|
257
252
|
const summarySnapshotTree: api.ISnapshotTree = {
|
|
258
253
|
blobs: {
|
|
259
254
|
...hierarchicalAppTree.blobs,
|
|
260
255
|
},
|
|
261
256
|
trees: {
|
|
262
257
|
...hierarchicalAppTree.trees,
|
|
263
|
-
// the app tree could have a .protocol
|
|
264
|
-
// in that case we want to server protocol to override it
|
|
265
|
-
".protocol": hierarchicalProtocolTree,
|
|
266
258
|
},
|
|
267
259
|
};
|
|
268
260
|
|
|
261
|
+
// The app tree could have a .protocol in that case we want to server protocol to override it.
|
|
262
|
+
// Snapshot which are for a loading GroupId, will not have a protocol tree.
|
|
263
|
+
if (hierarchicalProtocolTree !== undefined) {
|
|
264
|
+
summarySnapshotTree.trees[".protocol"] = hierarchicalProtocolTree;
|
|
265
|
+
}
|
|
266
|
+
|
|
269
267
|
return summarySnapshotTree;
|
|
270
268
|
}
|
|
271
269
|
|
|
272
270
|
protected initializeFromSnapshot(
|
|
273
271
|
odspSnapshotCacheValue: ISnapshot,
|
|
274
272
|
cacheOps: boolean = true,
|
|
273
|
+
cacheSnapshot: boolean = true,
|
|
275
274
|
): string | undefined {
|
|
276
275
|
this._snapshotSequenceNumber = odspSnapshotCacheValue.sequenceNumber;
|
|
277
276
|
const { snapshotTree, blobContents, ops } = odspSnapshotCacheValue;
|
|
@@ -281,10 +280,13 @@ export abstract class OdspDocumentStorageServiceBase implements IDocumentStorage
|
|
|
281
280
|
if (snapshotTree) {
|
|
282
281
|
id = snapshotTree.id;
|
|
283
282
|
assert(id !== undefined, 0x221 /* "Root tree should contain the id" */);
|
|
284
|
-
|
|
283
|
+
if (cacheSnapshot) {
|
|
284
|
+
this.setRootTree(id, snapshotTree);
|
|
285
|
+
}
|
|
285
286
|
}
|
|
286
287
|
|
|
287
|
-
|
|
288
|
+
// Currently always cache blobs as container runtime is not caching them.
|
|
289
|
+
if (blobContents !== undefined) {
|
|
288
290
|
this.initBlobsCache(blobContents);
|
|
289
291
|
}
|
|
290
292
|
|
|
@@ -12,20 +12,30 @@ import {
|
|
|
12
12
|
} from "@fluidframework/driver-definitions";
|
|
13
13
|
import { IOdspResolvedUrl, OdspErrorTypes } from "@fluidframework/odsp-driver-definitions";
|
|
14
14
|
import { NonRetryableError } from "@fluidframework/driver-utils";
|
|
15
|
-
import { createOdspUrl } from "./createOdspUrl";
|
|
16
|
-
import { getApiRoot } from "./odspUrlHelper";
|
|
17
|
-
import { getOdspResolvedUrl } from "./odspUtils";
|
|
18
|
-
import { getHashedDocumentId } from "./odspPublicUtils";
|
|
19
|
-
import { ClpCompliantAppHeader } from "./contractsPublic";
|
|
20
|
-
import { pkgVersion } from "./packageVersion";
|
|
15
|
+
import { createOdspUrl } from "./createOdspUrl.js";
|
|
16
|
+
import { getApiRoot } from "./odspUrlHelper.js";
|
|
17
|
+
import { getOdspResolvedUrl } from "./odspUtils.js";
|
|
18
|
+
import { getHashedDocumentId } from "./odspPublicUtils.js";
|
|
19
|
+
import { ClpCompliantAppHeader } from "./contractsPublic.js";
|
|
20
|
+
import { pkgVersion } from "./packageVersion.js";
|
|
21
21
|
|
|
22
|
-
function getUrlBase(
|
|
22
|
+
function getUrlBase(
|
|
23
|
+
siteUrl: string,
|
|
24
|
+
driveId: string,
|
|
25
|
+
itemId: string,
|
|
26
|
+
fileVersion?: string,
|
|
27
|
+
): string {
|
|
23
28
|
const siteOrigin = new URL(siteUrl).origin;
|
|
24
29
|
const version = fileVersion ? `versions/${fileVersion}/` : "";
|
|
25
30
|
return `${getApiRoot(siteOrigin)}/drives/${driveId}/items/${itemId}/${version}`;
|
|
26
31
|
}
|
|
27
32
|
|
|
28
|
-
function getSnapshotUrl(
|
|
33
|
+
function getSnapshotUrl(
|
|
34
|
+
siteUrl: string,
|
|
35
|
+
driveId: string,
|
|
36
|
+
itemId: string,
|
|
37
|
+
fileVersion?: string,
|
|
38
|
+
): string {
|
|
29
39
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
30
40
|
return `${urlBase}opStream/snapshots`;
|
|
31
41
|
}
|
|
@@ -35,7 +45,7 @@ function getAttachmentPOSTUrl(
|
|
|
35
45
|
driveId: string,
|
|
36
46
|
itemId: string,
|
|
37
47
|
fileVersion?: string,
|
|
38
|
-
) {
|
|
48
|
+
): string {
|
|
39
49
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
40
50
|
return `${urlBase}opStream/attachment`;
|
|
41
51
|
}
|
|
@@ -45,7 +55,7 @@ function getAttachmentGETUrl(
|
|
|
45
55
|
driveId: string,
|
|
46
56
|
itemId: string,
|
|
47
57
|
fileVersion?: string,
|
|
48
|
-
) {
|
|
58
|
+
): string {
|
|
49
59
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
50
60
|
return `${urlBase}opStream/attachments`;
|
|
51
61
|
}
|
|
@@ -55,7 +65,7 @@ function getDeltaStorageUrl(
|
|
|
55
65
|
driveId: string,
|
|
56
66
|
itemId: string,
|
|
57
67
|
fileVersion?: string,
|
|
58
|
-
) {
|
|
68
|
+
): string {
|
|
59
69
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
60
70
|
return `${urlBase}opStream`;
|
|
61
71
|
}
|
|
@@ -66,12 +76,16 @@ function getDeltaStorageUrl(
|
|
|
66
76
|
*/
|
|
67
77
|
function removeBeginningSlash(str: string): string {
|
|
68
78
|
if (str.startsWith("/")) {
|
|
69
|
-
return str.
|
|
79
|
+
return str.slice(1);
|
|
70
80
|
}
|
|
71
81
|
|
|
72
82
|
return str;
|
|
73
83
|
}
|
|
74
84
|
|
|
85
|
+
// back-compat: GitHub #9653
|
|
86
|
+
const isFluidPackage = (pkg: Record<string, unknown>): boolean =>
|
|
87
|
+
typeof pkg === "object" && typeof pkg?.name === "string" && typeof pkg?.fluid === "object";
|
|
88
|
+
|
|
75
89
|
/**
|
|
76
90
|
* Resolver to resolve urls like the ones created by createOdspUrl which is driver inner
|
|
77
91
|
* url format. Ex: `${siteUrl}?driveId=${driveId}&itemId=${itemId}&path=${path}`
|
|
@@ -81,21 +95,22 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
81
95
|
constructor() {}
|
|
82
96
|
|
|
83
97
|
/**
|
|
84
|
-
* @
|
|
98
|
+
* {@inheritDoc @fluidframework/driver-definitions#IUrlResolver.resolve}
|
|
85
99
|
*/
|
|
86
100
|
public async resolve(request: IRequest): Promise<IOdspResolvedUrl> {
|
|
87
101
|
if (request.headers?.[DriverHeader.createNew]) {
|
|
88
102
|
const [siteURL, queryString] = request.url.split("?");
|
|
89
103
|
|
|
90
104
|
const searchParams = new URLSearchParams(queryString);
|
|
91
|
-
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
|
106
|
+
const fileName: string = request.headers[DriverHeader.createNew].fileName;
|
|
92
107
|
const driveID = searchParams.get("driveId");
|
|
93
108
|
const filePath = searchParams.get("path");
|
|
94
109
|
const packageName = searchParams.get("containerPackageName");
|
|
95
110
|
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- false positive
|
|
96
111
|
if (!(fileName && siteURL && driveID && filePath !== null && filePath !== undefined)) {
|
|
97
112
|
throw new NonRetryableError(
|
|
98
|
-
"Proper new file params should be there
|
|
113
|
+
"Proper new file params should be there",
|
|
99
114
|
OdspErrorTypes.genericError,
|
|
100
115
|
{ driverVersion: pkgVersion },
|
|
101
116
|
);
|
|
@@ -111,7 +126,7 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
111
126
|
type: "fluid",
|
|
112
127
|
odspResolvedUrl: true,
|
|
113
128
|
id: "odspCreateNew",
|
|
114
|
-
url: `
|
|
129
|
+
url: `https://${siteURL}?${queryString}&version=null`,
|
|
115
130
|
siteUrl: siteURL,
|
|
116
131
|
hashedDocumentId: "",
|
|
117
132
|
driveId: driveID,
|
|
@@ -132,7 +147,7 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
132
147
|
const hashedDocumentId = await getHashedDocumentId(driveId, itemId);
|
|
133
148
|
assert(!hashedDocumentId.includes("/"), 0x0a8 /* "Docid should not contain slashes!!" */);
|
|
134
149
|
|
|
135
|
-
const documentUrl = `
|
|
150
|
+
const documentUrl = `https://placeholder/placeholder/${hashedDocumentId}/${removeBeginningSlash(
|
|
136
151
|
path,
|
|
137
152
|
)}`;
|
|
138
153
|
|
|
@@ -190,21 +205,20 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
190
205
|
dataStorePath = odspResolvedUrl.dataStorePath;
|
|
191
206
|
}
|
|
192
207
|
if (dataStorePath.startsWith("/")) {
|
|
193
|
-
dataStorePath = dataStorePath.
|
|
208
|
+
dataStorePath = dataStorePath.slice(1);
|
|
194
209
|
}
|
|
195
210
|
|
|
196
|
-
|
|
197
|
-
const isFluidPackage = (pkg: any) =>
|
|
198
|
-
typeof pkg === "object" &&
|
|
199
|
-
typeof pkg?.name === "string" &&
|
|
200
|
-
typeof pkg?.fluid === "object";
|
|
201
|
-
let containerPackageName;
|
|
211
|
+
let containerPackageName: string | undefined;
|
|
202
212
|
if (packageInfoSource && "name" in packageInfoSource) {
|
|
203
213
|
containerPackageName = packageInfoSource.name;
|
|
204
214
|
// packageInfoSource is cast to any as it is typed to IContainerPackageInfo instead of IFluidCodeDetails
|
|
215
|
+
// TODO: use stronger type
|
|
216
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
205
217
|
} else if (isFluidPackage((packageInfoSource as any)?.package)) {
|
|
218
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
206
219
|
containerPackageName = (packageInfoSource as any)?.package.name;
|
|
207
220
|
} else {
|
|
221
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
208
222
|
containerPackageName = (packageInfoSource as any)?.package;
|
|
209
223
|
}
|
|
210
224
|
containerPackageName =
|
|
@@ -19,14 +19,13 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
getLocatorFromOdspUrl,
|
|
21
21
|
storeLocatorInOdspUrl,
|
|
22
|
-
encodeOdspFluidDataStoreLocator,
|
|
23
22
|
locatorQueryParamName,
|
|
24
|
-
} from "./odspFluidFileLink";
|
|
25
|
-
import { OdspFluidDataStoreLocator, SharingLinkHeader } from "./contractsPublic";
|
|
26
|
-
import { createOdspUrl } from "./createOdspUrl";
|
|
27
|
-
import { OdspDriverUrlResolver } from "./odspDriverUrlResolver";
|
|
28
|
-
import { getOdspResolvedUrl, createOdspLogger } from "./odspUtils";
|
|
29
|
-
import { getFileLink } from "./getFileLink";
|
|
23
|
+
} from "./odspFluidFileLink.js";
|
|
24
|
+
import { OdspFluidDataStoreLocator, SharingLinkHeader } from "./contractsPublic.js";
|
|
25
|
+
import { createOdspUrl } from "./createOdspUrl.js";
|
|
26
|
+
import { OdspDriverUrlResolver } from "./odspDriverUrlResolver.js";
|
|
27
|
+
import { getOdspResolvedUrl, createOdspLogger } from "./odspUtils.js";
|
|
28
|
+
import { getFileLink } from "./getFileLink.js";
|
|
30
29
|
|
|
31
30
|
/**
|
|
32
31
|
* Properties passed to the code responsible for fetching share link for a file.
|
|
@@ -43,6 +42,10 @@ export interface ShareLinkFetcherProps {
|
|
|
43
42
|
identityType: IdentityType;
|
|
44
43
|
}
|
|
45
44
|
|
|
45
|
+
// back-compat: GitHub #9653
|
|
46
|
+
const isFluidPackage = (pkg: Record<string, unknown>): boolean =>
|
|
47
|
+
typeof pkg === "object" && typeof pkg?.name === "string" && typeof pkg?.fluid === "object";
|
|
48
|
+
|
|
46
49
|
/**
|
|
47
50
|
* Resolver to resolve urls like the ones created by createOdspUrl which is driver inner
|
|
48
51
|
* url format and the ones which have things like driveId, siteId, itemId etc encoded in nav param.
|
|
@@ -102,9 +105,9 @@ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
|
|
|
102
105
|
// Determine if the caller is passing a query parameter or path since processing will be different.
|
|
103
106
|
if (pathToAppend.startsWith("/?") || pathToAppend.startsWith("?")) {
|
|
104
107
|
const queryParams = new URLSearchParams(pathToAppend);
|
|
105
|
-
|
|
108
|
+
for (const [key, value] of queryParams.entries()) {
|
|
106
109
|
parsingUrl.searchParams.append(key, value);
|
|
107
|
-
}
|
|
110
|
+
}
|
|
108
111
|
fluidInfo.dataStorePath = `${parsingUrl.pathname}${parsingUrl.search}`;
|
|
109
112
|
} else {
|
|
110
113
|
fluidInfo.dataStorePath = `${parsingUrl.pathname}${
|
|
@@ -214,34 +217,55 @@ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
|
|
|
214
217
|
const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);
|
|
215
218
|
|
|
216
219
|
const shareLink = await this.getShareLinkPromise(odspResolvedUrl);
|
|
217
|
-
const shareLinkUrl = new URL(shareLink);
|
|
218
220
|
|
|
219
|
-
|
|
221
|
+
return this.appendLocatorParams(shareLink, resolvedUrl, dataStorePath, packageInfoSource);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Appends the store locator properties to the provided base URL. This function is useful for scenarios where an application
|
|
226
|
+
* has a base URL (for example a sharing link) of the Fluid file, but does not have the locator information that would be used by Fluid
|
|
227
|
+
* to load the file later.
|
|
228
|
+
* @param baseUrl - The input URL on which the locator params will be appended.
|
|
229
|
+
* @param resolvedUrl - odsp-driver's resolvedURL object.
|
|
230
|
+
* @param dataStorePath - The relative data store path URL.
|
|
231
|
+
* For requesting a driver URL, this value should always be '/'. If an empty string is passed, then dataStorePath
|
|
232
|
+
* will be extracted from the resolved url if present.
|
|
233
|
+
* @returns The provided base URL appended with odsp-specific locator information
|
|
234
|
+
*/
|
|
235
|
+
public async appendLocatorParams(
|
|
236
|
+
baseUrl: string,
|
|
237
|
+
resolvedUrl: IResolvedUrl,
|
|
238
|
+
dataStorePath: string,
|
|
239
|
+
packageInfoSource?: IContainerPackageInfo,
|
|
240
|
+
): Promise<string> {
|
|
241
|
+
const url = new URL(baseUrl);
|
|
242
|
+
const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);
|
|
243
|
+
|
|
220
244
|
// If the user has passed an empty dataStorePath, then extract it from the resolved url.
|
|
221
|
-
|
|
222
|
-
actualDataStorePath = odspResolvedUrl.dataStorePath;
|
|
223
|
-
}
|
|
245
|
+
const actualDataStorePath = dataStorePath || (odspResolvedUrl.dataStorePath ?? "");
|
|
224
246
|
|
|
225
|
-
|
|
226
|
-
const isFluidPackage = (pkg: any) =>
|
|
227
|
-
typeof pkg === "object" &&
|
|
228
|
-
typeof pkg?.name === "string" &&
|
|
229
|
-
typeof pkg?.fluid === "object";
|
|
230
|
-
let containerPackageName;
|
|
247
|
+
let containerPackageName: string | undefined;
|
|
231
248
|
if (packageInfoSource && "name" in packageInfoSource) {
|
|
232
249
|
containerPackageName = packageInfoSource.name;
|
|
233
250
|
// packageInfoSource is cast to any as it is typed to IContainerPackageInfo instead of IFluidCodeDetails
|
|
251
|
+
// TODO: use a stronger type
|
|
252
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
234
253
|
} else if (isFluidPackage((packageInfoSource as any)?.package)) {
|
|
254
|
+
// TODO: use a stronger type
|
|
255
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
235
256
|
containerPackageName = (packageInfoSource as any)?.package.name;
|
|
236
257
|
} else {
|
|
258
|
+
// TODO: use a stronger type
|
|
259
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
237
260
|
containerPackageName = (packageInfoSource as any)?.package;
|
|
238
261
|
}
|
|
262
|
+
// TODO: use a stronger type
|
|
239
263
|
containerPackageName =
|
|
240
264
|
containerPackageName ?? odspResolvedUrl.codeHint?.containerPackageName;
|
|
241
265
|
|
|
242
266
|
const context = await this.getContext?.(odspResolvedUrl, actualDataStorePath);
|
|
243
267
|
|
|
244
|
-
storeLocatorInOdspUrl(
|
|
268
|
+
storeLocatorInOdspUrl(url, {
|
|
245
269
|
siteUrl: odspResolvedUrl.siteUrl,
|
|
246
270
|
driveId: odspResolvedUrl.driveId,
|
|
247
271
|
itemId: odspResolvedUrl.itemId,
|
|
@@ -252,25 +276,20 @@ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
|
|
|
252
276
|
context,
|
|
253
277
|
});
|
|
254
278
|
|
|
255
|
-
return
|
|
279
|
+
return url.href;
|
|
256
280
|
}
|
|
257
281
|
|
|
258
282
|
/**
|
|
259
283
|
* Crafts a supported document/driver URL
|
|
260
284
|
*/
|
|
261
|
-
public static createDocumentUrl(
|
|
285
|
+
public static createDocumentUrl(
|
|
286
|
+
baseUrl: string,
|
|
287
|
+
driverInfo: OdspFluidDataStoreLocator,
|
|
288
|
+
): string {
|
|
262
289
|
const url = new URL(baseUrl);
|
|
263
290
|
|
|
264
291
|
storeLocatorInOdspUrl(url, driverInfo);
|
|
265
292
|
|
|
266
293
|
return url.href;
|
|
267
294
|
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Crafts a supported data store nav param
|
|
271
|
-
* @deprecated encodeOdspFluidDataStoreLocator should be used instead
|
|
272
|
-
*/
|
|
273
|
-
public static createNavParam(locator: OdspFluidDataStoreLocator) {
|
|
274
|
-
return encodeOdspFluidDataStoreLocator(locator);
|
|
275
|
-
}
|
|
276
295
|
}
|
package/src/odspError.ts
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createOdspNetworkError } from "@fluidframework/odsp-doclib-utils";
|
|
6
|
+
import { createOdspNetworkError } from "@fluidframework/odsp-doclib-utils/internal";
|
|
7
7
|
import { NonRetryableError } from "@fluidframework/driver-utils";
|
|
8
8
|
import { OdspError, OdspErrorTypes } from "@fluidframework/odsp-driver-definitions";
|
|
9
9
|
import { getCircularReplacer, IFluidErrorBase } from "@fluidframework/telemetry-utils";
|
|
10
|
-
import { IOdspSocketError } from "./contracts";
|
|
11
|
-
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
10
|
+
import { IOdspSocketError } from "./contracts.js";
|
|
11
|
+
import { pkgVersion as driverVersion } from "./packageVersion.js";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Returns network error based on error object from ODSP socket (IOdspSocketError)
|
|
@@ -33,7 +33,7 @@ export function errorObjectFromSocketError(
|
|
|
33
33
|
|
|
34
34
|
error.addTelemetryProperties({ odspError: true, relayServiceError: true });
|
|
35
35
|
return error;
|
|
36
|
-
} catch
|
|
36
|
+
} catch {
|
|
37
37
|
return new NonRetryableError(
|
|
38
38
|
"Internal error: errorObjectFromSocketError",
|
|
39
39
|
OdspErrorTypes.fileNotFoundOrAccessDeniedError,
|
package/src/odspFluidFileLink.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { fromBase64ToUtf8, fromUtf8ToBase64 } from "@fluid-internal/client-utils";
|
|
7
|
-
import { OdspFluidDataStoreLocator } from "./contractsPublic";
|
|
8
|
-
import { OdcFileSiteOrigin, OdcApiSiteOrigin } from "./constants";
|
|
7
|
+
import { OdspFluidDataStoreLocator } from "./contractsPublic.js";
|
|
8
|
+
import { OdcFileSiteOrigin, OdcApiSiteOrigin } from "./constants.js";
|
|
9
9
|
|
|
10
10
|
const fluidSignature = "1";
|
|
11
11
|
const fluidSignatureParamName = "fluid";
|
|
@@ -122,7 +122,7 @@ export const locatorQueryParamName = "nav";
|
|
|
122
122
|
* @param locator - object representing Fluid data store location in ODSP terms
|
|
123
123
|
* @alpha
|
|
124
124
|
*/
|
|
125
|
-
export function storeLocatorInOdspUrl(url: URL, locator: OdspFluidDataStoreLocator) {
|
|
125
|
+
export function storeLocatorInOdspUrl(url: URL, locator: OdspFluidDataStoreLocator): void {
|
|
126
126
|
const encodedLocatorValue = encodeOdspFluidDataStoreLocator(locator);
|
|
127
127
|
// IMPORTANT: Do not apply encodeURIComponent to encodedLocatorValue, param value is automatically encoded
|
|
128
128
|
// when set via URLSearchParams class
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { IResolvedUrl } from "@fluidframework/driver-definitions";
|
|
7
7
|
import { IOdspResolvedUrl } from "@fluidframework/odsp-driver-definitions";
|
|
8
|
-
import { getOdspResolvedUrl } from "./odspUtils";
|
|
8
|
+
import { getOdspResolvedUrl } from "./odspUtils.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* It takes a resolved url with old siteUrl and creates a new resolved url with updated site url domain.
|
package/src/odspPublicUtils.ts
CHANGED
|
@@ -7,6 +7,9 @@ import { hashFile, IsoBuffer } from "@fluid-internal/client-utils";
|
|
|
7
7
|
import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
+
* Creates a unique and stable id for a document stored in ODSP which doesn't expose the driveId and itemId of
|
|
11
|
+
* said document.
|
|
12
|
+
*
|
|
10
13
|
* @alpha
|
|
11
14
|
*/
|
|
12
15
|
export async function getHashedDocumentId(driveId: string, itemId: string): Promise<string> {
|
|
@@ -7,7 +7,7 @@ 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
9
|
import { ISnapshot } from "@fluidframework/driver-definitions";
|
|
10
|
-
import { IOdspSnapshot, IOdspSnapshotCommit } from "./contracts";
|
|
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;
|
|
@@ -54,7 +55,7 @@ function buildHierarchy(flatTree: IOdspSnapshotCommit): api.ISnapshotTree {
|
|
|
54
55
|
export function convertOdspSnapshotToSnapshotTreeAndBlobs(odspSnapshot: IOdspSnapshot): ISnapshot {
|
|
55
56
|
const blobsWithBufferContent = new Map<string, ArrayBuffer>();
|
|
56
57
|
if (odspSnapshot.blobs) {
|
|
57
|
-
odspSnapshot.blobs
|
|
58
|
+
for (const blob of odspSnapshot.blobs) {
|
|
58
59
|
assert(
|
|
59
60
|
blob.encoding === "base64" || blob.encoding === undefined,
|
|
60
61
|
0x0a4 /* Unexpected blob encoding type */,
|
|
@@ -63,7 +64,7 @@ export function convertOdspSnapshotToSnapshotTreeAndBlobs(odspSnapshot: IOdspSna
|
|
|
63
64
|
blob.id,
|
|
64
65
|
stringToBuffer(blob.content, blob.encoding ?? "utf8"),
|
|
65
66
|
);
|
|
66
|
-
}
|
|
67
|
+
}
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
const sequenceNumber = odspSnapshot?.trees[0].sequenceNumber;
|