@fluidframework/odsp-driver 2.0.0-dev-rc.1.0.0.232845 → 2.0.0-dev-rc.2.0.0.246488
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.d.ts.map +1 -1
- package/dist/createOdspCreateContainerRequest.js +6 -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 +6 -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 +3 -4
- 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 +5 -1
- package/dist/odspDriverUrlResolver.d.ts.map +1 -1
- package/dist/odspDriverUrlResolver.js +27 -24
- package/dist/odspDriverUrlResolver.js.map +1 -1
- package/dist/odspDriverUrlResolverForShareLink.d.ts +17 -6
- package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
- package/dist/odspDriverUrlResolverForShareLink.js +49 -39
- 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} +6 -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} +7 -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} +6 -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} +18 -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 +2 -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 +3 -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 +13 -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 +39 -24
- package/src/odspDriverUrlResolverForShareLink.ts +51 -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
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
5
6
|
import { assert } from "@fluidframework/core-utils";
|
|
6
7
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
7
8
|
import {
|
|
@@ -12,20 +13,30 @@ import {
|
|
|
12
13
|
} from "@fluidframework/driver-definitions";
|
|
13
14
|
import { IOdspResolvedUrl, OdspErrorTypes } from "@fluidframework/odsp-driver-definitions";
|
|
14
15
|
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";
|
|
16
|
+
import { createOdspUrl } from "./createOdspUrl.js";
|
|
17
|
+
import { getApiRoot } from "./odspUrlHelper.js";
|
|
18
|
+
import { getOdspResolvedUrl } from "./odspUtils.js";
|
|
19
|
+
import { getHashedDocumentId } from "./odspPublicUtils.js";
|
|
20
|
+
import { ClpCompliantAppHeader } from "./contractsPublic.js";
|
|
21
|
+
import { pkgVersion } from "./packageVersion.js";
|
|
21
22
|
|
|
22
|
-
function getUrlBase(
|
|
23
|
+
function getUrlBase(
|
|
24
|
+
siteUrl: string,
|
|
25
|
+
driveId: string,
|
|
26
|
+
itemId: string,
|
|
27
|
+
fileVersion?: string,
|
|
28
|
+
): string {
|
|
23
29
|
const siteOrigin = new URL(siteUrl).origin;
|
|
24
30
|
const version = fileVersion ? `versions/${fileVersion}/` : "";
|
|
25
31
|
return `${getApiRoot(siteOrigin)}/drives/${driveId}/items/${itemId}/${version}`;
|
|
26
32
|
}
|
|
27
33
|
|
|
28
|
-
function getSnapshotUrl(
|
|
34
|
+
function getSnapshotUrl(
|
|
35
|
+
siteUrl: string,
|
|
36
|
+
driveId: string,
|
|
37
|
+
itemId: string,
|
|
38
|
+
fileVersion?: string,
|
|
39
|
+
): string {
|
|
29
40
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
30
41
|
return `${urlBase}opStream/snapshots`;
|
|
31
42
|
}
|
|
@@ -35,7 +46,7 @@ function getAttachmentPOSTUrl(
|
|
|
35
46
|
driveId: string,
|
|
36
47
|
itemId: string,
|
|
37
48
|
fileVersion?: string,
|
|
38
|
-
) {
|
|
49
|
+
): string {
|
|
39
50
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
40
51
|
return `${urlBase}opStream/attachment`;
|
|
41
52
|
}
|
|
@@ -45,7 +56,7 @@ function getAttachmentGETUrl(
|
|
|
45
56
|
driveId: string,
|
|
46
57
|
itemId: string,
|
|
47
58
|
fileVersion?: string,
|
|
48
|
-
) {
|
|
59
|
+
): string {
|
|
49
60
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
50
61
|
return `${urlBase}opStream/attachments`;
|
|
51
62
|
}
|
|
@@ -55,7 +66,7 @@ function getDeltaStorageUrl(
|
|
|
55
66
|
driveId: string,
|
|
56
67
|
itemId: string,
|
|
57
68
|
fileVersion?: string,
|
|
58
|
-
) {
|
|
69
|
+
): string {
|
|
59
70
|
const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);
|
|
60
71
|
return `${urlBase}opStream`;
|
|
61
72
|
}
|
|
@@ -66,12 +77,16 @@ function getDeltaStorageUrl(
|
|
|
66
77
|
*/
|
|
67
78
|
function removeBeginningSlash(str: string): string {
|
|
68
79
|
if (str.startsWith("/")) {
|
|
69
|
-
return str.
|
|
80
|
+
return str.slice(1);
|
|
70
81
|
}
|
|
71
82
|
|
|
72
83
|
return str;
|
|
73
84
|
}
|
|
74
85
|
|
|
86
|
+
// back-compat: GitHub #9653
|
|
87
|
+
const isFluidPackage = (pkg: Record<string, unknown>): boolean =>
|
|
88
|
+
typeof pkg === "object" && typeof pkg?.name === "string" && typeof pkg?.fluid === "object";
|
|
89
|
+
|
|
75
90
|
/**
|
|
76
91
|
* Resolver to resolve urls like the ones created by createOdspUrl which is driver inner
|
|
77
92
|
* url format. Ex: `${siteUrl}?driveId=${driveId}&itemId=${itemId}&path=${path}`
|
|
@@ -81,21 +96,22 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
81
96
|
constructor() {}
|
|
82
97
|
|
|
83
98
|
/**
|
|
84
|
-
* @
|
|
99
|
+
* {@inheritDoc @fluidframework/driver-definitions#IUrlResolver.resolve}
|
|
85
100
|
*/
|
|
86
101
|
public async resolve(request: IRequest): Promise<IOdspResolvedUrl> {
|
|
87
102
|
if (request.headers?.[DriverHeader.createNew]) {
|
|
88
103
|
const [siteURL, queryString] = request.url.split("?");
|
|
89
104
|
|
|
90
105
|
const searchParams = new URLSearchParams(queryString);
|
|
91
|
-
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
|
107
|
+
const fileName: string = request.headers[DriverHeader.createNew].fileName;
|
|
92
108
|
const driveID = searchParams.get("driveId");
|
|
93
109
|
const filePath = searchParams.get("path");
|
|
94
110
|
const packageName = searchParams.get("containerPackageName");
|
|
95
111
|
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- false positive
|
|
96
112
|
if (!(fileName && siteURL && driveID && filePath !== null && filePath !== undefined)) {
|
|
97
113
|
throw new NonRetryableError(
|
|
98
|
-
"Proper new file params should be there
|
|
114
|
+
"Proper new file params should be there",
|
|
99
115
|
OdspErrorTypes.genericError,
|
|
100
116
|
{ driverVersion: pkgVersion },
|
|
101
117
|
);
|
|
@@ -111,7 +127,7 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
111
127
|
type: "fluid",
|
|
112
128
|
odspResolvedUrl: true,
|
|
113
129
|
id: "odspCreateNew",
|
|
114
|
-
url: `
|
|
130
|
+
url: `https://${siteURL}?${queryString}&version=null`,
|
|
115
131
|
siteUrl: siteURL,
|
|
116
132
|
hashedDocumentId: "",
|
|
117
133
|
driveId: driveID,
|
|
@@ -132,7 +148,7 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
132
148
|
const hashedDocumentId = await getHashedDocumentId(driveId, itemId);
|
|
133
149
|
assert(!hashedDocumentId.includes("/"), 0x0a8 /* "Docid should not contain slashes!!" */);
|
|
134
150
|
|
|
135
|
-
const documentUrl = `
|
|
151
|
+
const documentUrl = `https://placeholder/placeholder/${hashedDocumentId}/${removeBeginningSlash(
|
|
136
152
|
path,
|
|
137
153
|
)}`;
|
|
138
154
|
|
|
@@ -190,21 +206,20 @@ export class OdspDriverUrlResolver implements IUrlResolver {
|
|
|
190
206
|
dataStorePath = odspResolvedUrl.dataStorePath;
|
|
191
207
|
}
|
|
192
208
|
if (dataStorePath.startsWith("/")) {
|
|
193
|
-
dataStorePath = dataStorePath.
|
|
209
|
+
dataStorePath = dataStorePath.slice(1);
|
|
194
210
|
}
|
|
195
211
|
|
|
196
|
-
|
|
197
|
-
const isFluidPackage = (pkg: any) =>
|
|
198
|
-
typeof pkg === "object" &&
|
|
199
|
-
typeof pkg?.name === "string" &&
|
|
200
|
-
typeof pkg?.fluid === "object";
|
|
201
|
-
let containerPackageName;
|
|
212
|
+
let containerPackageName: string | undefined;
|
|
202
213
|
if (packageInfoSource && "name" in packageInfoSource) {
|
|
203
214
|
containerPackageName = packageInfoSource.name;
|
|
204
215
|
// packageInfoSource is cast to any as it is typed to IContainerPackageInfo instead of IFluidCodeDetails
|
|
216
|
+
// TODO: use stronger type
|
|
217
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
205
218
|
} else if (isFluidPackage((packageInfoSource as any)?.package)) {
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
206
220
|
containerPackageName = (packageInfoSource as any)?.package.name;
|
|
207
221
|
} else {
|
|
222
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
208
223
|
containerPackageName = (packageInfoSource as any)?.package;
|
|
209
224
|
}
|
|
210
225
|
containerPackageName =
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
5
6
|
import { PromiseCache } from "@fluidframework/core-utils";
|
|
6
7
|
import { ITelemetryBaseLogger, IRequest } from "@fluidframework/core-interfaces";
|
|
7
8
|
import {
|
|
@@ -19,14 +20,13 @@ import {
|
|
|
19
20
|
import {
|
|
20
21
|
getLocatorFromOdspUrl,
|
|
21
22
|
storeLocatorInOdspUrl,
|
|
22
|
-
encodeOdspFluidDataStoreLocator,
|
|
23
23
|
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";
|
|
24
|
+
} from "./odspFluidFileLink.js";
|
|
25
|
+
import { OdspFluidDataStoreLocator, SharingLinkHeader } from "./contractsPublic.js";
|
|
26
|
+
import { createOdspUrl } from "./createOdspUrl.js";
|
|
27
|
+
import { OdspDriverUrlResolver } from "./odspDriverUrlResolver.js";
|
|
28
|
+
import { getOdspResolvedUrl, createOdspLogger } from "./odspUtils.js";
|
|
29
|
+
import { getFileLink } from "./getFileLink.js";
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Properties passed to the code responsible for fetching share link for a file.
|
|
@@ -43,6 +43,10 @@ export interface ShareLinkFetcherProps {
|
|
|
43
43
|
identityType: IdentityType;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
// back-compat: GitHub #9653
|
|
47
|
+
const isFluidPackage = (pkg: Record<string, unknown>): boolean =>
|
|
48
|
+
typeof pkg === "object" && typeof pkg?.name === "string" && typeof pkg?.fluid === "object";
|
|
49
|
+
|
|
46
50
|
/**
|
|
47
51
|
* Resolver to resolve urls like the ones created by createOdspUrl which is driver inner
|
|
48
52
|
* url format and the ones which have things like driveId, siteId, itemId etc encoded in nav param.
|
|
@@ -102,9 +106,9 @@ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
|
|
|
102
106
|
// Determine if the caller is passing a query parameter or path since processing will be different.
|
|
103
107
|
if (pathToAppend.startsWith("/?") || pathToAppend.startsWith("?")) {
|
|
104
108
|
const queryParams = new URLSearchParams(pathToAppend);
|
|
105
|
-
|
|
109
|
+
for (const [key, value] of queryParams.entries()) {
|
|
106
110
|
parsingUrl.searchParams.append(key, value);
|
|
107
|
-
}
|
|
111
|
+
}
|
|
108
112
|
fluidInfo.dataStorePath = `${parsingUrl.pathname}${parsingUrl.search}`;
|
|
109
113
|
} else {
|
|
110
114
|
fluidInfo.dataStorePath = `${parsingUrl.pathname}${
|
|
@@ -214,34 +218,55 @@ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
|
|
|
214
218
|
const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);
|
|
215
219
|
|
|
216
220
|
const shareLink = await this.getShareLinkPromise(odspResolvedUrl);
|
|
217
|
-
const shareLinkUrl = new URL(shareLink);
|
|
218
221
|
|
|
219
|
-
|
|
222
|
+
return this.appendLocatorParams(shareLink, resolvedUrl, dataStorePath, packageInfoSource);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Appends the store locator properties to the provided base URL. This function is useful for scenarios where an application
|
|
227
|
+
* 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
|
|
228
|
+
* to load the file later.
|
|
229
|
+
* @param baseUrl - The input URL on which the locator params will be appended.
|
|
230
|
+
* @param resolvedUrl - odsp-driver's resolvedURL object.
|
|
231
|
+
* @param dataStorePath - The relative data store path URL.
|
|
232
|
+
* For requesting a driver URL, this value should always be '/'. If an empty string is passed, then dataStorePath
|
|
233
|
+
* will be extracted from the resolved url if present.
|
|
234
|
+
* @returns The provided base URL appended with odsp-specific locator information
|
|
235
|
+
*/
|
|
236
|
+
public async appendLocatorParams(
|
|
237
|
+
baseUrl: string,
|
|
238
|
+
resolvedUrl: IResolvedUrl,
|
|
239
|
+
dataStorePath: string,
|
|
240
|
+
packageInfoSource?: IContainerPackageInfo,
|
|
241
|
+
): Promise<string> {
|
|
242
|
+
const url = new URL(baseUrl);
|
|
243
|
+
const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);
|
|
244
|
+
|
|
220
245
|
// If the user has passed an empty dataStorePath, then extract it from the resolved url.
|
|
221
|
-
|
|
222
|
-
actualDataStorePath = odspResolvedUrl.dataStorePath;
|
|
223
|
-
}
|
|
246
|
+
const actualDataStorePath = dataStorePath || (odspResolvedUrl.dataStorePath ?? "");
|
|
224
247
|
|
|
225
|
-
|
|
226
|
-
const isFluidPackage = (pkg: any) =>
|
|
227
|
-
typeof pkg === "object" &&
|
|
228
|
-
typeof pkg?.name === "string" &&
|
|
229
|
-
typeof pkg?.fluid === "object";
|
|
230
|
-
let containerPackageName;
|
|
248
|
+
let containerPackageName: string | undefined;
|
|
231
249
|
if (packageInfoSource && "name" in packageInfoSource) {
|
|
232
250
|
containerPackageName = packageInfoSource.name;
|
|
233
251
|
// packageInfoSource is cast to any as it is typed to IContainerPackageInfo instead of IFluidCodeDetails
|
|
252
|
+
// TODO: use a stronger type
|
|
253
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
234
254
|
} else if (isFluidPackage((packageInfoSource as any)?.package)) {
|
|
255
|
+
// TODO: use a stronger type
|
|
256
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
235
257
|
containerPackageName = (packageInfoSource as any)?.package.name;
|
|
236
258
|
} else {
|
|
259
|
+
// TODO: use a stronger type
|
|
260
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
|
|
237
261
|
containerPackageName = (packageInfoSource as any)?.package;
|
|
238
262
|
}
|
|
263
|
+
// TODO: use a stronger type
|
|
239
264
|
containerPackageName =
|
|
240
265
|
containerPackageName ?? odspResolvedUrl.codeHint?.containerPackageName;
|
|
241
266
|
|
|
242
267
|
const context = await this.getContext?.(odspResolvedUrl, actualDataStorePath);
|
|
243
268
|
|
|
244
|
-
storeLocatorInOdspUrl(
|
|
269
|
+
storeLocatorInOdspUrl(url, {
|
|
245
270
|
siteUrl: odspResolvedUrl.siteUrl,
|
|
246
271
|
driveId: odspResolvedUrl.driveId,
|
|
247
272
|
itemId: odspResolvedUrl.itemId,
|
|
@@ -252,25 +277,20 @@ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
|
|
|
252
277
|
context,
|
|
253
278
|
});
|
|
254
279
|
|
|
255
|
-
return
|
|
280
|
+
return url.href;
|
|
256
281
|
}
|
|
257
282
|
|
|
258
283
|
/**
|
|
259
284
|
* Crafts a supported document/driver URL
|
|
260
285
|
*/
|
|
261
|
-
public static createDocumentUrl(
|
|
286
|
+
public static createDocumentUrl(
|
|
287
|
+
baseUrl: string,
|
|
288
|
+
driverInfo: OdspFluidDataStoreLocator,
|
|
289
|
+
): string {
|
|
262
290
|
const url = new URL(baseUrl);
|
|
263
291
|
|
|
264
292
|
storeLocatorInOdspUrl(url, driverInfo);
|
|
265
293
|
|
|
266
294
|
return url.href;
|
|
267
295
|
}
|
|
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
296
|
}
|
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;
|