@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
|
@@ -6,150 +6,146 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Data representation which is followed(zipIt Protocol) here is described in this document:
|
|
8
8
|
* https://microsoft.sharepoint-df.com/:w:/t/ODSPFileStore/ER06b64K_XdDjEyAKl-UT60BJiId39SCVkYSyo_2pvH9gQ?e=KYQ0c5
|
|
9
|
-
*/
|
|
9
|
+
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { Uint8ArrayToArrayBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
|
|
12
|
+
import { assert } from "@fluidframework/core-utils";
|
|
13
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
12
14
|
import { NonRetryableError } from "@fluidframework/driver-utils";
|
|
13
15
|
import { DriverErrorType } from "@fluidframework/driver-definitions";
|
|
14
16
|
import { ReadBuffer } from "./ReadBufferUtils";
|
|
15
17
|
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
18
|
+
import { measure } from "./odspUtils";
|
|
16
19
|
|
|
17
|
-
// eslint-disable-next-line max-len
|
|
18
20
|
// https://onedrive.visualstudio.com/SharePoint%20Online/_git/SPO?path=/cobalt/Base/Property/BinaryEncodedPropertyReader.cs&version=GBmaster&_a=contents
|
|
19
21
|
/**
|
|
20
22
|
* Control codes used by tree serialization / decentralization code. Same as on server. These can be found on
|
|
21
23
|
* filestore code on server too at above link.
|
|
22
24
|
*/
|
|
23
25
|
export enum MarkerCodes {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
26
|
+
BoolTrue = 11, // value = true
|
|
27
|
+
BoolFalse = 12, // value = false
|
|
28
|
+
|
|
29
|
+
StringEmpty = 13, // value = ""
|
|
30
|
+
String8Length = 14, // unsigned-8-bit little-endian length, follows by UTF-8 bytes of length
|
|
31
|
+
String16Length = 15, // unsigned-16-bit little-endian length, follows by UTF-8 bytes of length
|
|
32
|
+
String32Length = 16, // unsigned-32-bit little-endian length, follows by UTF-8 bytes of length
|
|
33
|
+
|
|
34
|
+
ConstString8Id = 17, // unsigned-8-bit little-endian const string id follows
|
|
35
|
+
ConstString16Id = 18, // unsigned-16-bit little-endian const string id follows
|
|
36
|
+
ConstString32Id = 19, // unsigned-32-bit little-endian const string id follows
|
|
37
|
+
ConstStringDeclare = 20, // Code for declaring a const string with size <= 1 byte
|
|
38
|
+
ConstStringDeclareBig = 21, // Code for declaring a const string with size > 1 byte. It is represented in 4 bytes.
|
|
39
|
+
|
|
40
|
+
Int0 = 1, // value = 0
|
|
41
|
+
UInt8 = 3, // unsigned-8-bit little-endian follows
|
|
42
|
+
UInt16 = 5, // unsigned-16-bit little-endian follows
|
|
43
|
+
UInt32 = 7, // unsigned-32-bit little-endian follows
|
|
44
|
+
UInt64 = 9, // unsigned-64-bit little-endian follows
|
|
45
|
+
Int8 = 2, // signed-8-bit little-endian follows
|
|
46
|
+
Int16 = 4, // signed-16-bit little-endian follows
|
|
47
|
+
Int32 = 6, // signed-32-bit little-endian follows
|
|
48
|
+
Int64 = 8, // signed-64-bit little-endian follows
|
|
49
|
+
|
|
50
|
+
BinaryEmpty = 32, // value = byte[]
|
|
51
|
+
BinarySingle8 = 33, // unsigned-8-bit little-endian length, follows by bytes of length
|
|
52
|
+
BinarySingle16 = 34, // unsigned-16-bit little-endian length, follows by bytes of length
|
|
53
|
+
BinarySingle32 = 35, // unsigned-32-bit little-endian length, follows by bytes of length
|
|
54
|
+
BinarySingle64 = 36, // unsigned-64-bit little-endian length, follows by bytes of length
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
/**
|
|
56
58
|
* Control codes used by tree serialization / decentralization code. They mark the start of sections.
|
|
57
59
|
*/
|
|
58
60
|
export enum MarkerCodesStart {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
"list" = 49,
|
|
62
|
+
"set" = 51,
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
/**
|
|
64
66
|
* Control codes used by tree serialization / decentralization code. They mark the end of sections.
|
|
65
67
|
*/
|
|
66
68
|
export enum MarkerCodesEnd {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
"list" = 50,
|
|
70
|
+
"set" = 52,
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
/**
|
|
72
74
|
* This contains mapping of Marker Codes to number of bytes in which the corresponding data
|
|
73
75
|
* will be stored.
|
|
74
|
-
*/
|
|
76
|
+
*/
|
|
75
77
|
export const codeToBytesMap = {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
78
|
+
// Integer code to bytes
|
|
79
|
+
1: 0,
|
|
80
|
+
2: 1,
|
|
81
|
+
3: 1,
|
|
82
|
+
4: 2,
|
|
83
|
+
5: 2,
|
|
84
|
+
6: 4,
|
|
85
|
+
7: 4,
|
|
86
|
+
8: 8,
|
|
87
|
+
9: 8,
|
|
88
|
+
|
|
89
|
+
// String code to Bytes
|
|
90
|
+
13: 0,
|
|
91
|
+
14: 1,
|
|
92
|
+
15: 2,
|
|
93
|
+
16: 4,
|
|
94
|
+
|
|
95
|
+
17: 1,
|
|
96
|
+
18: 2,
|
|
97
|
+
19: 4,
|
|
98
|
+
|
|
99
|
+
20: 1,
|
|
100
|
+
21: 4,
|
|
101
|
+
|
|
102
|
+
// Binary code to bytes
|
|
103
|
+
32: 0,
|
|
104
|
+
33: 1,
|
|
105
|
+
34: 2,
|
|
106
|
+
35: 4,
|
|
107
|
+
36: 8,
|
|
106
108
|
};
|
|
107
109
|
|
|
108
|
-
export function getValueSafely(map: { [index: number]: number
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
export function getValueSafely(map: { [index: number]: number }, key: number) {
|
|
111
|
+
const val = map[key];
|
|
112
|
+
assert(val !== undefined, 0x287 /* key must exist in the map */);
|
|
113
|
+
return val;
|
|
112
114
|
}
|
|
113
115
|
|
|
114
|
-
export function
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
propSet.delete(keyStr);
|
|
122
|
-
res[keyStr] = valueNode;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (enforceAllProps) {
|
|
126
|
-
assert(propSet.size === 0, 0x288 /* All properties should exist */);
|
|
127
|
-
}
|
|
128
|
-
return res;
|
|
116
|
+
export function getNodeProps(node: NodeCore) {
|
|
117
|
+
const res: Record<string, NodeTypes> = {};
|
|
118
|
+
for (const [keyNode, valueNode] of node.iteratePairs()) {
|
|
119
|
+
const id = getStringInstance(keyNode, "keynode should be a string");
|
|
120
|
+
res[id] = valueNode;
|
|
121
|
+
}
|
|
122
|
+
return res;
|
|
129
123
|
}
|
|
130
124
|
|
|
131
125
|
export function iteratePairs<T>(it: IterableIterator<T>) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
126
|
+
const res: IterableIterator<[T, T]> = {
|
|
127
|
+
next: () => {
|
|
128
|
+
const a = it.next();
|
|
129
|
+
if (a.done) {
|
|
130
|
+
return { value: undefined, done: true };
|
|
131
|
+
}
|
|
132
|
+
const b = it.next();
|
|
133
|
+
assert(b.done !== true, 0x22b /* "Should be a pair" */);
|
|
134
|
+
return { value: [a.value, b.value], done: b.done };
|
|
135
|
+
},
|
|
136
|
+
[Symbol.iterator]: () => {
|
|
137
|
+
return res;
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
return res;
|
|
145
141
|
}
|
|
146
142
|
|
|
147
143
|
/**
|
|
148
144
|
* Helper function that returns iterator from an object
|
|
149
145
|
* @param obj - object that supports iteration
|
|
150
146
|
*/
|
|
151
|
-
export function iterate<T>(obj: { [Symbol.iterator]: () => IterableIterator<T
|
|
152
|
-
|
|
147
|
+
export function iterate<T>(obj: { [Symbol.iterator]: () => IterableIterator<T> }) {
|
|
148
|
+
return obj[Symbol.iterator]();
|
|
153
149
|
}
|
|
154
150
|
|
|
155
151
|
/**
|
|
@@ -158,97 +154,113 @@ export function iterate<T>(obj: { [Symbol.iterator]: () => IterableIterator<T>;
|
|
|
158
154
|
* Note: concrete implementations (derived classes) are not exposed from this module
|
|
159
155
|
*/
|
|
160
156
|
export abstract class BlobCore {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
* @param constString - Whether it contains const string declaration.
|
|
169
|
-
* @param useUtf8Code - Represents if the utf8 string marker code should be used when representing.
|
|
170
|
-
*/
|
|
171
|
-
constructor(public readonly constString: boolean, public readonly useUtf8Code: boolean = false) {}
|
|
172
|
-
|
|
173
|
-
public toString() {
|
|
174
|
-
return Uint8ArrayToString(this.buffer, "utf-8");
|
|
175
|
-
}
|
|
157
|
+
public abstract get buffer(): Uint8Array;
|
|
158
|
+
public abstract get arrayBuffer(): ArrayBufferLike;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Represents a blob.
|
|
162
|
+
*/
|
|
163
|
+
constructor() {}
|
|
176
164
|
}
|
|
177
165
|
|
|
178
166
|
/**
|
|
179
167
|
* "deep copy" blob, holds to binary data passed in
|
|
180
168
|
* It is called deep copy as a counter-part to BlobShallowCopy, which
|
|
181
169
|
* is a reference to underlying binary stream (ReadBuffer).
|
|
182
|
-
*/
|
|
170
|
+
*/
|
|
183
171
|
class BlobDeepCopy extends BlobCore {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
172
|
+
/**
|
|
173
|
+
* Represents a deep copy of the blob.
|
|
174
|
+
* @param data - Data array of the blob
|
|
175
|
+
*/
|
|
176
|
+
constructor(protected readonly data: Uint8Array) {
|
|
177
|
+
super();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
public get buffer() {
|
|
181
|
+
return this.data;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
public get arrayBuffer(): ArrayBufferLike {
|
|
185
|
+
return Uint8ArrayToArrayBuffer(this.buffer);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
public static read(buffer: ReadBuffer, lengthLen: number): BlobCore {
|
|
189
|
+
const length = buffer.read(lengthLen);
|
|
190
|
+
const data = new Uint8Array(length);
|
|
191
|
+
for (let counter = 0; counter < length; counter++) {
|
|
192
|
+
data[counter] = buffer.read();
|
|
193
|
+
}
|
|
194
|
+
return new BlobDeepCopy(data);
|
|
195
|
+
}
|
|
206
196
|
}
|
|
207
197
|
|
|
208
198
|
/**
|
|
209
199
|
* Shallow copy blob, keeps a reference to portion of ReadBuffer
|
|
210
200
|
* it was constructed from. It takes much less memory compared to BlobDeepCopy
|
|
211
201
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
202
|
+
export class BlobShallowCopy extends BlobCore {
|
|
203
|
+
/**
|
|
204
|
+
* Represents a shallow copy of the blob. It is not a separate blob, just reference to original blobs.
|
|
205
|
+
* @param data - Data array of the blob
|
|
206
|
+
* @param start - Start point of the blob in the buffer.
|
|
207
|
+
* @param end - End point of the blob in the buffer.
|
|
208
|
+
*/
|
|
209
|
+
constructor(
|
|
210
|
+
protected data: Uint8Array,
|
|
211
|
+
protected start: number,
|
|
212
|
+
protected end: number,
|
|
213
|
+
) {
|
|
214
|
+
super();
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
public get buffer() {
|
|
218
|
+
return this.data.subarray(this.start, this.end);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Equivalent to Uint8ArrayToArrayBuffer(this.buffer)
|
|
222
|
+
public get arrayBuffer(): ArrayBufferLike {
|
|
223
|
+
const offset = this.data.byteOffset;
|
|
224
|
+
return this.data.buffer.slice(this.start + offset, this.end + offset);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
public static read(buffer: ReadBuffer, lengthLen: number): BlobCore {
|
|
228
|
+
const length = buffer.read(lengthLen);
|
|
229
|
+
const pos = buffer.pos;
|
|
230
|
+
buffer.skip(length);
|
|
231
|
+
return new BlobShallowCopy(buffer.buffer, pos, pos + length);
|
|
232
|
+
}
|
|
239
233
|
}
|
|
240
234
|
|
|
241
|
-
export const addStringProperty =
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
235
|
+
export const addStringProperty = (node: NodeCore, a: string, b: string) => {
|
|
236
|
+
node.addDictionaryString(a);
|
|
237
|
+
node.addString(b);
|
|
238
|
+
};
|
|
239
|
+
export const addDictionaryStringProperty = (node: NodeCore, a: string, b: string) => {
|
|
240
|
+
node.addDictionaryString(a);
|
|
241
|
+
node.addString(b);
|
|
242
|
+
};
|
|
245
243
|
export const addNumberProperty = (node: NodeCore, a: string, b: number) => {
|
|
246
|
-
|
|
244
|
+
node.addDictionaryString(a);
|
|
245
|
+
node.addNumber(b);
|
|
247
246
|
};
|
|
248
247
|
export const addBoolProperty = (node: NodeCore, a: string, b: boolean) => {
|
|
249
|
-
|
|
248
|
+
node.addDictionaryString(a);
|
|
249
|
+
node.addBool(b);
|
|
250
250
|
};
|
|
251
251
|
|
|
252
|
+
export interface IStringElement {
|
|
253
|
+
content: string;
|
|
254
|
+
dictionary: boolean;
|
|
255
|
+
_stringElement: true;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export interface IStringElementInternal extends Omit<IStringElement, "content"> {
|
|
259
|
+
content?: string;
|
|
260
|
+
startPos: number;
|
|
261
|
+
endPos: number;
|
|
262
|
+
}
|
|
263
|
+
|
|
252
264
|
/**
|
|
253
265
|
* Three leaf types supported by tree:
|
|
254
266
|
* 1. Node (sub-tree)
|
|
@@ -256,7 +268,7 @@ export const addBoolProperty = (node: NodeCore, a: string, b: boolean) => {
|
|
|
256
268
|
* 3. integer
|
|
257
269
|
* 4. boolean
|
|
258
270
|
*/
|
|
259
|
-
export type NodeTypes = NodeCore | BlobCore | number | boolean;
|
|
271
|
+
export type NodeTypes = NodeCore | BlobCore | number | boolean | IStringElement;
|
|
260
272
|
|
|
261
273
|
export type NodeCoreTypes = "list" | "set";
|
|
262
274
|
|
|
@@ -264,244 +276,372 @@ export type NodeCoreTypes = "list" | "set";
|
|
|
264
276
|
* Node - node in the tree (non-leaf element of the tree)
|
|
265
277
|
*/
|
|
266
278
|
export class NodeCore {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
279
|
+
// It is an array of nodes.
|
|
280
|
+
private readonly children: NodeTypes[] = [];
|
|
281
|
+
public get nodes() {
|
|
282
|
+
return this.children;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
constructor(public type: NodeCoreTypes = "set") {}
|
|
286
|
+
|
|
287
|
+
public [Symbol.iterator]() {
|
|
288
|
+
return this.children[Symbol.iterator]();
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
public iteratePairs() {
|
|
292
|
+
assert(this.length % 2 === 0, 0x22c /* "reading pairs" */);
|
|
293
|
+
return iteratePairs(iterate(this));
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
public get length() {
|
|
297
|
+
return this.children.length;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
public get(index: number) {
|
|
301
|
+
return this.children[index];
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
public getString(index: number): string {
|
|
305
|
+
const node = this.children[index];
|
|
306
|
+
return getStringInstance(node, "getString should return string");
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
public getMaybeString(index: number) {
|
|
310
|
+
const node = this.children[index];
|
|
311
|
+
return getMaybeStringInstance(node);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
public getBlob(index: number): BlobCore {
|
|
315
|
+
const node = this.children[index];
|
|
316
|
+
assertBlobCoreInstance(node, "getBlob should return a blob");
|
|
317
|
+
return node;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
public getNode(index: number): NodeCore {
|
|
321
|
+
const node = this.children[index];
|
|
322
|
+
assertNodeCoreInstance(node, "getNode should return a node");
|
|
323
|
+
return node;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
public getNumber(index: number): number {
|
|
327
|
+
const node = this.children[index];
|
|
328
|
+
assertNumberInstance(node, "getNumber should return a number");
|
|
329
|
+
return node;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
public getBool(index: number): boolean {
|
|
333
|
+
const node = this.children[index];
|
|
334
|
+
assertBoolInstance(node, "getBool should return a boolean");
|
|
335
|
+
return node;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
public addNode(type?: NodeCoreTypes): NodeCore {
|
|
339
|
+
const node = new NodeCore(type);
|
|
340
|
+
this.children.push(node);
|
|
341
|
+
return node;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
public addBlob(blob: Uint8Array) {
|
|
345
|
+
this.children.push(new BlobDeepCopy(blob));
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
public addDictionaryString(payload: string) {
|
|
349
|
+
this.children.push({
|
|
350
|
+
content: payload,
|
|
351
|
+
dictionary: true,
|
|
352
|
+
_stringElement: true,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
public addString(payload: string) {
|
|
357
|
+
this.children.push({
|
|
358
|
+
content: payload,
|
|
359
|
+
dictionary: false,
|
|
360
|
+
_stringElement: true,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
public addNumber(payload: number | undefined) {
|
|
365
|
+
assert(Number.isInteger(payload), 0x231 /* "Number should be an integer" */);
|
|
366
|
+
assert(payload !== undefined && payload >= 0, 0x232 /* "Payload should not be negative" */);
|
|
367
|
+
this.children.push(payload);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
public addBool(payload: boolean) {
|
|
371
|
+
this.children.push(payload);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Can we do more efficiently here, without extra objects somehow??
|
|
375
|
+
private static readString(buffer: ReadBuffer, code: number, dictionary: boolean) {
|
|
376
|
+
const lengthLen = getValueSafely(codeToBytesMap, code);
|
|
377
|
+
const length = buffer.read(lengthLen);
|
|
378
|
+
const startPos = buffer.pos;
|
|
379
|
+
buffer.skip(length);
|
|
380
|
+
const result: IStringElementInternal = {
|
|
381
|
+
// Note: Setting here property 'content: undefined' makes code substantially slower!
|
|
382
|
+
dictionary,
|
|
383
|
+
_stringElement: true,
|
|
384
|
+
startPos,
|
|
385
|
+
endPos: buffer.pos,
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
// We are lying here in terms of presence of `content` property.
|
|
389
|
+
// This will be addressed at the bottom of NodeCore.load() by resolving all strings at once!
|
|
390
|
+
// It's equivalent (but much slower!) to do it here via
|
|
391
|
+
// result.content = Uint8ArrayToString(buffer.buffer.subarray(startPos, buffer.pos), "utf-8");
|
|
392
|
+
return result as IStringElementInternal & IStringElement;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Load and parse the buffer into a tree.
|
|
397
|
+
* @param buffer - buffer to read from.
|
|
398
|
+
*/
|
|
399
|
+
protected load(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {
|
|
400
|
+
const [stringsToResolve, durationStructure] = measure(() =>
|
|
401
|
+
this.loadStructure(buffer, logger),
|
|
402
|
+
);
|
|
403
|
+
const [, durationStrings] = measure(() =>
|
|
404
|
+
this.loadStrings(buffer, stringsToResolve, logger),
|
|
405
|
+
);
|
|
406
|
+
return { durationStructure, durationStrings };
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Load and parse the buffer into a tree.
|
|
411
|
+
* @param buffer - buffer to read from.
|
|
412
|
+
*/
|
|
413
|
+
protected loadStructure(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {
|
|
414
|
+
const stack: NodeTypes[][] = [];
|
|
415
|
+
const stringsToResolve: IStringElementInternal[] = [];
|
|
416
|
+
const dictionary: IStringElement[] = [];
|
|
417
|
+
|
|
418
|
+
let children = this.children;
|
|
419
|
+
for (; !buffer.eof; ) {
|
|
420
|
+
const code = buffer.read();
|
|
421
|
+
switch (code) {
|
|
422
|
+
case MarkerCodesStart.list:
|
|
423
|
+
case MarkerCodesStart.set: {
|
|
424
|
+
const childValue = new NodeCore(code === MarkerCodesStart.set ? "set" : "list");
|
|
425
|
+
children.push(childValue);
|
|
426
|
+
stack.push(children);
|
|
427
|
+
children = childValue.children;
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
case MarkerCodes.ConstStringDeclare:
|
|
431
|
+
case MarkerCodes.ConstStringDeclareBig: {
|
|
432
|
+
const stringId = buffer.read(getValueSafely(codeToBytesMap, code));
|
|
433
|
+
const constString = NodeCore.readString(buffer, code, true /* dictionary */);
|
|
434
|
+
stringsToResolve.push(constString);
|
|
435
|
+
dictionary[stringId] = constString;
|
|
436
|
+
continue;
|
|
437
|
+
}
|
|
438
|
+
case MarkerCodes.ConstString8Id:
|
|
439
|
+
case MarkerCodes.ConstString16Id:
|
|
440
|
+
case MarkerCodes.ConstString32Id: {
|
|
441
|
+
const stringId = buffer.read(getValueSafely(codeToBytesMap, code));
|
|
442
|
+
const content = dictionary[stringId];
|
|
443
|
+
assert(content !== undefined, 0x3de /* const string not found */);
|
|
444
|
+
children.push(content);
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
case MarkerCodes.StringEmpty:
|
|
448
|
+
case MarkerCodes.String8Length:
|
|
449
|
+
case MarkerCodes.String16Length:
|
|
450
|
+
case MarkerCodes.String32Length: {
|
|
451
|
+
const str = NodeCore.readString(buffer, code, false /* dictionary */);
|
|
452
|
+
stringsToResolve.push(str);
|
|
453
|
+
children.push(str);
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
case MarkerCodes.BinaryEmpty:
|
|
457
|
+
case MarkerCodes.BinarySingle8:
|
|
458
|
+
case MarkerCodes.BinarySingle16:
|
|
459
|
+
case MarkerCodes.BinarySingle32:
|
|
460
|
+
case MarkerCodes.BinarySingle64: {
|
|
461
|
+
children.push(
|
|
462
|
+
BlobShallowCopy.read(buffer, getValueSafely(codeToBytesMap, code)),
|
|
463
|
+
);
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
// If integer is 0.
|
|
467
|
+
case MarkerCodes.Int0: {
|
|
468
|
+
children.push(0);
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
case MarkerCodes.UInt8:
|
|
472
|
+
case MarkerCodes.UInt16:
|
|
473
|
+
case MarkerCodes.UInt32:
|
|
474
|
+
case MarkerCodes.UInt64:
|
|
475
|
+
case MarkerCodes.Int8:
|
|
476
|
+
case MarkerCodes.Int16:
|
|
477
|
+
case MarkerCodes.Int32:
|
|
478
|
+
case MarkerCodes.Int64: {
|
|
479
|
+
children.push(buffer.read(getValueSafely(codeToBytesMap, code)));
|
|
480
|
+
continue;
|
|
481
|
+
}
|
|
482
|
+
case MarkerCodes.BoolTrue:
|
|
483
|
+
children.push(true);
|
|
484
|
+
continue;
|
|
485
|
+
case MarkerCodes.BoolFalse:
|
|
486
|
+
children.push(false);
|
|
487
|
+
continue;
|
|
488
|
+
case MarkerCodesEnd.list:
|
|
489
|
+
case MarkerCodesEnd.set:
|
|
490
|
+
// Note: We are not checking that end marker matches start marker.
|
|
491
|
+
// I.e. that we do not have a case where we start a 'list' but end with a 'set'
|
|
492
|
+
// Checking it would require more state tracking that seems not very useful, given
|
|
493
|
+
// our code does not care.
|
|
494
|
+
children = stack.pop()!;
|
|
495
|
+
|
|
496
|
+
// To my surprise, checking children !== undefined adds measurable cost!
|
|
497
|
+
// We will rely on children.push() crashing in case of mismatch, and check below
|
|
498
|
+
// (outside of the loop)
|
|
499
|
+
continue;
|
|
500
|
+
default:
|
|
501
|
+
throw new Error(`Invalid code: ${code}`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// This also ensures that stack.length === 0.
|
|
506
|
+
assert(children === this.children, 0x3e7 /* Unpaired start/end list/set markers! */);
|
|
507
|
+
|
|
508
|
+
return stringsToResolve;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
private loadStrings(
|
|
512
|
+
buffer: ReadBuffer,
|
|
513
|
+
stringsToResolve: IStringElementInternal[],
|
|
514
|
+
logger: ITelemetryLoggerExt,
|
|
515
|
+
) {
|
|
516
|
+
/**
|
|
517
|
+
* Process all the strings at once!
|
|
518
|
+
*/
|
|
519
|
+
let length = 0;
|
|
520
|
+
for (const el of stringsToResolve) {
|
|
521
|
+
length += el.endPos - el.startPos + 1;
|
|
522
|
+
}
|
|
523
|
+
const stringBuffer = new Uint8Array(length);
|
|
524
|
+
|
|
525
|
+
length = 0;
|
|
526
|
+
const input = buffer.buffer;
|
|
527
|
+
assert(input.byteOffset === 0, 0x3e8 /* code below assumes no offset */);
|
|
528
|
+
|
|
529
|
+
for (const el of stringsToResolve) {
|
|
530
|
+
for (let it = el.startPos; it < el.endPos; it++) {
|
|
531
|
+
stringBuffer[length] = input[it];
|
|
532
|
+
length++;
|
|
533
|
+
}
|
|
534
|
+
stringBuffer[length] = 0;
|
|
535
|
+
length++;
|
|
536
|
+
}
|
|
537
|
+
assert(length === stringBuffer.length, 0x418 /* properly encoded */);
|
|
538
|
+
|
|
539
|
+
const result = Uint8ArrayToString(stringBuffer, "utf-8").split(String.fromCharCode(0));
|
|
540
|
+
if (result.length === stringsToResolve.length + 1) {
|
|
541
|
+
// All is good, we expect all the cases to get here
|
|
542
|
+
for (let i = 0; i < stringsToResolve.length; i++) {
|
|
543
|
+
stringsToResolve[i].content = result[i];
|
|
544
|
+
}
|
|
545
|
+
} else {
|
|
546
|
+
// String content has \0 chars!
|
|
547
|
+
// Recovery code
|
|
548
|
+
logger.sendErrorEvent({ eventName: "StringParsingError" });
|
|
549
|
+
for (const el of stringsToResolve) {
|
|
550
|
+
assert(
|
|
551
|
+
el.content ===
|
|
552
|
+
Uint8ArrayToString(input.subarray(el.startPos, el.endPos), "utf-8"),
|
|
553
|
+
0x3ea /* test */,
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
423
558
|
}
|
|
424
559
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
560
|
+
/**
|
|
561
|
+
* TreeBuilder - Root of the tree.
|
|
562
|
+
* Provides loading and serialization capabilities.
|
|
563
|
+
*/
|
|
429
564
|
export class TreeBuilder extends NodeCore {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
565
|
+
static load(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {
|
|
566
|
+
const builder = new TreeBuilder();
|
|
567
|
+
const telemetryProps = builder.load(buffer, logger);
|
|
568
|
+
assert(buffer.eof, 0x233 /* "Unexpected data at the end of buffer" */);
|
|
569
|
+
return { builder, telemetryProps };
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
export function getMaybeStringInstance(node: NodeTypes): string | undefined {
|
|
574
|
+
const maybeString = node as IStringElement;
|
|
575
|
+
if (maybeString._stringElement) {
|
|
576
|
+
return maybeString.content;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
export function getStringInstance(node: NodeTypes, message: string): string {
|
|
581
|
+
const maybeString = node as IStringElement;
|
|
582
|
+
if (maybeString._stringElement) {
|
|
583
|
+
return maybeString.content;
|
|
584
|
+
}
|
|
585
|
+
throwBufferParseException(node, "BlobCore", message);
|
|
437
586
|
}
|
|
438
587
|
|
|
439
|
-
export function assertBlobCoreInstance(
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
return;
|
|
445
|
-
}
|
|
446
|
-
throwBufferParseException(node, "BlobCore", message);
|
|
588
|
+
export function assertBlobCoreInstance(node: NodeTypes, message: string): asserts node is BlobCore {
|
|
589
|
+
if (node instanceof BlobCore) {
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
throwBufferParseException(node, "BlobCore", message);
|
|
447
593
|
}
|
|
448
594
|
|
|
449
|
-
export function assertNodeCoreInstance(
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
return;
|
|
455
|
-
}
|
|
456
|
-
throwBufferParseException(node, "NodeCore", message);
|
|
595
|
+
export function assertNodeCoreInstance(node: NodeTypes, message: string): asserts node is NodeCore {
|
|
596
|
+
if (node instanceof NodeCore) {
|
|
597
|
+
return;
|
|
598
|
+
}
|
|
599
|
+
throwBufferParseException(node, "NodeCore", message);
|
|
457
600
|
}
|
|
458
601
|
|
|
459
|
-
export function assertNumberInstance(
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
return;
|
|
465
|
-
}
|
|
466
|
-
throwBufferParseException(node, "Number", message);
|
|
602
|
+
export function assertNumberInstance(node: NodeTypes, message: string): asserts node is number {
|
|
603
|
+
if (typeof node === "number") {
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
throwBufferParseException(node, "Number", message);
|
|
467
607
|
}
|
|
468
608
|
|
|
469
|
-
export function assertBoolInstance(
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
return;
|
|
475
|
-
}
|
|
476
|
-
throwBufferParseException(node, "Boolean", message);
|
|
609
|
+
export function assertBoolInstance(node: NodeTypes, message: string): asserts node is boolean {
|
|
610
|
+
if (typeof node === "boolean") {
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
throwBufferParseException(node, "Boolean", message);
|
|
477
614
|
}
|
|
478
615
|
|
|
479
616
|
function throwBufferParseException(
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
617
|
+
node: NodeTypes,
|
|
618
|
+
expectedNodeType: NodeType,
|
|
619
|
+
message: string,
|
|
483
620
|
): never {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
621
|
+
throw new NonRetryableError(
|
|
622
|
+
`Buffer parsing exception: ${message}`,
|
|
623
|
+
DriverErrorType.incorrectServerResponse,
|
|
624
|
+
{
|
|
625
|
+
nodeType: getNodeType(node),
|
|
626
|
+
expectedNodeType,
|
|
627
|
+
driverVersion,
|
|
628
|
+
},
|
|
629
|
+
);
|
|
492
630
|
}
|
|
493
631
|
|
|
494
632
|
function getNodeType(value: NodeTypes): NodeType {
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
633
|
+
if (typeof value === "number") {
|
|
634
|
+
return "Number";
|
|
635
|
+
} else if (value instanceof BlobCore) {
|
|
636
|
+
return "BlobCore";
|
|
637
|
+
} else if (value instanceof NodeCore) {
|
|
638
|
+
return "NodeCore";
|
|
639
|
+
} else if (typeof value === "boolean") {
|
|
640
|
+
return "Boolean";
|
|
641
|
+
} else if (value._stringElement) {
|
|
642
|
+
return "String";
|
|
643
|
+
}
|
|
644
|
+
return "UnknownType";
|
|
505
645
|
}
|
|
506
646
|
|
|
507
|
-
type NodeType = "Number" | "BlobCore" | "NodeCore" | "Boolean" | "UnknownType";
|
|
647
|
+
type NodeType = "Number" | "BlobCore" | "NodeCore" | "Boolean" | "UnknownType" | "String";
|