@protontech/drive-sdk 0.1.0 → 0.1.2
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/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.js +0 -1
- package/dist/cache/nullCache.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 +3 -3
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/diagnostic/eventsGenerator.js +1 -1
- package/dist/diagnostic/eventsGenerator.js.map +1 -1
- package/dist/diagnostic/httpClient.d.ts +1 -1
- package/dist/diagnostic/httpClient.js.map +1 -1
- package/dist/diagnostic/index.d.ts +3 -3
- package/dist/diagnostic/index.js.map +1 -1
- package/dist/diagnostic/integrityVerificationStream.js +1 -1
- package/dist/diagnostic/integrityVerificationStream.js.map +1 -1
- package/dist/diagnostic/interface.d.ts +2 -2
- package/dist/diagnostic/sdkDiagnostic.d.ts +3 -3
- package/dist/diagnostic/sdkDiagnostic.js +8 -2
- package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
- package/dist/diagnostic/sdkDiagnosticFull.d.ts +4 -4
- package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -1
- package/dist/diagnostic/telemetry.js.map +1 -1
- package/dist/diagnostic/zipGenerators.js +2 -2
- package/dist/diagnostic/zipGenerators.js.map +1 -1
- package/dist/diagnostic/zipGenerators.test.js +1 -1
- package/dist/diagnostic/zipGenerators.test.js.map +1 -1
- package/dist/interface/events.d.ts +2 -4
- package/dist/interface/events.js.map +1 -1
- package/dist/interface/index.d.ts +5 -5
- package/dist/interface/index.js +0 -1
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/result.js.map +1 -1
- package/dist/interface/sharing.d.ts +1 -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 +1 -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 +0 -1
- 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 +4 -4
- 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 +2 -2
- package/dist/internal/events/apiService.js +9 -5
- package/dist/internal/events/apiService.js.map +1 -1
- package/dist/internal/events/coreEventManager.d.ts +3 -3
- package/dist/internal/events/coreEventManager.js.map +1 -1
- package/dist/internal/events/coreEventManager.test.js +14 -14
- package/dist/internal/events/eventManager.d.ts +2 -1
- package/dist/internal/events/eventManager.js +9 -1
- package/dist/internal/events/eventManager.js.map +1 -1
- package/dist/internal/events/eventManager.test.js +84 -60
- package/dist/internal/events/eventManager.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +10 -9
- package/dist/internal/events/index.js +38 -32
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/events/interface.d.ts +1 -1
- package/dist/internal/events/interface.js +0 -1
- package/dist/internal/events/interface.js.map +1 -1
- package/dist/internal/events/volumeEventManager.d.ts +3 -3
- package/dist/internal/events/volumeEventManager.js.map +1 -1
- package/dist/internal/events/volumeEventManager.test.js +55 -55
- package/dist/internal/events/volumeEventManager.test.js.map +1 -1
- 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 +5 -5
- package/dist/internal/nodes/cache.js +14 -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 +3 -3
- 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 +3 -3
- package/dist/internal/nodes/events.js +7 -7
- package/dist/internal/nodes/events.js.map +1 -1
- package/dist/internal/nodes/events.test.js +27 -21
- 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 +10 -10
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/index.test.d.ts +1 -0
- package/dist/internal/nodes/index.test.js +106 -0
- package/dist/internal/nodes/index.test.js.map +1 -0
- package/dist/internal/nodes/interface.d.ts +2 -2
- package/dist/internal/nodes/nodesAccess.d.ts +7 -7
- package/dist/internal/nodes/nodesAccess.js +28 -16
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +39 -13
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +6 -6
- package/dist/internal/nodes/nodesManagement.js +9 -7
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +9 -9
- 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 +2 -2
- package/dist/internal/shares/cache.js +12 -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 +7 -7
- 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 +4 -3
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/cache.d.ts +2 -1
- package/dist/internal/sharing/cache.js +9 -0
- package/dist/internal/sharing/cache.js.map +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 -5
- 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 +5 -4
- package/dist/internal/sharing/events.js +28 -19
- package/dist/internal/sharing/events.js.map +1 -1
- package/dist/internal/sharing/events.test.js +101 -88
- package/dist/internal/sharing/events.test.js.map +1 -1
- package/dist/internal/sharing/index.d.ts +6 -6
- package/dist/internal/sharing/index.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +5 -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 +4 -4
- package/dist/internal/sharing/sharingManagement.js +5 -7
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +297 -248
- 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 +3 -3
- package/dist/internal/upload/apiService.js +1 -1
- 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 +5 -5
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +4 -3
- package/dist/internal/upload/manager.d.ts +5 -5
- package/dist/internal/upload/manager.js +15 -9
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +139 -128
- 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 -7
- 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 +8 -8
- package/dist/protonDriveClient.js +12 -9
- package/dist/protonDriveClient.js.map +1 -1
- 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.d.ts +1 -1
- package/dist/transformers.js +5 -2
- package/dist/transformers.js.map +1 -1
- package/package.json +1 -1
- package/src/cache/interface.ts +22 -22
- package/src/cache/memoryCache.test.ts +7 -7
- package/src/cache/memoryCache.ts +4 -4
- package/src/cache/nullCache.ts +1 -1
- package/src/config.ts +5 -5
- 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 +74 -94
- package/src/crypto/utils.ts +1 -1
- package/src/diagnostic/eventsGenerator.ts +2 -2
- package/src/diagnostic/httpClient.ts +6 -2
- package/src/diagnostic/index.ts +12 -10
- package/src/diagnostic/integrityVerificationStream.ts +3 -4
- package/src/diagnostic/interface.ts +81 -81
- package/src/diagnostic/sdkDiagnostic.ts +35 -24
- package/src/diagnostic/sdkDiagnosticFull.ts +16 -19
- package/src/diagnostic/telemetry.ts +4 -1
- package/src/diagnostic/zipGenerators.test.ts +1 -1
- package/src/diagnostic/zipGenerators.ts +3 -3
- package/src/errors.ts +21 -21
- 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 +4 -4
- package/src/interface/devices.ts +6 -6
- package/src/interface/download.ts +12 -9
- package/src/interface/events.ts +45 -39
- package/src/interface/httpClient.ts +11 -11
- package/src/interface/index.ts +76 -19
- package/src/interface/nodes.ts +47 -49
- package/src/interface/result.ts +1 -3
- package/src/interface/sharing.ts +60 -57
- package/src/interface/telemetry.ts +74 -74
- package/src/interface/thumbnail.ts +5 -6
- package/src/interface/upload.ts +20 -12
- 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 +66 -49
- package/src/internal/download/cryptoService.ts +34 -18
- package/src/internal/download/fileDownloader.test.ts +25 -9
- package/src/internal/download/fileDownloader.ts +36 -18
- 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 +30 -17
- package/src/internal/events/coreEventManager.test.ts +18 -18
- package/src/internal/events/coreEventManager.ts +9 -6
- package/src/internal/events/eventManager.test.ts +108 -82
- package/src/internal/events/eventManager.ts +16 -5
- package/src/internal/events/index.ts +75 -47
- package/src/internal/events/interface.ts +47 -39
- package/src/internal/events/volumeEventManager.test.ts +61 -65
- package/src/internal/events/volumeEventManager.ts +18 -9
- 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 +60 -44
- 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 +170 -88
- package/src/internal/nodes/events.test.ts +38 -28
- package/src/internal/nodes/events.ts +13 -12
- package/src/internal/nodes/extendedAttributes.test.ts +28 -24
- package/src/internal/nodes/extendedAttributes.ts +20 -15
- package/src/internal/nodes/index.test.ts +133 -0
- package/src/internal/nodes/index.ts +27 -15
- package/src/internal/nodes/interface.ts +42 -29
- package/src/internal/nodes/nodesAccess.test.ts +124 -58
- package/src/internal/nodes/nodesAccess.ts +73 -49
- package/src/internal/nodes/nodesManagement.test.ts +32 -31
- package/src/internal/nodes/nodesManagement.ts +39 -32
- 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 +21 -12
- 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 +19 -19
- package/src/internal/sharing/apiService.ts +282 -175
- package/src/internal/sharing/cache.test.ts +35 -35
- package/src/internal/sharing/cache.ts +11 -2
- package/src/internal/sharing/cryptoService.test.ts +58 -46
- package/src/internal/sharing/cryptoService.ts +121 -84
- package/src/internal/sharing/events.test.ts +113 -102
- package/src/internal/sharing/events.ts +42 -24
- package/src/internal/sharing/index.ts +22 -11
- package/src/internal/sharing/interface.ts +40 -40
- package/src/internal/sharing/sharingAccess.test.ts +71 -65
- package/src/internal/sharing/sharingAccess.ts +39 -21
- package/src/internal/sharing/sharingManagement.test.ts +398 -298
- package/src/internal/sharing/sharingManagement.ts +138 -65
- package/src/internal/uids.ts +1 -1
- package/src/internal/upload/apiService.ts +167 -117
- 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 +13 -14
- package/src/internal/upload/interface.ts +79 -78
- package/src/internal/upload/manager.test.ts +170 -156
- package/src/internal/upload/manager.ts +66 -39
- package/src/internal/upload/queue.ts +3 -3
- package/src/internal/upload/streamUploader.test.ts +40 -26
- package/src/internal/upload/streamUploader.ts +87 -69
- 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 +121 -39
- package/src/protonDrivePhotosClient.ts +16 -10
- package/src/telemetry.ts +60 -52
- package/src/tests/logger.ts +1 -1
- package/src/tests/telemetry.ts +2 -2
- package/src/transformers.ts +29 -21
- package/src/version.ts +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DegradedNode, MaybeNode, MetricEvent } from
|
|
2
|
-
import { LogRecord } from
|
|
1
|
+
import { DegradedNode, MaybeNode, MetricEvent } from '../interface';
|
|
2
|
+
import { LogRecord } from '../telemetry';
|
|
3
3
|
|
|
4
4
|
export interface Diagnostic {
|
|
5
5
|
verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
|
|
@@ -7,11 +7,11 @@ export interface Diagnostic {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export type DiagnosticOptions = {
|
|
10
|
-
verifyContent?: boolean
|
|
11
|
-
verifyThumbnails?: boolean
|
|
12
|
-
}
|
|
10
|
+
verifyContent?: boolean;
|
|
11
|
+
verifyThumbnails?: boolean;
|
|
12
|
+
};
|
|
13
13
|
|
|
14
|
-
export type DiagnosticResult =
|
|
14
|
+
export type DiagnosticResult =
|
|
15
15
|
| FatalErrorResult
|
|
16
16
|
| SdkErrorResult
|
|
17
17
|
| HttpErrorResult
|
|
@@ -30,129 +30,129 @@ export type DiagnosticResult =
|
|
|
30
30
|
// Event representing that fatal error occurred during the diagnostic.
|
|
31
31
|
// This error prevents the diagnostic to finish.
|
|
32
32
|
export type FatalErrorResult = {
|
|
33
|
-
type: 'fatal_error'
|
|
34
|
-
message: string
|
|
35
|
-
error?: unknown
|
|
36
|
-
}
|
|
33
|
+
type: 'fatal_error';
|
|
34
|
+
message: string;
|
|
35
|
+
error?: unknown;
|
|
36
|
+
};
|
|
37
37
|
|
|
38
38
|
// Event representing that SDK call failed.
|
|
39
39
|
// It can be any throwable error from any SDK call. Normally no error should be thrown.
|
|
40
40
|
export type SdkErrorResult = {
|
|
41
|
-
type: 'sdk_error'
|
|
42
|
-
call: string
|
|
43
|
-
error?: unknown
|
|
44
|
-
}
|
|
41
|
+
type: 'sdk_error';
|
|
42
|
+
call: string;
|
|
43
|
+
error?: unknown;
|
|
44
|
+
};
|
|
45
45
|
|
|
46
46
|
// Event representing that HTTP call failed.
|
|
47
47
|
// It can be any call from the SDK, including validation error. Normally no error should be present.
|
|
48
48
|
export type HttpErrorResult = {
|
|
49
|
-
type: 'http_error'
|
|
49
|
+
type: 'http_error';
|
|
50
50
|
request: {
|
|
51
|
-
url: string
|
|
52
|
-
method: string
|
|
53
|
-
json: unknown
|
|
54
|
-
}
|
|
51
|
+
url: string;
|
|
52
|
+
method: string;
|
|
53
|
+
json: unknown;
|
|
54
|
+
};
|
|
55
55
|
// Error if the whole call failed (`fetch` failed).
|
|
56
|
-
error?: unknown
|
|
56
|
+
error?: unknown;
|
|
57
57
|
// Response if the response is not 2xx or 3xx.
|
|
58
58
|
response?: {
|
|
59
|
-
status: number
|
|
60
|
-
statusText: string
|
|
59
|
+
status: number;
|
|
60
|
+
statusText: string;
|
|
61
61
|
// Either json object or error if the response is not JSON.
|
|
62
|
-
json?: object
|
|
63
|
-
jsonError?: unknown
|
|
64
|
-
}
|
|
65
|
-
}
|
|
62
|
+
json?: object;
|
|
63
|
+
jsonError?: unknown;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
66
|
|
|
67
67
|
// Event representing that node has some decryption or other (e.g., invalid name) issues.
|
|
68
68
|
export type DegradedNodeResult = {
|
|
69
|
-
type: 'degraded_node'
|
|
70
|
-
nodeUid: string
|
|
71
|
-
node: DegradedNode
|
|
72
|
-
}
|
|
69
|
+
type: 'degraded_node';
|
|
70
|
+
nodeUid: string;
|
|
71
|
+
node: DegradedNode;
|
|
72
|
+
};
|
|
73
73
|
|
|
74
74
|
// Event representing that signature verification failing.
|
|
75
75
|
export type UnverifiedAuthorResult = {
|
|
76
|
-
type: 'unverified_author'
|
|
77
|
-
nodeUid: string
|
|
78
|
-
revisionUid?: string
|
|
79
|
-
authorType: string
|
|
80
|
-
claimedAuthor?: string
|
|
81
|
-
error: string
|
|
82
|
-
node: MaybeNode
|
|
83
|
-
}
|
|
76
|
+
type: 'unverified_author';
|
|
77
|
+
nodeUid: string;
|
|
78
|
+
revisionUid?: string;
|
|
79
|
+
authorType: string;
|
|
80
|
+
claimedAuthor?: string;
|
|
81
|
+
error: string;
|
|
82
|
+
node: MaybeNode;
|
|
83
|
+
};
|
|
84
84
|
|
|
85
85
|
// Event representing that field from the extended attributes is not valid format.
|
|
86
86
|
// Currently only `sha1` verification is supported.
|
|
87
87
|
export type ExtendedAttributesErrorResult = {
|
|
88
|
-
type: 'extended_attributes_error'
|
|
89
|
-
nodeUid: string
|
|
90
|
-
revisionUid?: string
|
|
91
|
-
field: 'sha1'
|
|
92
|
-
value: string
|
|
93
|
-
}
|
|
88
|
+
type: 'extended_attributes_error';
|
|
89
|
+
nodeUid: string;
|
|
90
|
+
revisionUid?: string;
|
|
91
|
+
field: 'sha1';
|
|
92
|
+
value: string;
|
|
93
|
+
};
|
|
94
94
|
|
|
95
95
|
// Event representing that field from the extended attributes is missing.
|
|
96
96
|
// Currently only `sha1` verification is supported.
|
|
97
97
|
export type ExtendedAttributesMissingFieldResult = {
|
|
98
|
-
type: 'extended_attributes_missing_field'
|
|
99
|
-
nodeUid: string
|
|
100
|
-
revisionUid?: string
|
|
101
|
-
missingField: 'sha1'
|
|
102
|
-
}
|
|
98
|
+
type: 'extended_attributes_missing_field';
|
|
99
|
+
nodeUid: string;
|
|
100
|
+
revisionUid?: string;
|
|
101
|
+
missingField: 'sha1';
|
|
102
|
+
};
|
|
103
103
|
|
|
104
104
|
// Event representing that file is missing the active revision.
|
|
105
105
|
export type ContentFileMissingRevisionResult = {
|
|
106
|
-
type: 'content_file_missing_revision'
|
|
107
|
-
nodeUid: string
|
|
108
|
-
revisionUid?: string
|
|
109
|
-
}
|
|
106
|
+
type: 'content_file_missing_revision';
|
|
107
|
+
nodeUid: string;
|
|
108
|
+
revisionUid?: string;
|
|
109
|
+
};
|
|
110
110
|
|
|
111
111
|
// Event representing that file content is not valid - either sha1 or size is not correct.
|
|
112
112
|
export type ContentIntegrityErrorResult = {
|
|
113
|
-
type: 'content_integrity_error'
|
|
114
|
-
nodeUid: string
|
|
115
|
-
revisionUid?: string
|
|
116
|
-
claimedSha1?: string
|
|
117
|
-
computedSha1?: string
|
|
118
|
-
claimedSizeInBytes?: number
|
|
119
|
-
computedSizeInBytes?: number
|
|
120
|
-
}
|
|
113
|
+
type: 'content_integrity_error';
|
|
114
|
+
nodeUid: string;
|
|
115
|
+
revisionUid?: string;
|
|
116
|
+
claimedSha1?: string;
|
|
117
|
+
computedSha1?: string;
|
|
118
|
+
claimedSizeInBytes?: number;
|
|
119
|
+
computedSizeInBytes?: number;
|
|
120
|
+
};
|
|
121
121
|
|
|
122
122
|
// Event representing that downloading the file content failed.
|
|
123
123
|
// This can be connection issue or server error. If its integrity issue,
|
|
124
124
|
// it should be reported as `ContentIntegrityErrorResult`.
|
|
125
125
|
export type ContentDownloadErrorResult = {
|
|
126
|
-
type: 'content_download_error'
|
|
127
|
-
nodeUid: string
|
|
128
|
-
revisionUid?: string
|
|
129
|
-
error: unknown
|
|
130
|
-
}
|
|
126
|
+
type: 'content_download_error';
|
|
127
|
+
nodeUid: string;
|
|
128
|
+
revisionUid?: string;
|
|
129
|
+
error: unknown;
|
|
130
|
+
};
|
|
131
131
|
|
|
132
132
|
// Event representing that getting the thumbnails failed.
|
|
133
133
|
// This can be connection issue or server error.
|
|
134
134
|
export type ThumbnailsErrorResult = {
|
|
135
|
-
type: 'thumbnails_error'
|
|
136
|
-
nodeUid: string
|
|
137
|
-
revisionUid?: string
|
|
138
|
-
message?: string
|
|
139
|
-
error?: unknown
|
|
140
|
-
}
|
|
135
|
+
type: 'thumbnails_error';
|
|
136
|
+
nodeUid: string;
|
|
137
|
+
revisionUid?: string;
|
|
138
|
+
message?: string;
|
|
139
|
+
error?: unknown;
|
|
140
|
+
};
|
|
141
141
|
|
|
142
142
|
// Event representing errors logged during the diagnostic.
|
|
143
143
|
export type LogErrorResult = {
|
|
144
|
-
type: 'log_error'
|
|
145
|
-
log: LogRecord
|
|
146
|
-
}
|
|
144
|
+
type: 'log_error';
|
|
145
|
+
log: LogRecord;
|
|
146
|
+
};
|
|
147
147
|
|
|
148
148
|
// Event representing warnings logged during the diagnostic.
|
|
149
149
|
export type LogWarningResult = {
|
|
150
|
-
type: 'log_warning'
|
|
151
|
-
log: LogRecord
|
|
152
|
-
}
|
|
150
|
+
type: 'log_warning';
|
|
151
|
+
log: LogRecord;
|
|
152
|
+
};
|
|
153
153
|
|
|
154
154
|
// Event representing metrics logged during the diagnostic.
|
|
155
155
|
export type MetricResult = {
|
|
156
|
-
type: 'metric'
|
|
157
|
-
event: MetricEvent
|
|
158
|
-
}
|
|
156
|
+
type: 'metric';
|
|
157
|
+
event: MetricEvent;
|
|
158
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Author, FileDownloader, MaybeNode, NodeType, Revision, ThumbnailType } from
|
|
2
|
-
import { ProtonDriveClient } from
|
|
3
|
-
import { Diagnostic, DiagnosticOptions, DiagnosticResult } from
|
|
4
|
-
import { IntegrityVerificationStream } from
|
|
1
|
+
import { Author, FileDownloader, MaybeNode, NodeType, Revision, ThumbnailType } from '../interface';
|
|
2
|
+
import { ProtonDriveClient } from '../protonDriveClient';
|
|
3
|
+
import { Diagnostic, DiagnosticOptions, DiagnosticResult } from './interface';
|
|
4
|
+
import { IntegrityVerificationStream } from './integrityVerificationStream';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Diagnostic tool that uses SDK to traverse the node tree and verify
|
|
@@ -15,7 +15,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
15
15
|
this.protonDriveClient = protonDriveClient;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
async*
|
|
18
|
+
async *verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
|
|
19
19
|
let myFilesRootFolder: MaybeNode;
|
|
20
20
|
|
|
21
21
|
try {
|
|
@@ -32,7 +32,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
32
32
|
yield* this.verifyNodeTree(myFilesRootFolder, options);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
async*
|
|
35
|
+
async *verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
|
|
36
36
|
const isFolder = getNodeType(node) === NodeType.Folder;
|
|
37
37
|
|
|
38
38
|
yield* this.verifyNode(node, options);
|
|
@@ -42,7 +42,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
private async*
|
|
45
|
+
private async *verifyNode(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
|
|
46
46
|
const nodeUid = node.ok ? node.value.uid : node.error.uid;
|
|
47
47
|
|
|
48
48
|
if (!node.ok) {
|
|
@@ -57,10 +57,16 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
57
57
|
const nodeInfo = {
|
|
58
58
|
...getNodeUids(node),
|
|
59
59
|
node,
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
yield* this.verifyAuthor(node.ok ? node.value.keyAuthor : node.error.keyAuthor, {
|
|
63
|
-
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
yield* this.verifyAuthor(node.ok ? node.value.keyAuthor : node.error.keyAuthor, {
|
|
63
|
+
...nodeInfo,
|
|
64
|
+
authorType: 'key',
|
|
65
|
+
});
|
|
66
|
+
yield* this.verifyAuthor(node.ok ? node.value.nameAuthor : node.error.nameAuthor, {
|
|
67
|
+
...nodeInfo,
|
|
68
|
+
authorType: 'name',
|
|
69
|
+
});
|
|
64
70
|
if (activeRevision) {
|
|
65
71
|
yield* this.verifyAuthor(activeRevision.contentAuthor, { ...nodeInfo, authorType: 'content' });
|
|
66
72
|
}
|
|
@@ -75,7 +81,10 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
|
|
78
|
-
private async*
|
|
84
|
+
private async *verifyAuthor(
|
|
85
|
+
author: Author,
|
|
86
|
+
info: { nodeUid: string; authorType: string; revisionUid?: string; node: MaybeNode },
|
|
87
|
+
): AsyncGenerator<DiagnosticResult> {
|
|
79
88
|
if (!author.ok) {
|
|
80
89
|
yield {
|
|
81
90
|
type: 'unverified_author',
|
|
@@ -86,7 +95,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
86
95
|
}
|
|
87
96
|
}
|
|
88
97
|
|
|
89
|
-
private async*
|
|
98
|
+
private async *verifyFileExtendedAttributes(node: MaybeNode): AsyncGenerator<DiagnosticResult> {
|
|
90
99
|
const activeRevision = getActiveRevision(node);
|
|
91
100
|
|
|
92
101
|
const expectedAttributes = getNodeType(node) === NodeType.File;
|
|
@@ -98,7 +107,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
98
107
|
...getNodeUids(node),
|
|
99
108
|
field: 'sha1',
|
|
100
109
|
value: claimedSha1,
|
|
101
|
-
}
|
|
110
|
+
};
|
|
102
111
|
}
|
|
103
112
|
|
|
104
113
|
if (expectedAttributes && !claimedSha1) {
|
|
@@ -106,11 +115,11 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
106
115
|
type: 'extended_attributes_missing_field',
|
|
107
116
|
...getNodeUids(node),
|
|
108
117
|
missingField: 'sha1',
|
|
109
|
-
}
|
|
118
|
+
};
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
121
|
|
|
113
|
-
private async*
|
|
122
|
+
private async *verifyContent(node: MaybeNode): AsyncGenerator<DiagnosticResult> {
|
|
114
123
|
if (getNodeType(node) !== NodeType.File) {
|
|
115
124
|
return;
|
|
116
125
|
}
|
|
@@ -119,7 +128,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
119
128
|
yield {
|
|
120
129
|
type: 'content_file_missing_revision',
|
|
121
130
|
nodeUid: node.ok ? node.value.uid : node.error.uid,
|
|
122
|
-
}
|
|
131
|
+
};
|
|
123
132
|
return;
|
|
124
133
|
}
|
|
125
134
|
|
|
@@ -165,7 +174,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
165
174
|
}
|
|
166
175
|
}
|
|
167
176
|
|
|
168
|
-
private async*
|
|
177
|
+
private async *verifyThumbnails(node: MaybeNode): AsyncGenerator<DiagnosticResult> {
|
|
169
178
|
if (getNodeType(node) !== NodeType.File) {
|
|
170
179
|
return;
|
|
171
180
|
}
|
|
@@ -173,14 +182,16 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
173
182
|
const nodeUid = node.ok ? node.value.uid : node.error.uid;
|
|
174
183
|
|
|
175
184
|
try {
|
|
176
|
-
const result = await Array.fromAsync(
|
|
185
|
+
const result = await Array.fromAsync(
|
|
186
|
+
this.protonDriveClient.iterateThumbnails([nodeUid], ThumbnailType.Type1),
|
|
187
|
+
);
|
|
177
188
|
|
|
178
189
|
if (result.length === 0) {
|
|
179
190
|
yield {
|
|
180
191
|
type: 'sdk_error',
|
|
181
192
|
call: `iterateThumbnails(${nodeUid})`,
|
|
182
193
|
error: new Error('No thumbnails found'),
|
|
183
|
-
}
|
|
194
|
+
};
|
|
184
195
|
}
|
|
185
196
|
// TODO: We should have better way to check if the thumbnail is not expected.
|
|
186
197
|
if (!result[0].ok && result[0].error !== 'Node has no thumbnail') {
|
|
@@ -188,18 +199,18 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
188
199
|
type: 'thumbnails_error',
|
|
189
200
|
nodeUid,
|
|
190
201
|
error: result[0].error,
|
|
191
|
-
}
|
|
202
|
+
};
|
|
192
203
|
}
|
|
193
204
|
} catch (error: unknown) {
|
|
194
205
|
yield {
|
|
195
206
|
type: 'sdk_error',
|
|
196
207
|
call: `iterateThumbnails(${nodeUid})`,
|
|
197
208
|
error,
|
|
198
|
-
}
|
|
209
|
+
};
|
|
199
210
|
}
|
|
200
211
|
}
|
|
201
212
|
|
|
202
|
-
private async*
|
|
213
|
+
private async *verifyNodeChildren(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
|
|
203
214
|
const nodeUid = node.ok ? node.value.uid : node.error.uid;
|
|
204
215
|
try {
|
|
205
216
|
for await (const child of this.protonDriveClient.iterateFolderChildren(node)) {
|
|
@@ -215,7 +226,7 @@ export class SDKDiagnostic implements Diagnostic {
|
|
|
215
226
|
}
|
|
216
227
|
}
|
|
217
228
|
|
|
218
|
-
function getNodeUids(node: MaybeNode): { nodeUid: string
|
|
229
|
+
function getNodeUids(node: MaybeNode): { nodeUid: string; revisionUid?: string } {
|
|
219
230
|
const activeRevision = getActiveRevision(node);
|
|
220
231
|
return {
|
|
221
232
|
nodeUid: node.ok ? node.value.uid : node.error.uid,
|
|
@@ -1,40 +1,37 @@
|
|
|
1
|
-
import { MaybeNode } from
|
|
2
|
-
import { DiagnosticHTTPClient } from
|
|
3
|
-
import { Diagnostic, DiagnosticOptions, DiagnosticResult } from
|
|
4
|
-
import { DiagnosticTelemetry } from
|
|
5
|
-
import { zipGenerators } from
|
|
1
|
+
import { MaybeNode } from '../interface';
|
|
2
|
+
import { DiagnosticHTTPClient } from './httpClient';
|
|
3
|
+
import { Diagnostic, DiagnosticOptions, DiagnosticResult } from './interface';
|
|
4
|
+
import { DiagnosticTelemetry } from './telemetry';
|
|
5
|
+
import { zipGenerators } from './zipGenerators';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Diagnostic tool that produces full diagnostic, including logs and metrics
|
|
9
9
|
* by reading the events from the telemetry and HTTP client.
|
|
10
10
|
*/
|
|
11
11
|
export class FullSDKDiagnostic implements Diagnostic {
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(
|
|
13
|
+
private diagnostic: Diagnostic,
|
|
14
|
+
private telemetry: DiagnosticTelemetry,
|
|
15
|
+
private httpClient: DiagnosticHTTPClient,
|
|
16
|
+
) {
|
|
13
17
|
this.diagnostic = diagnostic;
|
|
14
18
|
this.telemetry = telemetry;
|
|
15
19
|
this.httpClient = httpClient;
|
|
16
20
|
}
|
|
17
21
|
|
|
18
|
-
async*
|
|
22
|
+
async *verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
|
|
19
23
|
yield* this.yieldEvents(this.diagnostic.verifyMyFiles(options));
|
|
20
24
|
}
|
|
21
25
|
|
|
22
|
-
async*
|
|
26
|
+
async *verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
|
|
23
27
|
yield* this.yieldEvents(this.diagnostic.verifyNodeTree(node, options));
|
|
24
28
|
}
|
|
25
29
|
|
|
26
|
-
private async*
|
|
27
|
-
yield* zipGenerators(
|
|
28
|
-
generator,
|
|
29
|
-
this.internalGenerator(),
|
|
30
|
-
{ stopOnFirstDone: true },
|
|
31
|
-
);
|
|
30
|
+
private async *yieldEvents(generator: AsyncGenerator<DiagnosticResult>): AsyncGenerator<DiagnosticResult> {
|
|
31
|
+
yield* zipGenerators(generator, this.internalGenerator(), { stopOnFirstDone: true });
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
private async*
|
|
35
|
-
yield* zipGenerators(
|
|
36
|
-
this.telemetry.iterateEvents(),
|
|
37
|
-
this.httpClient.iterateEvents(),
|
|
38
|
-
);
|
|
34
|
+
private async *internalGenerator(): AsyncGenerator<DiagnosticResult> {
|
|
35
|
+
yield* zipGenerators(this.telemetry.iterateEvents(), this.httpClient.iterateEvents());
|
|
39
36
|
}
|
|
40
37
|
}
|
|
@@ -36,7 +36,10 @@ export class DiagnosticTelemetry extends EventsGenerator {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
class Logger {
|
|
39
|
-
constructor(
|
|
39
|
+
constructor(
|
|
40
|
+
private name: string,
|
|
41
|
+
private callback?: (log: LogRecord) => void,
|
|
42
|
+
) {
|
|
40
43
|
this.name = name;
|
|
41
44
|
this.callback = callback;
|
|
42
45
|
}
|
|
@@ -2,7 +2,7 @@ import { zipGenerators } from './zipGenerators';
|
|
|
2
2
|
|
|
3
3
|
async function* createTimedGenerator<T>(values: { value: T; delay: number }[]): AsyncGenerator<T> {
|
|
4
4
|
for (const { value, delay } of values) {
|
|
5
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
5
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
6
6
|
yield value;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
@@ -8,7 +8,7 @@ export async function* zipGenerators<T, U>(
|
|
|
8
8
|
genA: AsyncGenerator<T>,
|
|
9
9
|
genB: AsyncGenerator<U>,
|
|
10
10
|
options?: {
|
|
11
|
-
stopOnFirstDone?: boolean
|
|
11
|
+
stopOnFirstDone?: boolean;
|
|
12
12
|
},
|
|
13
13
|
): AsyncGenerator<T | U> {
|
|
14
14
|
const { stopOnFirstDone = false } = options || {};
|
|
@@ -21,8 +21,8 @@ export async function* zipGenerators<T, U>(
|
|
|
21
21
|
|
|
22
22
|
while (promiseA && promiseB) {
|
|
23
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 }))
|
|
24
|
+
promiseA.then((res) => ({ source: 'A' as const, result: res })),
|
|
25
|
+
promiseB.then((res) => ({ source: 'B' as const, result: res })),
|
|
26
26
|
]);
|
|
27
27
|
|
|
28
28
|
if (result.source === 'A') {
|
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`
|
|
@@ -86,11 +86,11 @@ export class NodeAlreadyExistsValidationError extends ValidationError {
|
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
* Error thrown when the API call fails.
|
|
89
|
-
*
|
|
89
|
+
*
|
|
90
90
|
* This error covers both HTTP errors and API errors. SDK automatically
|
|
91
91
|
* retries the request before the error is thrown. The sepcific algorithm
|
|
92
92
|
* used for retries depends on the type of the error.
|
|
93
|
-
*
|
|
93
|
+
*
|
|
94
94
|
* Client should not retry the request when this error is thrown.
|
|
95
95
|
*/
|
|
96
96
|
export class ServerError extends ProtonDriveError {
|
|
@@ -98,13 +98,13 @@ export class ServerError extends ProtonDriveError {
|
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
100
|
* HTTP status code of the response.
|
|
101
|
-
*
|
|
101
|
+
*
|
|
102
102
|
* Use only for debugging purposes.
|
|
103
103
|
*/
|
|
104
104
|
public readonly statusCode?: number;
|
|
105
105
|
/**
|
|
106
106
|
* Internal API code.
|
|
107
|
-
*
|
|
107
|
+
*
|
|
108
108
|
* Use only for debugging purposes.
|
|
109
109
|
*/
|
|
110
110
|
public readonly code?: number;
|
|
@@ -112,16 +112,16 @@ export class ServerError extends ProtonDriveError {
|
|
|
112
112
|
|
|
113
113
|
/**
|
|
114
114
|
* Error thrown when the client makes too many requests to the API.
|
|
115
|
-
*
|
|
115
|
+
*
|
|
116
116
|
* SDK is configured to stay below the rate limits, but it can still happen if
|
|
117
117
|
* client is running multiple SDKs in parallel, or if the rate limits are
|
|
118
118
|
* changed on the server side.
|
|
119
|
-
*
|
|
119
|
+
*
|
|
120
120
|
* SDK automatically retries the request before the error is thrown after
|
|
121
121
|
* waiting for the required time specified by the server.
|
|
122
|
-
*
|
|
122
|
+
*
|
|
123
123
|
* Client should slow down calling SDK when this error is thrown.
|
|
124
|
-
*
|
|
124
|
+
*
|
|
125
125
|
* You can be also notified about the rate limits by the `requestsThrottled`
|
|
126
126
|
* event. See `onMessage` method on the SDK class for more details.
|
|
127
127
|
*/
|
|
@@ -133,9 +133,9 @@ export class RateLimitedError extends ServerError {
|
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
135
|
* Error thrown when the client is not connected to the internet.
|
|
136
|
-
*
|
|
136
|
+
*
|
|
137
137
|
* Client should check the internet connection when this error is thrown.
|
|
138
|
-
*
|
|
138
|
+
*
|
|
139
139
|
* You can also be notified about the connection status by the `offline` event
|
|
140
140
|
* See `onMessage` method on the SDK class for more details.
|
|
141
141
|
*/
|
|
@@ -145,9 +145,9 @@ export class ConnectionError extends ProtonDriveError {
|
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
147
|
* Error thrown when the decryption fails.
|
|
148
|
-
*
|
|
148
|
+
*
|
|
149
149
|
* Client should report this error to the user and report bug report.
|
|
150
|
-
*
|
|
150
|
+
*
|
|
151
151
|
* In most cases, there is no decryption error. Every decryption error should
|
|
152
152
|
* be not exposed but set as empty value on the node, for example. But in the
|
|
153
153
|
* case of the file content, if block cannot be decrypted, decryption error
|
|
@@ -159,9 +159,9 @@ export class DecryptionError extends ProtonDriveError {
|
|
|
159
159
|
|
|
160
160
|
/**
|
|
161
161
|
* Error thrown when the data integrity check fails.
|
|
162
|
-
*
|
|
162
|
+
*
|
|
163
163
|
* Client should report this error to the user and report bug report.
|
|
164
|
-
*
|
|
164
|
+
*
|
|
165
165
|
* For example, it can happen when hashes don't match, etc. In some cases,
|
|
166
166
|
* SDK allows to run command without verification checks for debug purposes.
|
|
167
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).
|