@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
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const interface_1 = require("../../interface");
|
|
4
4
|
const telemetry_1 = require("../../tests/telemetry");
|
|
5
5
|
const cryptoService_1 = require("./cryptoService");
|
|
6
|
-
describe(
|
|
6
|
+
describe('SharingCryptoService', () => {
|
|
7
7
|
let telemetry;
|
|
8
8
|
let driveCrypto;
|
|
9
9
|
let account;
|
|
@@ -13,69 +13,69 @@ describe("SharingCryptoService", () => {
|
|
|
13
13
|
telemetry = (0, telemetry_1.getMockTelemetry)();
|
|
14
14
|
// @ts-expect-error No need to implement all methods for mocking
|
|
15
15
|
driveCrypto = {
|
|
16
|
-
decryptShareUrlPassword: jest.fn().mockResolvedValue(
|
|
16
|
+
decryptShareUrlPassword: jest.fn().mockResolvedValue('urlPassword'),
|
|
17
17
|
decryptKeyWithSrpPassword: jest.fn().mockResolvedValue({
|
|
18
|
-
key:
|
|
18
|
+
key: 'decryptedKey',
|
|
19
19
|
}),
|
|
20
20
|
decryptNodeName: jest.fn().mockResolvedValue({
|
|
21
|
-
name:
|
|
21
|
+
name: 'nodeName',
|
|
22
22
|
}),
|
|
23
23
|
};
|
|
24
24
|
account = {
|
|
25
25
|
// @ts-expect-error No need to implement full response for mocking
|
|
26
26
|
getOwnAddress: jest.fn(async () => ({
|
|
27
|
-
keys: [{ key:
|
|
27
|
+
keys: [{ key: 'addressKey' }],
|
|
28
28
|
})),
|
|
29
29
|
};
|
|
30
30
|
// @ts-expect-error No need to implement all methods for mocking
|
|
31
31
|
sharesService = {
|
|
32
32
|
getMyFilesShareMemberEmailKey: jest.fn().mockResolvedValue({
|
|
33
|
-
addressId:
|
|
33
|
+
addressId: 'addressId',
|
|
34
34
|
}),
|
|
35
35
|
};
|
|
36
36
|
cryptoService = new cryptoService_1.SharingCryptoService(telemetry, driveCrypto, account, sharesService);
|
|
37
37
|
});
|
|
38
|
-
describe(
|
|
38
|
+
describe('decryptBookmark', () => {
|
|
39
39
|
const encryptedBookmark = {
|
|
40
|
-
tokenId:
|
|
40
|
+
tokenId: 'tokenId',
|
|
41
41
|
creationTime: new Date(),
|
|
42
42
|
url: {
|
|
43
|
-
encryptedUrlPassword:
|
|
44
|
-
base64SharePasswordSalt:
|
|
43
|
+
encryptedUrlPassword: 'encryptedUrlPassword',
|
|
44
|
+
base64SharePasswordSalt: 'base64SharePasswordSalt',
|
|
45
45
|
},
|
|
46
46
|
share: {
|
|
47
|
-
armoredKey:
|
|
48
|
-
armoredPassphrase:
|
|
47
|
+
armoredKey: 'armoredKey',
|
|
48
|
+
armoredPassphrase: 'armoredPassphrase',
|
|
49
49
|
},
|
|
50
50
|
node: {
|
|
51
51
|
type: interface_1.NodeType.File,
|
|
52
|
-
mediaType:
|
|
53
|
-
encryptedName:
|
|
54
|
-
armoredKey:
|
|
55
|
-
armoredNodePassphrase:
|
|
52
|
+
mediaType: 'mediaType',
|
|
53
|
+
encryptedName: 'encryptedName',
|
|
54
|
+
armoredKey: 'armoredKey',
|
|
55
|
+
armoredNodePassphrase: 'armoredNodePassphrase',
|
|
56
56
|
file: {
|
|
57
|
-
base64ContentKeyPacket:
|
|
57
|
+
base64ContentKeyPacket: 'base64ContentKeyPacket',
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
60
|
};
|
|
61
|
-
it(
|
|
61
|
+
it('should decrypt bookmark', async () => {
|
|
62
62
|
const result = await cryptoService.decryptBookmark(encryptedBookmark);
|
|
63
63
|
expect(result).toMatchObject({
|
|
64
|
-
url: (0, interface_1.resultOk)(
|
|
65
|
-
nodeName: (0, interface_1.resultOk)(
|
|
64
|
+
url: (0, interface_1.resultOk)('https://drive.proton.me/urls/tokenId#urlPassword'),
|
|
65
|
+
nodeName: (0, interface_1.resultOk)('nodeName'),
|
|
66
66
|
});
|
|
67
|
-
expect(driveCrypto.decryptShareUrlPassword).toHaveBeenCalledWith(
|
|
68
|
-
expect(driveCrypto.decryptKeyWithSrpPassword).toHaveBeenCalledWith(
|
|
69
|
-
expect(driveCrypto.decryptNodeName).toHaveBeenCalledWith(
|
|
67
|
+
expect(driveCrypto.decryptShareUrlPassword).toHaveBeenCalledWith('encryptedUrlPassword', ['addressKey']);
|
|
68
|
+
expect(driveCrypto.decryptKeyWithSrpPassword).toHaveBeenCalledWith('urlPassword', 'base64SharePasswordSalt', 'armoredKey', 'armoredPassphrase');
|
|
69
|
+
expect(driveCrypto.decryptNodeName).toHaveBeenCalledWith('encryptedName', 'decryptedKey', []);
|
|
70
70
|
expect(telemetry.logEvent).not.toHaveBeenCalled();
|
|
71
71
|
});
|
|
72
|
-
it(
|
|
73
|
-
const error = new Error(
|
|
72
|
+
it('should handle undecryptable URL password', async () => {
|
|
73
|
+
const error = new Error('Failed to decrypt URL password');
|
|
74
74
|
driveCrypto.decryptShareUrlPassword = jest.fn().mockRejectedValue(error);
|
|
75
75
|
const result = await cryptoService.decryptBookmark(encryptedBookmark);
|
|
76
76
|
expect(result).toMatchObject({
|
|
77
|
-
url: (0, interface_1.resultError)(new Error(
|
|
78
|
-
nodeName: (0, interface_1.resultError)(new Error(
|
|
77
|
+
url: (0, interface_1.resultError)(new Error('Failed to decrypt bookmark password: Failed to decrypt URL password')),
|
|
78
|
+
nodeName: (0, interface_1.resultError)(new Error('Failed to decrypt bookmark password: Failed to decrypt URL password')),
|
|
79
79
|
});
|
|
80
80
|
expect(telemetry.logEvent).toHaveBeenCalledWith({
|
|
81
81
|
eventName: 'decryptionError',
|
|
@@ -84,13 +84,13 @@ describe("SharingCryptoService", () => {
|
|
|
84
84
|
error,
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
|
-
it(
|
|
88
|
-
const error = new Error(
|
|
87
|
+
it('should handle undecryptable share key', async () => {
|
|
88
|
+
const error = new Error('Failed to decrypt share key');
|
|
89
89
|
driveCrypto.decryptKeyWithSrpPassword = jest.fn().mockRejectedValue(error);
|
|
90
90
|
const result = await cryptoService.decryptBookmark(encryptedBookmark);
|
|
91
91
|
expect(result).toMatchObject({
|
|
92
|
-
url: (0, interface_1.resultOk)(
|
|
93
|
-
nodeName: (0, interface_1.resultError)(new Error(
|
|
92
|
+
url: (0, interface_1.resultOk)('https://drive.proton.me/urls/tokenId#urlPassword'),
|
|
93
|
+
nodeName: (0, interface_1.resultError)(new Error('Failed to decrypt bookmark key: Failed to decrypt share key')),
|
|
94
94
|
});
|
|
95
95
|
expect(telemetry.logEvent).toHaveBeenCalledWith({
|
|
96
96
|
eventName: 'decryptionError',
|
|
@@ -99,13 +99,13 @@ describe("SharingCryptoService", () => {
|
|
|
99
99
|
error,
|
|
100
100
|
});
|
|
101
101
|
});
|
|
102
|
-
it(
|
|
103
|
-
const error = new Error(
|
|
102
|
+
it('should handle undecryptable node name', async () => {
|
|
103
|
+
const error = new Error('Failed to decrypt node name');
|
|
104
104
|
driveCrypto.decryptNodeName = jest.fn().mockRejectedValue(error);
|
|
105
105
|
const result = await cryptoService.decryptBookmark(encryptedBookmark);
|
|
106
106
|
expect(result).toMatchObject({
|
|
107
|
-
url: (0, interface_1.resultOk)(
|
|
108
|
-
nodeName: (0, interface_1.resultError)(new Error(
|
|
107
|
+
url: (0, interface_1.resultOk)('https://drive.proton.me/urls/tokenId#urlPassword'),
|
|
108
|
+
nodeName: (0, interface_1.resultError)(new Error('Failed to decrypt bookmark name: Failed to decrypt node name')),
|
|
109
109
|
});
|
|
110
110
|
expect(telemetry.logEvent).toHaveBeenCalledWith({
|
|
111
111
|
eventName: 'decryptionError',
|
|
@@ -114,15 +114,15 @@ describe("SharingCryptoService", () => {
|
|
|
114
114
|
error,
|
|
115
115
|
});
|
|
116
116
|
});
|
|
117
|
-
it(
|
|
117
|
+
it('should handle invalid node name', async () => {
|
|
118
118
|
driveCrypto.decryptNodeName = jest.fn().mockResolvedValue({
|
|
119
|
-
name:
|
|
119
|
+
name: 'invalid/name',
|
|
120
120
|
});
|
|
121
121
|
const result = await cryptoService.decryptBookmark(encryptedBookmark);
|
|
122
122
|
expect(result).toMatchObject({
|
|
123
|
-
url: (0, interface_1.resultOk)(
|
|
123
|
+
url: (0, interface_1.resultOk)('https://drive.proton.me/urls/tokenId#urlPassword'),
|
|
124
124
|
nodeName: (0, interface_1.resultError)({
|
|
125
|
-
name:
|
|
125
|
+
name: 'invalid/name',
|
|
126
126
|
error: "Name must not contain the character '/'",
|
|
127
127
|
}),
|
|
128
128
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cryptoService.test.js","sourceRoot":"","sources":["../../../src/internal/sharing/cryptoService.test.ts"],"names":[],"mappings":";;AACA,+
|
|
1
|
+
{"version":3,"file":"cryptoService.test.js","sourceRoot":"","sources":["../../../src/internal/sharing/cryptoService.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { SharingCache } from
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import { Logger } from '../../interface';
|
|
2
|
+
import { DriveEvent } from '../events';
|
|
3
|
+
import { SharingCache } from './cache';
|
|
4
|
+
import { SharesService } from './interface';
|
|
5
|
+
export declare class SharingEventHandler {
|
|
6
|
+
private logger;
|
|
7
|
+
private cache;
|
|
8
|
+
private shares;
|
|
9
|
+
constructor(logger: Logger, cache: SharingCache, shares: SharesService);
|
|
10
|
+
/**
|
|
11
|
+
* Update cache and notify listeners accordingly for any updates
|
|
12
|
+
* to nodes that are shared by me.
|
|
13
|
+
*
|
|
14
|
+
* Any node create or update that is being shared, is automatically
|
|
15
|
+
* added to the cache and the listeners are notified about the
|
|
16
|
+
* update of the node.
|
|
17
|
+
*
|
|
18
|
+
* Any node delete or update that is not being shared, and the cache
|
|
19
|
+
* includes the node, is removed from the cache and the listeners are
|
|
20
|
+
* notified about the removal of the node.
|
|
21
|
+
*
|
|
22
|
+
* @throws Only if the client's callback throws.
|
|
23
|
+
*/
|
|
24
|
+
handleDriveEvent(event: DriveEvent): Promise<void>;
|
|
23
25
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Update cache and notify listeners accordingly for any updates
|
|
26
|
-
* to nodes that are shared by me.
|
|
27
|
-
*
|
|
28
|
-
* Any node create or update that is being shared, is automatically
|
|
29
|
-
* added to the cache and the listeners are notified about the
|
|
30
|
-
* update of the node.
|
|
31
|
-
*
|
|
32
|
-
* Any node delete or update that is not being shared, and the cache
|
|
33
|
-
* includes the node, is removed from the cache and the listeners are
|
|
34
|
-
* notified about the removal of the node.
|
|
35
|
-
*
|
|
36
|
-
* @throws Only if the client's callback throws.
|
|
37
|
-
*/
|
|
38
|
-
export declare function handleSharedByMeNodes(logger: Logger, event: DriveEvent, cache: SharingCache, listeners: Listeners, nodesService: NodesService): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Update cache and notify listeners accordingly for any updates
|
|
41
|
-
* to nodes that are shared with me.
|
|
42
|
-
*
|
|
43
|
-
* There is only one event type that is relevant for shared with me
|
|
44
|
-
* nodes, which is the ShareWithMeUpdated event. The event is triggered
|
|
45
|
-
* when the list of shared with me nodes is updated.
|
|
46
|
-
*
|
|
47
|
-
* The cache is cleared and re-populated fully when the client
|
|
48
|
-
* requests the list of shared with me, or is actively listening.
|
|
49
|
-
*
|
|
50
|
-
* If the client listenes to shared with me updates, the client receives
|
|
51
|
-
* update to the full list of shared with me nodes, including remove
|
|
52
|
-
* updates for nodes that are no longer shared with me, but was before.
|
|
53
|
-
*
|
|
54
|
-
* @throws Only if the client's callback throws.
|
|
55
|
-
*/
|
|
56
|
-
export declare function handleSharedWithMeNodes(event: DriveEvent, cache: SharingCache, listeners: Listeners, sharingAccess: SharingAccess): Promise<void>;
|
|
57
|
-
export {};
|
|
@@ -1,153 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.handleSharedByMeNodes = handleSharedByMeNodes;
|
|
5
|
-
exports.handleSharedWithMeNodes = handleSharedWithMeNodes;
|
|
6
|
-
const transformers_1 = require("../../transformers");
|
|
3
|
+
exports.SharingEventHandler = void 0;
|
|
7
4
|
const events_1 = require("../events");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
5
|
+
class SharingEventHandler {
|
|
6
|
+
logger;
|
|
7
|
+
cache;
|
|
8
|
+
shares;
|
|
9
|
+
constructor(logger, cache, shares) {
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
this.cache = cache;
|
|
12
|
+
this.shares = shares;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Update cache and notify listeners accordingly for any updates
|
|
16
|
+
* to nodes that are shared by me.
|
|
17
|
+
*
|
|
18
|
+
* Any node create or update that is being shared, is automatically
|
|
19
|
+
* added to the cache and the listeners are notified about the
|
|
20
|
+
* update of the node.
|
|
21
|
+
*
|
|
22
|
+
* Any node delete or update that is not being shared, and the cache
|
|
23
|
+
* includes the node, is removed from the cache and the listeners are
|
|
24
|
+
* notified about the removal of the node.
|
|
25
|
+
*
|
|
26
|
+
* @throws Only if the client's callback throws.
|
|
27
|
+
*/
|
|
28
|
+
async handleDriveEvent(event) {
|
|
29
|
+
try {
|
|
30
|
+
if (event.type === events_1.DriveEventType.SharedWithMeUpdated) {
|
|
31
|
+
await this.cache.setSharedWithMeNodeUids(undefined);
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
await handleSharedWithMeNodes(event, cache, this.listeners, sharingAccess);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
subscribeToSharedNodesByMe(callback) {
|
|
40
|
-
this.listeners.push({ type: interface_1.SharingType.SharedByMe, callback });
|
|
41
|
-
return () => {
|
|
42
|
-
this.listeners = this.listeners.filter(listener => listener.callback !== callback);
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
subscribeToSharedNodesWithMe(callback) {
|
|
46
|
-
this.listeners.push({ type: interface_1.SharingType.sharedWithMe, callback });
|
|
47
|
-
return () => {
|
|
48
|
-
this.listeners = this.listeners.filter(listener => listener.callback !== callback);
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.SharingEvents = SharingEvents;
|
|
53
|
-
/**
|
|
54
|
-
* Update cache and notify listeners accordingly for any updates
|
|
55
|
-
* to nodes that are shared by me.
|
|
56
|
-
*
|
|
57
|
-
* Any node create or update that is being shared, is automatically
|
|
58
|
-
* added to the cache and the listeners are notified about the
|
|
59
|
-
* update of the node.
|
|
60
|
-
*
|
|
61
|
-
* Any node delete or update that is not being shared, and the cache
|
|
62
|
-
* includes the node, is removed from the cache and the listeners are
|
|
63
|
-
* notified about the removal of the node.
|
|
64
|
-
*
|
|
65
|
-
* @throws Only if the client's callback throws.
|
|
66
|
-
*/
|
|
67
|
-
async function handleSharedByMeNodes(logger, event, cache, listeners, nodesService) {
|
|
68
|
-
if (event.type === events_1.DriveEventType.ShareWithMeUpdated || !event.isOwnVolume) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const subscribedListeners = listeners.filter(({ type }) => type === interface_1.SharingType.SharedByMe);
|
|
72
|
-
if ([events_1.DriveEventType.NodeCreated, events_1.DriveEventType.NodeUpdated, events_1.DriveEventType.NodeUpdatedMetadata].includes(event.type) && event.isShared) {
|
|
73
|
-
try {
|
|
74
|
-
await cache.addSharedByMeNodeUid(event.nodeUid);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
logger.error(`Skipping shared by me node cache update`, error);
|
|
78
|
-
}
|
|
79
|
-
if (subscribedListeners.length) {
|
|
80
|
-
let node;
|
|
81
|
-
try {
|
|
82
|
-
node = await nodesService.getNode(event.nodeUid);
|
|
34
|
+
if (!(await this.shares.isOwnVolume(event.treeEventScopeId))) {
|
|
35
|
+
return;
|
|
83
36
|
}
|
|
84
|
-
|
|
85
|
-
|
|
37
|
+
if (event.type === events_1.DriveEventType.NodeCreated || event.type == events_1.DriveEventType.NodeUpdated) {
|
|
38
|
+
if (event.isShared && !event.isTrashed) {
|
|
39
|
+
await this.cache.addSharedByMeNodeUid(event.nodeUid);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
await this.cache.removeSharedByMeNodeUid(event.nodeUid);
|
|
43
|
+
}
|
|
86
44
|
return;
|
|
87
45
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (((event.type === events_1.DriveEventType.NodeUpdated || event.type === events_1.DriveEventType.NodeUpdatedMetadata) && !event.isShared)
|
|
92
|
-
|| event.type === events_1.DriveEventType.NodeDeleted) {
|
|
93
|
-
let nodeWasShared = false;
|
|
94
|
-
try {
|
|
95
|
-
const cachedNodeUids = await cache.getSharedByMeNodeUids();
|
|
96
|
-
nodeWasShared = cachedNodeUids.includes(event.nodeUid);
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
// Cache can be empty.
|
|
100
|
-
}
|
|
101
|
-
if (nodeWasShared) {
|
|
102
|
-
try {
|
|
103
|
-
await cache.removeSharedByMeNodeUid(event.nodeUid);
|
|
46
|
+
if (event.type === events_1.DriveEventType.NodeDeleted) {
|
|
47
|
+
await this.cache.removeSharedByMeNodeUid(event.nodeUid);
|
|
48
|
+
return;
|
|
104
49
|
}
|
|
105
|
-
|
|
106
|
-
|
|
50
|
+
if (event.type === events_1.DriveEventType.TreeRefresh || event.type === events_1.DriveEventType.TreeRemove) {
|
|
51
|
+
await this.cache.setSharedWithMeNodeUids(undefined);
|
|
107
52
|
}
|
|
108
|
-
subscribedListeners.forEach(({ callback }) => callback({ type: 'remove', uid: event.nodeUid }));
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Update cache and notify listeners accordingly for any updates
|
|
114
|
-
* to nodes that are shared with me.
|
|
115
|
-
*
|
|
116
|
-
* There is only one event type that is relevant for shared with me
|
|
117
|
-
* nodes, which is the ShareWithMeUpdated event. The event is triggered
|
|
118
|
-
* when the list of shared with me nodes is updated.
|
|
119
|
-
*
|
|
120
|
-
* The cache is cleared and re-populated fully when the client
|
|
121
|
-
* requests the list of shared with me, or is actively listening.
|
|
122
|
-
*
|
|
123
|
-
* If the client listenes to shared with me updates, the client receives
|
|
124
|
-
* update to the full list of shared with me nodes, including remove
|
|
125
|
-
* updates for nodes that are no longer shared with me, but was before.
|
|
126
|
-
*
|
|
127
|
-
* @throws Only if the client's callback throws.
|
|
128
|
-
*/
|
|
129
|
-
async function handleSharedWithMeNodes(event, cache, listeners, sharingAccess) {
|
|
130
|
-
if (event.type !== events_1.DriveEventType.ShareWithMeUpdated) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
let cachedNodeUids = [];
|
|
134
|
-
const subscribedListeners = listeners.filter(({ type }) => type === interface_1.SharingType.sharedWithMe);
|
|
135
|
-
if (subscribedListeners.length) {
|
|
136
|
-
cachedNodeUids = await cache.getSharedWithMeNodeUids();
|
|
137
|
-
}
|
|
138
|
-
// Clearing the cache must be first, sharingAccess is no-op if cache is set.
|
|
139
|
-
await cache.setSharedWithMeNodeUids(undefined);
|
|
140
|
-
if (subscribedListeners.length) {
|
|
141
|
-
const nodeUids = [];
|
|
142
|
-
for await (const node of sharingAccess.iterateSharedNodesWithMe()) {
|
|
143
|
-
nodeUids.push(node.uid);
|
|
144
|
-
subscribedListeners.forEach(({ callback }) => callback({ type: 'update', uid: node.uid, node: (0, transformers_1.convertInternalNode)(node) }));
|
|
145
53
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
subscribedListeners.forEach(({ callback }) => callback({ type: 'remove', uid: nodeUid }));
|
|
149
|
-
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
this.logger.error(`Skipping shared by me node cache update`, error);
|
|
150
56
|
}
|
|
151
57
|
}
|
|
152
58
|
}
|
|
59
|
+
exports.SharingEventHandler = SharingEventHandler;
|
|
153
60
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/internal/sharing/events.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/internal/sharing/events.ts"],"names":[],"mappings":";;;AACA,sCAAuD;AAIvD,MAAa,mBAAmB;IAEhB;IACA;IACA;IAHZ,YACY,MAAc,EACd,KAAmB,EACnB,MAAqB;QAFrB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAc;QACnB,WAAM,GAAN,MAAM,CAAe;IAC9B,CAAC;IAEJ;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAiB;QACpC,IAAI,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,mBAAmB,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,IAAI,uBAAc,CAAC,WAAW,EAAE,CAAC;gBACxF,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxD,OAAO;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAc,CAAC,UAAU,EAAE,CAAC;gBACxF,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;CACJ;AAjDD,kDAiDC"}
|