@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,20 +1,24 @@
|
|
|
1
|
-
import { MemoryCache } from
|
|
2
|
-
import { NodeType, MemberRole, RevisionState, resultOk, Result } from
|
|
3
|
-
import { getMockLogger } from
|
|
4
|
-
import { CACHE_TAG_KEYS, NodesCache } from
|
|
5
|
-
import { DecryptedNode, DecryptedRevision } from
|
|
6
|
-
|
|
7
|
-
function generateNode(
|
|
1
|
+
import { MemoryCache } from '../../cache';
|
|
2
|
+
import { NodeType, MemberRole, RevisionState, resultOk, Result } from '../../interface';
|
|
3
|
+
import { getMockLogger } from '../../tests/logger';
|
|
4
|
+
import { CACHE_TAG_KEYS, NodesCache } from './cache';
|
|
5
|
+
import { DecryptedNode, DecryptedRevision } from './interface';
|
|
6
|
+
|
|
7
|
+
function generateNode(
|
|
8
|
+
uid: string,
|
|
9
|
+
parentUid = 'root',
|
|
10
|
+
params: Partial<DecryptedNode> & { volumeId?: string } = {},
|
|
11
|
+
): DecryptedNode {
|
|
8
12
|
return {
|
|
9
|
-
uid: `${params.volumeId ||
|
|
10
|
-
parentUid: `${params.volumeId ||
|
|
13
|
+
uid: `${params.volumeId || 'volumeId'}~:${uid}`,
|
|
14
|
+
parentUid: `${params.volumeId || 'volumeId'}~:${parentUid}`,
|
|
11
15
|
directMemberRole: MemberRole.Admin,
|
|
12
16
|
type: NodeType.File,
|
|
13
|
-
mediaType:
|
|
17
|
+
mediaType: 'text',
|
|
14
18
|
isShared: false,
|
|
15
19
|
creationTime: new Date(),
|
|
16
20
|
trashTime: undefined,
|
|
17
|
-
volumeId:
|
|
21
|
+
volumeId: 'volumeId',
|
|
18
22
|
isStale: false,
|
|
19
23
|
activeRevision: undefined,
|
|
20
24
|
folder: undefined,
|
|
@@ -108,7 +112,7 @@ describe('nodesCache', () => {
|
|
|
108
112
|
creationTime: new Date('2021-01-01'),
|
|
109
113
|
storageSize: 100,
|
|
110
114
|
contentAuthor: resultOk('test@test.com'),
|
|
111
|
-
claimedModificationTime: new Date('2021-02-01')
|
|
115
|
+
claimedModificationTime: new Date('2021-02-01'),
|
|
112
116
|
});
|
|
113
117
|
const node = generateNode('node1', '', { activeRevision });
|
|
114
118
|
|
|
@@ -135,7 +139,9 @@ describe('nodesCache', () => {
|
|
|
135
139
|
await cache.getNode('badObject');
|
|
136
140
|
fail('Should have thrown an error');
|
|
137
141
|
} catch (error) {
|
|
138
|
-
expect(`${error}`).toBe(
|
|
142
|
+
expect(`${error}`).toBe(
|
|
143
|
+
'Error: Failed to deserialise node: Unexpected token \'a\', \"aaa\" is not valid JSON',
|
|
144
|
+
);
|
|
139
145
|
}
|
|
140
146
|
|
|
141
147
|
try {
|
|
@@ -153,7 +159,7 @@ describe('nodesCache', () => {
|
|
|
153
159
|
cache,
|
|
154
160
|
['node1', 'node1a', 'node1b', 'node1c', 'node1c-alpha', 'node1c-beta', 'node2', 'node2a', 'node2b'],
|
|
155
161
|
['node3'],
|
|
156
|
-
)
|
|
162
|
+
);
|
|
157
163
|
});
|
|
158
164
|
|
|
159
165
|
it('should remove node and its children', async () => {
|
|
@@ -162,8 +168,8 @@ describe('nodesCache', () => {
|
|
|
162
168
|
await verifyNodesCache(
|
|
163
169
|
cache,
|
|
164
170
|
['node1', 'node1a', 'node1b', 'node1c', 'node1c-alpha', 'node1c-beta', 'node3'],
|
|
165
|
-
['node2', 'node2a', 'node2b'
|
|
166
|
-
)
|
|
171
|
+
['node2', 'node2a', 'node2b'],
|
|
172
|
+
);
|
|
167
173
|
});
|
|
168
174
|
|
|
169
175
|
it('should remove node and its children recursively', async () => {
|
|
@@ -198,9 +204,21 @@ describe('nodesCache', () => {
|
|
|
198
204
|
expect(nodeUids).toStrictEqual(['volumeId~:node1', 'volumeId~:node2', 'volumeId~:node3']);
|
|
199
205
|
await verifyNodesCache(
|
|
200
206
|
cache,
|
|
201
|
-
[
|
|
207
|
+
[
|
|
208
|
+
'root',
|
|
209
|
+
'node1',
|
|
210
|
+
'node1a',
|
|
211
|
+
'node1b',
|
|
212
|
+
'node1c',
|
|
213
|
+
'node1c-alpha',
|
|
214
|
+
'node1c-beta',
|
|
215
|
+
'node2',
|
|
216
|
+
'node2a',
|
|
217
|
+
'node2b',
|
|
218
|
+
'node3',
|
|
219
|
+
],
|
|
202
220
|
['badObject'],
|
|
203
|
-
)
|
|
221
|
+
);
|
|
204
222
|
});
|
|
205
223
|
|
|
206
224
|
it('should iterate trashed nodes', async () => {
|
|
@@ -224,8 +242,18 @@ describe('nodesCache', () => {
|
|
|
224
242
|
await generateTreeStructure(cache);
|
|
225
243
|
await cache.setNodesStaleFromVolume('volumeId');
|
|
226
244
|
|
|
227
|
-
const staleNodeUids = [
|
|
228
|
-
|
|
245
|
+
const staleNodeUids = [
|
|
246
|
+
'node1',
|
|
247
|
+
'node1a',
|
|
248
|
+
'node1b',
|
|
249
|
+
'node1c',
|
|
250
|
+
'node1c-alpha',
|
|
251
|
+
'node1c-beta',
|
|
252
|
+
'node2',
|
|
253
|
+
'node2a',
|
|
254
|
+
'node2b',
|
|
255
|
+
'node3',
|
|
256
|
+
].map((uid) => `volumeId~:${uid}`);
|
|
229
257
|
const result = await Array.fromAsync(cache.iterateNodes([...staleNodeUids, 'volume2~:root-otherVolume']));
|
|
230
258
|
const got = result.map((item) => ({ uid: item.uid, isStale: item.ok ? item.node.isStale : item.error }));
|
|
231
259
|
const expected = [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EntityResult } from
|
|
2
|
-
import { ProtonDriveEntitiesCache, Logger, resultOk, Result } from
|
|
3
|
-
import { splitNodeUid } from
|
|
4
|
-
import { DecryptedNode, DecryptedRevision } from
|
|
1
|
+
import { EntityResult } from '../../cache';
|
|
2
|
+
import { ProtonDriveEntitiesCache, Logger, resultOk, Result } from '../../interface';
|
|
3
|
+
import { splitNodeUid } from '../uids';
|
|
4
|
+
import { DecryptedNode, DecryptedRevision } from './interface';
|
|
5
5
|
|
|
6
6
|
export enum CACHE_TAG_KEYS {
|
|
7
7
|
ParentUid = 'nodeParentUid',
|
|
@@ -9,10 +9,7 @@ export enum CACHE_TAG_KEYS {
|
|
|
9
9
|
Roots = 'nodeRoot',
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
type DecryptedNodeResult =
|
|
13
|
-
{uid: string, ok: true, node: DecryptedNode} |
|
|
14
|
-
{uid: string, ok: false, error: string}
|
|
15
|
-
);
|
|
12
|
+
type DecryptedNodeResult = { uid: string; ok: true; node: DecryptedNode } | { uid: string; ok: false; error: string };
|
|
16
13
|
|
|
17
14
|
/**
|
|
18
15
|
* Provides caching for nodes metadata.
|
|
@@ -23,7 +20,10 @@ type DecryptedNodeResult = (
|
|
|
23
20
|
* The cache of node metadata should not contain any crypto material.
|
|
24
21
|
*/
|
|
25
22
|
export class NodesCache {
|
|
26
|
-
constructor(
|
|
23
|
+
constructor(
|
|
24
|
+
private logger: Logger,
|
|
25
|
+
private driveCache: ProtonDriveEntitiesCache,
|
|
26
|
+
) {
|
|
27
27
|
this.logger = logger;
|
|
28
28
|
this.driveCache = driveCache;
|
|
29
29
|
}
|
|
@@ -35,12 +35,12 @@ export class NodesCache {
|
|
|
35
35
|
|
|
36
36
|
const tags = [`volume:${volumeId}`];
|
|
37
37
|
if (node.parentUid) {
|
|
38
|
-
tags.push(`${CACHE_TAG_KEYS.ParentUid}:${node.parentUid}`)
|
|
38
|
+
tags.push(`${CACHE_TAG_KEYS.ParentUid}:${node.parentUid}`);
|
|
39
39
|
} else {
|
|
40
|
-
tags.push(`${CACHE_TAG_KEYS.Roots}:${volumeId}`)
|
|
40
|
+
tags.push(`${CACHE_TAG_KEYS.Roots}:${volumeId}`);
|
|
41
41
|
}
|
|
42
42
|
if (node.trashTime) {
|
|
43
|
-
tags.push(`${CACHE_TAG_KEYS.Trashed}`)
|
|
43
|
+
tags.push(`${CACHE_TAG_KEYS.Trashed}`);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
await this.driveCache.setEntity(key, nodeData, tags);
|
|
@@ -53,7 +53,7 @@ export class NodesCache {
|
|
|
53
53
|
return deserialiseNode(nodeData);
|
|
54
54
|
} catch (error: unknown) {
|
|
55
55
|
await this.removeCorruptedNode({ nodeUid }, error);
|
|
56
|
-
throw new Error(`Failed to deserialise node: ${error instanceof Error ? error.message : error}`)
|
|
56
|
+
throw new Error(`Failed to deserialise node: ${error instanceof Error ? error.message : error}`);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -94,7 +94,10 @@ export class NodesCache {
|
|
|
94
94
|
* nodes and rather let SDK re-fetch them than to auotmatically
|
|
95
95
|
* fix issues and do not bother user with it.
|
|
96
96
|
*/
|
|
97
|
-
private async removeCorruptedNode(
|
|
97
|
+
private async removeCorruptedNode(
|
|
98
|
+
{ nodeUid, cacheUid }: { nodeUid?: string; cacheUid?: string },
|
|
99
|
+
corruptionError: unknown,
|
|
100
|
+
): Promise<void> {
|
|
98
101
|
this.logger.error(`Removing corrupted nodes from the cache`, corruptionError);
|
|
99
102
|
try {
|
|
100
103
|
if (nodeUid) {
|
|
@@ -106,7 +109,9 @@ export class NodesCache {
|
|
|
106
109
|
// The node will not be returned, thus SDK will re-fetch
|
|
107
110
|
// and re-cache it. Setting it again should then fix the
|
|
108
111
|
// problem.
|
|
109
|
-
this.logger.warn(
|
|
112
|
+
this.logger.warn(
|
|
113
|
+
`Failed to remove corrupted node from the cache: ${removingError instanceof Error ? removingError.message : removingError}`,
|
|
114
|
+
);
|
|
110
115
|
}
|
|
111
116
|
}
|
|
112
117
|
|
|
@@ -129,7 +134,9 @@ export class NodesCache {
|
|
|
129
134
|
|
|
130
135
|
private async getRecursiveChildrenCacheUids(parentNodeUid: string): Promise<string[]> {
|
|
131
136
|
const cacheUids = [];
|
|
132
|
-
for await (const result of this.driveCache.iterateEntitiesByTag(
|
|
137
|
+
for await (const result of this.driveCache.iterateEntitiesByTag(
|
|
138
|
+
`${CACHE_TAG_KEYS.ParentUid}:${parentNodeUid}`,
|
|
139
|
+
)) {
|
|
133
140
|
cacheUids.push(result.key);
|
|
134
141
|
const childrenCacheUids = await this.getRecursiveChildrenCacheUids(getNodeUid(result.key));
|
|
135
142
|
cacheUids.push(...childrenCacheUids);
|
|
@@ -148,7 +155,9 @@ export class NodesCache {
|
|
|
148
155
|
}
|
|
149
156
|
|
|
150
157
|
async *iterateChildren(parentNodeUid: string): AsyncGenerator<DecryptedNodeResult> {
|
|
151
|
-
for await (const result of this.driveCache.iterateEntitiesByTag(
|
|
158
|
+
for await (const result of this.driveCache.iterateEntitiesByTag(
|
|
159
|
+
`${CACHE_TAG_KEYS.ParentUid}:${parentNodeUid}`,
|
|
160
|
+
)) {
|
|
152
161
|
const node = await this.convertCacheResult(result);
|
|
153
162
|
if (node && (!node.ok || !node.node.trashTime)) {
|
|
154
163
|
yield node;
|
|
@@ -178,13 +187,13 @@ export class NodesCache {
|
|
|
178
187
|
try {
|
|
179
188
|
nodeUid = getNodeUid(result.key);
|
|
180
189
|
} catch (error: unknown) {
|
|
181
|
-
await this.removeCorruptedNode({ cacheUid: result.key }, error)
|
|
190
|
+
await this.removeCorruptedNode({ cacheUid: result.key }, error);
|
|
182
191
|
return null;
|
|
183
192
|
}
|
|
184
193
|
if (result.ok) {
|
|
185
194
|
let node;
|
|
186
195
|
try {
|
|
187
|
-
node = deserialiseNode(result.value)
|
|
196
|
+
node = deserialiseNode(result.value);
|
|
188
197
|
} catch (error: unknown) {
|
|
189
198
|
await this.removeCorruptedNode({ nodeUid }, error);
|
|
190
199
|
return null;
|
|
@@ -193,7 +202,7 @@ export class NodesCache {
|
|
|
193
202
|
uid: nodeUid,
|
|
194
203
|
ok: true,
|
|
195
204
|
node,
|
|
196
|
-
}
|
|
205
|
+
};
|
|
197
206
|
} else {
|
|
198
207
|
return {
|
|
199
208
|
...result,
|
|
@@ -239,31 +248,38 @@ function serialiseNode(node: DecryptedNode) {
|
|
|
239
248
|
function deserialiseNode(nodeData: string): DecryptedNode {
|
|
240
249
|
const node = JSON.parse(nodeData);
|
|
241
250
|
if (
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
251
|
+
!node ||
|
|
252
|
+
typeof node !== 'object' ||
|
|
253
|
+
!node.uid ||
|
|
254
|
+
typeof node.uid !== 'string' ||
|
|
255
|
+
!node.directMemberRole ||
|
|
256
|
+
typeof node.directMemberRole !== 'string' ||
|
|
257
|
+
!node.type ||
|
|
258
|
+
typeof node.type !== 'string' ||
|
|
259
|
+
(typeof node.mediaType !== 'string' && node.mediaType !== undefined) ||
|
|
260
|
+
typeof node.isShared !== 'boolean' ||
|
|
261
|
+
!node.creationTime ||
|
|
262
|
+
typeof node.creationTime !== 'string' ||
|
|
263
|
+
(typeof node.trashTime !== 'string' && node.trashTime !== undefined) ||
|
|
264
|
+
(typeof node.folder !== 'object' && node.folder !== undefined) ||
|
|
265
|
+
(typeof node.folder?.claimedModificationTime !== 'string' && node.folder?.claimedModificationTime !== undefined)
|
|
266
|
+
) {
|
|
267
|
+
throw new Error(`Invalid node data: ${nodeData}`);
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
...node,
|
|
271
|
+
creationTime: new Date(node.creationTime),
|
|
272
|
+
trashTime: node.trashTime ? new Date(node.trashTime) : undefined,
|
|
273
|
+
activeRevision: node.activeRevision ? deserialiseRevision(node.activeRevision) : undefined,
|
|
274
|
+
folder: node.folder
|
|
261
275
|
? {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
276
|
+
...node.folder,
|
|
277
|
+
claimedModificationTime: node.folder.claimedModificationTime
|
|
278
|
+
? new Date(node.folder.claimedModificationTime)
|
|
279
|
+
: undefined,
|
|
280
|
+
}
|
|
265
281
|
: undefined,
|
|
266
|
-
|
|
282
|
+
};
|
|
267
283
|
}
|
|
268
284
|
|
|
269
285
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -279,7 +295,7 @@ function deserialiseRevision(revision: any): Result<DecryptedRevision, Error> {
|
|
|
279
295
|
return resultOk({
|
|
280
296
|
...revision.value,
|
|
281
297
|
creationTime: new Date(revision.value.creationTime),
|
|
282
|
-
claimedModificationTime: new Date(revision.value.claimedModificationTime)
|
|
298
|
+
claimedModificationTime: new Date(revision.value.claimedModificationTime),
|
|
283
299
|
});
|
|
284
300
|
}
|
|
285
301
|
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { PrivateKey, SessionKey } from
|
|
2
|
-
import { MemoryCache } from
|
|
3
|
-
import { CachedCryptoMaterial } from
|
|
4
|
-
import { getMockLogger } from
|
|
5
|
-
import { NodesCryptoCache } from
|
|
1
|
+
import { PrivateKey, SessionKey } from '../../crypto';
|
|
2
|
+
import { MemoryCache } from '../../cache';
|
|
3
|
+
import { CachedCryptoMaterial } from '../../interface';
|
|
4
|
+
import { getMockLogger } from '../../tests/logger';
|
|
5
|
+
import { NodesCryptoCache } from './cryptoCache';
|
|
6
6
|
|
|
7
7
|
describe('nodesCryptoCache', () => {
|
|
8
8
|
let memoryCache: MemoryCache<CachedCryptoMaterial>;
|
|
9
9
|
let cache: NodesCryptoCache;
|
|
10
10
|
|
|
11
11
|
const generatePrivateKey = (name: string) => {
|
|
12
|
-
return name as unknown as PrivateKey
|
|
13
|
-
}
|
|
12
|
+
return name as unknown as PrivateKey;
|
|
13
|
+
};
|
|
14
14
|
|
|
15
15
|
const generateSessionKey = (name: string) => {
|
|
16
|
-
return name as unknown as SessionKey
|
|
17
|
-
}
|
|
16
|
+
return name as unknown as SessionKey;
|
|
17
|
+
};
|
|
18
18
|
|
|
19
19
|
beforeEach(async () => {
|
|
20
20
|
memoryCache = new MemoryCache();
|
|
@@ -28,7 +28,12 @@ describe('nodesCryptoCache', () => {
|
|
|
28
28
|
|
|
29
29
|
it('should store and retrieve keys', async () => {
|
|
30
30
|
const nodeId = 'newNodeId';
|
|
31
|
-
const keys = {
|
|
31
|
+
const keys = {
|
|
32
|
+
passphrase: 'pass',
|
|
33
|
+
key: generatePrivateKey('privateKey'),
|
|
34
|
+
passphraseSessionKey: generateSessionKey('sessionKey'),
|
|
35
|
+
hashKey: undefined,
|
|
36
|
+
};
|
|
32
37
|
|
|
33
38
|
await cache.setNodeKeys(nodeId, keys);
|
|
34
39
|
const result = await cache.getNodeKeys(nodeId);
|
|
@@ -38,8 +43,18 @@ describe('nodesCryptoCache', () => {
|
|
|
38
43
|
|
|
39
44
|
it('should replace and retrieve new keys', async () => {
|
|
40
45
|
const nodeId = 'newNodeId';
|
|
41
|
-
const keys1 = {
|
|
42
|
-
|
|
46
|
+
const keys1 = {
|
|
47
|
+
passphrase: 'pass',
|
|
48
|
+
key: generatePrivateKey('privateKey1'),
|
|
49
|
+
passphraseSessionKey: generateSessionKey('sessionKey1'),
|
|
50
|
+
hashKey: undefined,
|
|
51
|
+
};
|
|
52
|
+
const keys2 = {
|
|
53
|
+
passphrase: 'pass',
|
|
54
|
+
key: generatePrivateKey('privateKey2'),
|
|
55
|
+
passphraseSessionKey: generateSessionKey('sessionKey2'),
|
|
56
|
+
hashKey: undefined,
|
|
57
|
+
};
|
|
43
58
|
|
|
44
59
|
await cache.setNodeKeys(nodeId, keys1);
|
|
45
60
|
await cache.setNodeKeys(nodeId, keys2);
|
|
@@ -50,7 +65,12 @@ describe('nodesCryptoCache', () => {
|
|
|
50
65
|
|
|
51
66
|
it('should remove keys', async () => {
|
|
52
67
|
const nodeId = 'newNodeId';
|
|
53
|
-
const keys = {
|
|
68
|
+
const keys = {
|
|
69
|
+
passphrase: 'pass',
|
|
70
|
+
key: generatePrivateKey('privateKey'),
|
|
71
|
+
passphraseSessionKey: generateSessionKey('sessionKey'),
|
|
72
|
+
hashKey: undefined,
|
|
73
|
+
};
|
|
54
74
|
|
|
55
75
|
await cache.setNodeKeys(nodeId, keys);
|
|
56
76
|
await cache.removeNodeKeys([nodeId]);
|
|
@@ -89,4 +109,4 @@ describe('nodesCryptoCache', () => {
|
|
|
89
109
|
expect(`${error}`).toBe('Error: Entity not found');
|
|
90
110
|
}
|
|
91
111
|
});
|
|
92
|
-
});
|
|
112
|
+
});
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { ProtonDriveCryptoCache, Logger } from
|
|
2
|
-
import { DecryptedNodeKeys } from
|
|
1
|
+
import { ProtonDriveCryptoCache, Logger } from '../../interface';
|
|
2
|
+
import { DecryptedNodeKeys } from './interface';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Provides caching for node crypto material.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* The cache is responsible for serialising and deserialising node
|
|
8
8
|
* crypto material.
|
|
9
9
|
*/
|
|
10
10
|
export class NodesCryptoCache {
|
|
11
|
-
constructor(
|
|
11
|
+
constructor(
|
|
12
|
+
private logger: Logger,
|
|
13
|
+
private driveCache: ProtonDriveCryptoCache,
|
|
14
|
+
) {
|
|
12
15
|
this.logger = logger;
|
|
13
16
|
this.driveCache = driveCache;
|
|
14
17
|
}
|
|
@@ -26,7 +29,9 @@ export class NodesCryptoCache {
|
|
|
26
29
|
} catch (removingError: unknown) {
|
|
27
30
|
// The node keys will not be returned, thus SDK will re-fetch
|
|
28
31
|
// and re-cache it. Setting it again should then fix the problem.
|
|
29
|
-
this.logger.warn(
|
|
32
|
+
this.logger.warn(
|
|
33
|
+
`Failed to remove corrupted node keys from the cache: ${removingError instanceof Error ? removingError.message : removingError}`,
|
|
34
|
+
);
|
|
30
35
|
}
|
|
31
36
|
throw new Error(`Failed to deserialize node keys: missing passphrase`);
|
|
32
37
|
}
|