@protontech/drive-sdk 0.0.10
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/README.md +17 -0
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/interface.d.ts +105 -0
- package/dist/cache/interface.js +3 -0
- package/dist/cache/interface.js.map +1 -0
- package/dist/cache/memoryCache.d.ts +18 -0
- package/dist/cache/memoryCache.js +78 -0
- package/dist/cache/memoryCache.js.map +1 -0
- package/dist/cache/memoryCache.test.d.ts +1 -0
- package/dist/cache/memoryCache.test.js +121 -0
- package/dist/cache/memoryCache.test.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/driveCrypto.d.ts +209 -0
- package/dist/crypto/driveCrypto.js +364 -0
- package/dist/crypto/driveCrypto.js.map +1 -0
- package/dist/crypto/driveCrypto.test.d.ts +1 -0
- package/dist/crypto/driveCrypto.test.js +42 -0
- package/dist/crypto/driveCrypto.test.js.map +1 -0
- package/dist/crypto/hmac.d.ts +22 -0
- package/dist/crypto/hmac.js +44 -0
- package/dist/crypto/hmac.js.map +1 -0
- package/dist/crypto/index.d.ts +6 -0
- package/dist/crypto/index.js +13 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/interface.d.ts +125 -0
- package/dist/crypto/interface.js +10 -0
- package/dist/crypto/interface.js.map +1 -0
- package/dist/crypto/openPGPCrypto.d.ts +145 -0
- package/dist/crypto/openPGPCrypto.js +250 -0
- package/dist/crypto/openPGPCrypto.js.map +1 -0
- package/dist/crypto/utils.d.ts +2 -0
- package/dist/crypto/utils.js +35 -0
- package/dist/crypto/utils.js.map +1 -0
- package/dist/errors.d.ts +138 -0
- package/dist/errors.js +163 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/interface/account.d.ts +36 -0
- package/dist/interface/account.js +3 -0
- package/dist/interface/account.js.map +1 -0
- package/dist/interface/author.d.ts +26 -0
- package/dist/interface/author.js +3 -0
- package/dist/interface/author.js.map +1 -0
- package/dist/interface/devices.d.ts +18 -0
- package/dist/interface/devices.js +10 -0
- package/dist/interface/devices.js.map +1 -0
- package/dist/interface/download.d.ts +29 -0
- package/dist/interface/download.js +3 -0
- package/dist/interface/download.js.map +1 -0
- package/dist/interface/events.d.ts +26 -0
- package/dist/interface/events.js +11 -0
- package/dist/interface/events.js.map +1 -0
- package/dist/interface/httpClient.d.ts +38 -0
- package/dist/interface/httpClient.js +3 -0
- package/dist/interface/httpClient.js.map +1 -0
- package/dist/interface/index.d.ts +43 -0
- package/dist/interface/index.js +22 -0
- package/dist/interface/index.js.map +1 -0
- package/dist/interface/nodes.d.ts +161 -0
- package/dist/interface/nodes.js +21 -0
- package/dist/interface/nodes.js.map +1 -0
- package/dist/interface/result.d.ts +9 -0
- package/dist/interface/result.js +11 -0
- package/dist/interface/result.js.map +1 -0
- package/dist/interface/sharing.d.ts +73 -0
- package/dist/interface/sharing.js +9 -0
- package/dist/interface/sharing.js.map +1 -0
- package/dist/interface/telemetry.d.ts +61 -0
- package/dist/interface/telemetry.js +18 -0
- package/dist/interface/telemetry.js.map +1 -0
- package/dist/interface/thumbnail.d.ts +17 -0
- package/dist/interface/thumbnail.js +9 -0
- package/dist/interface/thumbnail.js.map +1 -0
- package/dist/interface/upload.d.ts +16 -0
- package/dist/interface/upload.js +3 -0
- package/dist/interface/upload.js.map +1 -0
- package/dist/internal/apiService/apiService.d.ts +51 -0
- package/dist/internal/apiService/apiService.js +305 -0
- package/dist/internal/apiService/apiService.js.map +1 -0
- package/dist/internal/apiService/apiService.test.d.ts +1 -0
- package/dist/internal/apiService/apiService.test.js +237 -0
- package/dist/internal/apiService/apiService.test.js.map +1 -0
- package/dist/internal/apiService/coreTypes.d.ts +24438 -0
- package/dist/internal/apiService/coreTypes.js +7 -0
- package/dist/internal/apiService/coreTypes.js.map +1 -0
- package/dist/internal/apiService/driveTypes.d.ts +11840 -0
- package/dist/internal/apiService/driveTypes.js +7 -0
- package/dist/internal/apiService/driveTypes.js.map +1 -0
- package/dist/internal/apiService/errorCodes.d.ts +30 -0
- package/dist/internal/apiService/errorCodes.js +11 -0
- package/dist/internal/apiService/errorCodes.js.map +1 -0
- package/dist/internal/apiService/errors.d.ts +19 -0
- package/dist/internal/apiService/errors.js +76 -0
- package/dist/internal/apiService/errors.js.map +1 -0
- package/dist/internal/apiService/errors.test.d.ts +1 -0
- package/dist/internal/apiService/errors.test.js +69 -0
- package/dist/internal/apiService/errors.test.js.map +1 -0
- package/dist/internal/apiService/index.d.ts +7 -0
- package/dist/internal/apiService/index.js +30 -0
- package/dist/internal/apiService/index.js.map +1 -0
- package/dist/internal/apiService/observerStream.d.ts +3 -0
- package/dist/internal/apiService/observerStream.js +15 -0
- package/dist/internal/apiService/observerStream.js.map +1 -0
- package/dist/internal/apiService/transformers.d.ts +4 -0
- package/dist/internal/apiService/transformers.js +48 -0
- package/dist/internal/apiService/transformers.js.map +1 -0
- package/dist/internal/batchLoading.d.ts +34 -0
- package/dist/internal/batchLoading.js +68 -0
- package/dist/internal/batchLoading.js.map +1 -0
- package/dist/internal/batchLoading.test.d.ts +1 -0
- package/dist/internal/batchLoading.test.js +50 -0
- package/dist/internal/batchLoading.test.js.map +1 -0
- package/dist/internal/devices/apiService.d.ts +38 -0
- package/dist/internal/devices/apiService.js +105 -0
- package/dist/internal/devices/apiService.js.map +1 -0
- package/dist/internal/devices/cryptoService.d.ts +30 -0
- package/dist/internal/devices/cryptoService.js +47 -0
- package/dist/internal/devices/cryptoService.js.map +1 -0
- package/dist/internal/devices/index.d.ts +15 -0
- package/dist/internal/devices/index.js +22 -0
- package/dist/internal/devices/index.js.map +1 -0
- package/dist/internal/devices/interface.d.ts +31 -0
- package/dist/internal/devices/interface.js +3 -0
- package/dist/internal/devices/interface.js.map +1 -0
- package/dist/internal/devices/manager.d.ts +18 -0
- package/dist/internal/devices/manager.js +103 -0
- package/dist/internal/devices/manager.js.map +1 -0
- package/dist/internal/devices/manager.test.d.ts +1 -0
- package/dist/internal/devices/manager.test.js +100 -0
- package/dist/internal/devices/manager.test.js.map +1 -0
- package/dist/internal/download/apiService.d.ts +27 -0
- package/dist/internal/download/apiService.js +110 -0
- package/dist/internal/download/apiService.js.map +1 -0
- package/dist/internal/download/controller.d.ts +8 -0
- package/dist/internal/download/controller.js +22 -0
- package/dist/internal/download/controller.js.map +1 -0
- package/dist/internal/download/cryptoService.d.ts +17 -0
- package/dist/internal/download/cryptoService.js +82 -0
- package/dist/internal/download/cryptoService.js.map +1 -0
- package/dist/internal/download/fileDownloader.d.ts +33 -0
- package/dist/internal/download/fileDownloader.js +226 -0
- package/dist/internal/download/fileDownloader.js.map +1 -0
- package/dist/internal/download/fileDownloader.test.d.ts +1 -0
- package/dist/internal/download/fileDownloader.test.js +324 -0
- package/dist/internal/download/fileDownloader.test.js.map +1 -0
- package/dist/internal/download/index.d.ts +10 -0
- package/dist/internal/download/index.js +82 -0
- package/dist/internal/download/index.js.map +1 -0
- package/dist/internal/download/interface.d.ts +35 -0
- package/dist/internal/download/interface.js +3 -0
- package/dist/internal/download/interface.js.map +1 -0
- package/dist/internal/download/queue.d.ts +5 -0
- package/dist/internal/download/queue.js +31 -0
- package/dist/internal/download/queue.js.map +1 -0
- package/dist/internal/download/telemetry.d.ts +14 -0
- package/dist/internal/download/telemetry.js +106 -0
- package/dist/internal/download/telemetry.js.map +1 -0
- package/dist/internal/download/telemetry.test.d.ts +1 -0
- package/dist/internal/download/telemetry.test.js +111 -0
- package/dist/internal/download/telemetry.test.js.map +1 -0
- package/dist/internal/download/thumbnailDownloader.d.ts +19 -0
- package/dist/internal/download/thumbnailDownloader.js +198 -0
- package/dist/internal/download/thumbnailDownloader.js.map +1 -0
- package/dist/internal/download/thumbnailDownloader.test.d.ts +1 -0
- package/dist/internal/download/thumbnailDownloader.test.js +179 -0
- package/dist/internal/download/thumbnailDownloader.test.js.map +1 -0
- package/dist/internal/errors.d.ts +6 -0
- package/dist/internal/errors.js +28 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/errors.test.d.ts +1 -0
- package/dist/internal/errors.test.js +22 -0
- package/dist/internal/errors.test.js.map +1 -0
- package/dist/internal/events/apiService.d.ts +18 -0
- package/dist/internal/events/apiService.js +81 -0
- package/dist/internal/events/apiService.js.map +1 -0
- package/dist/internal/events/cache.d.ts +28 -0
- package/dist/internal/events/cache.js +67 -0
- package/dist/internal/events/cache.js.map +1 -0
- package/dist/internal/events/cache.test.d.ts +1 -0
- package/dist/internal/events/cache.test.js +43 -0
- package/dist/internal/events/cache.test.js.map +1 -0
- package/dist/internal/events/coreEventManager.d.ts +25 -0
- package/dist/internal/events/coreEventManager.js +63 -0
- package/dist/internal/events/coreEventManager.js.map +1 -0
- package/dist/internal/events/eventManager.d.ts +62 -0
- package/dist/internal/events/eventManager.js +159 -0
- package/dist/internal/events/eventManager.js.map +1 -0
- package/dist/internal/events/eventManager.test.d.ts +1 -0
- package/dist/internal/events/eventManager.test.js +120 -0
- package/dist/internal/events/eventManager.test.js.map +1 -0
- package/dist/internal/events/index.d.ts +50 -0
- package/dist/internal/events/index.js +117 -0
- package/dist/internal/events/index.js.map +1 -0
- package/dist/internal/events/interface.d.ts +47 -0
- package/dist/internal/events/interface.js +12 -0
- package/dist/internal/events/interface.js.map +1 -0
- package/dist/internal/events/volumeEventManager.d.ts +27 -0
- package/dist/internal/events/volumeEventManager.js +69 -0
- package/dist/internal/events/volumeEventManager.js.map +1 -0
- package/dist/internal/nodes/apiService.d.ts +54 -0
- package/dist/internal/nodes/apiService.js +308 -0
- package/dist/internal/nodes/apiService.js.map +1 -0
- package/dist/internal/nodes/apiService.test.d.ts +1 -0
- package/dist/internal/nodes/apiService.test.js +344 -0
- package/dist/internal/nodes/apiService.test.js.map +1 -0
- package/dist/internal/nodes/cache.d.ts +57 -0
- package/dist/internal/nodes/cache.js +226 -0
- package/dist/internal/nodes/cache.js.map +1 -0
- package/dist/internal/nodes/cache.test.d.ts +1 -0
- package/dist/internal/nodes/cache.test.js +160 -0
- package/dist/internal/nodes/cache.test.js.map +1 -0
- package/dist/internal/nodes/cryptoCache.d.ts +16 -0
- package/dist/internal/nodes/cryptoCache.js +50 -0
- package/dist/internal/nodes/cryptoCache.js.map +1 -0
- package/dist/internal/nodes/cryptoCache.test.d.ts +1 -0
- package/dist/internal/nodes/cryptoCache.test.js +79 -0
- package/dist/internal/nodes/cryptoCache.test.js.map +1 -0
- package/dist/internal/nodes/cryptoService.d.ts +75 -0
- package/dist/internal/nodes/cryptoService.js +409 -0
- package/dist/internal/nodes/cryptoService.js.map +1 -0
- package/dist/internal/nodes/cryptoService.test.d.ts +1 -0
- package/dist/internal/nodes/cryptoService.test.js +698 -0
- package/dist/internal/nodes/cryptoService.test.js.map +1 -0
- package/dist/internal/nodes/events.d.ts +91 -0
- package/dist/internal/nodes/events.js +243 -0
- package/dist/internal/nodes/events.js.map +1 -0
- package/dist/internal/nodes/events.test.d.ts +1 -0
- package/dist/internal/nodes/events.test.js +318 -0
- package/dist/internal/nodes/events.test.js.map +1 -0
- package/dist/internal/nodes/extendedAttributes.d.ts +23 -0
- package/dist/internal/nodes/extendedAttributes.js +117 -0
- package/dist/internal/nodes/extendedAttributes.js.map +1 -0
- package/dist/internal/nodes/extendedAttributes.test.d.ts +1 -0
- package/dist/internal/nodes/extendedAttributes.test.js +176 -0
- package/dist/internal/nodes/extendedAttributes.test.js.map +1 -0
- package/dist/internal/nodes/index.d.ts +26 -0
- package/dist/internal/nodes/index.js +40 -0
- package/dist/internal/nodes/index.js.map +1 -0
- package/dist/internal/nodes/index.test.d.ts +1 -0
- package/dist/internal/nodes/index.test.js +112 -0
- package/dist/internal/nodes/index.test.js.map +1 -0
- package/dist/internal/nodes/interface.d.ts +135 -0
- package/dist/internal/nodes/interface.js +3 -0
- package/dist/internal/nodes/interface.js.map +1 -0
- package/dist/internal/nodes/mediaTypes.d.ts +2 -0
- package/dist/internal/nodes/mediaTypes.js +13 -0
- package/dist/internal/nodes/mediaTypes.js.map +1 -0
- package/dist/internal/nodes/nodesAccess.d.ts +49 -0
- package/dist/internal/nodes/nodesAccess.js +332 -0
- package/dist/internal/nodes/nodesAccess.js.map +1 -0
- package/dist/internal/nodes/nodesAccess.test.d.ts +1 -0
- package/dist/internal/nodes/nodesAccess.test.js +487 -0
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -0
- package/dist/internal/nodes/nodesManagement.d.ts +33 -0
- package/dist/internal/nodes/nodesManagement.js +222 -0
- package/dist/internal/nodes/nodesManagement.js.map +1 -0
- package/dist/internal/nodes/nodesManagement.test.d.ts +1 -0
- package/dist/internal/nodes/nodesManagement.test.js +178 -0
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -0
- package/dist/internal/nodes/nodesRevisions.d.ts +18 -0
- package/dist/internal/nodes/nodesRevisions.js +55 -0
- package/dist/internal/nodes/nodesRevisions.js.map +1 -0
- package/dist/internal/nodes/validations.d.ts +4 -0
- package/dist/internal/nodes/validations.js +21 -0
- package/dist/internal/nodes/validations.js.map +1 -0
- package/dist/internal/photos/albums.d.ts +13 -0
- package/dist/internal/photos/albums.js +30 -0
- package/dist/internal/photos/albums.js.map +1 -0
- package/dist/internal/photos/apiService.d.ts +8 -0
- package/dist/internal/photos/apiService.js +18 -0
- package/dist/internal/photos/apiService.js.map +1 -0
- package/dist/internal/photos/cache.d.ts +6 -0
- package/dist/internal/photos/cache.js +15 -0
- package/dist/internal/photos/cache.js.map +1 -0
- package/dist/internal/photos/index.d.ts +9 -0
- package/dist/internal/photos/index.js +18 -0
- package/dist/internal/photos/index.js.map +1 -0
- package/dist/internal/photos/interface.d.ts +6 -0
- package/dist/internal/photos/interface.js +3 -0
- package/dist/internal/photos/interface.js.map +1 -0
- package/dist/internal/photos/photosTimeline.d.ts +10 -0
- package/dist/internal/photos/photosTimeline.js +20 -0
- package/dist/internal/photos/photosTimeline.js.map +1 -0
- package/dist/internal/sdkEvents.d.ts +12 -0
- package/dist/internal/sdkEvents.js +44 -0
- package/dist/internal/sdkEvents.js.map +1 -0
- package/dist/internal/sdkEvents.test.d.ts +1 -0
- package/dist/internal/sdkEvents.test.js +45 -0
- package/dist/internal/sdkEvents.test.js.map +1 -0
- package/dist/internal/shares/apiService.d.ts +51 -0
- package/dist/internal/shares/apiService.js +128 -0
- package/dist/internal/shares/apiService.js.map +1 -0
- package/dist/internal/shares/cache.d.ts +15 -0
- package/dist/internal/shares/cache.js +63 -0
- package/dist/internal/shares/cache.js.map +1 -0
- package/dist/internal/shares/cache.test.d.ts +1 -0
- package/dist/internal/shares/cache.test.js +54 -0
- package/dist/internal/shares/cache.test.js.map +1 -0
- package/dist/internal/shares/cryptoCache.d.ts +20 -0
- package/dist/internal/shares/cryptoCache.js +35 -0
- package/dist/internal/shares/cryptoCache.js.map +1 -0
- package/dist/internal/shares/cryptoCache.test.d.ts +1 -0
- package/dist/internal/shares/cryptoCache.test.js +58 -0
- package/dist/internal/shares/cryptoCache.test.js.map +1 -0
- package/dist/internal/shares/cryptoService.d.ts +42 -0
- package/dist/internal/shares/cryptoService.js +126 -0
- package/dist/internal/shares/cryptoService.js.map +1 -0
- package/dist/internal/shares/cryptoService.test.d.ts +1 -0
- package/dist/internal/shares/cryptoService.test.js +120 -0
- package/dist/internal/shares/cryptoService.test.js.map +1 -0
- package/dist/internal/shares/index.d.ts +15 -0
- package/dist/internal/shares/index.js +26 -0
- package/dist/internal/shares/index.js.map +1 -0
- package/dist/internal/shares/interface.d.ts +94 -0
- package/dist/internal/shares/interface.js +11 -0
- package/dist/internal/shares/interface.js.map +1 -0
- package/dist/internal/shares/manager.d.ts +68 -0
- package/dist/internal/shares/manager.js +186 -0
- package/dist/internal/shares/manager.js.map +1 -0
- package/dist/internal/shares/manager.test.d.ts +1 -0
- package/dist/internal/shares/manager.test.js +176 -0
- package/dist/internal/shares/manager.test.js.map +1 -0
- package/dist/internal/sharing/apiService.d.ts +80 -0
- package/dist/internal/sharing/apiService.js +325 -0
- package/dist/internal/sharing/apiService.js.map +1 -0
- package/dist/internal/sharing/cache.d.ts +37 -0
- package/dist/internal/sharing/cache.js +105 -0
- package/dist/internal/sharing/cache.js.map +1 -0
- package/dist/internal/sharing/cache.test.d.ts +1 -0
- package/dist/internal/sharing/cache.test.js +82 -0
- package/dist/internal/sharing/cache.test.js.map +1 -0
- package/dist/internal/sharing/cryptoService.d.ts +112 -0
- package/dist/internal/sharing/cryptoService.js +269 -0
- package/dist/internal/sharing/cryptoService.js.map +1 -0
- package/dist/internal/sharing/events.d.ts +57 -0
- package/dist/internal/sharing/events.js +153 -0
- package/dist/internal/sharing/events.js.map +1 -0
- package/dist/internal/sharing/events.test.d.ts +1 -0
- package/dist/internal/sharing/events.test.js +246 -0
- package/dist/internal/sharing/events.test.js.map +1 -0
- package/dist/internal/sharing/index.d.ts +20 -0
- package/dist/internal/sharing/index.js +30 -0
- package/dist/internal/sharing/index.js.map +1 -0
- package/dist/internal/sharing/interface.d.ts +169 -0
- package/dist/internal/sharing/interface.js +9 -0
- package/dist/internal/sharing/interface.js.map +1 -0
- package/dist/internal/sharing/sharingAccess.d.ts +32 -0
- package/dist/internal/sharing/sharingAccess.js +119 -0
- package/dist/internal/sharing/sharingAccess.js.map +1 -0
- package/dist/internal/sharing/sharingAccess.test.d.ts +1 -0
- package/dist/internal/sharing/sharingAccess.test.js +84 -0
- package/dist/internal/sharing/sharingAccess.test.js.map +1 -0
- package/dist/internal/sharing/sharingManagement.d.ts +43 -0
- package/dist/internal/sharing/sharingManagement.js +439 -0
- package/dist/internal/sharing/sharingManagement.js.map +1 -0
- package/dist/internal/sharing/sharingManagement.test.d.ts +1 -0
- package/dist/internal/sharing/sharingManagement.test.js +788 -0
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -0
- package/dist/internal/uids.d.ts +38 -0
- package/dist/internal/uids.js +85 -0
- package/dist/internal/uids.js.map +1 -0
- package/dist/internal/upload/apiService.d.ts +65 -0
- package/dist/internal/upload/apiService.js +137 -0
- package/dist/internal/upload/apiService.js.map +1 -0
- package/dist/internal/upload/blockVerifier.d.ts +16 -0
- package/dist/internal/upload/blockVerifier.js +33 -0
- package/dist/internal/upload/blockVerifier.js.map +1 -0
- package/dist/internal/upload/chunkStreamReader.d.ts +13 -0
- package/dist/internal/upload/chunkStreamReader.js +46 -0
- package/dist/internal/upload/chunkStreamReader.js.map +1 -0
- package/dist/internal/upload/chunkStreamReader.test.d.ts +1 -0
- package/dist/internal/upload/chunkStreamReader.test.js +75 -0
- package/dist/internal/upload/chunkStreamReader.test.js.map +1 -0
- package/dist/internal/upload/controller.d.ts +8 -0
- package/dist/internal/upload/controller.js +25 -0
- package/dist/internal/upload/controller.js.map +1 -0
- package/dist/internal/upload/cryptoService.d.ts +29 -0
- package/dist/internal/upload/cryptoService.js +104 -0
- package/dist/internal/upload/cryptoService.js.map +1 -0
- package/dist/internal/upload/digests.d.ts +8 -0
- package/dist/internal/upload/digests.js +22 -0
- package/dist/internal/upload/digests.js.map +1 -0
- package/dist/internal/upload/fileUploader.d.ts +65 -0
- package/dist/internal/upload/fileUploader.js +463 -0
- package/dist/internal/upload/fileUploader.js.map +1 -0
- package/dist/internal/upload/fileUploader.test.d.ts +1 -0
- package/dist/internal/upload/fileUploader.test.js +393 -0
- package/dist/internal/upload/fileUploader.test.js.map +1 -0
- package/dist/internal/upload/index.d.ts +16 -0
- package/dist/internal/upload/index.js +77 -0
- package/dist/internal/upload/index.js.map +1 -0
- package/dist/internal/upload/interface.d.ts +117 -0
- package/dist/internal/upload/interface.js +3 -0
- package/dist/internal/upload/interface.js.map +1 -0
- package/dist/internal/upload/manager.d.ts +31 -0
- package/dist/internal/upload/manager.js +250 -0
- package/dist/internal/upload/manager.js.map +1 -0
- package/dist/internal/upload/manager.test.d.ts +1 -0
- package/dist/internal/upload/manager.test.js +349 -0
- package/dist/internal/upload/manager.test.js.map +1 -0
- package/dist/internal/upload/queue.d.ts +5 -0
- package/dist/internal/upload/queue.js +32 -0
- package/dist/internal/upload/queue.js.map +1 -0
- package/dist/internal/upload/telemetry.d.ts +15 -0
- package/dist/internal/upload/telemetry.js +111 -0
- package/dist/internal/upload/telemetry.js.map +1 -0
- package/dist/internal/upload/telemetry.test.d.ts +1 -0
- package/dist/internal/upload/telemetry.test.js +107 -0
- package/dist/internal/upload/telemetry.test.js.map +1 -0
- package/dist/internal/utils.d.ts +1 -0
- package/dist/internal/utils.js +13 -0
- package/dist/internal/utils.js.map +1 -0
- package/dist/internal/wait.d.ts +3 -0
- package/dist/internal/wait.js +28 -0
- package/dist/internal/wait.js.map +1 -0
- package/dist/internal/wait.test.d.ts +1 -0
- package/dist/internal/wait.test.js +21 -0
- package/dist/internal/wait.test.js.map +1 -0
- package/dist/protonDriveClient.d.ts +593 -0
- package/dist/protonDriveClient.js +768 -0
- package/dist/protonDriveClient.js.map +1 -0
- package/dist/protonDrivePhotosClient.d.ts +16 -0
- package/dist/protonDrivePhotosClient.js +46 -0
- package/dist/protonDrivePhotosClient.js.map +1 -0
- package/dist/telemetry.d.ts +187 -0
- package/dist/telemetry.js +297 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tests/logger.d.ts +2 -0
- package/dist/tests/logger.js +12 -0
- package/dist/tests/logger.js.map +1 -0
- package/dist/tests/telemetry.d.ts +2 -0
- package/dist/tests/telemetry.js +11 -0
- package/dist/tests/telemetry.js.map +1 -0
- package/dist/transformers.d.ts +17 -0
- package/dist/transformers.js +77 -0
- package/dist/transformers.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -0
- package/src/cache/index.ts +2 -0
- package/src/cache/interface.ts +104 -0
- package/src/cache/memoryCache.test.ts +150 -0
- package/src/cache/memoryCache.ts +85 -0
- package/src/config.ts +9 -0
- package/src/crypto/driveCrypto.test.ts +45 -0
- package/src/crypto/driveCrypto.ts +696 -0
- package/src/crypto/hmac.ts +46 -0
- package/src/crypto/index.ts +6 -0
- package/src/crypto/interface.ts +230 -0
- package/src/crypto/openPGPCrypto.ts +398 -0
- package/src/crypto/utils.ts +40 -0
- package/src/errors.ts +168 -0
- package/src/index.ts +30 -0
- package/src/interface/account.ts +38 -0
- package/src/interface/author.ts +29 -0
- package/src/interface/devices.ts +21 -0
- package/src/interface/download.ts +32 -0
- package/src/interface/events.ts +30 -0
- package/src/interface/httpClient.ts +42 -0
- package/src/interface/index.ts +46 -0
- package/src/interface/nodes.ts +168 -0
- package/src/interface/result.ts +11 -0
- package/src/interface/sharing.ts +87 -0
- package/src/interface/telemetry.ts +107 -0
- package/src/interface/thumbnail.ts +14 -0
- package/src/interface/upload.ts +19 -0
- package/src/internal/apiService/apiService.test.ts +285 -0
- package/src/internal/apiService/apiService.ts +353 -0
- package/src/internal/apiService/coreTypes.ts +24439 -0
- package/src/internal/apiService/driveTypes.ts +11841 -0
- package/src/internal/apiService/errorCodes.ts +38 -0
- package/src/internal/apiService/errors.test.ts +63 -0
- package/src/internal/apiService/errors.ts +91 -0
- package/src/internal/apiService/index.ts +7 -0
- package/src/internal/apiService/observerStream.ts +10 -0
- package/src/internal/apiService/transformers.ts +45 -0
- package/src/internal/batchLoading.test.ts +58 -0
- package/src/internal/batchLoading.ts +74 -0
- package/src/internal/devices/apiService.ts +142 -0
- package/src/internal/devices/cryptoService.ts +65 -0
- package/src/internal/devices/index.ts +31 -0
- package/src/internal/devices/interface.ts +28 -0
- package/src/internal/devices/manager.test.ts +129 -0
- package/src/internal/devices/manager.ts +113 -0
- package/src/internal/download/apiService.ts +145 -0
- package/src/internal/download/controller.ts +22 -0
- package/src/internal/download/cryptoService.ts +96 -0
- package/src/internal/download/fileDownloader.test.ts +381 -0
- package/src/internal/download/fileDownloader.ts +266 -0
- package/src/internal/download/index.ts +122 -0
- package/src/internal/download/interface.ts +38 -0
- package/src/internal/download/queue.ts +30 -0
- package/src/internal/download/telemetry.test.ts +134 -0
- package/src/internal/download/telemetry.ts +115 -0
- package/src/internal/download/thumbnailDownloader.test.ts +226 -0
- package/src/internal/download/thumbnailDownloader.ts +250 -0
- package/src/internal/errors.test.ts +21 -0
- package/src/internal/errors.ts +28 -0
- package/src/internal/events/apiService.ts +87 -0
- package/src/internal/events/cache.test.ts +47 -0
- package/src/internal/events/cache.ts +80 -0
- package/src/internal/events/coreEventManager.ts +69 -0
- package/src/internal/events/eventManager.test.ts +139 -0
- package/src/internal/events/eventManager.ts +168 -0
- package/src/internal/events/index.ts +131 -0
- package/src/internal/events/interface.ts +51 -0
- package/src/internal/events/volumeEventManager.ts +74 -0
- package/src/internal/nodes/apiService.test.ts +394 -0
- package/src/internal/nodes/apiService.ts +455 -0
- package/src/internal/nodes/cache.test.ts +197 -0
- package/src/internal/nodes/cache.ts +240 -0
- package/src/internal/nodes/cryptoCache.test.ts +92 -0
- package/src/internal/nodes/cryptoCache.ts +47 -0
- package/src/internal/nodes/cryptoService.test.ts +814 -0
- package/src/internal/nodes/cryptoService.ts +550 -0
- package/src/internal/nodes/events.test.ts +383 -0
- package/src/internal/nodes/events.ts +271 -0
- package/src/internal/nodes/extendedAttributes.test.ts +177 -0
- package/src/internal/nodes/extendedAttributes.ts +180 -0
- package/src/internal/nodes/index.test.ts +135 -0
- package/src/internal/nodes/index.ts +52 -0
- package/src/internal/nodes/interface.ts +152 -0
- package/src/internal/nodes/mediaTypes.ts +10 -0
- package/src/internal/nodes/nodesAccess.test.ts +555 -0
- package/src/internal/nodes/nodesAccess.ts +360 -0
- package/src/internal/nodes/nodesManagement.test.ts +221 -0
- package/src/internal/nodes/nodesManagement.ts +272 -0
- package/src/internal/nodes/nodesRevisions.ts +58 -0
- package/src/internal/nodes/validations.ts +26 -0
- package/src/internal/photos/albums.ts +29 -0
- package/src/internal/photos/apiService.ts +16 -0
- package/src/internal/photos/cache.ts +11 -0
- package/src/internal/photos/index.ts +23 -0
- package/src/internal/photos/interface.ts +7 -0
- package/src/internal/photos/photosTimeline.ts +18 -0
- package/src/internal/sdkEvents.test.ts +55 -0
- package/src/internal/sdkEvents.ts +52 -0
- package/src/internal/shares/apiService.ts +176 -0
- package/src/internal/shares/cache.test.ts +58 -0
- package/src/internal/shares/cache.ts +64 -0
- package/src/internal/shares/cryptoCache.test.ts +70 -0
- package/src/internal/shares/cryptoCache.ts +35 -0
- package/src/internal/shares/cryptoService.test.ts +137 -0
- package/src/internal/shares/cryptoService.ts +143 -0
- package/src/internal/shares/index.ts +35 -0
- package/src/internal/shares/interface.ts +104 -0
- package/src/internal/shares/manager.test.ts +210 -0
- package/src/internal/shares/manager.ts +213 -0
- package/src/internal/sharing/apiService.ts +483 -0
- package/src/internal/sharing/cache.test.ts +99 -0
- package/src/internal/sharing/cache.ts +109 -0
- package/src/internal/sharing/cryptoService.ts +378 -0
- package/src/internal/sharing/events.test.ts +268 -0
- package/src/internal/sharing/events.ts +166 -0
- package/src/internal/sharing/index.ts +43 -0
- package/src/internal/sharing/interface.ts +177 -0
- package/src/internal/sharing/sharingAccess.test.ts +102 -0
- package/src/internal/sharing/sharingAccess.ts +133 -0
- package/src/internal/sharing/sharingManagement.test.ts +895 -0
- package/src/internal/sharing/sharingManagement.ts +521 -0
- package/src/internal/uids.ts +83 -0
- package/src/internal/upload/apiService.ts +243 -0
- package/src/internal/upload/blockVerifier.ts +40 -0
- package/src/internal/upload/chunkStreamReader.test.ts +89 -0
- package/src/internal/upload/chunkStreamReader.ts +49 -0
- package/src/internal/upload/controller.ts +25 -0
- package/src/internal/upload/cryptoService.ts +162 -0
- package/src/internal/upload/digests.ts +18 -0
- package/src/internal/upload/fileUploader.test.ts +513 -0
- package/src/internal/upload/fileUploader.ts +576 -0
- package/src/internal/upload/index.ts +126 -0
- package/src/internal/upload/interface.ts +128 -0
- package/src/internal/upload/manager.test.ts +390 -0
- package/src/internal/upload/manager.ts +320 -0
- package/src/internal/upload/queue.ts +31 -0
- package/src/internal/upload/telemetry.test.ts +129 -0
- package/src/internal/upload/telemetry.ts +121 -0
- package/src/internal/utils.ts +9 -0
- package/src/internal/wait.test.ts +21 -0
- package/src/internal/wait.ts +26 -0
- package/src/protonDriveClient.ts +861 -0
- package/src/protonDrivePhotosClient.ts +56 -0
- package/src/telemetry.ts +346 -0
- package/src/tests/logger.ts +10 -0
- package/src/tests/telemetry.ts +9 -0
- package/src/transformers.ts +98 -0
- package/src/version.ts +4 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// This file has copy-pasted utilities from CryptoProxy located in Proton web clients monorepo.
|
|
2
|
+
|
|
3
|
+
export function uint8ArrayToBase64String(array: Uint8Array) {
|
|
4
|
+
return encodeBase64(arrayToBinaryString(array));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function base64StringToUint8Array(string: string){
|
|
8
|
+
return binaryStringToArray(decodeBase64(string) || '');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const ifDefined =
|
|
12
|
+
<T, R>(cb: (input: T) => R) =>
|
|
13
|
+
<U extends T | undefined>(input: U) => {
|
|
14
|
+
return (input !== undefined ? cb(input as T) : undefined) as U extends T ? R : undefined;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const encodeBase64 = ifDefined((input: string) => btoa(input).trim());
|
|
18
|
+
|
|
19
|
+
const decodeBase64 = ifDefined((input: string) => atob(input.trim()));
|
|
20
|
+
|
|
21
|
+
const arrayToBinaryString = (bytes: Uint8Array) => {
|
|
22
|
+
const result = [];
|
|
23
|
+
const bs = 1 << 14;
|
|
24
|
+
const j = bytes.length;
|
|
25
|
+
|
|
26
|
+
for (let i = 0; i < j; i += bs) {
|
|
27
|
+
// @ts-expect-error Uint8Array treated as number[]
|
|
28
|
+
// eslint-disable-next-line prefer-spread
|
|
29
|
+
result.push(String.fromCharCode.apply(String, bytes.subarray(i, i + bs < j ? i + bs : j)));
|
|
30
|
+
}
|
|
31
|
+
return result.join('');
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const binaryStringToArray = (str: string) => {
|
|
35
|
+
const result = new Uint8Array(str.length);
|
|
36
|
+
for (let i = 0; i < str.length; i++) {
|
|
37
|
+
result[i] = str.charCodeAt(i);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
};
|
package/src/errors.ts
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { c } from 'ttag';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all SDK errors.
|
|
5
|
+
*
|
|
6
|
+
* This class can be used for catching all SDK errors. The error should have
|
|
7
|
+
* translated message in the `message` property that should be shown to the
|
|
8
|
+
* user without any modification.
|
|
9
|
+
*
|
|
10
|
+
* No retries should be done as that is already handled by the SDK.
|
|
11
|
+
*
|
|
12
|
+
* When SDK throws an error and it is not `ProtonDriveError`, it is unhandled error
|
|
13
|
+
* by the SDK and usually indicates bug in the SDK. Please, report it.
|
|
14
|
+
*/
|
|
15
|
+
export class ProtonDriveError extends Error {
|
|
16
|
+
name = 'ProtonDriveError';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Error thrown when the operation is aborted.
|
|
21
|
+
*
|
|
22
|
+
* This error is thrown when the operation is aborted by the user.
|
|
23
|
+
* For example, by calling `abort()` on the `AbortSignal`.
|
|
24
|
+
*/
|
|
25
|
+
export class AbortError extends ProtonDriveError {
|
|
26
|
+
name = 'AbortError';
|
|
27
|
+
|
|
28
|
+
constructor(message?: string) {
|
|
29
|
+
super(message || c('Error').t`Operation aborted`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Error thrown when the validation fails.
|
|
35
|
+
*
|
|
36
|
+
* This error is thrown when the validation of the input fails.
|
|
37
|
+
* Validation can be done on the client side or on the server side.
|
|
38
|
+
*
|
|
39
|
+
* For example, on the client, it can be thrown when the node name doesn't
|
|
40
|
+
* follow the required format, etc., while on the server side, it can be thrown
|
|
41
|
+
* when there is not enough permissions, etc.
|
|
42
|
+
*/
|
|
43
|
+
export class ValidationError extends ProtonDriveError {
|
|
44
|
+
name = 'ValidationError';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Internal API code.
|
|
48
|
+
*
|
|
49
|
+
* Use only for debugging purposes.
|
|
50
|
+
*/
|
|
51
|
+
public readonly code?: number;
|
|
52
|
+
|
|
53
|
+
constructor(message: string, code?: number) {
|
|
54
|
+
super(message);
|
|
55
|
+
this.code = code;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Error thrown when the node already exists.
|
|
61
|
+
*
|
|
62
|
+
* This error is thrown when the node with the same name already exists in the
|
|
63
|
+
* parent folder. The client should ask the user to replace the existing node
|
|
64
|
+
* or choose another name. The available name is provided in the `availableName`
|
|
65
|
+
* property (that will contain original name with the index that can be used).
|
|
66
|
+
*/
|
|
67
|
+
export class NodeAlreadyExistsValidationError extends ValidationError {
|
|
68
|
+
name = 'NodeAlreadyExistsValidationError';
|
|
69
|
+
|
|
70
|
+
public readonly availableName: string;
|
|
71
|
+
|
|
72
|
+
constructor(message: string, code: number, availableName: string) {
|
|
73
|
+
super(message, code);
|
|
74
|
+
this.availableName = availableName;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Error thrown when the API call fails.
|
|
80
|
+
*
|
|
81
|
+
* This error covers both HTTP errors and API errors. SDK automatically
|
|
82
|
+
* retries the request before the error is thrown. The sepcific algorithm
|
|
83
|
+
* used for retries depends on the type of the error.
|
|
84
|
+
*
|
|
85
|
+
* Client should not retry the request when this error is thrown.
|
|
86
|
+
*/
|
|
87
|
+
export class ServerError extends ProtonDriveError {
|
|
88
|
+
name = 'ServerError';
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* HTTP status code of the response.
|
|
92
|
+
*
|
|
93
|
+
* Use only for debugging purposes.
|
|
94
|
+
*/
|
|
95
|
+
public readonly statusCode?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Internal API code.
|
|
98
|
+
*
|
|
99
|
+
* Use only for debugging purposes.
|
|
100
|
+
*/
|
|
101
|
+
public readonly code?: number;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Error thrown when the client makes too many requests to the API.
|
|
106
|
+
*
|
|
107
|
+
* SDK is configured to stay below the rate limits, but it can still happen if
|
|
108
|
+
* client is running multiple SDKs in parallel, or if the rate limits are
|
|
109
|
+
* changed on the server side.
|
|
110
|
+
*
|
|
111
|
+
* SDK automatically retries the request before the error is thrown after
|
|
112
|
+
* waiting for the required time specified by the server.
|
|
113
|
+
*
|
|
114
|
+
* Client should slow down calling SDK when this error is thrown.
|
|
115
|
+
*
|
|
116
|
+
* You can be also notified about the rate limits by the `requestsThrottled`
|
|
117
|
+
* event. See `onMessage` method on the SDK class for more details.
|
|
118
|
+
*/
|
|
119
|
+
export class RateLimitedError extends ServerError {
|
|
120
|
+
name = 'RateLimitedError';
|
|
121
|
+
|
|
122
|
+
code = 429;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Error thrown when the client is not connected to the internet.
|
|
127
|
+
*
|
|
128
|
+
* Client should check the internet connection when this error is thrown.
|
|
129
|
+
*
|
|
130
|
+
* You can also be notified about the connection status by the `offline` event
|
|
131
|
+
* See `onMessage` method on the SDK class for more details.
|
|
132
|
+
*/
|
|
133
|
+
export class ConnectionError extends ProtonDriveError {
|
|
134
|
+
name = 'ConnectionError';
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Error thrown when the decryption fails.
|
|
139
|
+
*
|
|
140
|
+
* Client should report this error to the user and report bug report.
|
|
141
|
+
*
|
|
142
|
+
* In most cases, there is no decryption error. Every decryption error should
|
|
143
|
+
* be not exposed but set as empty value on the node, for example. But in the
|
|
144
|
+
* case of the file content, if block cannot be decrypted, decryption error
|
|
145
|
+
* is thrown.
|
|
146
|
+
*/
|
|
147
|
+
export class DecryptionError extends ProtonDriveError {
|
|
148
|
+
name = 'DecryptionError';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Error thrown when the data integrity check fails.
|
|
153
|
+
*
|
|
154
|
+
* Client should report this error to the user and report bug report.
|
|
155
|
+
*
|
|
156
|
+
* For example, it can happen when hashes don't match, etc. In some cases,
|
|
157
|
+
* SDK allows to run command without verification checks for debug purposes.
|
|
158
|
+
*/
|
|
159
|
+
export class IntegrityError extends ProtonDriveError {
|
|
160
|
+
name = 'IntegrityError';
|
|
161
|
+
|
|
162
|
+
public readonly debug?: object;
|
|
163
|
+
|
|
164
|
+
constructor(message: string, debug?: object) {
|
|
165
|
+
super(message);
|
|
166
|
+
this.debug = debug;
|
|
167
|
+
}
|
|
168
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use only what is exported here. This is the public supported API of the SDK.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { makeNodeUid } from './internal/uids';
|
|
6
|
+
|
|
7
|
+
export * from './interface';
|
|
8
|
+
export * from './cache';
|
|
9
|
+
export * from './errors';
|
|
10
|
+
export type { OpenPGPCrypto, OpenPGPCryptoProxy } from './crypto';
|
|
11
|
+
export { OpenPGPCryptoWithCryptoProxy } from './crypto';
|
|
12
|
+
export { ProtonDriveClient } from './protonDriveClient';
|
|
13
|
+
export { VERSION } from './version';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Provides the node UID for the given raw volume and node IDs.
|
|
17
|
+
*
|
|
18
|
+
* This is required only for the internal implementation to provide
|
|
19
|
+
* backward compatibility with the old Drive web setup.
|
|
20
|
+
*
|
|
21
|
+
* If you are having share ID, use `ProtonDriveClient::getNodeUid` instead.
|
|
22
|
+
*
|
|
23
|
+
* @deprecated This method is not part of the public API.
|
|
24
|
+
* @param volumeId - Volume of the node.
|
|
25
|
+
* @param nodeId - Node/link ID (not UID).
|
|
26
|
+
* @returns The node UID.
|
|
27
|
+
*/
|
|
28
|
+
export function generateNodeUid(volumeId: string, nodeId: string) {
|
|
29
|
+
return makeNodeUid(volumeId, nodeId);
|
|
30
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { PrivateKey, PublicKey } from '../crypto';
|
|
2
|
+
|
|
3
|
+
export interface ProtonDriveAccount {
|
|
4
|
+
/**
|
|
5
|
+
* Get own primary address.
|
|
6
|
+
*
|
|
7
|
+
* @throws Error If there is no primary address.
|
|
8
|
+
*/
|
|
9
|
+
getOwnPrimaryAddress(): Promise<ProtonDriveAccountAddress>,
|
|
10
|
+
/**
|
|
11
|
+
* Get own address by email or addressId.
|
|
12
|
+
*
|
|
13
|
+
* @throws Error If there is no address with given email or addressId.
|
|
14
|
+
*/
|
|
15
|
+
getOwnAddress(emailOrAddressId: string): Promise<ProtonDriveAccountAddress>,
|
|
16
|
+
/**
|
|
17
|
+
* Returns whether given email can be used to share files with Proton Drive.
|
|
18
|
+
*/
|
|
19
|
+
hasProtonAccount(email: string): Promise<boolean>,
|
|
20
|
+
/**
|
|
21
|
+
* Get public keys for given email.
|
|
22
|
+
*
|
|
23
|
+
* Does not throw if there is no public key for given email, but returns empty array.
|
|
24
|
+
*
|
|
25
|
+
* @throws Error Only if there is an error while fetching keys.
|
|
26
|
+
*/
|
|
27
|
+
getPublicKeys(email: string): Promise<PublicKey[]>,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface ProtonDriveAccountAddress {
|
|
31
|
+
email: string,
|
|
32
|
+
addressId: string,
|
|
33
|
+
primaryKeyIndex: number,
|
|
34
|
+
keys: {
|
|
35
|
+
id: string,
|
|
36
|
+
key: PrivateKey,
|
|
37
|
+
}[],
|
|
38
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Result } from './result';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Author with verification status.
|
|
5
|
+
*
|
|
6
|
+
* It can be either a string (email) or an anonymous user.
|
|
7
|
+
*
|
|
8
|
+
* If author cannot be verified, the result is failure with an error.
|
|
9
|
+
* The client can still get claimed author from the error object, but
|
|
10
|
+
* it must be used with caution.
|
|
11
|
+
*/
|
|
12
|
+
export type Author = Result<string | AnonymousUser, UnverifiedAuthorError>;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Anonymous user. Used when user shares folder publicly and anonymous
|
|
16
|
+
* users can access the folder and upload new files without being logged in.
|
|
17
|
+
*/
|
|
18
|
+
export type AnonymousUser = null;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Unverified author.
|
|
22
|
+
*
|
|
23
|
+
* If author cannot be verified, the result is this object containing
|
|
24
|
+
* the claimed author and the verification error.
|
|
25
|
+
*/
|
|
26
|
+
export type UnverifiedAuthorError = {
|
|
27
|
+
claimedAuthor?: string,
|
|
28
|
+
error: string,
|
|
29
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Result } from './result';
|
|
2
|
+
import { InvalidNameError } from './nodes';
|
|
3
|
+
|
|
4
|
+
export type Device = {
|
|
5
|
+
uid: string,
|
|
6
|
+
type: DeviceType,
|
|
7
|
+
name: Result<string, Error | InvalidNameError>,
|
|
8
|
+
rootFolderUid: string,
|
|
9
|
+
creationTime: Date,
|
|
10
|
+
lastSyncDate?: Date;
|
|
11
|
+
/** @deprecated to be removed once Volume-based navigation is implemented in web */
|
|
12
|
+
shareId: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export enum DeviceType {
|
|
16
|
+
Windows = 'Windows',
|
|
17
|
+
MacOS = 'MacOS',
|
|
18
|
+
Linux = 'Linux',
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type DeviceOrUid = Device | string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface FileDownloader {
|
|
2
|
+
/**
|
|
3
|
+
* Get the claimed size of the file in bytes.
|
|
4
|
+
*
|
|
5
|
+
* This provides total clear-text size of the file. This is encrypted
|
|
6
|
+
* information that is not known to the Proton Drive and thus it is
|
|
7
|
+
* explicitely stated as claimed only and must be treated that way.
|
|
8
|
+
* It can be wrong or missing completely.
|
|
9
|
+
*/
|
|
10
|
+
getClaimedSizeInBytes(): number | undefined,
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Download, decrypt and verify the content from the server and write
|
|
14
|
+
* to the provided stream.
|
|
15
|
+
*
|
|
16
|
+
* @param onProgress - Callback that is called with the number of downloaded bytes
|
|
17
|
+
*/
|
|
18
|
+
writeToStream(streamFactory: WritableStream, onProgress: (downloadedBytes: number) => void): DownloadController,
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Same as `writeToStream` but without verification checks.
|
|
22
|
+
*
|
|
23
|
+
* Use this only for debugging purposes.
|
|
24
|
+
*/
|
|
25
|
+
unsafeWriteToStream(streamFactory: WritableStream, onProgress: (downloadedBytes: number) => void): DownloadController,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface DownloadController {
|
|
29
|
+
pause(): void,
|
|
30
|
+
resume(): void,
|
|
31
|
+
completion(): Promise<void>,
|
|
32
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Device } from './devices';
|
|
2
|
+
import { MaybeNode } from './nodes';
|
|
3
|
+
|
|
4
|
+
export type DeviceEventCallback = (deviceEvent: DeviceEvent) => void;
|
|
5
|
+
export type NodeEventCallback = (nodeEvent: NodeEvent) => void;
|
|
6
|
+
|
|
7
|
+
export type NodeEvent = {
|
|
8
|
+
type: 'update',
|
|
9
|
+
uid: string,
|
|
10
|
+
node: MaybeNode,
|
|
11
|
+
} | {
|
|
12
|
+
type: 'remove',
|
|
13
|
+
uid: string,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type DeviceEvent = {
|
|
17
|
+
type: 'update',
|
|
18
|
+
uid: string,
|
|
19
|
+
device: Device,
|
|
20
|
+
} | {
|
|
21
|
+
type: 'remove',
|
|
22
|
+
uid: string,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export enum SDKEvent {
|
|
26
|
+
TransfersPaused = "transfersPaused",
|
|
27
|
+
TransfersResumed = "transfersResumed",
|
|
28
|
+
RequestsThrottled = "requestsThrottled",
|
|
29
|
+
RequestsUnthrottled = "requestsUnthrottled",
|
|
30
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface ProtonDriveHTTPClient {
|
|
2
|
+
fetchJson(options: ProtonDriveHTTPClientJsonOptions): Promise<Response>;
|
|
3
|
+
fetchBlob(options: ProtonDriveHTTPClientBlobOptions): Promise<Response>;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export type ProtonDriveHTTPClientJsonOptions = ProtonDriveHTTPClientBaseOptions & {
|
|
7
|
+
json?: object,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type ProtonDriveHTTPClientBlobOptions = ProtonDriveHTTPClientBaseOptions & {
|
|
11
|
+
body?: XMLHttpRequestBodyInit,
|
|
12
|
+
onProgress?: (progress: number) => void,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type ProtonDriveHTTPClientBaseOptions = {
|
|
16
|
+
url: string,
|
|
17
|
+
method: string,
|
|
18
|
+
headers: Headers,
|
|
19
|
+
/**
|
|
20
|
+
* The timeout in milliseconds.
|
|
21
|
+
*
|
|
22
|
+
* When timeout is reached, the request will be aborted with TimeoutError.
|
|
23
|
+
*/
|
|
24
|
+
timeoutMs: number,
|
|
25
|
+
signal?: AbortSignal,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type ProtonDriveConfig = {
|
|
29
|
+
/**
|
|
30
|
+
* The base URL for the Proton Drive (without schema).
|
|
31
|
+
*
|
|
32
|
+
* If not provided, defaults to 'drive-api.proton.me'.
|
|
33
|
+
*/
|
|
34
|
+
baseUrl?: string,
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The language to use for error messages.
|
|
38
|
+
*
|
|
39
|
+
* If not provided, defaults to 'en'.
|
|
40
|
+
*/
|
|
41
|
+
language?: string,
|
|
42
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ProtonDriveCache } from '../cache';
|
|
2
|
+
import { OpenPGPCrypto, PrivateKey, SessionKey, SRPModule } from '../crypto';
|
|
3
|
+
import { ProtonDriveAccount } from './account';
|
|
4
|
+
import { ProtonDriveHTTPClient, ProtonDriveConfig } from './httpClient';
|
|
5
|
+
import { Telemetry, MetricEvent } from './telemetry';
|
|
6
|
+
|
|
7
|
+
export type { Result } from './result';
|
|
8
|
+
export { resultOk, resultError } from './result';
|
|
9
|
+
export type { ProtonDriveAccount, ProtonDriveAccountAddress } from './account';
|
|
10
|
+
export type { Author, UnverifiedAuthorError, AnonymousUser } from './author';
|
|
11
|
+
export type { Device, DeviceOrUid } from './devices';
|
|
12
|
+
export { DeviceType } from './devices';
|
|
13
|
+
export type { FileDownloader, DownloadController } from './download';
|
|
14
|
+
export type { NodeEvent, DeviceEvent, DeviceEventCallback, NodeEventCallback } from './events';
|
|
15
|
+
export { SDKEvent } from './events';
|
|
16
|
+
export type { ProtonDriveHTTPClient, ProtonDriveHTTPClientJsonOptions, ProtonDriveHTTPClientBlobOptions, ProtonDriveConfig } from './httpClient';
|
|
17
|
+
export type { MaybeNode, NodeEntity, DegradedNode, MaybeMissingNode, MissingNode, InvalidNameError, Revision, NodeOrUid, RevisionOrUid, NodeResult } from './nodes';
|
|
18
|
+
export { NodeType, MemberRole, RevisionState } from './nodes';
|
|
19
|
+
export type { ProtonInvitation, ProtonInvitationWithNode, NonProtonInvitation, Member, PublicLink, Bookmark, ProtonInvitationOrUid, NonProtonInvitationOrUid, BookmarkOrUid, ShareNodeSettings, UnshareNodeSettings, ShareMembersSettings, SharePublicLinkSettings, SharePublicLinkSettingsObject, ShareResult } from './sharing';
|
|
20
|
+
export { NonProtonInvitationState } from './sharing';
|
|
21
|
+
export type { Telemetry, Logger, MetricAPIRetrySucceededEvent, MetricUploadEvent, MetricsUploadErrorType, MetricDownloadEvent, MetricsDownloadErrorType, MetricDecryptionErrorEvent, MetricsDecryptionErrorField, MetricVerificationErrorEvent, MetricVerificationErrorField, MetricVolumeEventsSubscriptionsChangedEvent, MetricEvent } from './telemetry';
|
|
22
|
+
export { MetricContext } from './telemetry';
|
|
23
|
+
export type { Fileuploader, UploadController, UploadMetadata } from './upload';
|
|
24
|
+
export type { Thumbnail, ThumbnailResult } from './thumbnail';
|
|
25
|
+
export { ThumbnailType } from './thumbnail';
|
|
26
|
+
|
|
27
|
+
export type ProtonDriveTelemetry = Telemetry<MetricEvent>;
|
|
28
|
+
export type ProtonDriveEntitiesCache = ProtonDriveCache<string>;
|
|
29
|
+
export type ProtonDriveCryptoCache = ProtonDriveCache<CachedCryptoMaterial>;
|
|
30
|
+
export type CachedCryptoMaterial = {
|
|
31
|
+
passphrase?: string,
|
|
32
|
+
key: PrivateKey,
|
|
33
|
+
passphraseSessionKey: SessionKey,
|
|
34
|
+
hashKey?: Uint8Array,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export interface ProtonDriveClientContructorParameters {
|
|
38
|
+
httpClient: ProtonDriveHTTPClient,
|
|
39
|
+
entitiesCache: ProtonDriveEntitiesCache,
|
|
40
|
+
cryptoCache: ProtonDriveCryptoCache,
|
|
41
|
+
account: ProtonDriveAccount,
|
|
42
|
+
openPGPCryptoModule: OpenPGPCrypto,
|
|
43
|
+
srpModule: SRPModule,
|
|
44
|
+
config?: ProtonDriveConfig,
|
|
45
|
+
telemetry?: ProtonDriveTelemetry,
|
|
46
|
+
};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Result } from './result';
|
|
2
|
+
import { Author } from './author';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Node representing a file or folder in the system.
|
|
6
|
+
*
|
|
7
|
+
* This covers both happy path and degraded path. It is used in the SDK to
|
|
8
|
+
* represent the node in a way that is easy to work with. Whenever any field
|
|
9
|
+
* cannot be decrypted, it is returned as `DegradedNode` type.
|
|
10
|
+
*/
|
|
11
|
+
export type MaybeNode = Result<NodeEntity, DegradedNode>;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Node representing a file or folder in the system, or missing node.
|
|
15
|
+
*
|
|
16
|
+
* In most cases, SDK returns `MaybeNode`, but in some specific cases, when
|
|
17
|
+
* client is requesting specific nodes, SDK must return `MissingNode` type
|
|
18
|
+
* to indicate the case when the node is not available. That can be when
|
|
19
|
+
* the node does not exist, or when the node is not available for the user
|
|
20
|
+
* (e.g. unshared with the user).
|
|
21
|
+
*/
|
|
22
|
+
export type MaybeMissingNode = Result<NodeEntity, DegradedNode | MissingNode>;
|
|
23
|
+
|
|
24
|
+
export type MissingNode = {
|
|
25
|
+
missingUid: string,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Node representing a file or folder in the system.
|
|
30
|
+
*
|
|
31
|
+
* This is a happy path representation of the node. It is used in the SDK to
|
|
32
|
+
* represent the node in a way that is easy to work with. Whenever any field
|
|
33
|
+
* cannot be decrypted, it is returned as `DegradedNode` type.
|
|
34
|
+
*
|
|
35
|
+
* SDK never returns this entity directly but wrapped in `MaybeNode`.
|
|
36
|
+
*
|
|
37
|
+
* Note on naming: Node is reserved by JS/DOM, thus we need exception how the
|
|
38
|
+
* entity is called.
|
|
39
|
+
*/
|
|
40
|
+
export type NodeEntity = {
|
|
41
|
+
uid: string,
|
|
42
|
+
parentUid?: string,
|
|
43
|
+
name: string,
|
|
44
|
+
/**
|
|
45
|
+
* Author of the node key.
|
|
46
|
+
*
|
|
47
|
+
* Person who created the node and keys for it. If user A uploads the file
|
|
48
|
+
* and user B renames the file and uploads new revision, name and content
|
|
49
|
+
* author is user B, while key author stays to user A who has forever
|
|
50
|
+
* option to decrypt latest versions.
|
|
51
|
+
*/
|
|
52
|
+
keyAuthor: Author,
|
|
53
|
+
/**
|
|
54
|
+
* Author of the name.
|
|
55
|
+
*
|
|
56
|
+
* Person who named the file. If user A uploads the file and user B renames
|
|
57
|
+
* the file, key and content author is user A, while name author is user B.
|
|
58
|
+
*/
|
|
59
|
+
nameAuthor: Author,
|
|
60
|
+
directMemberRole: MemberRole,
|
|
61
|
+
type: NodeType,
|
|
62
|
+
mediaType?: string,
|
|
63
|
+
/**
|
|
64
|
+
* Whether the node is shared. If true, the node is shared with at least
|
|
65
|
+
* one user, or via public link.
|
|
66
|
+
*/
|
|
67
|
+
isShared: boolean,
|
|
68
|
+
/**
|
|
69
|
+
* Created on server date.
|
|
70
|
+
*/
|
|
71
|
+
creationTime: Date,
|
|
72
|
+
trashTime?: Date,
|
|
73
|
+
/**
|
|
74
|
+
* Total size of all revisions, encrypted size on the server.
|
|
75
|
+
*/
|
|
76
|
+
totalStorageSize?: number,
|
|
77
|
+
activeRevision?: Revision,
|
|
78
|
+
folder?: {
|
|
79
|
+
claimedModificationTime?: Date,
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Degraded node representing a file or folder in the system.
|
|
85
|
+
*
|
|
86
|
+
* This is a degraded path representation of the node. It is used in the SDK to
|
|
87
|
+
* represent the node in a way that is easy to work with. Whenever any field
|
|
88
|
+
* cannot be decrypted, it is returned as `DegradedNode` type.
|
|
89
|
+
*
|
|
90
|
+
* SDK never returns this entity directly but wrapped in `MaybeNode`.
|
|
91
|
+
*
|
|
92
|
+
* The node can be still used around, but it is not guaranteed that all
|
|
93
|
+
* properties are decrypted, or that all actions can be performed on it.
|
|
94
|
+
*
|
|
95
|
+
* For example, if the node has issue decrypting the name, the name will be
|
|
96
|
+
* set as `Error` and potentially rename or move actions will not be
|
|
97
|
+
* possible, but download and upload new revision will still work.
|
|
98
|
+
*/
|
|
99
|
+
export type DegradedNode = Omit<NodeEntity, 'name' | 'activeRevision'> & {
|
|
100
|
+
name: Result<string, Error | InvalidNameError>,
|
|
101
|
+
activeRevision?: Result<Revision, Error>,
|
|
102
|
+
/**
|
|
103
|
+
* If the error is not related to any specific field, it is set here.
|
|
104
|
+
*
|
|
105
|
+
* For example, if the node has issue decrypting the name, the name will be
|
|
106
|
+
* set as `Error` while this will be empty.
|
|
107
|
+
*
|
|
108
|
+
* On the other hand, if the node has issue decrypting the node key, but
|
|
109
|
+
* the name is still working, this will include the node key error, while
|
|
110
|
+
* the name will be set to the decrypted value.
|
|
111
|
+
*/
|
|
112
|
+
errors?: unknown[],
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Invalid name error represents node name that includes invalid characters.
|
|
117
|
+
*/
|
|
118
|
+
export type InvalidNameError = {
|
|
119
|
+
/**
|
|
120
|
+
* Placeholder instead of node name that client can use to display.
|
|
121
|
+
*/
|
|
122
|
+
name: string,
|
|
123
|
+
error: string,
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export enum NodeType {
|
|
127
|
+
File = "file",
|
|
128
|
+
Folder = "folder",
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export enum MemberRole {
|
|
132
|
+
Viewer = "viewer",
|
|
133
|
+
Editor = "editor",
|
|
134
|
+
Admin = "admin",
|
|
135
|
+
Inherited = "inherited",
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export type Revision = {
|
|
139
|
+
uid: string,
|
|
140
|
+
state: RevisionState,
|
|
141
|
+
creationTime: Date, // created on server date
|
|
142
|
+
contentAuthor: Author,
|
|
143
|
+
/**
|
|
144
|
+
* Encrypted size of the revision, as stored on the server.
|
|
145
|
+
*/
|
|
146
|
+
storageSize: number,
|
|
147
|
+
/**
|
|
148
|
+
* Raw size of the revision, as stored in extended attributes.
|
|
149
|
+
*/
|
|
150
|
+
claimedSize?: number,
|
|
151
|
+
claimedModificationTime?: Date,
|
|
152
|
+
claimedDigests?: {
|
|
153
|
+
sha1?: string,
|
|
154
|
+
},
|
|
155
|
+
claimedAdditionalMetadata?: object,
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export enum RevisionState {
|
|
159
|
+
Active = "active",
|
|
160
|
+
Superseded = "superseded",
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export type NodeOrUid = MaybeNode | NodeEntity | DegradedNode | string;
|
|
164
|
+
export type RevisionOrUid = Revision | string;
|
|
165
|
+
|
|
166
|
+
export type NodeResult =
|
|
167
|
+
{uid: string, ok: true} |
|
|
168
|
+
{uid: string, ok: false, error: string};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type Result<T, E> =
|
|
2
|
+
| { ok: true; value: T }
|
|
3
|
+
| { ok: false; error: E };
|
|
4
|
+
|
|
5
|
+
export function resultOk<T, E>(value: T): Result<T, E> {
|
|
6
|
+
return { ok: true, value };
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function resultError<T, E>(error: E): Result<T, E> {
|
|
10
|
+
return { ok: false, error };
|
|
11
|
+
}
|