@protontech/drive-sdk 0.0.13 → 0.1.1
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/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.js +3 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/memoryCache.d.ts +1 -1
- package/dist/cache/memoryCache.js +0 -1
- package/dist/cache/memoryCache.js.map +1 -1
- package/dist/cache/memoryCache.test.js +2 -4
- package/dist/cache/memoryCache.test.js.map +1 -1
- package/dist/cache/nullCache.d.ts +14 -0
- package/dist/cache/nullCache.js +36 -0
- package/dist/cache/nullCache.js.map +1 -0
- package/dist/config.d.ts +16 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/crypto/driveCrypto.d.ts +2 -5
- package/dist/crypto/driveCrypto.js +7 -12
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/driveCrypto.test.js +14 -14
- package/dist/crypto/openPGPCrypto.js +5 -3
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/diagnostic/eventsGenerator.d.ts +14 -0
- package/dist/diagnostic/eventsGenerator.js +49 -0
- package/dist/diagnostic/eventsGenerator.js.map +1 -0
- package/dist/diagnostic/httpClient.d.ts +16 -0
- package/dist/diagnostic/httpClient.js +81 -0
- package/dist/diagnostic/httpClient.js.map +1 -0
- package/dist/diagnostic/index.d.ts +10 -0
- package/dist/diagnostic/index.js +35 -0
- package/dist/diagnostic/index.js.map +1 -0
- package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
- package/dist/diagnostic/integrityVerificationStream.js +56 -0
- package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
- package/dist/diagnostic/interface.d.ts +102 -0
- package/dist/diagnostic/interface.js +3 -0
- package/dist/diagnostic/interface.js.map +1 -0
- package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
- package/dist/diagnostic/sdkDiagnostic.js +222 -0
- package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
- package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
- package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
- package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
- package/dist/diagnostic/telemetry.d.ts +25 -0
- package/dist/diagnostic/telemetry.js +70 -0
- package/dist/diagnostic/telemetry.js.map +1 -0
- package/dist/diagnostic/zipGenerators.d.ts +9 -0
- package/dist/diagnostic/zipGenerators.js +64 -0
- package/dist/diagnostic/zipGenerators.js.map +1 -0
- package/dist/diagnostic/zipGenerators.test.js +144 -0
- package/dist/diagnostic/zipGenerators.test.js.map +1 -0
- package/dist/errors.d.ts +2 -1
- package/dist/errors.js +3 -1
- package/dist/errors.js.map +1 -1
- package/dist/interface/config.d.ts +26 -0
- package/dist/interface/config.js +3 -0
- package/dist/interface/config.js.map +1 -0
- package/dist/interface/download.d.ts +2 -2
- package/dist/interface/events.d.ts +58 -20
- package/dist/interface/events.js +11 -1
- package/dist/interface/events.js.map +1 -1
- package/dist/interface/httpClient.d.ts +0 -14
- package/dist/interface/index.d.ts +11 -7
- package/dist/interface/index.js +2 -2
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +9 -0
- package/dist/interface/nodes.js.map +1 -1
- package/dist/interface/result.js.map +1 -1
- package/dist/interface/sharing.d.ts +2 -0
- package/dist/interface/sharing.js.map +1 -1
- package/dist/interface/telemetry.js +0 -8
- package/dist/interface/telemetry.js.map +1 -1
- package/dist/interface/thumbnail.js.map +1 -1
- package/dist/interface/upload.d.ts +7 -1
- package/dist/internal/apiService/apiService.d.ts +1 -1
- package/dist/internal/apiService/apiService.js +7 -11
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/apiService.test.js +55 -48
- package/dist/internal/apiService/apiService.test.js.map +1 -1
- package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
- package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
- package/dist/internal/apiService/errors.js +14 -8
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/apiService/errors.test.js +17 -12
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/apiService/transformers.d.ts +1 -1
- package/dist/internal/apiService/transformers.js +1 -1
- package/dist/internal/asyncIteratorMap.test.js +2 -2
- package/dist/internal/asyncIteratorMap.test.js.map +1 -1
- package/dist/internal/asyncIteratorRace.d.ts +13 -0
- package/dist/internal/asyncIteratorRace.js +59 -0
- package/dist/internal/asyncIteratorRace.js.map +1 -0
- package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
- package/dist/internal/asyncIteratorRace.test.js +119 -0
- package/dist/internal/asyncIteratorRace.test.js.map +1 -0
- package/dist/internal/batch.d.ts +1 -0
- package/dist/internal/batch.js +12 -0
- package/dist/internal/batch.js.map +1 -0
- package/dist/internal/batch.test.d.ts +1 -0
- package/dist/internal/batch.test.js +41 -0
- package/dist/internal/batch.test.js.map +1 -0
- package/dist/internal/batchLoading.js.map +1 -1
- package/dist/internal/batchLoading.test.js +13 -13
- package/dist/internal/batchLoading.test.js.map +1 -1
- package/dist/internal/devices/apiService.d.ts +3 -3
- package/dist/internal/devices/apiService.js +2 -2
- package/dist/internal/devices/apiService.js.map +1 -1
- package/dist/internal/devices/cryptoService.js +1 -2
- package/dist/internal/devices/cryptoService.js.map +1 -1
- package/dist/internal/devices/index.d.ts +5 -5
- package/dist/internal/devices/index.js.map +1 -1
- package/dist/internal/devices/interface.d.ts +3 -3
- package/dist/internal/devices/manager.js +2 -2
- package/dist/internal/devices/manager.js.map +1 -1
- package/dist/internal/devices/manager.test.js +38 -7
- package/dist/internal/devices/manager.test.js.map +1 -1
- package/dist/internal/download/apiService.d.ts +4 -4
- package/dist/internal/download/apiService.js +32 -32
- package/dist/internal/download/apiService.js.map +1 -1
- package/dist/internal/download/cryptoService.d.ts +4 -4
- package/dist/internal/download/cryptoService.js +6 -5
- package/dist/internal/download/cryptoService.js.map +1 -1
- package/dist/internal/download/fileDownloader.d.ts +6 -6
- package/dist/internal/download/fileDownloader.js +3 -2
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js +1 -1
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/download/index.d.ts +5 -5
- package/dist/internal/download/index.js +5 -5
- package/dist/internal/download/index.js.map +1 -1
- package/dist/internal/download/interface.d.ts +3 -4
- package/dist/internal/download/telemetry.d.ts +3 -3
- package/dist/internal/download/telemetry.js +4 -2
- package/dist/internal/download/telemetry.js.map +1 -1
- package/dist/internal/download/telemetry.test.js +8 -8
- package/dist/internal/download/telemetry.test.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
- package/dist/internal/download/thumbnailDownloader.js +6 -6
- package/dist/internal/download/thumbnailDownloader.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
- package/dist/internal/errors.d.ts +1 -1
- package/dist/internal/errors.js +1 -3
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/events/apiService.d.ts +5 -7
- package/dist/internal/events/apiService.js +19 -22
- package/dist/internal/events/apiService.js.map +1 -1
- package/dist/internal/events/coreEventManager.d.ts +9 -12
- package/dist/internal/events/coreEventManager.js +19 -36
- package/dist/internal/events/coreEventManager.js.map +1 -1
- package/dist/internal/events/coreEventManager.test.d.ts +1 -0
- package/dist/internal/events/coreEventManager.test.js +87 -0
- package/dist/internal/events/coreEventManager.test.js.map +1 -0
- package/dist/internal/events/eventManager.d.ts +11 -36
- package/dist/internal/events/eventManager.js +59 -106
- package/dist/internal/events/eventManager.js.map +1 -1
- package/dist/internal/events/eventManager.test.js +177 -83
- package/dist/internal/events/eventManager.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +16 -36
- package/dist/internal/events/index.js +56 -72
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/events/interface.d.ts +59 -14
- package/dist/internal/events/interface.js +12 -3
- package/dist/internal/events/interface.js.map +1 -1
- package/dist/internal/events/volumeEventManager.d.ts +9 -19
- package/dist/internal/events/volumeEventManager.js +58 -45
- package/dist/internal/events/volumeEventManager.js.map +1 -1
- package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
- package/dist/internal/events/volumeEventManager.test.js +203 -0
- package/dist/internal/events/volumeEventManager.test.js.map +1 -0
- package/dist/internal/nodes/apiService.d.ts +4 -3
- package/dist/internal/nodes/apiService.js +36 -15
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +60 -41
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cache.d.ts +14 -5
- package/dist/internal/nodes/cache.js +31 -7
- package/dist/internal/nodes/cache.js.map +1 -1
- package/dist/internal/nodes/cache.test.js +31 -9
- package/dist/internal/nodes/cache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoCache.d.ts +2 -2
- package/dist/internal/nodes/cryptoCache.js.map +1 -1
- package/dist/internal/nodes/cryptoCache.test.js +24 -4
- package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoService.d.ts +4 -4
- package/dist/internal/nodes/cryptoService.js +11 -17
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js +320 -241
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/events.d.ts +8 -84
- package/dist/internal/nodes/events.js +43 -217
- package/dist/internal/nodes/events.js.map +1 -1
- package/dist/internal/nodes/events.test.js +35 -279
- package/dist/internal/nodes/events.test.js.map +1 -1
- package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
- package/dist/internal/nodes/extendedAttributes.js +3 -1
- package/dist/internal/nodes/extendedAttributes.js.map +1 -1
- package/dist/internal/nodes/extendedAttributes.test.js +7 -10
- package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
- package/dist/internal/nodes/index.d.ts +12 -13
- package/dist/internal/nodes/index.js +5 -5
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/index.test.js +24 -32
- package/dist/internal/nodes/index.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +2 -2
- package/dist/internal/nodes/nodesAccess.d.ts +22 -7
- package/dist/internal/nodes/nodesAccess.js +65 -16
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +165 -101
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +7 -9
- package/dist/internal/nodes/nodesManagement.js +21 -33
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +42 -21
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
- package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
- package/dist/internal/nodes/nodesRevisions.js.map +1 -1
- package/dist/internal/photos/albums.d.ts +3 -3
- package/dist/internal/photos/albums.js.map +1 -1
- package/dist/internal/photos/apiService.d.ts +1 -1
- package/dist/internal/photos/apiService.js +3 -6
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/cache.d.ts +1 -1
- package/dist/internal/photos/index.d.ts +5 -5
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +2 -2
- package/dist/internal/photos/photosTimeline.d.ts +3 -3
- package/dist/internal/photos/photosTimeline.js +1 -2
- package/dist/internal/photos/photosTimeline.js.map +1 -1
- package/dist/internal/sdkEvents.d.ts +1 -1
- package/dist/internal/sdkEvents.js +2 -7
- package/dist/internal/sdkEvents.js.map +1 -1
- package/dist/internal/sdkEvents.test.js +8 -8
- package/dist/internal/shares/apiService.d.ts +2 -2
- package/dist/internal/shares/apiService.js +5 -3
- package/dist/internal/shares/apiService.js.map +1 -1
- package/dist/internal/shares/cache.d.ts +4 -2
- package/dist/internal/shares/cache.js +14 -6
- package/dist/internal/shares/cache.js.map +1 -1
- package/dist/internal/shares/cache.test.js.map +1 -1
- package/dist/internal/shares/cryptoCache.d.ts +2 -2
- package/dist/internal/shares/cryptoCache.test.js +8 -2
- package/dist/internal/shares/cryptoCache.test.js.map +1 -1
- package/dist/internal/shares/cryptoService.d.ts +3 -3
- package/dist/internal/shares/cryptoService.js.map +1 -1
- package/dist/internal/shares/cryptoService.test.js +42 -42
- package/dist/internal/shares/cryptoService.test.js.map +1 -1
- package/dist/internal/shares/index.d.ts +4 -4
- package/dist/internal/shares/index.js.map +1 -1
- package/dist/internal/shares/interface.d.ts +2 -2
- package/dist/internal/shares/manager.d.ts +8 -7
- package/dist/internal/shares/manager.js +3 -0
- package/dist/internal/shares/manager.js.map +1 -1
- package/dist/internal/shares/manager.test.js +71 -63
- package/dist/internal/shares/manager.test.js.map +1 -1
- package/dist/internal/sharing/apiService.d.ts +4 -4
- package/dist/internal/sharing/apiService.js +5 -3
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/cache.d.ts +1 -1
- package/dist/internal/sharing/cache.test.js +33 -33
- package/dist/internal/sharing/cryptoService.d.ts +3 -3
- package/dist/internal/sharing/cryptoService.js +3 -4
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.test.js +39 -39
- package/dist/internal/sharing/cryptoService.test.js.map +1 -1
- package/dist/internal/sharing/events.d.ts +24 -56
- package/dist/internal/sharing/events.js +45 -138
- package/dist/internal/sharing/events.js.map +1 -1
- package/dist/internal/sharing/events.test.js +85 -189
- package/dist/internal/sharing/events.test.js.map +1 -1
- package/dist/internal/sharing/index.d.ts +8 -9
- package/dist/internal/sharing/index.js +5 -5
- package/dist/internal/sharing/index.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +8 -4
- package/dist/internal/sharing/sharingAccess.d.ts +6 -6
- package/dist/internal/sharing/sharingAccess.js +8 -4
- package/dist/internal/sharing/sharingAccess.js.map +1 -1
- package/dist/internal/sharing/sharingAccess.test.js +45 -39
- package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +5 -6
- package/dist/internal/sharing/sharingManagement.js +12 -16
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +305 -286
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/uids.js.map +1 -1
- package/dist/internal/upload/apiService.d.ts +5 -6
- package/dist/internal/upload/apiService.js +8 -5
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/blockVerifier.d.ts +3 -3
- package/dist/internal/upload/blockVerifier.js +1 -1
- package/dist/internal/upload/blockVerifier.js.map +1 -1
- package/dist/internal/upload/chunkStreamReader.test.js +6 -6
- package/dist/internal/upload/cryptoService.d.ts +4 -4
- package/dist/internal/upload/cryptoService.js +4 -4
- package/dist/internal/upload/cryptoService.js.map +1 -1
- package/dist/internal/upload/digests.js.map +1 -1
- package/dist/internal/upload/fileUploader.d.ts +6 -6
- package/dist/internal/upload/fileUploader.js.map +1 -1
- package/dist/internal/upload/fileUploader.test.js.map +1 -1
- package/dist/internal/upload/index.d.ts +6 -6
- package/dist/internal/upload/index.js +3 -3
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +5 -3
- package/dist/internal/upload/manager.d.ts +8 -8
- package/dist/internal/upload/manager.js +23 -52
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +185 -147
- package/dist/internal/upload/manager.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +6 -6
- package/dist/internal/upload/streamUploader.js +9 -8
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +17 -12
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/internal/upload/telemetry.d.ts +3 -3
- package/dist/internal/upload/telemetry.js +5 -3
- package/dist/internal/upload/telemetry.js.map +1 -1
- package/dist/internal/upload/telemetry.test.js +8 -8
- package/dist/internal/upload/telemetry.test.js.map +1 -1
- package/dist/protonDriveClient.d.ts +27 -170
- package/dist/protonDriveClient.js +37 -198
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.js +3 -2
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/telemetry.js +18 -15
- package/dist/telemetry.js.map +1 -1
- package/dist/tests/logger.js.map +1 -1
- package/dist/tests/telemetry.d.ts +1 -1
- package/dist/transformers.js +4 -2
- package/dist/transformers.js.map +1 -1
- package/package.json +3 -3
- package/src/cache/index.ts +1 -0
- package/src/cache/interface.ts +22 -22
- package/src/cache/memoryCache.test.ts +7 -7
- package/src/cache/memoryCache.ts +5 -5
- package/src/cache/nullCache.ts +38 -0
- package/src/config.ts +17 -2
- package/src/crypto/driveCrypto.test.ts +15 -15
- package/src/crypto/driveCrypto.ts +120 -156
- package/src/crypto/hmac.ts +1 -1
- package/src/crypto/interface.ts +63 -72
- package/src/crypto/openPGPCrypto.ts +76 -94
- package/src/crypto/utils.ts +1 -1
- package/src/diagnostic/eventsGenerator.ts +48 -0
- package/src/diagnostic/httpClient.ts +84 -0
- package/src/diagnostic/index.ts +40 -0
- package/src/diagnostic/integrityVerificationStream.ts +55 -0
- package/src/diagnostic/interface.ts +158 -0
- package/src/diagnostic/sdkDiagnostic.ts +249 -0
- package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
- package/src/diagnostic/telemetry.ts +74 -0
- package/src/diagnostic/zipGenerators.test.ts +177 -0
- package/src/diagnostic/zipGenerators.ts +70 -0
- package/src/errors.ts +25 -22
- package/src/index.ts +3 -3
- package/src/interface/account.ts +10 -10
- package/src/interface/author.ts +6 -6
- package/src/interface/config.ts +28 -0
- package/src/interface/devices.ts +6 -6
- package/src/interface/download.ts +12 -9
- package/src/interface/events.ts +76 -25
- package/src/interface/httpClient.ts +11 -27
- package/src/interface/index.ts +81 -20
- package/src/interface/nodes.ts +67 -60
- package/src/interface/result.ts +1 -3
- package/src/interface/sharing.ts +60 -56
- package/src/interface/telemetry.ts +74 -74
- package/src/interface/thumbnail.ts +5 -6
- package/src/interface/upload.ts +25 -11
- package/src/internal/apiService/apiService.test.ts +109 -76
- package/src/internal/apiService/apiService.ts +40 -26
- package/src/internal/apiService/coreTypes.ts +2474 -2463
- package/src/internal/apiService/driveTypes.ts +1868 -1822
- package/src/internal/apiService/errorCodes.ts +4 -4
- package/src/internal/apiService/errors.test.ts +25 -23
- package/src/internal/apiService/errors.ts +15 -9
- package/src/internal/apiService/index.ts +1 -1
- package/src/internal/apiService/transformers.ts +2 -2
- package/src/internal/asyncIteratorMap.test.ts +4 -4
- package/src/internal/asyncIteratorMap.ts +1 -1
- package/src/internal/asyncIteratorRace.test.ts +149 -0
- package/src/internal/asyncIteratorRace.ts +79 -0
- package/src/internal/batch.test.ts +50 -0
- package/src/internal/batch.ts +9 -0
- package/src/internal/batchLoading.test.ts +13 -14
- package/src/internal/batchLoading.ts +8 -8
- package/src/internal/devices/apiService.ts +58 -51
- package/src/internal/devices/cryptoService.ts +22 -17
- package/src/internal/devices/index.ts +17 -10
- package/src/internal/devices/interface.ts +21 -12
- package/src/internal/devices/manager.test.ts +40 -9
- package/src/internal/devices/manager.ts +3 -3
- package/src/internal/download/apiService.ts +72 -52
- package/src/internal/download/cryptoService.ts +34 -18
- package/src/internal/download/fileDownloader.test.ts +25 -9
- package/src/internal/download/fileDownloader.ts +38 -20
- package/src/internal/download/index.ts +19 -19
- package/src/internal/download/interface.ts +19 -20
- package/src/internal/download/queue.ts +3 -3
- package/src/internal/download/telemetry.test.ts +11 -11
- package/src/internal/download/telemetry.ts +24 -14
- package/src/internal/download/thumbnailDownloader.test.ts +11 -6
- package/src/internal/download/thumbnailDownloader.ts +43 -32
- package/src/internal/errors.ts +7 -5
- package/src/internal/events/apiService.ts +46 -36
- package/src/internal/events/coreEventManager.test.ts +101 -0
- package/src/internal/events/coreEventManager.ts +26 -48
- package/src/internal/events/eventManager.test.ts +211 -93
- package/src/internal/events/eventManager.ts +72 -117
- package/src/internal/events/index.ts +71 -91
- package/src/internal/events/interface.ts +92 -29
- package/src/internal/events/volumeEventManager.test.ts +239 -0
- package/src/internal/events/volumeEventManager.ts +68 -57
- package/src/internal/nodes/apiService.test.ts +197 -147
- package/src/internal/nodes/apiService.ts +288 -174
- package/src/internal/nodes/cache.test.ts +48 -20
- package/src/internal/nodes/cache.ts +79 -45
- package/src/internal/nodes/cryptoCache.test.ts +34 -14
- package/src/internal/nodes/cryptoCache.ts +10 -5
- package/src/internal/nodes/cryptoService.test.ts +492 -351
- package/src/internal/nodes/cryptoService.ts +171 -89
- package/src/internal/nodes/events.test.ts +48 -344
- package/src/internal/nodes/events.ts +48 -254
- package/src/internal/nodes/extendedAttributes.test.ts +28 -24
- package/src/internal/nodes/extendedAttributes.ts +20 -15
- package/src/internal/nodes/index.test.ts +51 -55
- package/src/internal/nodes/index.ts +32 -22
- package/src/internal/nodes/interface.ts +44 -31
- package/src/internal/nodes/nodesAccess.test.ts +237 -130
- package/src/internal/nodes/nodesAccess.ts +113 -50
- package/src/internal/nodes/nodesManagement.test.ts +64 -39
- package/src/internal/nodes/nodesManagement.ts +51 -62
- package/src/internal/nodes/nodesRevisions.ts +7 -7
- package/src/internal/nodes/validations.ts +2 -2
- package/src/internal/photos/albums.ts +5 -5
- package/src/internal/photos/apiService.ts +4 -7
- package/src/internal/photos/cache.ts +1 -1
- package/src/internal/photos/index.ts +8 -8
- package/src/internal/photos/interface.ts +2 -2
- package/src/internal/photos/photosTimeline.ts +4 -5
- package/src/internal/sdkEvents.test.ts +10 -10
- package/src/internal/sdkEvents.ts +5 -13
- package/src/internal/shares/apiService.ts +44 -33
- package/src/internal/shares/cache.test.ts +6 -4
- package/src/internal/shares/cache.ts +25 -14
- package/src/internal/shares/cryptoCache.test.ts +17 -11
- package/src/internal/shares/cryptoCache.ts +4 -4
- package/src/internal/shares/cryptoService.test.ts +72 -74
- package/src/internal/shares/cryptoService.ts +48 -23
- package/src/internal/shares/index.ts +23 -11
- package/src/internal/shares/interface.ts +8 -8
- package/src/internal/shares/manager.test.ts +88 -80
- package/src/internal/shares/manager.ts +27 -23
- package/src/internal/sharing/apiService.ts +283 -175
- package/src/internal/sharing/cache.test.ts +35 -35
- package/src/internal/sharing/cache.ts +3 -3
- package/src/internal/sharing/cryptoService.test.ts +58 -46
- package/src/internal/sharing/cryptoService.ts +121 -83
- package/src/internal/sharing/events.test.ts +97 -207
- package/src/internal/sharing/events.ts +46 -157
- package/src/internal/sharing/index.ts +24 -16
- package/src/internal/sharing/interface.ts +46 -42
- package/src/internal/sharing/sharingAccess.test.ts +71 -65
- package/src/internal/sharing/sharingAccess.ts +39 -21
- package/src/internal/sharing/sharingManagement.test.ts +405 -335
- package/src/internal/sharing/sharingManagement.ts +144 -75
- package/src/internal/uids.ts +1 -1
- package/src/internal/upload/apiService.ts +168 -119
- package/src/internal/upload/blockVerifier.ts +8 -6
- package/src/internal/upload/chunkStreamReader.test.ts +7 -7
- package/src/internal/upload/cryptoService.ts +42 -36
- package/src/internal/upload/digests.ts +2 -2
- package/src/internal/upload/fileUploader.test.ts +15 -3
- package/src/internal/upload/fileUploader.ts +39 -17
- package/src/internal/upload/index.ts +17 -18
- package/src/internal/upload/interface.ts +79 -77
- package/src/internal/upload/manager.test.ts +222 -175
- package/src/internal/upload/manager.ts +74 -80
- package/src/internal/upload/queue.ts +3 -3
- package/src/internal/upload/streamUploader.test.ts +40 -27
- package/src/internal/upload/streamUploader.ts +87 -71
- package/src/internal/upload/telemetry.test.ts +11 -11
- package/src/internal/upload/telemetry.ts +25 -15
- package/src/internal/wait.test.ts +1 -1
- package/src/internal/wait.ts +3 -3
- package/src/protonDriveClient.ts +189 -276
- package/src/protonDrivePhotosClient.ts +20 -13
- package/src/telemetry.ts +60 -52
- package/src/tests/logger.ts +1 -1
- package/src/tests/telemetry.ts +2 -2
- package/src/transformers.ts +27 -21
- package/src/version.ts +0 -1
- package/dist/internal/events/cache.d.ts +0 -28
- package/dist/internal/events/cache.js +0 -67
- package/dist/internal/events/cache.js.map +0 -1
- package/dist/internal/events/cache.test.js +0 -43
- package/dist/internal/events/cache.test.js.map +0 -1
- package/src/internal/events/cache.test.ts +0 -47
- package/src/internal/events/cache.ts +0 -80
- /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { zipGenerators } from './zipGenerators';
|
|
2
|
+
|
|
3
|
+
async function* createTimedGenerator<T>(values: { value: T; delay: number }[]): AsyncGenerator<T> {
|
|
4
|
+
for (const { value, delay } of values) {
|
|
5
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
6
|
+
yield value;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
async function* createEmptyGenerator<T>(): AsyncGenerator<T> {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
describe('zipGenerators', () => {
|
|
15
|
+
it('should handle both generators being empty', async () => {
|
|
16
|
+
const genA = createEmptyGenerator<string>();
|
|
17
|
+
const genB = createEmptyGenerator<number>();
|
|
18
|
+
|
|
19
|
+
const result: (string | number)[] = [];
|
|
20
|
+
const zipGen = zipGenerators(genA, genB);
|
|
21
|
+
|
|
22
|
+
for await (const value of zipGen) {
|
|
23
|
+
result.push(value);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
expect(result).toEqual([]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('should handle one generator being empty (first empty)', async () => {
|
|
30
|
+
const genA = createEmptyGenerator<string>();
|
|
31
|
+
const genB = createTimedGenerator([
|
|
32
|
+
{ value: 1, delay: 10 },
|
|
33
|
+
{ value: 2, delay: 10 },
|
|
34
|
+
]);
|
|
35
|
+
|
|
36
|
+
const result: (string | number)[] = [];
|
|
37
|
+
const zipGen = zipGenerators(genA, genB);
|
|
38
|
+
|
|
39
|
+
const promise = (async () => {
|
|
40
|
+
for await (const value of zipGen) {
|
|
41
|
+
result.push(value);
|
|
42
|
+
}
|
|
43
|
+
})();
|
|
44
|
+
|
|
45
|
+
await promise;
|
|
46
|
+
|
|
47
|
+
expect(result).toEqual([1, 2]);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('should handle one generator being empty (second empty)', async () => {
|
|
51
|
+
const genA = createTimedGenerator([
|
|
52
|
+
{ value: 'a', delay: 10 },
|
|
53
|
+
{ value: 'b', delay: 10 },
|
|
54
|
+
]);
|
|
55
|
+
const genB = createEmptyGenerator<number>();
|
|
56
|
+
|
|
57
|
+
const result: (string | number)[] = [];
|
|
58
|
+
const zipGen = zipGenerators(genA, genB);
|
|
59
|
+
|
|
60
|
+
const promise = (async () => {
|
|
61
|
+
for await (const value of zipGen) {
|
|
62
|
+
result.push(value);
|
|
63
|
+
}
|
|
64
|
+
})();
|
|
65
|
+
|
|
66
|
+
await promise;
|
|
67
|
+
|
|
68
|
+
expect(result).toEqual(['a', 'b']);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('should handle both generators with same number of elements yielded at same time', async () => {
|
|
72
|
+
const genA = createTimedGenerator([
|
|
73
|
+
{ value: 'a1', delay: 10 },
|
|
74
|
+
{ value: 'a2', delay: 10 },
|
|
75
|
+
{ value: 'a3', delay: 10 },
|
|
76
|
+
]);
|
|
77
|
+
const genB = createTimedGenerator([
|
|
78
|
+
{ value: 'b1', delay: 10 },
|
|
79
|
+
{ value: 'b2', delay: 10 },
|
|
80
|
+
{ value: 'b3', delay: 10 },
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
const result: string[] = [];
|
|
84
|
+
const zipGen = zipGenerators(genA, genB);
|
|
85
|
+
|
|
86
|
+
const promise = (async () => {
|
|
87
|
+
for await (const value of zipGen) {
|
|
88
|
+
result.push(value);
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
|
|
92
|
+
await promise;
|
|
93
|
+
|
|
94
|
+
// Since they yield at the same time, the order depends on Promise.race behavior
|
|
95
|
+
// Both values should be present, but order may vary
|
|
96
|
+
expect(result).toHaveLength(6);
|
|
97
|
+
expect(result).toEqual(expect.arrayContaining(['a1', 'a2', 'a3', 'b1', 'b2', 'b3']));
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it('should handle generators with different timing - first generator faster', async () => {
|
|
101
|
+
const genA = createTimedGenerator([
|
|
102
|
+
{ value: 'fast1', delay: 10 },
|
|
103
|
+
{ value: 'fast2', delay: 10 },
|
|
104
|
+
{ value: 'fast3', delay: 10 },
|
|
105
|
+
]);
|
|
106
|
+
const genB = createTimedGenerator([
|
|
107
|
+
{ value: 'slow1', delay: 50 },
|
|
108
|
+
{ value: 'slow2', delay: 50 },
|
|
109
|
+
]);
|
|
110
|
+
|
|
111
|
+
const result: string[] = [];
|
|
112
|
+
const zipGen = zipGenerators(genA, genB);
|
|
113
|
+
|
|
114
|
+
const promise = (async () => {
|
|
115
|
+
for await (const value of zipGen) {
|
|
116
|
+
result.push(value);
|
|
117
|
+
}
|
|
118
|
+
})();
|
|
119
|
+
|
|
120
|
+
await promise;
|
|
121
|
+
|
|
122
|
+
expect(result).toEqual(['fast1', 'fast2', 'fast3', 'slow1', 'slow2']);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it('should handle generators with different timing - second generator faster', async () => {
|
|
126
|
+
const genA = createTimedGenerator([
|
|
127
|
+
{ value: 'slow1', delay: 50 },
|
|
128
|
+
{ value: 'slow2', delay: 50 },
|
|
129
|
+
]);
|
|
130
|
+
const genB = createTimedGenerator([
|
|
131
|
+
{ value: 'fast1', delay: 10 },
|
|
132
|
+
{ value: 'fast2', delay: 10 },
|
|
133
|
+
{ value: 'fast3', delay: 10 },
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
const result: string[] = [];
|
|
137
|
+
const zipGen = zipGenerators(genA, genB);
|
|
138
|
+
|
|
139
|
+
const promise = (async () => {
|
|
140
|
+
for await (const value of zipGen) {
|
|
141
|
+
result.push(value);
|
|
142
|
+
}
|
|
143
|
+
})();
|
|
144
|
+
|
|
145
|
+
await promise;
|
|
146
|
+
|
|
147
|
+
expect(result).toEqual(['fast1', 'fast2', 'fast3', 'slow1', 'slow2']);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it('should handle mixed timing with overlapping yields', async () => {
|
|
151
|
+
const genA = createTimedGenerator([
|
|
152
|
+
{ value: 'A1', delay: 50 },
|
|
153
|
+
{ value: 'A2', delay: 100 },
|
|
154
|
+
{ value: 'A3', delay: 100 },
|
|
155
|
+
]);
|
|
156
|
+
const genB = createTimedGenerator([
|
|
157
|
+
{ value: 'B1', delay: 100 },
|
|
158
|
+
{ value: 'B2', delay: 100 },
|
|
159
|
+
{ value: 'B3', delay: 200 },
|
|
160
|
+
]);
|
|
161
|
+
|
|
162
|
+
const result: string[] = [];
|
|
163
|
+
const timestamps: number[] = [];
|
|
164
|
+
const zipGen = zipGenerators(genA, genB);
|
|
165
|
+
|
|
166
|
+
const promise = (async () => {
|
|
167
|
+
for await (const value of zipGen) {
|
|
168
|
+
result.push(value);
|
|
169
|
+
timestamps.push(Date.now());
|
|
170
|
+
}
|
|
171
|
+
})();
|
|
172
|
+
|
|
173
|
+
await promise;
|
|
174
|
+
|
|
175
|
+
expect(result).toEqual(['A1', 'B1', 'A2', 'B2', 'A3', 'B3']);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zips two generators into one.
|
|
3
|
+
*
|
|
4
|
+
* The combined generator yields values from both generators in the order they
|
|
5
|
+
* are produced.
|
|
6
|
+
*/
|
|
7
|
+
export async function* zipGenerators<T, U>(
|
|
8
|
+
genA: AsyncGenerator<T>,
|
|
9
|
+
genB: AsyncGenerator<U>,
|
|
10
|
+
options?: {
|
|
11
|
+
stopOnFirstDone?: boolean;
|
|
12
|
+
},
|
|
13
|
+
): AsyncGenerator<T | U> {
|
|
14
|
+
const { stopOnFirstDone = false } = options || {};
|
|
15
|
+
|
|
16
|
+
const itA = genA[Symbol.asyncIterator]();
|
|
17
|
+
const itB = genB[Symbol.asyncIterator]();
|
|
18
|
+
|
|
19
|
+
let promiseA: Promise<IteratorResult<T>> | undefined = itA.next();
|
|
20
|
+
let promiseB: Promise<IteratorResult<U>> | undefined = itB.next();
|
|
21
|
+
|
|
22
|
+
while (promiseA && promiseB) {
|
|
23
|
+
const result = await Promise.race([
|
|
24
|
+
promiseA.then((res) => ({ source: 'A' as const, result: res })),
|
|
25
|
+
promiseB.then((res) => ({ source: 'B' as const, result: res })),
|
|
26
|
+
]);
|
|
27
|
+
|
|
28
|
+
if (result.source === 'A') {
|
|
29
|
+
if (result.result.done) {
|
|
30
|
+
promiseA = undefined;
|
|
31
|
+
if (stopOnFirstDone) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
yield result.result.value;
|
|
36
|
+
promiseA = itA.next();
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
if (result.result.done) {
|
|
40
|
+
promiseB = undefined;
|
|
41
|
+
if (stopOnFirstDone) {
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
yield result.result.value;
|
|
46
|
+
promiseB = itB.next();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (stopOnFirstDone) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (promiseA) {
|
|
56
|
+
const result = await promiseA;
|
|
57
|
+
if (!result.done) {
|
|
58
|
+
yield result.value;
|
|
59
|
+
}
|
|
60
|
+
yield* itA;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (promiseB) {
|
|
64
|
+
const result = await promiseB;
|
|
65
|
+
if (!result.done) {
|
|
66
|
+
yield result.value;
|
|
67
|
+
}
|
|
68
|
+
yield* itB;
|
|
69
|
+
}
|
|
70
|
+
}
|
package/src/errors.ts
CHANGED
|
@@ -2,13 +2,13 @@ import { c } from 'ttag';
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Base class for all SDK errors.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* This class can be used for catching all SDK errors. The error should have
|
|
7
7
|
* translated message in the `message` property that should be shown to the
|
|
8
8
|
* user without any modification.
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
10
|
* No retries should be done as that is already handled by the SDK.
|
|
11
|
-
*
|
|
11
|
+
*
|
|
12
12
|
* When SDK throws an error and it is not `ProtonDriveError`, it is unhandled error
|
|
13
13
|
* by the SDK and usually indicates bug in the SDK. Please, report it.
|
|
14
14
|
*/
|
|
@@ -18,7 +18,7 @@ export class ProtonDriveError extends Error {
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Error thrown when the operation is aborted.
|
|
21
|
-
*
|
|
21
|
+
*
|
|
22
22
|
* This error is thrown when the operation is aborted by the user.
|
|
23
23
|
* For example, by calling `abort()` on the `AbortSignal`.
|
|
24
24
|
*/
|
|
@@ -32,7 +32,7 @@ export class AbortError extends ProtonDriveError {
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Error thrown when the validation fails.
|
|
35
|
-
*
|
|
35
|
+
*
|
|
36
36
|
* This error is thrown when the validation of the input fails.
|
|
37
37
|
* Validation can be done on the client side or on the server side.
|
|
38
38
|
*
|
|
@@ -45,7 +45,7 @@ export class ValidationError extends ProtonDriveError {
|
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Internal API code.
|
|
48
|
-
*
|
|
48
|
+
*
|
|
49
49
|
* Use only for debugging purposes.
|
|
50
50
|
*/
|
|
51
51
|
public readonly code?: number;
|
|
@@ -64,7 +64,7 @@ export class ValidationError extends ProtonDriveError {
|
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* Error thrown when the node already exists.
|
|
67
|
-
*
|
|
67
|
+
*
|
|
68
68
|
* This error is thrown when the node with the same name already exists in the
|
|
69
69
|
* parent folder. The client should ask the user to replace the existing node
|
|
70
70
|
* or choose another name. The available name is provided in the `availableName`
|
|
@@ -75,19 +75,22 @@ export class NodeAlreadyExistsValidationError extends ValidationError {
|
|
|
75
75
|
|
|
76
76
|
public readonly existingNodeUid?: string;
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
public readonly ongoingUploadByOtherClient: boolean;
|
|
79
|
+
|
|
80
|
+
constructor(message: string, code: number, existingNodeUid?: string, ongoingUploadByOtherClient = false) {
|
|
79
81
|
super(message, code);
|
|
80
82
|
this.existingNodeUid = existingNodeUid;
|
|
83
|
+
this.ongoingUploadByOtherClient = ongoingUploadByOtherClient;
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
/**
|
|
85
88
|
* Error thrown when the API call fails.
|
|
86
|
-
*
|
|
89
|
+
*
|
|
87
90
|
* This error covers both HTTP errors and API errors. SDK automatically
|
|
88
91
|
* retries the request before the error is thrown. The sepcific algorithm
|
|
89
92
|
* used for retries depends on the type of the error.
|
|
90
|
-
*
|
|
93
|
+
*
|
|
91
94
|
* Client should not retry the request when this error is thrown.
|
|
92
95
|
*/
|
|
93
96
|
export class ServerError extends ProtonDriveError {
|
|
@@ -95,13 +98,13 @@ export class ServerError extends ProtonDriveError {
|
|
|
95
98
|
|
|
96
99
|
/**
|
|
97
100
|
* HTTP status code of the response.
|
|
98
|
-
*
|
|
101
|
+
*
|
|
99
102
|
* Use only for debugging purposes.
|
|
100
103
|
*/
|
|
101
104
|
public readonly statusCode?: number;
|
|
102
105
|
/**
|
|
103
106
|
* Internal API code.
|
|
104
|
-
*
|
|
107
|
+
*
|
|
105
108
|
* Use only for debugging purposes.
|
|
106
109
|
*/
|
|
107
110
|
public readonly code?: number;
|
|
@@ -109,16 +112,16 @@ export class ServerError extends ProtonDriveError {
|
|
|
109
112
|
|
|
110
113
|
/**
|
|
111
114
|
* Error thrown when the client makes too many requests to the API.
|
|
112
|
-
*
|
|
115
|
+
*
|
|
113
116
|
* SDK is configured to stay below the rate limits, but it can still happen if
|
|
114
117
|
* client is running multiple SDKs in parallel, or if the rate limits are
|
|
115
118
|
* changed on the server side.
|
|
116
|
-
*
|
|
119
|
+
*
|
|
117
120
|
* SDK automatically retries the request before the error is thrown after
|
|
118
121
|
* waiting for the required time specified by the server.
|
|
119
|
-
*
|
|
122
|
+
*
|
|
120
123
|
* Client should slow down calling SDK when this error is thrown.
|
|
121
|
-
*
|
|
124
|
+
*
|
|
122
125
|
* You can be also notified about the rate limits by the `requestsThrottled`
|
|
123
126
|
* event. See `onMessage` method on the SDK class for more details.
|
|
124
127
|
*/
|
|
@@ -130,9 +133,9 @@ export class RateLimitedError extends ServerError {
|
|
|
130
133
|
|
|
131
134
|
/**
|
|
132
135
|
* Error thrown when the client is not connected to the internet.
|
|
133
|
-
*
|
|
136
|
+
*
|
|
134
137
|
* Client should check the internet connection when this error is thrown.
|
|
135
|
-
*
|
|
138
|
+
*
|
|
136
139
|
* You can also be notified about the connection status by the `offline` event
|
|
137
140
|
* See `onMessage` method on the SDK class for more details.
|
|
138
141
|
*/
|
|
@@ -142,9 +145,9 @@ export class ConnectionError extends ProtonDriveError {
|
|
|
142
145
|
|
|
143
146
|
/**
|
|
144
147
|
* Error thrown when the decryption fails.
|
|
145
|
-
*
|
|
148
|
+
*
|
|
146
149
|
* Client should report this error to the user and report bug report.
|
|
147
|
-
*
|
|
150
|
+
*
|
|
148
151
|
* In most cases, there is no decryption error. Every decryption error should
|
|
149
152
|
* be not exposed but set as empty value on the node, for example. But in the
|
|
150
153
|
* case of the file content, if block cannot be decrypted, decryption error
|
|
@@ -156,9 +159,9 @@ export class DecryptionError extends ProtonDriveError {
|
|
|
156
159
|
|
|
157
160
|
/**
|
|
158
161
|
* Error thrown when the data integrity check fails.
|
|
159
|
-
*
|
|
162
|
+
*
|
|
160
163
|
* Client should report this error to the user and report bug report.
|
|
161
|
-
*
|
|
164
|
+
*
|
|
162
165
|
* For example, it can happen when hashes don't match, etc. In some cases,
|
|
163
166
|
* SDK allows to run command without verification checks for debug purposes.
|
|
164
167
|
*/
|
package/src/index.ts
CHANGED
|
@@ -14,12 +14,12 @@ export { VERSION } from './version';
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Provides the node UID for the given raw volume and node IDs.
|
|
17
|
-
*
|
|
17
|
+
*
|
|
18
18
|
* This is required only for the internal implementation to provide
|
|
19
19
|
* backward compatibility with the old Drive web setup.
|
|
20
|
-
*
|
|
20
|
+
*
|
|
21
21
|
* If you are having share ID, use `ProtonDriveClient::getNodeUid` instead.
|
|
22
|
-
*
|
|
22
|
+
*
|
|
23
23
|
* @deprecated This method is not part of the public API.
|
|
24
24
|
* @param volumeId - Volume of the node.
|
|
25
25
|
* @param nodeId - Node/link ID (not UID).
|
package/src/interface/account.ts
CHANGED
|
@@ -6,17 +6,17 @@ export interface ProtonDriveAccount {
|
|
|
6
6
|
*
|
|
7
7
|
* @throws Error If there is no primary address.
|
|
8
8
|
*/
|
|
9
|
-
getOwnPrimaryAddress(): Promise<ProtonDriveAccountAddress
|
|
9
|
+
getOwnPrimaryAddress(): Promise<ProtonDriveAccountAddress>;
|
|
10
10
|
/**
|
|
11
11
|
* Get own address by email or addressId.
|
|
12
12
|
*
|
|
13
13
|
* @throws Error If there is no address with given email or addressId.
|
|
14
14
|
*/
|
|
15
|
-
getOwnAddress(emailOrAddressId: string): Promise<ProtonDriveAccountAddress
|
|
15
|
+
getOwnAddress(emailOrAddressId: string): Promise<ProtonDriveAccountAddress>;
|
|
16
16
|
/**
|
|
17
17
|
* Returns whether given email can be used to share files with Proton Drive.
|
|
18
18
|
*/
|
|
19
|
-
hasProtonAccount(email: string): Promise<boolean
|
|
19
|
+
hasProtonAccount(email: string): Promise<boolean>;
|
|
20
20
|
/**
|
|
21
21
|
* Get public keys for given email.
|
|
22
22
|
*
|
|
@@ -24,15 +24,15 @@ export interface ProtonDriveAccount {
|
|
|
24
24
|
*
|
|
25
25
|
* @throws Error Only if there is an error while fetching keys.
|
|
26
26
|
*/
|
|
27
|
-
getPublicKeys(email: string): Promise<PublicKey[]
|
|
27
|
+
getPublicKeys(email: string): Promise<PublicKey[]>;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export interface ProtonDriveAccountAddress {
|
|
31
|
-
email: string
|
|
32
|
-
addressId: string
|
|
33
|
-
primaryKeyIndex: number
|
|
31
|
+
email: string;
|
|
32
|
+
addressId: string;
|
|
33
|
+
primaryKeyIndex: number;
|
|
34
34
|
keys: {
|
|
35
|
-
id: string
|
|
36
|
-
key: PrivateKey
|
|
37
|
-
}[]
|
|
35
|
+
id: string;
|
|
36
|
+
key: PrivateKey;
|
|
37
|
+
}[];
|
|
38
38
|
}
|
package/src/interface/author.ts
CHANGED
|
@@ -2,9 +2,9 @@ import { Result } from './result';
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Author with verification status.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* It can be either a string (email) or an anonymous user.
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
8
|
* If author cannot be verified, the result is failure with an error.
|
|
9
9
|
* The client can still get claimed author from the error object, but
|
|
10
10
|
* it must be used with caution.
|
|
@@ -19,11 +19,11 @@ export type AnonymousUser = null;
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Unverified author.
|
|
22
|
-
*
|
|
22
|
+
*
|
|
23
23
|
* If author cannot be verified, the result is this object containing
|
|
24
24
|
* the claimed author and the verification error.
|
|
25
25
|
*/
|
|
26
26
|
export type UnverifiedAuthorError = {
|
|
27
|
-
claimedAuthor?: string
|
|
28
|
-
error: string
|
|
29
|
-
}
|
|
27
|
+
claimedAuthor?: string;
|
|
28
|
+
error: string;
|
|
29
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type ProtonDriveConfig = {
|
|
2
|
+
/**
|
|
3
|
+
* The base URL for the Proton Drive (without schema).
|
|
4
|
+
*
|
|
5
|
+
* If not provided, defaults to 'drive-api.proton.me'.
|
|
6
|
+
*/
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The language to use for error messages.
|
|
11
|
+
*
|
|
12
|
+
* If not provided, defaults to 'en'.
|
|
13
|
+
*/
|
|
14
|
+
language?: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Client UID is used to identify the client for the upload.
|
|
18
|
+
*
|
|
19
|
+
* If the upload failed because of the existing draft, the SDK will
|
|
20
|
+
* automatically clean up the existing draft and start a new upload.
|
|
21
|
+
* If the client UID doesn't match, the SDK throws and then you need
|
|
22
|
+
* to explicitely ask the user to override the existing draft.
|
|
23
|
+
*
|
|
24
|
+
* You can force the upload by setting up
|
|
25
|
+
* `overrideExistingDraftByOtherClient` to true.
|
|
26
|
+
*/
|
|
27
|
+
clientUid?: string;
|
|
28
|
+
};
|
package/src/interface/devices.ts
CHANGED
|
@@ -2,15 +2,15 @@ import { Result } from './result';
|
|
|
2
2
|
import { InvalidNameError } from './nodes';
|
|
3
3
|
|
|
4
4
|
export type Device = {
|
|
5
|
-
uid: string
|
|
6
|
-
type: DeviceType
|
|
7
|
-
name: Result<string, Error | InvalidNameError
|
|
8
|
-
rootFolderUid: string
|
|
9
|
-
creationTime: Date
|
|
5
|
+
uid: string;
|
|
6
|
+
type: DeviceType;
|
|
7
|
+
name: Result<string, Error | InvalidNameError>;
|
|
8
|
+
rootFolderUid: string;
|
|
9
|
+
creationTime: Date;
|
|
10
10
|
lastSyncDate?: Date;
|
|
11
11
|
/** @deprecated to be removed once Volume-based navigation is implemented in web */
|
|
12
12
|
shareId: string;
|
|
13
|
-
}
|
|
13
|
+
};
|
|
14
14
|
|
|
15
15
|
export enum DeviceType {
|
|
16
16
|
Windows = 'Windows',
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
export interface FileDownloader {
|
|
2
2
|
/**
|
|
3
3
|
* Get the claimed size of the file in bytes.
|
|
4
|
-
*
|
|
4
|
+
*
|
|
5
5
|
* This provides total clear-text size of the file. This is encrypted
|
|
6
6
|
* information that is not known to the Proton Drive and thus it is
|
|
7
7
|
* explicitely stated as claimed only and must be treated that way.
|
|
8
8
|
* It can be wrong or missing completely.
|
|
9
9
|
*/
|
|
10
|
-
getClaimedSizeInBytes(): number | undefined
|
|
10
|
+
getClaimedSizeInBytes(): number | undefined;
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Download, decrypt and verify the content from the server and write
|
|
14
14
|
* to the provided stream.
|
|
15
|
-
*
|
|
15
|
+
*
|
|
16
16
|
* @param onProgress - Callback that is called with the number of downloaded bytes
|
|
17
17
|
*/
|
|
18
|
-
writeToStream(streamFactory: WritableStream, onProgress
|
|
18
|
+
writeToStream(streamFactory: WritableStream, onProgress?: (downloadedBytes: number) => void): DownloadController;
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Same as `writeToStream` but without verification checks.
|
|
22
|
-
*
|
|
22
|
+
*
|
|
23
23
|
* Use this only for debugging purposes.
|
|
24
24
|
*/
|
|
25
|
-
unsafeWriteToStream(
|
|
25
|
+
unsafeWriteToStream(
|
|
26
|
+
streamFactory: WritableStream,
|
|
27
|
+
onProgress?: (downloadedBytes: number) => void,
|
|
28
|
+
): DownloadController;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
export interface DownloadController {
|
|
29
|
-
pause(): void
|
|
30
|
-
resume(): void
|
|
31
|
-
completion(): Promise<void
|
|
32
|
+
pause(): void;
|
|
33
|
+
resume(): void;
|
|
34
|
+
completion(): Promise<void>;
|
|
32
35
|
}
|
package/src/interface/events.ts
CHANGED
|
@@ -1,30 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export type NodeEvent = {
|
|
8
|
-
type: 'update',
|
|
9
|
-
uid: string,
|
|
10
|
-
node: MaybeNode,
|
|
11
|
-
} | {
|
|
12
|
-
type: 'remove',
|
|
13
|
-
uid: string,
|
|
1
|
+
export enum SDKEvent {
|
|
2
|
+
TransfersPaused = 'transfersPaused',
|
|
3
|
+
TransfersResumed = 'transfersResumed',
|
|
4
|
+
RequestsThrottled = 'requestsThrottled',
|
|
5
|
+
RequestsUnthrottled = 'requestsUnthrottled',
|
|
14
6
|
}
|
|
15
7
|
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
uid: string,
|
|
19
|
-
device: Device,
|
|
20
|
-
} | {
|
|
21
|
-
type: 'remove',
|
|
22
|
-
uid: string,
|
|
8
|
+
export interface LatestEventIdProvider {
|
|
9
|
+
getLatestEventId(treeEventScopeId: string): string | null;
|
|
23
10
|
}
|
|
24
11
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Callback that accepts list of Drive events and flag whether no
|
|
14
|
+
* event should be processed, but rather full cache refresh should be
|
|
15
|
+
* performed.
|
|
16
|
+
*
|
|
17
|
+
* Drive listeners should never throw and be wrapped in a try-catch loop.
|
|
18
|
+
*
|
|
19
|
+
* @param fullRefreshVolumeId - ID of the volume that should be fully refreshed.
|
|
20
|
+
*/
|
|
21
|
+
export type DriveListener = (event: DriveEvent) => Promise<void>;
|
|
22
|
+
|
|
23
|
+
export type DriveEvent =
|
|
24
|
+
| NodeEvent
|
|
25
|
+
| FastForwardEvent
|
|
26
|
+
| TreeRefreshEvent
|
|
27
|
+
| TreeRemovalEvent
|
|
28
|
+
| FastForwardEvent
|
|
29
|
+
| SharedWithMeUpdated;
|
|
30
|
+
|
|
31
|
+
export type NodeEvent =
|
|
32
|
+
| {
|
|
33
|
+
type: DriveEventType.NodeCreated | DriveEventType.NodeUpdated;
|
|
34
|
+
nodeUid: string;
|
|
35
|
+
parentNodeUid?: string;
|
|
36
|
+
isTrashed: boolean;
|
|
37
|
+
isShared: boolean;
|
|
38
|
+
treeEventScopeId: string;
|
|
39
|
+
eventId: string;
|
|
40
|
+
}
|
|
41
|
+
| {
|
|
42
|
+
type: DriveEventType.NodeDeleted;
|
|
43
|
+
nodeUid: string;
|
|
44
|
+
parentNodeUid?: string;
|
|
45
|
+
treeEventScopeId: string;
|
|
46
|
+
eventId: string;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export type FastForwardEvent = {
|
|
50
|
+
type: DriveEventType.FastForward;
|
|
51
|
+
treeEventScopeId: string;
|
|
52
|
+
eventId: string;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export type TreeRefreshEvent = {
|
|
56
|
+
type: DriveEventType.TreeRefresh;
|
|
57
|
+
treeEventScopeId: string;
|
|
58
|
+
eventId: string;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export type TreeRemovalEvent = {
|
|
62
|
+
type: DriveEventType.TreeRemove;
|
|
63
|
+
treeEventScopeId: string;
|
|
64
|
+
eventId: 'none';
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export type SharedWithMeUpdated = {
|
|
68
|
+
type: DriveEventType.SharedWithMeUpdated;
|
|
69
|
+
eventId: string;
|
|
70
|
+
treeEventScopeId: 'core';
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export enum DriveEventType {
|
|
74
|
+
NodeCreated = 'node_created',
|
|
75
|
+
NodeUpdated = 'node_updated',
|
|
76
|
+
NodeDeleted = 'node_deleted',
|
|
77
|
+
SharedWithMeUpdated = 'shared_with_me_updated',
|
|
78
|
+
TreeRefresh = 'tree_refresh',
|
|
79
|
+
TreeRemove = 'tree_remove',
|
|
80
|
+
FastForward = 'fast_forward',
|
|
30
81
|
}
|