@fluidframework/odsp-driver 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.224419
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +12 -12
- package/.mocharc.js +12 -0
- package/CHANGELOG.md +162 -0
- package/README.md +56 -0
- package/api-extractor-lint.json +4 -0
- package/api-extractor.json +2 -2
- package/api-report/odsp-driver.api.md +310 -0
- package/dist/{ReadBufferUtils.js → ReadBufferUtils.cjs} +16 -9
- package/dist/ReadBufferUtils.cjs.map +1 -0
- package/dist/ReadBufferUtils.d.ts.map +1 -1
- package/dist/{WriteBufferUtils.js → WriteBufferUtils.cjs} +73 -69
- package/dist/WriteBufferUtils.cjs.map +1 -0
- package/dist/WriteBufferUtils.d.ts +3 -5
- package/dist/WriteBufferUtils.d.ts.map +1 -1
- package/dist/{checkUrl.js → checkUrl.cjs} +7 -6
- package/dist/checkUrl.cjs.map +1 -0
- package/dist/checkUrl.d.ts +1 -0
- package/dist/checkUrl.d.ts.map +1 -1
- package/dist/compactSnapshotParser.cjs +207 -0
- package/dist/compactSnapshotParser.cjs.map +1 -0
- package/dist/compactSnapshotParser.d.ts +12 -3
- package/dist/compactSnapshotParser.d.ts.map +1 -1
- package/dist/{compactSnapshotWriter.js → compactSnapshotWriter.cjs} +43 -33
- package/dist/compactSnapshotWriter.cjs.map +1 -0
- package/dist/compactSnapshotWriter.d.ts +2 -3
- package/dist/compactSnapshotWriter.d.ts.map +1 -1
- package/dist/{constants.js → constants.cjs} +7 -1
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/{contracts.js → contracts.cjs} +1 -1
- package/dist/contracts.cjs.map +1 -0
- package/dist/contracts.d.ts +16 -53
- package/dist/contracts.d.ts.map +1 -1
- package/dist/{contractsPublic.js → contractsPublic.cjs} +9 -3
- package/dist/contractsPublic.cjs.map +1 -0
- package/dist/contractsPublic.d.ts +15 -0
- package/dist/contractsPublic.d.ts.map +1 -1
- package/dist/createFile.cjs +177 -0
- package/dist/createFile.cjs.map +1 -0
- package/dist/createFile.d.ts +6 -10
- package/dist/createFile.d.ts.map +1 -1
- package/dist/createNewContainerOnExistingFile.cjs +60 -0
- package/dist/createNewContainerOnExistingFile.cjs.map +1 -0
- package/dist/createNewContainerOnExistingFile.d.ts +22 -0
- package/dist/createNewContainerOnExistingFile.d.ts.map +1 -0
- package/dist/createNewModule.cjs +12 -0
- package/dist/createNewModule.cjs.map +1 -0
- package/dist/createNewModule.d.ts +7 -0
- package/dist/createNewModule.d.ts.map +1 -0
- package/dist/createNewUtils.cjs +203 -0
- package/dist/createNewUtils.cjs.map +1 -0
- package/dist/createNewUtils.d.ts +16 -0
- package/dist/createNewUtils.d.ts.map +1 -1
- package/dist/{createOdspCreateContainerRequest.js → createOdspCreateContainerRequest.cjs} +8 -4
- package/dist/createOdspCreateContainerRequest.cjs.map +1 -0
- package/dist/createOdspCreateContainerRequest.d.ts +5 -3
- package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
- package/dist/{createOdspUrl.js → createOdspUrl.cjs} +2 -1
- package/dist/createOdspUrl.cjs.map +1 -0
- package/dist/createOdspUrl.d.ts +1 -0
- package/dist/createOdspUrl.d.ts.map +1 -1
- package/dist/{epochTracker.js → epochTracker.cjs} +102 -48
- package/dist/epochTracker.cjs.map +1 -0
- package/dist/epochTracker.d.ts +32 -8
- package/dist/epochTracker.d.ts.map +1 -1
- package/dist/{fetch.js → fetch.cjs} +1 -1
- package/dist/fetch.cjs.map +1 -0
- package/dist/fetch.d.ts +1 -1
- package/dist/fetch.d.ts.map +1 -1
- package/dist/{fetchSnapshot.js → fetchSnapshot.cjs} +192 -176
- package/dist/fetchSnapshot.cjs.map +1 -0
- package/dist/fetchSnapshot.d.ts +10 -5
- package/dist/fetchSnapshot.d.ts.map +1 -1
- package/dist/{getFileLink.js → getFileLink.cjs} +52 -41
- package/dist/getFileLink.cjs.map +1 -0
- package/dist/getFileLink.d.ts +4 -7
- package/dist/getFileLink.d.ts.map +1 -1
- package/dist/{getQueryString.js → getQueryString.cjs} +1 -1
- package/dist/getQueryString.cjs.map +1 -0
- package/dist/getQueryString.d.ts.map +1 -1
- package/dist/{getUrlAndHeadersWithAuth.js → getUrlAndHeadersWithAuth.cjs} +4 -2
- package/dist/getUrlAndHeadersWithAuth.cjs.map +1 -0
- package/dist/getUrlAndHeadersWithAuth.d.ts.map +1 -1
- package/dist/index.cjs +59 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +19 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDeltaStorageService.cjs +35 -0
- package/dist/localOdspDriver/localOdspDeltaStorageService.cjs.map +1 -0
- package/dist/localOdspDriver/localOdspDeltaStorageService.d.ts +17 -0
- package/dist/localOdspDriver/localOdspDeltaStorageService.d.ts.map +1 -0
- package/dist/localOdspDriver/{localOdspDocumentService.js → localOdspDocumentService.cjs} +7 -5
- package/dist/localOdspDriver/localOdspDocumentService.cjs.map +1 -0
- package/dist/localOdspDriver/localOdspDocumentService.d.ts +3 -2
- package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
- package/dist/localOdspDriver/{localOdspDocumentServiceFactory.js → localOdspDocumentServiceFactory.cjs} +9 -10
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.cjs.map +1 -0
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts +2 -3
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +1 -1
- package/dist/localOdspDriver/{localOdspDocumentStorageManager.js → localOdspDocumentStorageManager.cjs} +13 -11
- package/dist/localOdspDriver/localOdspDocumentStorageManager.cjs.map +1 -0
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +2 -2
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
- package/dist/odsp-driver-alpha.d.ts +497 -0
- package/dist/odsp-driver-beta.d.ts +159 -0
- package/dist/odsp-driver-public.d.ts +159 -0
- package/dist/odsp-driver-untrimmed.d.ts +566 -0
- package/dist/{odspCache.js → odspCache.cjs} +9 -10
- package/dist/odspCache.cjs.map +1 -0
- package/dist/odspCache.d.ts +19 -4
- package/dist/odspCache.d.ts.map +1 -1
- package/dist/odspDelayLoadedDeltaStream.cjs +291 -0
- package/dist/odspDelayLoadedDeltaStream.cjs.map +1 -0
- package/dist/odspDelayLoadedDeltaStream.d.ts +75 -0
- package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -0
- package/dist/{odspDeltaStorageService.js → odspDeltaStorageService.cjs} +70 -71
- package/dist/odspDeltaStorageService.cjs.map +1 -0
- package/dist/odspDeltaStorageService.d.ts +8 -6
- package/dist/odspDeltaStorageService.d.ts.map +1 -1
- package/dist/{odspDocumentDeltaConnection.js → odspDocumentDeltaConnection.cjs} +224 -113
- package/dist/odspDocumentDeltaConnection.cjs.map +1 -0
- package/dist/odspDocumentDeltaConnection.d.ts +32 -12
- package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
- package/dist/odspDocumentService.cjs +225 -0
- package/dist/odspDocumentService.cjs.map +1 -0
- package/dist/odspDocumentService.d.ts +11 -25
- package/dist/odspDocumentService.d.ts.map +1 -1
- package/dist/{odspDocumentServiceFactory.js → odspDocumentServiceFactory.cjs} +8 -5
- package/dist/odspDocumentServiceFactory.cjs.map +1 -0
- package/dist/odspDocumentServiceFactory.d.ts +4 -0
- package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
- package/dist/odspDocumentServiceFactoryCore.cjs +196 -0
- package/dist/odspDocumentServiceFactoryCore.cjs.map +1 -0
- package/dist/odspDocumentServiceFactoryCore.d.ts +16 -11
- package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
- package/dist/odspDocumentServiceFactoryWithCodeSplit.cjs +20 -0
- package/dist/odspDocumentServiceFactoryWithCodeSplit.cjs.map +1 -0
- package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts +5 -0
- package/dist/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +1 -1
- package/dist/odspDocumentStorageManager.cjs +490 -0
- package/dist/odspDocumentStorageManager.cjs.map +1 -0
- package/dist/odspDocumentStorageManager.d.ts +11 -5
- package/dist/odspDocumentStorageManager.d.ts.map +1 -1
- package/dist/{odspDocumentStorageServiceBase.js → odspDocumentStorageServiceBase.cjs} +32 -34
- package/dist/odspDocumentStorageServiceBase.cjs.map +1 -0
- package/dist/odspDocumentStorageServiceBase.d.ts +7 -9
- package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
- package/dist/{odspDriverUrlResolver.js → odspDriverUrlResolver.cjs} +50 -36
- package/dist/odspDriverUrlResolver.cjs.map +1 -0
- package/dist/odspDriverUrlResolver.d.ts +12 -0
- package/dist/odspDriverUrlResolver.d.ts.map +1 -1
- package/dist/{odspDriverUrlResolverForShareLink.js → odspDriverUrlResolverForShareLink.cjs} +37 -26
- package/dist/odspDriverUrlResolverForShareLink.cjs.map +1 -0
- package/dist/odspDriverUrlResolverForShareLink.d.ts +5 -3
- package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
- package/dist/{odspError.js → odspError.cjs} +7 -3
- package/dist/odspError.cjs.map +1 -0
- package/dist/odspError.d.ts.map +1 -1
- package/dist/{odspFluidFileLink.js → odspFluidFileLink.cjs} +25 -18
- package/dist/odspFluidFileLink.cjs.map +1 -0
- package/dist/odspFluidFileLink.d.ts +10 -1
- package/dist/odspFluidFileLink.d.ts.map +1 -1
- package/dist/odspLocationRedirection.cjs +24 -0
- package/dist/odspLocationRedirection.cjs.map +1 -0
- package/dist/odspLocationRedirection.d.ts +14 -0
- package/dist/odspLocationRedirection.d.ts.map +1 -0
- package/dist/{odspPublicUtils.js → odspPublicUtils.cjs} +7 -4
- package/dist/odspPublicUtils.cjs.map +1 -0
- package/dist/odspPublicUtils.d.ts +6 -0
- package/dist/odspPublicUtils.d.ts.map +1 -1
- package/dist/{odspSnapshotParser.js → odspSnapshotParser.cjs} +11 -12
- package/dist/odspSnapshotParser.cjs.map +1 -0
- package/dist/odspSnapshotParser.d.ts.map +1 -1
- package/dist/{odspSummaryUploadManager.js → odspSummaryUploadManager.cjs} +47 -34
- package/dist/odspSummaryUploadManager.cjs.map +1 -0
- package/dist/odspSummaryUploadManager.d.ts +7 -4
- package/dist/odspSummaryUploadManager.d.ts.map +1 -1
- package/dist/{odspUrlHelper.js → odspUrlHelper.cjs} +9 -3
- package/dist/odspUrlHelper.cjs.map +1 -0
- package/dist/odspUrlHelper.d.ts +5 -0
- package/dist/odspUrlHelper.d.ts.map +1 -1
- package/dist/{odspUtils.js → odspUtils.cjs} +118 -30
- package/dist/odspUtils.cjs.map +1 -0
- package/dist/odspUtils.d.ts +35 -6
- package/dist/odspUtils.d.ts.map +1 -1
- package/dist/{opsCaching.js → opsCaching.cjs} +25 -9
- package/dist/opsCaching.cjs.map +1 -0
- package/dist/opsCaching.d.ts +3 -3
- package/dist/opsCaching.d.ts.map +1 -1
- package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
- package/dist/packageVersion.cjs.map +1 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/prefetchLatestSnapshot.cjs +100 -0
- package/dist/prefetchLatestSnapshot.cjs.map +1 -0
- package/dist/prefetchLatestSnapshot.d.ts +12 -7
- package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
- package/dist/{retryErrorsStorageAdapter.js → retryErrorsStorageAdapter.cjs} +13 -6
- package/dist/retryErrorsStorageAdapter.cjs.map +1 -0
- package/dist/retryErrorsStorageAdapter.d.ts +5 -4
- package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
- package/dist/{retryUtils.js → retryUtils.cjs} +30 -14
- package/dist/retryUtils.cjs.map +1 -0
- package/dist/retryUtils.d.ts +2 -2
- package/dist/retryUtils.d.ts.map +1 -1
- package/dist/socketModule.cjs +10 -0
- package/dist/socketModule.cjs.map +1 -0
- package/dist/socketModule.d.ts +7 -0
- package/dist/socketModule.d.ts.map +1 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/{vroom.js → vroom.cjs} +24 -9
- package/dist/vroom.cjs.map +1 -0
- package/dist/vroom.d.ts +4 -4
- package/dist/vroom.d.ts.map +1 -1
- package/dist/{zipItDataRepresentationUtils.js → zipItDataRepresentationUtils.cjs} +227 -118
- package/dist/zipItDataRepresentationUtils.cjs.map +1 -0
- package/dist/zipItDataRepresentationUtils.d.ts +47 -20
- package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
- package/lib/ReadBufferUtils.d.mts.map +1 -0
- package/lib/{ReadBufferUtils.js → ReadBufferUtils.mjs} +14 -7
- package/lib/ReadBufferUtils.mjs.map +1 -0
- package/lib/{WriteBufferUtils.d.ts → WriteBufferUtils.d.mts} +3 -5
- package/lib/WriteBufferUtils.d.mts.map +1 -0
- package/lib/{WriteBufferUtils.js → WriteBufferUtils.mjs} +68 -64
- package/lib/WriteBufferUtils.mjs.map +1 -0
- package/lib/{checkUrl.d.ts → checkUrl.d.mts} +1 -0
- package/lib/checkUrl.d.mts.map +1 -0
- package/lib/{checkUrl.js → checkUrl.mjs} +7 -6
- package/lib/checkUrl.mjs.map +1 -0
- package/lib/compactSnapshotParser.d.mts +24 -0
- package/lib/compactSnapshotParser.d.mts.map +1 -0
- package/lib/compactSnapshotParser.mjs +203 -0
- package/lib/compactSnapshotParser.mjs.map +1 -0
- package/lib/{compactSnapshotWriter.d.ts → compactSnapshotWriter.d.mts} +3 -4
- package/lib/compactSnapshotWriter.d.mts.map +1 -0
- package/lib/{compactSnapshotWriter.js → compactSnapshotWriter.mjs} +41 -31
- package/lib/compactSnapshotWriter.mjs.map +1 -0
- package/lib/{constants.d.ts → constants.d.mts} +6 -0
- package/lib/constants.d.mts.map +1 -0
- package/lib/{constants.js → constants.mjs} +7 -1
- package/lib/constants.mjs.map +1 -0
- package/lib/{contracts.d.ts → contracts.d.mts} +17 -54
- package/lib/contracts.d.mts.map +1 -0
- package/lib/{contracts.js → contracts.mjs} +1 -1
- package/lib/contracts.mjs.map +1 -0
- package/lib/{contractsPublic.d.ts → contractsPublic.d.mts} +15 -0
- package/lib/contractsPublic.d.mts.map +1 -0
- package/lib/{contractsPublic.js → contractsPublic.mjs} +7 -1
- package/lib/contractsPublic.mjs.map +1 -0
- package/lib/createFile.d.mts +18 -0
- package/lib/createFile.d.mts.map +1 -0
- package/lib/createFile.mjs +171 -0
- package/lib/createFile.mjs.map +1 -0
- package/lib/createNewContainerOnExistingFile.d.mts +22 -0
- package/lib/createNewContainerOnExistingFile.d.mts.map +1 -0
- package/lib/createNewContainerOnExistingFile.mjs +56 -0
- package/lib/createNewContainerOnExistingFile.mjs.map +1 -0
- package/lib/createNewModule.d.mts +7 -0
- package/lib/createNewModule.d.mts.map +1 -0
- package/lib/createNewModule.mjs +7 -0
- package/lib/createNewModule.mjs.map +1 -0
- package/lib/createNewUtils.d.mts +27 -0
- package/lib/createNewUtils.d.mts.map +1 -0
- package/lib/createNewUtils.mjs +197 -0
- package/lib/createNewUtils.mjs.map +1 -0
- package/lib/{createOdspCreateContainerRequest.d.ts → createOdspCreateContainerRequest.d.mts} +5 -7
- package/lib/createOdspCreateContainerRequest.d.mts.map +1 -0
- package/lib/{createOdspCreateContainerRequest.js → createOdspCreateContainerRequest.mjs} +8 -4
- package/lib/createOdspCreateContainerRequest.mjs.map +1 -0
- package/lib/{createOdspUrl.d.ts → createOdspUrl.d.mts} +2 -1
- package/lib/{createOdspUrl.d.ts.map → createOdspUrl.d.mts.map} +1 -1
- package/lib/{createOdspUrl.js → createOdspUrl.mjs} +2 -1
- package/lib/createOdspUrl.mjs.map +1 -0
- package/lib/{epochTracker.d.ts → epochTracker.d.mts} +34 -10
- package/lib/epochTracker.d.mts.map +1 -0
- package/lib/{epochTracker.js → epochTracker.mjs} +97 -43
- package/lib/epochTracker.mjs.map +1 -0
- package/lib/{fetch.d.ts → fetch.d.mts} +1 -1
- package/lib/{fetch.d.ts.map → fetch.d.mts.map} +1 -1
- package/lib/{fetch.js → fetch.mjs} +1 -1
- package/lib/fetch.mjs.map +1 -0
- package/lib/{fetchSnapshot.d.ts → fetchSnapshot.d.mts} +14 -9
- package/lib/fetchSnapshot.d.mts.map +1 -0
- package/lib/{fetchSnapshot.js → fetchSnapshot.mjs} +185 -167
- package/lib/fetchSnapshot.mjs.map +1 -0
- package/lib/{getFileLink.d.ts → getFileLink.d.mts} +4 -7
- package/lib/getFileLink.d.mts.map +1 -0
- package/lib/{getFileLink.js → getFileLink.mjs} +49 -38
- package/lib/getFileLink.mjs.map +1 -0
- package/lib/{getQueryString.d.ts → getQueryString.d.mts} +0 -4
- package/lib/getQueryString.d.mts.map +1 -0
- package/lib/{getQueryString.js → getQueryString.mjs} +1 -1
- package/lib/getQueryString.mjs.map +1 -0
- package/lib/{getUrlAndHeadersWithAuth.d.ts.map → getUrlAndHeadersWithAuth.d.mts.map} +1 -1
- package/lib/{getUrlAndHeadersWithAuth.js → getUrlAndHeadersWithAuth.mjs} +4 -2
- package/lib/getUrlAndHeadersWithAuth.mjs.map +1 -0
- package/lib/index.d.mts +24 -0
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +22 -0
- package/lib/index.mjs.map +1 -0
- package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts +17 -0
- package/lib/localOdspDriver/localOdspDeltaStorageService.d.mts.map +1 -0
- package/lib/localOdspDriver/localOdspDeltaStorageService.mjs +31 -0
- package/lib/localOdspDriver/localOdspDeltaStorageService.mjs.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentService.d.ts → localOdspDocumentService.d.mts} +3 -2
- package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentService.js → localOdspDocumentService.mjs} +8 -6
- package/lib/localOdspDriver/localOdspDocumentService.mjs.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentServiceFactory.d.ts → localOdspDocumentServiceFactory.d.mts} +4 -5
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.mts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentServiceFactory.js → localOdspDocumentServiceFactory.mjs} +9 -10
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.mjs.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentStorageManager.d.ts → localOdspDocumentStorageManager.d.mts} +3 -3
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +1 -0
- package/lib/localOdspDriver/{localOdspDocumentStorageManager.js → localOdspDocumentStorageManager.mjs} +11 -9
- package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +1 -0
- package/lib/odsp-driver-alpha.d.mts +497 -0
- package/lib/odsp-driver-beta.d.mts +159 -0
- package/lib/odsp-driver-public.d.mts +159 -0
- package/lib/odsp-driver-untrimmed.d.mts +566 -0
- package/lib/{odspCache.d.ts → odspCache.d.mts} +19 -8
- package/lib/odspCache.d.mts.map +1 -0
- package/lib/{odspCache.js → odspCache.mjs} +6 -11
- package/lib/odspCache.mjs.map +1 -0
- package/lib/odspDelayLoadedDeltaStream.d.mts +75 -0
- package/lib/odspDelayLoadedDeltaStream.d.mts.map +1 -0
- package/lib/odspDelayLoadedDeltaStream.mjs +287 -0
- package/lib/odspDelayLoadedDeltaStream.mjs.map +1 -0
- package/lib/{odspDeltaStorageService.d.ts → odspDeltaStorageService.d.mts} +9 -7
- package/lib/odspDeltaStorageService.d.mts.map +1 -0
- package/lib/{odspDeltaStorageService.js → odspDeltaStorageService.mjs} +70 -68
- package/lib/odspDeltaStorageService.mjs.map +1 -0
- package/lib/{odspDocumentDeltaConnection.d.ts → odspDocumentDeltaConnection.d.mts} +33 -13
- package/lib/odspDocumentDeltaConnection.d.mts.map +1 -0
- package/lib/{odspDocumentDeltaConnection.js → odspDocumentDeltaConnection.mjs} +214 -103
- package/lib/odspDocumentDeltaConnection.mjs.map +1 -0
- package/lib/{odspDocumentService.d.ts → odspDocumentService.d.mts} +14 -28
- package/lib/odspDocumentService.d.mts.map +1 -0
- package/lib/odspDocumentService.mjs +221 -0
- package/lib/odspDocumentService.mjs.map +1 -0
- package/lib/{odspDocumentServiceFactory.d.ts → odspDocumentServiceFactory.d.mts} +5 -1
- package/lib/odspDocumentServiceFactory.d.mts.map +1 -0
- package/lib/{odspDocumentServiceFactory.js → odspDocumentServiceFactory.mjs} +8 -6
- package/lib/odspDocumentServiceFactory.mjs.map +1 -0
- package/lib/{odspDocumentServiceFactoryCore.d.ts → odspDocumentServiceFactoryCore.d.mts} +17 -12
- package/lib/odspDocumentServiceFactoryCore.d.mts.map +1 -0
- package/lib/odspDocumentServiceFactoryCore.mjs +192 -0
- package/lib/odspDocumentServiceFactoryCore.mjs.map +1 -0
- package/lib/{odspDocumentServiceFactoryWithCodeSplit.d.ts → odspDocumentServiceFactoryWithCodeSplit.d.mts} +6 -1
- package/lib/odspDocumentServiceFactoryWithCodeSplit.d.mts.map +1 -0
- package/lib/{odspDocumentServiceFactoryWithCodeSplit.js → odspDocumentServiceFactoryWithCodeSplit.mjs} +8 -3
- package/lib/odspDocumentServiceFactoryWithCodeSplit.mjs.map +1 -0
- package/lib/{odspDocumentStorageManager.d.ts → odspDocumentStorageManager.d.mts} +17 -11
- package/lib/odspDocumentStorageManager.d.mts.map +1 -0
- package/lib/odspDocumentStorageManager.mjs +486 -0
- package/lib/odspDocumentStorageManager.mjs.map +1 -0
- package/lib/{odspDocumentStorageServiceBase.d.ts → odspDocumentStorageServiceBase.d.mts} +8 -10
- package/lib/odspDocumentStorageServiceBase.d.mts.map +1 -0
- package/lib/{odspDocumentStorageServiceBase.js → odspDocumentStorageServiceBase.mjs} +31 -33
- package/lib/odspDocumentStorageServiceBase.mjs.map +1 -0
- package/lib/{odspDriverUrlResolver.d.ts → odspDriverUrlResolver.d.mts} +12 -0
- package/lib/odspDriverUrlResolver.d.mts.map +1 -0
- package/lib/{odspDriverUrlResolver.js → odspDriverUrlResolver.mjs} +50 -40
- package/lib/odspDriverUrlResolver.mjs.map +1 -0
- package/lib/{odspDriverUrlResolverForShareLink.d.ts → odspDriverUrlResolverForShareLink.d.mts} +6 -4
- package/lib/odspDriverUrlResolverForShareLink.d.mts.map +1 -0
- package/lib/{odspDriverUrlResolverForShareLink.js → odspDriverUrlResolverForShareLink.mjs} +36 -29
- package/lib/odspDriverUrlResolverForShareLink.mjs.map +1 -0
- package/lib/{odspError.d.ts → odspError.d.mts} +1 -1
- package/lib/odspError.d.mts.map +1 -0
- package/lib/{odspError.js → odspError.mjs} +7 -3
- package/lib/odspError.mjs.map +1 -0
- package/lib/{odspFluidFileLink.d.ts → odspFluidFileLink.d.mts} +11 -2
- package/lib/odspFluidFileLink.d.mts.map +1 -0
- package/lib/{odspFluidFileLink.js → odspFluidFileLink.mjs} +23 -16
- package/lib/odspFluidFileLink.mjs.map +1 -0
- package/lib/odspLocationRedirection.d.mts +14 -0
- package/lib/odspLocationRedirection.d.mts.map +1 -0
- package/lib/odspLocationRedirection.mjs +20 -0
- package/lib/odspLocationRedirection.mjs.map +1 -0
- package/lib/{odspPublicUtils.d.ts → odspPublicUtils.d.mts} +6 -0
- package/lib/odspPublicUtils.d.mts.map +1 -0
- package/lib/{odspPublicUtils.js → odspPublicUtils.mjs} +5 -2
- package/lib/odspPublicUtils.mjs.map +1 -0
- package/lib/{odspSnapshotParser.d.ts → odspSnapshotParser.d.mts} +2 -2
- package/lib/odspSnapshotParser.d.mts.map +1 -0
- package/lib/{odspSnapshotParser.js → odspSnapshotParser.mjs} +10 -11
- package/lib/odspSnapshotParser.mjs.map +1 -0
- package/lib/{odspSummaryUploadManager.d.ts → odspSummaryUploadManager.d.mts} +8 -5
- package/lib/odspSummaryUploadManager.d.mts.map +1 -0
- package/lib/{odspSummaryUploadManager.js → odspSummaryUploadManager.mjs} +41 -32
- package/lib/odspSummaryUploadManager.mjs.map +1 -0
- package/lib/{odspUrlHelper.d.ts → odspUrlHelper.d.mts} +5 -0
- package/lib/odspUrlHelper.d.mts.map +1 -0
- package/lib/{odspUrlHelper.js → odspUrlHelper.mjs} +9 -3
- package/lib/odspUrlHelper.mjs.map +1 -0
- package/lib/{odspUtils.d.ts → odspUtils.d.mts} +36 -7
- package/lib/odspUtils.d.mts.map +1 -0
- package/lib/{odspUtils.js → odspUtils.mjs} +109 -27
- package/lib/odspUtils.mjs.map +1 -0
- package/lib/{opsCaching.d.ts → opsCaching.d.mts} +3 -3
- package/lib/opsCaching.d.mts.map +1 -0
- package/lib/{opsCaching.js → opsCaching.mjs} +23 -7
- package/lib/opsCaching.mjs.map +1 -0
- package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
- package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
- package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
- package/lib/packageVersion.mjs.map +1 -0
- package/lib/{prefetchLatestSnapshot.d.ts → prefetchLatestSnapshot.d.mts} +13 -8
- package/lib/prefetchLatestSnapshot.d.mts.map +1 -0
- package/lib/prefetchLatestSnapshot.mjs +96 -0
- package/lib/prefetchLatestSnapshot.mjs.map +1 -0
- package/lib/{retryErrorsStorageAdapter.d.ts → retryErrorsStorageAdapter.d.mts} +5 -4
- package/lib/retryErrorsStorageAdapter.d.mts.map +1 -0
- package/lib/{retryErrorsStorageAdapter.js → retryErrorsStorageAdapter.mjs} +13 -6
- package/lib/retryErrorsStorageAdapter.mjs.map +1 -0
- package/lib/{retryUtils.d.ts → retryUtils.d.mts} +2 -2
- package/lib/retryUtils.d.mts.map +1 -0
- package/lib/{retryUtils.js → retryUtils.mjs} +27 -11
- package/lib/retryUtils.mjs.map +1 -0
- package/lib/socketModule.d.mts +7 -0
- package/lib/socketModule.d.mts.map +1 -0
- package/lib/socketModule.mjs +7 -0
- package/lib/socketModule.mjs.map +1 -0
- package/lib/{vroom.d.ts → vroom.d.mts} +6 -6
- package/lib/vroom.d.mts.map +1 -0
- package/lib/{vroom.js → vroom.mjs} +24 -9
- package/lib/vroom.mjs.map +1 -0
- package/lib/{zipItDataRepresentationUtils.d.ts → zipItDataRepresentationUtils.d.mts} +48 -21
- package/lib/zipItDataRepresentationUtils.d.mts.map +1 -0
- package/lib/{zipItDataRepresentationUtils.js → zipItDataRepresentationUtils.mjs} +213 -111
- package/lib/zipItDataRepresentationUtils.mjs.map +1 -0
- package/package.json +89 -69
- package/prettier.config.cjs +8 -0
- package/src/ReadBufferUtils.ts +51 -44
- package/src/WriteBufferUtils.ts +203 -181
- package/src/checkUrl.ts +16 -15
- package/src/compactSnapshotParser.ts +219 -103
- package/src/compactSnapshotWriter.ts +118 -97
- package/src/constants.ts +7 -0
- package/src/contracts.ts +96 -136
- package/src/contractsPublic.ts +31 -16
- package/src/createFile.ts +243 -305
- package/src/createNewContainerOnExistingFile.ts +93 -0
- package/src/createNewModule.ts +7 -0
- package/src/createNewUtils.ts +266 -56
- package/src/createOdspCreateContainerRequest.ts +22 -18
- package/src/createOdspUrl.ts +12 -13
- package/src/epochTracker.ts +596 -457
- package/src/fetch.ts +4 -4
- package/src/fetchSnapshot.ts +583 -508
- package/src/getFileLink.ts +194 -155
- package/src/getQueryString.ts +11 -9
- package/src/getUrlAndHeadersWithAuth.ts +34 -33
- package/src/index.ts +42 -18
- package/src/localOdspDriver/localOdspDeltaStorageService.ts +49 -0
- package/src/localOdspDriver/localOdspDocumentService.ts +40 -38
- package/src/localOdspDriver/localOdspDocumentServiceFactory.ts +46 -43
- package/src/localOdspDriver/localOdspDocumentStorageManager.ts +55 -50
- package/src/odspCache.ts +112 -90
- package/src/odspDelayLoadedDeltaStream.ts +459 -0
- package/src/odspDeltaStorageService.ts +232 -221
- package/src/odspDocumentDeltaConnection.ts +751 -563
- package/src/odspDocumentService.ts +324 -523
- package/src/odspDocumentServiceFactory.ts +20 -21
- package/src/odspDocumentServiceFactoryCore.ts +325 -202
- package/src/odspDocumentServiceFactoryWithCodeSplit.ts +20 -20
- package/src/odspDocumentStorageManager.ts +730 -534
- package/src/odspDocumentStorageServiceBase.ts +279 -254
- package/src/odspDriverUrlResolver.ts +230 -188
- package/src/odspDriverUrlResolverForShareLink.ts +223 -203
- package/src/odspError.ts +27 -19
- package/src/odspFluidFileLink.ts +106 -87
- package/src/odspLocationRedirection.ts +26 -0
- package/src/odspPublicUtils.ts +20 -14
- package/src/odspSnapshotParser.ts +53 -46
- package/src/odspSummaryUploadManager.ts +243 -218
- package/src/odspUrlHelper.ts +81 -71
- package/src/odspUtils.ts +401 -259
- package/src/opsCaching.ts +214 -193
- package/src/packageVersion.ts +1 -1
- package/src/prefetchLatestSnapshot.ts +142 -80
- package/src/retryErrorsStorageAdapter.ts +92 -77
- package/src/retryUtils.ts +80 -57
- package/src/socketModule.ts +8 -0
- package/src/vroom.ts +92 -83
- package/src/zipItDataRepresentationUtils.ts +534 -394
- package/tsc-multi.test.json +4 -0
- package/tsconfig.json +11 -13
- package/.editorconfig +0 -7
- package/dist/ReadBufferUtils.js.map +0 -1
- package/dist/WriteBufferUtils.js.map +0 -1
- package/dist/checkUrl.js.map +0 -1
- package/dist/compactSnapshotParser.js +0 -115
- package/dist/compactSnapshotParser.js.map +0 -1
- package/dist/compactSnapshotWriter.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/contracts.js.map +0 -1
- package/dist/contractsPublic.js.map +0 -1
- package/dist/createFile.js +0 -242
- package/dist/createFile.js.map +0 -1
- package/dist/createNewUtils.js +0 -67
- package/dist/createNewUtils.js.map +0 -1
- package/dist/createOdspCreateContainerRequest.js.map +0 -1
- package/dist/createOdspUrl.js.map +0 -1
- package/dist/epochTracker.js.map +0 -1
- package/dist/fetch.js.map +0 -1
- package/dist/fetchSnapshot.js.map +0 -1
- package/dist/getFileLink.js.map +0 -1
- package/dist/getQueryString.js.map +0 -1
- package/dist/getSocketIo.d.ts +0 -11
- package/dist/getSocketIo.d.ts.map +0 -1
- package/dist/getSocketIo.js +0 -20
- package/dist/getSocketIo.js.map +0 -1
- package/dist/getUrlAndHeadersWithAuth.js.map +0 -1
- package/dist/index.js +0 -41
- package/dist/index.js.map +0 -1
- package/dist/localOdspDriver/localOdspDocumentService.js.map +0 -1
- package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +0 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +0 -1
- package/dist/odspCache.js.map +0 -1
- package/dist/odspDeltaStorageService.js.map +0 -1
- package/dist/odspDocumentDeltaConnection.js.map +0 -1
- package/dist/odspDocumentService.js +0 -364
- package/dist/odspDocumentService.js.map +0 -1
- package/dist/odspDocumentServiceFactory.js.map +0 -1
- package/dist/odspDocumentServiceFactoryCore.js +0 -118
- package/dist/odspDocumentServiceFactoryCore.js.map +0 -1
- package/dist/odspDocumentServiceFactoryWithCodeSplit.js +0 -34
- package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +0 -1
- package/dist/odspDocumentStorageManager.js +0 -356
- package/dist/odspDocumentStorageManager.js.map +0 -1
- package/dist/odspDocumentStorageServiceBase.js.map +0 -1
- package/dist/odspDriverUrlResolver.js.map +0 -1
- package/dist/odspDriverUrlResolverForShareLink.js.map +0 -1
- package/dist/odspError.js.map +0 -1
- package/dist/odspFluidFileLink.js.map +0 -1
- package/dist/odspPublicUtils.js.map +0 -1
- package/dist/odspSnapshotParser.js.map +0 -1
- package/dist/odspSummaryUploadManager.js.map +0 -1
- package/dist/odspUrlHelper.js.map +0 -1
- package/dist/odspUtils.js.map +0 -1
- package/dist/opsCaching.js.map +0 -1
- package/dist/packageVersion.js.map +0 -1
- package/dist/prefetchLatestSnapshot.js +0 -57
- package/dist/prefetchLatestSnapshot.js.map +0 -1
- package/dist/retryErrorsStorageAdapter.js.map +0 -1
- package/dist/retryUtils.js.map +0 -1
- package/dist/vroom.js.map +0 -1
- package/dist/zipItDataRepresentationUtils.js.map +0 -1
- package/lib/ReadBufferUtils.d.ts.map +0 -1
- package/lib/ReadBufferUtils.js.map +0 -1
- package/lib/WriteBufferUtils.d.ts.map +0 -1
- package/lib/WriteBufferUtils.js.map +0 -1
- package/lib/checkUrl.d.ts.map +0 -1
- package/lib/checkUrl.js.map +0 -1
- package/lib/compactSnapshotParser.d.ts +0 -15
- package/lib/compactSnapshotParser.d.ts.map +0 -1
- package/lib/compactSnapshotParser.js +0 -111
- package/lib/compactSnapshotParser.js.map +0 -1
- package/lib/compactSnapshotWriter.d.ts.map +0 -1
- package/lib/compactSnapshotWriter.js.map +0 -1
- package/lib/constants.d.ts.map +0 -1
- package/lib/constants.js.map +0 -1
- package/lib/contracts.d.ts.map +0 -1
- package/lib/contracts.js.map +0 -1
- package/lib/contractsPublic.d.ts.map +0 -1
- package/lib/contractsPublic.js.map +0 -1
- package/lib/createFile.d.ts +0 -22
- package/lib/createFile.d.ts.map +0 -1
- package/lib/createFile.js +0 -235
- package/lib/createFile.js.map +0 -1
- package/lib/createNewUtils.d.ts +0 -11
- package/lib/createNewUtils.d.ts.map +0 -1
- package/lib/createNewUtils.js +0 -63
- package/lib/createNewUtils.js.map +0 -1
- package/lib/createOdspCreateContainerRequest.d.ts.map +0 -1
- package/lib/createOdspCreateContainerRequest.js.map +0 -1
- package/lib/createOdspUrl.js.map +0 -1
- package/lib/epochTracker.d.ts.map +0 -1
- package/lib/epochTracker.js.map +0 -1
- package/lib/fetch.js.map +0 -1
- package/lib/fetchSnapshot.d.ts.map +0 -1
- package/lib/fetchSnapshot.js.map +0 -1
- package/lib/getFileLink.d.ts.map +0 -1
- package/lib/getFileLink.js.map +0 -1
- package/lib/getQueryString.d.ts.map +0 -1
- package/lib/getQueryString.js.map +0 -1
- package/lib/getSocketIo.d.ts +0 -11
- package/lib/getSocketIo.d.ts.map +0 -1
- package/lib/getSocketIo.js +0 -13
- package/lib/getSocketIo.js.map +0 -1
- package/lib/getUrlAndHeadersWithAuth.js.map +0 -1
- package/lib/index.d.ts +0 -21
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -29
- package/lib/index.js.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentService.d.ts.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentService.js.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.d.ts.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +0 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +0 -1
- package/lib/odspCache.d.ts.map +0 -1
- package/lib/odspCache.js.map +0 -1
- package/lib/odspDeltaStorageService.d.ts.map +0 -1
- package/lib/odspDeltaStorageService.js.map +0 -1
- package/lib/odspDocumentDeltaConnection.d.ts.map +0 -1
- package/lib/odspDocumentDeltaConnection.js.map +0 -1
- package/lib/odspDocumentService.d.ts.map +0 -1
- package/lib/odspDocumentService.js +0 -360
- package/lib/odspDocumentService.js.map +0 -1
- package/lib/odspDocumentServiceFactory.d.ts.map +0 -1
- package/lib/odspDocumentServiceFactory.js.map +0 -1
- package/lib/odspDocumentServiceFactoryCore.d.ts.map +0 -1
- package/lib/odspDocumentServiceFactoryCore.js +0 -114
- package/lib/odspDocumentServiceFactoryCore.js.map +0 -1
- package/lib/odspDocumentServiceFactoryWithCodeSplit.d.ts.map +0 -1
- package/lib/odspDocumentServiceFactoryWithCodeSplit.js.map +0 -1
- package/lib/odspDocumentStorageManager.d.ts.map +0 -1
- package/lib/odspDocumentStorageManager.js +0 -352
- package/lib/odspDocumentStorageManager.js.map +0 -1
- package/lib/odspDocumentStorageServiceBase.d.ts.map +0 -1
- package/lib/odspDocumentStorageServiceBase.js.map +0 -1
- package/lib/odspDriverUrlResolver.d.ts.map +0 -1
- package/lib/odspDriverUrlResolver.js.map +0 -1
- package/lib/odspDriverUrlResolverForShareLink.d.ts.map +0 -1
- package/lib/odspDriverUrlResolverForShareLink.js.map +0 -1
- package/lib/odspError.d.ts.map +0 -1
- package/lib/odspError.js.map +0 -1
- package/lib/odspFluidFileLink.d.ts.map +0 -1
- package/lib/odspFluidFileLink.js.map +0 -1
- package/lib/odspPublicUtils.d.ts.map +0 -1
- package/lib/odspPublicUtils.js.map +0 -1
- package/lib/odspSnapshotParser.d.ts.map +0 -1
- package/lib/odspSnapshotParser.js.map +0 -1
- package/lib/odspSummaryUploadManager.d.ts.map +0 -1
- package/lib/odspSummaryUploadManager.js.map +0 -1
- package/lib/odspUrlHelper.d.ts.map +0 -1
- package/lib/odspUrlHelper.js.map +0 -1
- package/lib/odspUtils.d.ts.map +0 -1
- package/lib/odspUtils.js.map +0 -1
- package/lib/opsCaching.d.ts.map +0 -1
- package/lib/opsCaching.js.map +0 -1
- package/lib/packageVersion.js.map +0 -1
- package/lib/prefetchLatestSnapshot.d.ts.map +0 -1
- package/lib/prefetchLatestSnapshot.js +0 -53
- package/lib/prefetchLatestSnapshot.js.map +0 -1
- package/lib/retryErrorsStorageAdapter.d.ts.map +0 -1
- package/lib/retryErrorsStorageAdapter.js.map +0 -1
- package/lib/retryUtils.d.ts.map +0 -1
- package/lib/retryUtils.js.map +0 -1
- package/lib/vroom.d.ts.map +0 -1
- package/lib/vroom.js.map +0 -1
- package/lib/zipItDataRepresentationUtils.d.ts.map +0 -1
- package/lib/zipItDataRepresentationUtils.js.map +0 -1
- package/src/getSocketIo.ts +0 -14
- package/tsconfig.esnext.json +0 -7
- /package/lib/{ReadBufferUtils.d.ts → ReadBufferUtils.d.mts} +0 -0
- /package/lib/{getUrlAndHeadersWithAuth.d.ts → getUrlAndHeadersWithAuth.d.mts} +0 -0
|
@@ -2,23 +2,25 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { default as AbortController } from "abort-controller";
|
|
6
5
|
import { v4 as uuid } from "uuid";
|
|
7
|
-
import {
|
|
6
|
+
import { isFluidError, PerformanceEvent, wrapError, } from "@fluidframework/telemetry-utils";
|
|
7
|
+
import { fromUtf8ToBase64 } from "@fluid-internal/client-utils";
|
|
8
|
+
import { assert } from "@fluidframework/core-utils";
|
|
9
|
+
import { getW3CData } from "@fluidframework/driver-base";
|
|
8
10
|
import { DriverErrorType } from "@fluidframework/driver-definitions";
|
|
9
|
-
import { isFluidError, PerformanceEvent, wrapError } from "@fluidframework/telemetry-utils";
|
|
10
11
|
import { OdspErrorType, } from "@fluidframework/odsp-driver-definitions";
|
|
11
|
-
import { isRuntimeMessage, NonRetryableError } from "@fluidframework/driver-utils";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { pkgVersion } from "./packageVersion";
|
|
12
|
+
import { isRuntimeMessage, NonRetryableError, } from "@fluidframework/driver-utils";
|
|
13
|
+
import { fetchIncorrectResponse, throwOdspNetworkError } from "@fluidframework/odsp-doclib-utils";
|
|
14
|
+
import { persistedCacheValueVersion, } from "./contracts.mjs";
|
|
15
|
+
import { getQueryString } from "./getQueryString.mjs";
|
|
16
|
+
import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.mjs";
|
|
17
|
+
import { fetchAndParseAsJSONHelper, fetchHelper, getWithRetryForTokenRefresh, getWithRetryForTokenRefreshRepeat, measure, measureP, } from "./odspUtils.mjs";
|
|
18
|
+
import { convertOdspSnapshotToSnapshotTreeAndBlobs } from "./odspSnapshotParser.mjs";
|
|
19
|
+
import { currentReadVersion, parseCompactSnapshotResponse, } from "./compactSnapshotParser.mjs";
|
|
20
|
+
import { pkgVersion } from "./packageVersion.mjs";
|
|
20
21
|
/**
|
|
21
22
|
* Enum to support different types of snapshot formats.
|
|
23
|
+
* @alpha
|
|
22
24
|
*/
|
|
23
25
|
export var SnapshotFormatSupportType;
|
|
24
26
|
(function (SnapshotFormatSupportType) {
|
|
@@ -36,51 +38,62 @@ export var SnapshotFormatSupportType;
|
|
|
36
38
|
* @param forceAccessTokenViaAuthorizationHeader - whether to force passing given token via authorization header
|
|
37
39
|
* @returns A promise of the snapshot and the status code of the response
|
|
38
40
|
*/
|
|
39
|
-
export async function fetchSnapshot(snapshotUrl,
|
|
41
|
+
export async function fetchSnapshot(snapshotUrl,
|
|
42
|
+
// eslint-disable-next-line @rushstack/no-new-null
|
|
43
|
+
token, versionId, fetchFullSnapshot, forceAccessTokenViaAuthorizationHeader, logger, snapshotDownloader) {
|
|
40
44
|
const path = `/trees/${versionId}`;
|
|
41
45
|
let queryParams = {};
|
|
42
46
|
if (fetchFullSnapshot) {
|
|
43
|
-
|
|
44
|
-
queryParams = { channels: 1, blobs: 2 };
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
queryParams = { deltas: 1, channels: 1, blobs: 2 };
|
|
48
|
-
}
|
|
47
|
+
queryParams = versionId !== "latest" ? { blobs: 2 } : { deltas: 1, blobs: 2 };
|
|
49
48
|
}
|
|
50
49
|
const queryString = getQueryString(queryParams);
|
|
51
50
|
const { url, headers } = getUrlAndHeadersWithAuth(`${snapshotUrl}${path}${queryString}`, token, forceAccessTokenViaAuthorizationHeader);
|
|
52
|
-
const response = await PerformanceEvent.timedExecAsync(logger, {
|
|
51
|
+
const response = (await PerformanceEvent.timedExecAsync(logger, {
|
|
53
52
|
eventName: "fetchSnapshot",
|
|
54
53
|
headers: Object.keys(headers).length !== 0 ? true : undefined,
|
|
55
|
-
}, async () => snapshotDownloader(url, { headers }));
|
|
54
|
+
}, async () => snapshotDownloader(url, { headers })));
|
|
56
55
|
return convertOdspSnapshotToSnapshotTreeAndBlobs(response.content);
|
|
57
56
|
}
|
|
58
57
|
export async function fetchSnapshotWithRedeem(odspResolvedUrl, storageTokenFetcher, snapshotOptions, forceAccessTokenViaAuthorizationHeader, logger, snapshotDownloader, putInCache, removeEntries, enableRedeemFallback) {
|
|
59
58
|
// back-compat: This block to be removed with #8784 when we only consume/consider odsp resolvers that are >= 0.51
|
|
60
59
|
const sharingLinkToRedeem = odspResolvedUrl.sharingLinkToRedeem;
|
|
61
60
|
if (sharingLinkToRedeem) {
|
|
62
|
-
odspResolvedUrl.shareLinkInfo =
|
|
61
|
+
odspResolvedUrl.shareLinkInfo = { ...odspResolvedUrl.shareLinkInfo, sharingLinkToRedeem };
|
|
63
62
|
}
|
|
64
|
-
return fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache, enableRedeemFallback)
|
|
63
|
+
return fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache, enableRedeemFallback)
|
|
64
|
+
.catch(async (error) => {
|
|
65
65
|
if (enableRedeemFallback && isRedeemSharingLinkError(odspResolvedUrl, error)) {
|
|
66
66
|
// Execute the redeem fallback
|
|
67
|
-
logger
|
|
67
|
+
await redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, forceAccessTokenViaAuthorizationHeader);
|
|
68
|
+
const odspResolvedUrlWithoutShareLink = {
|
|
69
|
+
...odspResolvedUrl,
|
|
70
|
+
shareLinkInfo: {
|
|
71
|
+
...odspResolvedUrl.shareLinkInfo,
|
|
72
|
+
sharingLinkToRedeem: undefined,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
// Log initial failure only if redeem succeeded - it points out to some bug somewhere
|
|
76
|
+
// If redeem failed, that most likely means user has no permissions to access a file,
|
|
77
|
+
// and thus it's not worth it logging extra errors - same error will be logged by end-to-end
|
|
78
|
+
// flow (container open) based on a failure above.
|
|
79
|
+
logger.sendTelemetryEvent({
|
|
68
80
|
eventName: "RedeemFallback",
|
|
69
81
|
errorType: error.errorType,
|
|
70
82
|
}, error);
|
|
71
|
-
await redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, forceAccessTokenViaAuthorizationHeader);
|
|
72
|
-
const odspResolvedUrlWithoutShareLink = Object.assign(Object.assign({}, odspResolvedUrl), { shareLinkInfo: Object.assign(Object.assign({}, odspResolvedUrl.shareLinkInfo), { sharingLinkToRedeem: undefined }) });
|
|
73
83
|
return fetchLatestSnapshotCore(odspResolvedUrlWithoutShareLink, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache);
|
|
74
84
|
}
|
|
75
85
|
else {
|
|
76
86
|
throw error;
|
|
77
87
|
}
|
|
78
|
-
})
|
|
88
|
+
})
|
|
89
|
+
.catch(async (error) => {
|
|
79
90
|
// Clear the cache on 401/403/404 on snapshot fetch from network because this means either the user doesn't
|
|
80
91
|
// have permissions for the file or it was deleted. So, if we do not clear cache, we will continue fetching
|
|
81
92
|
// snapshot from cache in the future.
|
|
82
|
-
if (typeof error === "object" &&
|
|
83
|
-
|
|
93
|
+
if ((typeof error === "object" &&
|
|
94
|
+
error !== null &&
|
|
95
|
+
error.errorType === DriverErrorType.authorizationError) ||
|
|
96
|
+
error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError) {
|
|
84
97
|
await removeEntries();
|
|
85
98
|
}
|
|
86
99
|
throw error;
|
|
@@ -90,10 +103,9 @@ async function redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, f
|
|
|
90
103
|
return PerformanceEvent.timedExecAsync(logger, {
|
|
91
104
|
eventName: "RedeemShareLink",
|
|
92
105
|
}, async () => getWithRetryForTokenRefresh(async (tokenFetchOptions) => {
|
|
93
|
-
|
|
94
|
-
assert(!!((_a = odspResolvedUrl.shareLinkInfo) === null || _a === void 0 ? void 0 : _a.sharingLinkToRedeem), 0x1ed /* "Share link should be present" */);
|
|
106
|
+
assert(!!odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem, 0x1ed /* "Share link should be present" */);
|
|
95
107
|
const storageToken = await storageTokenFetcher(tokenFetchOptions, "RedeemShareLink");
|
|
96
|
-
const encodedShareUrl = getEncodedShareUrl(
|
|
108
|
+
const encodedShareUrl = getEncodedShareUrl(odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem);
|
|
97
109
|
const redeemUrl = `${odspResolvedUrl.siteUrl}/_api/v2.0/shares/${encodedShareUrl}`;
|
|
98
110
|
const { url, headers } = getUrlAndHeadersWithAuth(redeemUrl, storageToken, forceAccessTokenViaAuthorizationHeader);
|
|
99
111
|
headers.prefer = "redeemSharingLink";
|
|
@@ -102,18 +114,12 @@ async function redeemSharingLink(odspResolvedUrl, storageTokenFetcher, logger, f
|
|
|
102
114
|
}
|
|
103
115
|
async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, snapshotOptions, logger, snapshotDownloader, putInCache, enableRedeemFallback) {
|
|
104
116
|
return getWithRetryForTokenRefresh(async (tokenFetchOptions) => {
|
|
105
|
-
var _a;
|
|
106
117
|
const storageToken = await storageTokenFetcher(tokenFetchOptions, "TreesLatest", true);
|
|
107
118
|
assert(storageToken !== null, 0x1e5 /* "Storage token should not be null" */);
|
|
108
|
-
let controller;
|
|
109
|
-
if ((snapshotOptions === null || snapshotOptions === void 0 ? void 0 : snapshotOptions.timeout) !== undefined) {
|
|
110
|
-
controller = new AbortController();
|
|
111
|
-
setTimeout(() => controller.abort(), snapshotOptions.timeout);
|
|
112
|
-
}
|
|
113
119
|
const perfEvent = {
|
|
114
120
|
eventName: "TreesLatest",
|
|
115
121
|
attempts: tokenFetchOptions.refresh ? 2 : 1,
|
|
116
|
-
shareLinkPresent:
|
|
122
|
+
shareLinkPresent: odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem !== undefined,
|
|
117
123
|
isSummarizer: odspResolvedUrl.summarizer,
|
|
118
124
|
redeemFallbackEnabled: enableRedeemFallback,
|
|
119
125
|
};
|
|
@@ -126,38 +132,87 @@ async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, sna
|
|
|
126
132
|
}
|
|
127
133
|
// This event measures only successful cases of getLatest call (no tokens, no retries).
|
|
128
134
|
return PerformanceEvent.timedExecAsync(logger, perfEvent, async (event) => {
|
|
129
|
-
|
|
130
|
-
|
|
135
|
+
let controller;
|
|
136
|
+
let fetchTimeout;
|
|
137
|
+
if (snapshotOptions?.timeout !== undefined) {
|
|
138
|
+
controller = new AbortController();
|
|
139
|
+
fetchTimeout = setTimeout(() => controller.abort(), snapshotOptions.timeout);
|
|
140
|
+
}
|
|
141
|
+
const [response, fetchTime] = await measureP(async () => snapshotDownloader(odspResolvedUrl, storageToken, snapshotOptions, controller)).finally(() => {
|
|
142
|
+
// Clear the fetchTimeout once the response is fetched.
|
|
143
|
+
if (fetchTimeout !== undefined) {
|
|
144
|
+
clearTimeout(fetchTimeout);
|
|
145
|
+
fetchTimeout = undefined;
|
|
146
|
+
}
|
|
147
|
+
});
|
|
131
148
|
const odspResponse = response.odspResponse;
|
|
132
149
|
const contentType = odspResponse.headers.get("content-type");
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
eventName: "SnapshotParse",
|
|
136
|
-
driverVersion: pkgVersion,
|
|
150
|
+
const propsToLog = {
|
|
151
|
+
...odspResponse.propsToLog,
|
|
137
152
|
contentType,
|
|
138
|
-
|
|
139
|
-
|
|
153
|
+
accept: response.requestHeaders.accept,
|
|
154
|
+
driverVersion: pkgVersion,
|
|
155
|
+
};
|
|
140
156
|
let parsedSnapshotContents;
|
|
157
|
+
let contentTypeToRead;
|
|
158
|
+
if (contentType?.includes("application/ms-fluid")) {
|
|
159
|
+
contentTypeToRead = "application/ms-fluid";
|
|
160
|
+
}
|
|
161
|
+
else if (contentType?.includes("application/json")) {
|
|
162
|
+
contentTypeToRead = "application/json";
|
|
163
|
+
}
|
|
164
|
+
let parseTime;
|
|
165
|
+
let receiveContentTime;
|
|
141
166
|
try {
|
|
142
|
-
switch (
|
|
167
|
+
switch (contentTypeToRead) {
|
|
143
168
|
case "application/json": {
|
|
144
|
-
|
|
169
|
+
let text;
|
|
170
|
+
[text, receiveContentTime] = await measureP(async () => odspResponse.content.text().catch((err) =>
|
|
171
|
+
// Parsing can fail and message could contain full request URI, including
|
|
172
|
+
// tokens, etc. So do not log error object itself.
|
|
173
|
+
throwOdspNetworkError("Error while parsing fetch response", fetchIncorrectResponse, odspResponse.content, // response
|
|
174
|
+
undefined, // response text
|
|
175
|
+
propsToLog)));
|
|
145
176
|
propsToLog.bodySize = text.length;
|
|
146
|
-
|
|
177
|
+
let content;
|
|
178
|
+
[content, parseTime] = measure(() => JSON.parse(text));
|
|
147
179
|
validateBlobsAndTrees(content);
|
|
148
180
|
const snapshotContents = convertOdspSnapshotToSnapshotTreeAndBlobs(content);
|
|
149
|
-
parsedSnapshotContents =
|
|
181
|
+
parsedSnapshotContents = {
|
|
182
|
+
...odspResponse,
|
|
183
|
+
content: {
|
|
184
|
+
...snapshotContents,
|
|
185
|
+
telemetryProps: {},
|
|
186
|
+
},
|
|
187
|
+
};
|
|
150
188
|
break;
|
|
151
189
|
}
|
|
152
190
|
case "application/ms-fluid": {
|
|
153
|
-
|
|
191
|
+
let content;
|
|
192
|
+
[content, receiveContentTime] = await measureP(async () => odspResponse.content.arrayBuffer().catch((err) =>
|
|
193
|
+
// Parsing can fail and message could contain full request URI, including
|
|
194
|
+
// tokens, etc. So do not log error object itself.
|
|
195
|
+
throwOdspNetworkError("Error while parsing fetch response", fetchIncorrectResponse, odspResponse.content, // response
|
|
196
|
+
undefined, // response text
|
|
197
|
+
propsToLog)));
|
|
154
198
|
propsToLog.bodySize = content.byteLength;
|
|
155
|
-
|
|
199
|
+
let snapshotContents;
|
|
200
|
+
[snapshotContents, parseTime] = measure(() => parseCompactSnapshotResponse(new Uint8Array(content), logger));
|
|
156
201
|
if (snapshotContents.snapshotTree.trees === undefined ||
|
|
157
202
|
snapshotContents.snapshotTree.blobs === undefined) {
|
|
158
203
|
throw new NonRetryableError("Returned odsp snapshot is malformed. No trees or blobs!", DriverErrorType.incorrectServerResponse, propsToLog);
|
|
159
204
|
}
|
|
160
|
-
|
|
205
|
+
const props = snapshotContents.telemetryProps;
|
|
206
|
+
const slowTreeParseCodePaths = props.slowTreeStructureCount ?? 0;
|
|
207
|
+
const slowBlobParseCodePaths = props.slowBlobStructureCount ?? 0;
|
|
208
|
+
if (slowTreeParseCodePaths > 10 || slowBlobParseCodePaths > 10) {
|
|
209
|
+
logger.sendErrorEvent({
|
|
210
|
+
eventName: "SlowSnapshotParseCodePaths",
|
|
211
|
+
slowTreeStructureCount: slowTreeParseCodePaths,
|
|
212
|
+
slowBlobStructureCount: slowBlobParseCodePaths,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
parsedSnapshotContents = { ...odspResponse, content: snapshotContents };
|
|
161
216
|
break;
|
|
162
217
|
}
|
|
163
218
|
default:
|
|
@@ -175,72 +230,29 @@ async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, sna
|
|
|
175
230
|
assert(parsedSnapshotContents !== undefined, 0x312 /* snapshot should be parsed */);
|
|
176
231
|
const snapshot = parsedSnapshotContents.content;
|
|
177
232
|
const { trees, numBlobs, encodedBlobsSize } = evalBlobsAndTrees(snapshot);
|
|
178
|
-
// From: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming
|
|
179
|
-
// fetchStart: immediately before the browser starts to fetch the resource.
|
|
180
|
-
// requestStart: immediately before the browser starts requesting the resource from the server
|
|
181
|
-
// responseStart: immediately after the browser receives the first byte of the response from the server.
|
|
182
|
-
// responseEnd: immediately after the browser receives the last byte of the resource
|
|
183
|
-
// or immediately before the transport connection is closed, whichever comes first.
|
|
184
|
-
// secureConnectionStart: immediately before the browser starts the handshake process to secure the
|
|
185
|
-
// current connection. If a secure connection is not used, this property returns zero.
|
|
186
|
-
// startTime: Time when the resource fetch started. This value is equivalent to fetchStart.
|
|
187
|
-
// domainLookupStart: immediately before the browser starts the domain name lookup for the resource.
|
|
188
|
-
// domainLookupEnd: immediately after the browser finishes the domain name lookup for the resource.
|
|
189
|
-
// redirectStart: start time of the fetch which that initiates the redirect.
|
|
190
|
-
// redirectEnd: immediately after receiving the last byte of the response of the last redirect.
|
|
191
|
-
let dnsLookupTime; // domainLookupEnd - domainLookupStart
|
|
192
|
-
let redirectTime; // redirectEnd - redirectStart
|
|
193
|
-
let tcpHandshakeTime; // connectEnd - connectStart
|
|
194
|
-
let secureConnectionTime; // connectEnd - secureConnectionStart
|
|
195
|
-
let responseNetworkTime; // responsEnd - responseStart
|
|
196
|
-
let fetchStartToResponseEndTime; // responseEnd - fetchStart
|
|
197
|
-
let reqStartToResponseEndTime; // responseEnd - requestStart
|
|
198
|
-
let networkTime; // responseEnd - startTime
|
|
199
|
-
const spReqDuration = odspResponse.headers.get("sprequestduration");
|
|
200
|
-
// getEntriesByType is only available in browser performance object
|
|
201
|
-
const resources1 = (_b = (_a = performance.getEntriesByType) === null || _a === void 0 ? void 0 : _a.call(performance, "resource")) !== null && _b !== void 0 ? _b : [];
|
|
202
|
-
// Usually the latest fetch call is to the end of resources, so we start from the end.
|
|
203
|
-
for (let i = resources1.length - 1; i > 0; i--) {
|
|
204
|
-
const indResTime = resources1[i];
|
|
205
|
-
const resource_name = indResTime.name;
|
|
206
|
-
const resource_initiatortype = indResTime.initiatorType;
|
|
207
|
-
if ((resource_initiatortype.localeCompare("fetch") === 0)
|
|
208
|
-
&& (resource_name.localeCompare(response.requestUrl) === 0)) {
|
|
209
|
-
redirectTime = indResTime.redirectEnd - indResTime.redirectStart;
|
|
210
|
-
dnsLookupTime = indResTime.domainLookupEnd - indResTime.domainLookupStart;
|
|
211
|
-
tcpHandshakeTime = indResTime.connectEnd - indResTime.connectStart;
|
|
212
|
-
secureConnectionTime = (indResTime.secureConnectionStart > 0) ?
|
|
213
|
-
(indResTime.connectEnd - indResTime.secureConnectionStart) : undefined;
|
|
214
|
-
responseNetworkTime = (indResTime.responseStart > 0) ?
|
|
215
|
-
(indResTime.responseEnd - indResTime.responseStart) : undefined;
|
|
216
|
-
fetchStartToResponseEndTime = (indResTime.fetchStart > 0) ?
|
|
217
|
-
(indResTime.responseEnd - indResTime.fetchStart) : undefined;
|
|
218
|
-
reqStartToResponseEndTime = (indResTime.requestStart > 0) ?
|
|
219
|
-
(indResTime.responseEnd - indResTime.requestStart) : undefined;
|
|
220
|
-
networkTime = (indResTime.startTime > 0) ?
|
|
221
|
-
(indResTime.responseEnd - indResTime.fetchStart) : undefined;
|
|
222
|
-
if (spReqDuration !== undefined && networkTime !== undefined) {
|
|
223
|
-
networkTime = networkTime - parseInt(spReqDuration, 10);
|
|
224
|
-
}
|
|
225
|
-
break;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
233
|
// There are some scenarios in ODSP where we cannot cache, trees/latest will explicitly tell us when we
|
|
229
234
|
// cannot cache using an HTTP response header.
|
|
230
235
|
const canCache = odspResponse.headers.get("disablebrowsercachingofusercontent") !== "true";
|
|
231
|
-
const sequenceNumber =
|
|
232
|
-
const seqNumberFromOps = snapshot.ops && snapshot.ops.length > 0
|
|
233
|
-
snapshot.ops[0].sequenceNumber - 1
|
|
234
|
-
undefined;
|
|
235
|
-
if (!Number.isInteger(sequenceNumber)
|
|
236
|
-
|
|
237
|
-
logger.sendErrorEvent({
|
|
236
|
+
const sequenceNumber = snapshot.sequenceNumber ?? 0;
|
|
237
|
+
const seqNumberFromOps = snapshot.ops && snapshot.ops.length > 0
|
|
238
|
+
? snapshot.ops[0].sequenceNumber - 1
|
|
239
|
+
: undefined;
|
|
240
|
+
if (!Number.isInteger(sequenceNumber) ||
|
|
241
|
+
(seqNumberFromOps !== undefined && seqNumberFromOps !== sequenceNumber)) {
|
|
242
|
+
logger.sendErrorEvent({
|
|
243
|
+
eventName: "fetchSnapshotError",
|
|
244
|
+
sequenceNumber,
|
|
245
|
+
seqNumberFromOps,
|
|
246
|
+
});
|
|
238
247
|
snapshot.sequenceNumber = undefined;
|
|
239
248
|
}
|
|
240
249
|
else if (canCache) {
|
|
241
250
|
const fluidEpoch = odspResponse.headers.get("x-fluid-epoch");
|
|
242
251
|
assert(fluidEpoch !== undefined, 0x1e6 /* "Epoch should be present in response" */);
|
|
243
|
-
const value =
|
|
252
|
+
const value = {
|
|
253
|
+
...snapshot,
|
|
254
|
+
cacheEntryTime: Date.now(),
|
|
255
|
+
};
|
|
244
256
|
const valueWithEpoch = {
|
|
245
257
|
value,
|
|
246
258
|
fluidEpoch,
|
|
@@ -249,57 +261,59 @@ async function fetchLatestSnapshotCore(odspResolvedUrl, storageTokenFetcher, sna
|
|
|
249
261
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
250
262
|
putInCache(valueWithEpoch);
|
|
251
263
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
//
|
|
262
|
-
|
|
263
|
-
//
|
|
264
|
-
|
|
265
|
-
//
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
//
|
|
270
|
-
//
|
|
271
|
-
|
|
264
|
+
event.end({
|
|
265
|
+
trees,
|
|
266
|
+
blobs: snapshot.blobs?.size ?? 0,
|
|
267
|
+
leafNodes: numBlobs,
|
|
268
|
+
encodedBlobsSize,
|
|
269
|
+
sequenceNumber,
|
|
270
|
+
ops: snapshot.ops?.length ?? 0,
|
|
271
|
+
userOps: snapshot.ops?.filter((op) => isRuntimeMessage(op)).length ?? 0,
|
|
272
|
+
headers: Object.keys(response.requestHeaders).length !== 0 ? true : undefined,
|
|
273
|
+
// Measures time to make fetch call. Should be similar to
|
|
274
|
+
// fetchStartToResponseEndTime - receiveContentTime, i.e. it looks like it's time till first byte /
|
|
275
|
+
// end of response headers
|
|
276
|
+
fetchTime,
|
|
277
|
+
// time it takes client to parse payload. Same payload as in "SnapshotParse" event, here for
|
|
278
|
+
// easier analyzes.
|
|
279
|
+
parseTime,
|
|
280
|
+
// Time it takes to receive content (text of buffer) from Response object.
|
|
281
|
+
// This time likely is very closely correlated with networkTime, i.e. time it takes to receive
|
|
282
|
+
// actual content (starting measuring from first bite / end of response header)
|
|
283
|
+
receiveContentTime,
|
|
284
|
+
...getW3CData(response.requestUrl, "fetch"),
|
|
272
285
|
// Sharing link telemetry regarding sharing link redeem status and performance. Ex: FRL; dur=100,
|
|
273
286
|
// Azure Fluid Relay service; desc=S, FRP; desc=False. Here, FRL is the duration taken for redeem,
|
|
274
287
|
// Azure Fluid Relay service is the redeem status (S means success), and FRP is a flag to indicate
|
|
275
288
|
// if the permission has changed.
|
|
276
|
-
sltelemetry: odspResponse.headers.get("x-fluid-sltelemetry")
|
|
289
|
+
sltelemetry: odspResponse.headers.get("x-fluid-sltelemetry"),
|
|
290
|
+
// All other props
|
|
291
|
+
...propsToLog,
|
|
292
|
+
// Various perf counters and measures collected by binary parsing code:
|
|
293
|
+
// slowTreeStructureCount, slowBlobStructureCount, durationStructure, durationStrings,
|
|
294
|
+
// durationSnapshotTree, durationBlobs, etc.
|
|
295
|
+
...parsedSnapshotContents.content.telemetryProps,
|
|
296
|
+
});
|
|
277
297
|
return snapshot;
|
|
278
298
|
}).catch((error) => {
|
|
279
299
|
// We hit these errors in stress tests, under load
|
|
280
300
|
// It's useful to try one more time in such case.
|
|
281
|
-
if (typeof error === "object" &&
|
|
282
|
-
error
|
|
301
|
+
if (typeof error === "object" &&
|
|
302
|
+
error !== null &&
|
|
303
|
+
(error.errorType === DriverErrorType.fetchFailure ||
|
|
304
|
+
error.errorType === OdspErrorType.fetchTimeout)) {
|
|
283
305
|
error[getWithRetryForTokenRefreshRepeat] = true;
|
|
284
306
|
}
|
|
285
307
|
throw error;
|
|
286
308
|
});
|
|
287
309
|
});
|
|
288
310
|
}
|
|
289
|
-
function getFormBodyAndHeaders(odspResolvedUrl, storageToken,
|
|
290
|
-
var _a, _b;
|
|
311
|
+
function getFormBodyAndHeaders(odspResolvedUrl, storageToken, headers) {
|
|
291
312
|
const formBoundary = uuid();
|
|
292
313
|
const formParams = [];
|
|
293
314
|
formParams.push(`--${formBoundary}`);
|
|
294
315
|
formParams.push(`Authorization: Bearer ${storageToken}`);
|
|
295
316
|
formParams.push(`X-HTTP-Method-Override: GET`);
|
|
296
|
-
if (snapshotOptions !== undefined) {
|
|
297
|
-
Object.entries(snapshotOptions).forEach(([key, value]) => {
|
|
298
|
-
if (value !== undefined) {
|
|
299
|
-
formParams.push(`${key}: ${value}`);
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
317
|
if (headers !== undefined) {
|
|
304
318
|
Object.entries(headers).forEach(([key, value]) => {
|
|
305
319
|
if (value !== undefined) {
|
|
@@ -307,8 +321,8 @@ function getFormBodyAndHeaders(odspResolvedUrl, storageToken, snapshotOptions, h
|
|
|
307
321
|
}
|
|
308
322
|
});
|
|
309
323
|
}
|
|
310
|
-
if (
|
|
311
|
-
formParams.push(`sl: ${
|
|
324
|
+
if (odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem) {
|
|
325
|
+
formParams.push(`sl: ${odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem}`);
|
|
312
326
|
}
|
|
313
327
|
formParams.push(`_post: 1`);
|
|
314
328
|
formParams.push(`\r\n--${formBoundary}--`);
|
|
@@ -318,7 +332,7 @@ function getFormBodyAndHeaders(odspResolvedUrl, storageToken, snapshotOptions, h
|
|
|
318
332
|
};
|
|
319
333
|
return { body: postBody, headers: header };
|
|
320
334
|
}
|
|
321
|
-
function evalBlobsAndTrees(snapshot) {
|
|
335
|
+
export function evalBlobsAndTrees(snapshot) {
|
|
322
336
|
const trees = countTreesInSnapshotTree(snapshot.snapshotTree);
|
|
323
337
|
const numBlobs = snapshot.blobs.size;
|
|
324
338
|
let encodedBlobsSize = 0;
|
|
@@ -351,38 +365,45 @@ function countTreesInSnapshotTree(snapshotTree) {
|
|
|
351
365
|
* @returns fetched snapshot.
|
|
352
366
|
*/
|
|
353
367
|
export async function downloadSnapshot(odspResolvedUrl, storageToken, logger, snapshotOptions, snapshotFormatFetchType, controller, epochTracker, scenarioName) {
|
|
354
|
-
var _a;
|
|
355
368
|
// back-compat: This block to be removed with #8784 when we only consume/consider odsp resolvers that are >= 0.51
|
|
356
369
|
const sharingLinkToRedeem = odspResolvedUrl.sharingLinkToRedeem;
|
|
357
370
|
if (sharingLinkToRedeem) {
|
|
358
|
-
odspResolvedUrl.shareLinkInfo =
|
|
371
|
+
odspResolvedUrl.shareLinkInfo = { ...odspResolvedUrl.shareLinkInfo, sharingLinkToRedeem };
|
|
359
372
|
}
|
|
360
373
|
const snapshotUrl = odspResolvedUrl.endpoints.snapshotStorageUrl;
|
|
361
|
-
const
|
|
374
|
+
const queryParams = { ump: 1 };
|
|
375
|
+
if (snapshotOptions !== undefined) {
|
|
376
|
+
Object.entries(snapshotOptions).forEach(([key, value]) => {
|
|
377
|
+
// Exclude "timeout" from query string
|
|
378
|
+
if (value !== undefined && key !== "timeout") {
|
|
379
|
+
queryParams[key] = value;
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
const queryString = getQueryString(queryParams);
|
|
384
|
+
const url = `${snapshotUrl}/trees/latest${queryString}`;
|
|
362
385
|
// The location of file can move on Spo in which case server returns 308(Permanent Redirect) error.
|
|
363
386
|
// Adding below header will make VROOM API return 404 instead of 308 and browser can intercept it.
|
|
364
387
|
// This error thrown by server will contain the new redirect location. Look at the 404 error parsing
|
|
365
388
|
// for futher reference here: \packages\utils\odsp-doclib-utils\src\odspErrorUtils.ts
|
|
366
389
|
const header = { prefer: "manualredirect" };
|
|
367
|
-
const { body, headers } = getFormBodyAndHeaders(odspResolvedUrl, storageToken,
|
|
390
|
+
const { body, headers } = getFormBodyAndHeaders(odspResolvedUrl, storageToken, header);
|
|
368
391
|
const fetchOptions = {
|
|
369
392
|
body,
|
|
370
393
|
headers,
|
|
371
|
-
signal: controller
|
|
394
|
+
signal: controller?.signal,
|
|
372
395
|
method: "POST",
|
|
373
396
|
};
|
|
374
397
|
// Decide what snapshot format to fetch as per the feature gate.
|
|
375
398
|
switch (snapshotFormatFetchType) {
|
|
376
|
-
case SnapshotFormatSupportType.JsonAndBinary:
|
|
377
|
-
headers.accept = `application/json, application/ms-fluid; v=${currentReadVersion}`;
|
|
378
|
-
break;
|
|
379
399
|
case SnapshotFormatSupportType.Binary:
|
|
380
400
|
headers.accept = `application/ms-fluid; v=${currentReadVersion}`;
|
|
381
401
|
break;
|
|
382
402
|
default:
|
|
383
|
-
|
|
403
|
+
// By default ask both versions and let the server decide the format.
|
|
404
|
+
headers.accept = `application/json, application/ms-fluid; v=${currentReadVersion}`;
|
|
384
405
|
}
|
|
385
|
-
const odspResponse = await (
|
|
406
|
+
const odspResponse = await (epochTracker?.fetch(url, fetchOptions, "treesLatest", true, scenarioName) ?? fetchHelper(url, fetchOptions));
|
|
386
407
|
return {
|
|
387
408
|
odspResponse,
|
|
388
409
|
requestHeaders: headers,
|
|
@@ -390,11 +411,11 @@ export async function downloadSnapshot(odspResolvedUrl, storageToken, logger, sn
|
|
|
390
411
|
};
|
|
391
412
|
}
|
|
392
413
|
function isRedeemSharingLinkError(odspResolvedUrl, error) {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
414
|
+
if (odspResolvedUrl.shareLinkInfo?.sharingLinkToRedeem !== undefined &&
|
|
415
|
+
typeof error === "object" &&
|
|
416
|
+
error !== null &&
|
|
417
|
+
(error.errorType === DriverErrorType.authorizationError ||
|
|
418
|
+
error.errorType === DriverErrorType.fileNotFoundOrAccessDeniedError)) {
|
|
398
419
|
return true;
|
|
399
420
|
}
|
|
400
421
|
return false;
|
|
@@ -405,11 +426,8 @@ function getEncodedShareUrl(url) {
|
|
|
405
426
|
* https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/shares_get
|
|
406
427
|
*/
|
|
407
428
|
let encodedUrl = fromUtf8ToBase64(encodeURI(url));
|
|
408
|
-
encodedUrl = encodedUrl
|
|
409
|
-
.replace(/=+$/g, "")
|
|
410
|
-
.replace(/\//g, "_")
|
|
411
|
-
.replace(/\+/g, "-");
|
|
429
|
+
encodedUrl = encodedUrl.replace(/=+$/g, "").replace(/\//g, "_").replace(/\+/g, "-");
|
|
412
430
|
encodedUrl = "u!".concat(encodedUrl);
|
|
413
431
|
return encodedUrl;
|
|
414
432
|
}
|
|
415
|
-
//# sourceMappingURL=fetchSnapshot.
|
|
433
|
+
//# sourceMappingURL=fetchSnapshot.mjs.map
|