@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,56 @@
|
|
|
1
|
+
import { DriveAPIService } from './internal/apiService';
|
|
2
|
+
import { ProtonDriveClientContructorParameters } from './interface';
|
|
3
|
+
import { DriveCrypto } from './crypto';
|
|
4
|
+
import { initSharesModule } from './internal/shares';
|
|
5
|
+
import { initNodesModule } from './internal/nodes';
|
|
6
|
+
import { initPhotosModule } from './internal/photos';
|
|
7
|
+
import { DriveEventsService } from './internal/events';
|
|
8
|
+
import { SDKEvents } from './internal/sdkEvents';
|
|
9
|
+
import { getConfig } from './config';
|
|
10
|
+
import { Telemetry } from './telemetry';
|
|
11
|
+
|
|
12
|
+
// TODO: this is only example, on background it use drive internals, but it exposes nice interface for photos
|
|
13
|
+
export class ProtonDrivePhotosClient {
|
|
14
|
+
private nodes: ReturnType<typeof initNodesModule>;
|
|
15
|
+
private photos: ReturnType<typeof initPhotosModule>;
|
|
16
|
+
|
|
17
|
+
constructor({
|
|
18
|
+
httpClient,
|
|
19
|
+
entitiesCache,
|
|
20
|
+
cryptoCache,
|
|
21
|
+
account,
|
|
22
|
+
openPGPCryptoModule,
|
|
23
|
+
srpModule,
|
|
24
|
+
config,
|
|
25
|
+
telemetry,
|
|
26
|
+
}: ProtonDriveClientContructorParameters) {
|
|
27
|
+
if (!telemetry) {
|
|
28
|
+
telemetry = new Telemetry();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const fullConfig = getConfig(config);
|
|
32
|
+
const sdkEvents = new SDKEvents(telemetry);
|
|
33
|
+
const cryptoModule = new DriveCrypto(openPGPCryptoModule, srpModule);
|
|
34
|
+
const apiService = new DriveAPIService(telemetry, sdkEvents, httpClient, fullConfig.baseUrl, fullConfig.language);
|
|
35
|
+
const events = new DriveEventsService(telemetry, apiService, entitiesCache);
|
|
36
|
+
const shares = initSharesModule(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule);
|
|
37
|
+
this.nodes = initNodesModule(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule, events, shares);
|
|
38
|
+
this.photos = initPhotosModule(apiService, entitiesCache, this.nodes.access);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Timeline or album view
|
|
42
|
+
iterateTimelinePhotos() { } // returns only UIDs and dates - used to show grid and scrolling
|
|
43
|
+
iterateAlbumPhotos() { } // same as above but for album
|
|
44
|
+
iterateThumbnails() { } // returns thumbnails for passed photos that are visible in the UI
|
|
45
|
+
getPhoto() { } // returns full photo details
|
|
46
|
+
|
|
47
|
+
// Album management
|
|
48
|
+
createAlbum(albumName: string) {
|
|
49
|
+
return this.photos.albums.createAlbum(albumName);
|
|
50
|
+
}
|
|
51
|
+
renameAlbum() { }
|
|
52
|
+
shareAlbum() { }
|
|
53
|
+
deleteAlbum() { }
|
|
54
|
+
iterateAlbums() { }
|
|
55
|
+
addPhotosToAlbum() { }
|
|
56
|
+
}
|
package/src/telemetry.ts
ADDED
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import { Logger as LoggerInterface } from './interface';
|
|
2
|
+
|
|
3
|
+
export interface LogRecord {
|
|
4
|
+
time: Date,
|
|
5
|
+
level: LogLevel;
|
|
6
|
+
loggerName: string;
|
|
7
|
+
message: string;
|
|
8
|
+
error?: unknown;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export enum LogLevel {
|
|
12
|
+
DEBUG = 'DEBUG',
|
|
13
|
+
INFO = 'INFO',
|
|
14
|
+
WARNING = 'WARNING',
|
|
15
|
+
ERROR = 'ERROR',
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface LogFormatter {
|
|
19
|
+
format(log: LogRecord): string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface LogHandler {
|
|
23
|
+
log(log: LogRecord): void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface MetricRecord<T extends MetricEvent> {
|
|
27
|
+
time: Date,
|
|
28
|
+
event: T;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type MetricEvent = {
|
|
32
|
+
eventName: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface MetricHandler<T extends MetricEvent> {
|
|
36
|
+
onEvent(metric: MetricRecord<T>): void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Telemetry class that logs messages and metrics.
|
|
41
|
+
*
|
|
42
|
+
* Example:
|
|
43
|
+
*
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const memoryLogHandler = new MemoryLogHandler();
|
|
46
|
+
*
|
|
47
|
+
* interface MetricEvents = {
|
|
48
|
+
* name: string,
|
|
49
|
+
* value: number,
|
|
50
|
+
* }
|
|
51
|
+
* class OwnMetricHandler implements MetricHandler<MetricEvents> {
|
|
52
|
+
* onEvent(metric: MetricRecord<MetricEvents>) {
|
|
53
|
+
* // Process metric event
|
|
54
|
+
* }
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* const telemetry = new Telemetry<MetricEvents>({
|
|
58
|
+
* // Enable debug logging
|
|
59
|
+
* logFilter: new LogFilter({ level: LogLevel.DEBUG }),
|
|
60
|
+
* // Log to console and memory
|
|
61
|
+
* logHandlers: [new ConsoleLogHandler(), memoryLogHandler],
|
|
62
|
+
* // Log to console and own handler to process further
|
|
63
|
+
* metricHandlers: [new ConsoleMetricHandler(), ownMetricHandler],
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* const logger = telemetry.getLogger('myLogger');
|
|
67
|
+
* logger.debug('Debug message');
|
|
68
|
+
*
|
|
69
|
+
* telemetry.logEvent({ name: 'somethingHappened', value: 42 });
|
|
70
|
+
*
|
|
71
|
+
* const logs = memoryLogHandler.getLogs();
|
|
72
|
+
* // Process logs
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @param logFilter - Log filter to filter logs based on log level, default INFO
|
|
76
|
+
* @param logHandlers - Log handlers to use for logging, see LogHandler implementations
|
|
77
|
+
* @param metricHandlers - Metric handlers to use for logging, see MetricHandler implementations
|
|
78
|
+
*/
|
|
79
|
+
export class Telemetry<T extends MetricEvent> {
|
|
80
|
+
private logFilter: LogFilter;
|
|
81
|
+
private logHandlers: LogHandler[];
|
|
82
|
+
private metricHandlers: MetricHandler<T>[];
|
|
83
|
+
|
|
84
|
+
constructor(
|
|
85
|
+
options?: {
|
|
86
|
+
logFilter?: LogFilter,
|
|
87
|
+
logHandlers?: LogHandler[],
|
|
88
|
+
metricHandlers?: MetricHandler<T>[],
|
|
89
|
+
}
|
|
90
|
+
) {
|
|
91
|
+
this.logFilter = options?.logFilter || new LogFilter();
|
|
92
|
+
this.logHandlers = options?.logHandlers || [new ConsoleLogHandler()];
|
|
93
|
+
this.metricHandlers = options?.metricHandlers || [new ConsoleMetricHandler()];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
getLogger(name: string): Logger {
|
|
97
|
+
return new Logger(name, this.logFilter, this.logHandlers);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
logEvent(event: T): void {
|
|
101
|
+
const metric = {
|
|
102
|
+
time: new Date(),
|
|
103
|
+
event,
|
|
104
|
+
};
|
|
105
|
+
this.metricHandlers.forEach(handler => handler.onEvent(metric));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Logger class that logs messages with different levels.
|
|
111
|
+
*
|
|
112
|
+
* @param name - Name of the logger
|
|
113
|
+
* @param handlers - Log handlers to use for logging, see LogHandler implementations
|
|
114
|
+
*/
|
|
115
|
+
class Logger {
|
|
116
|
+
constructor(private name: string, private filter: LogFilter, private handlers: LogHandler[]) {
|
|
117
|
+
this.name = name;
|
|
118
|
+
this.filter = filter;
|
|
119
|
+
this.handlers = handlers;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
debug(message: string) {
|
|
123
|
+
this.log({
|
|
124
|
+
time: new Date(),
|
|
125
|
+
level: LogLevel.DEBUG,
|
|
126
|
+
loggerName: this.name,
|
|
127
|
+
message,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
info(message: string) {
|
|
132
|
+
this.log({
|
|
133
|
+
time: new Date(),
|
|
134
|
+
level: LogLevel.INFO,
|
|
135
|
+
loggerName: this.name,
|
|
136
|
+
message,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
warn(message: string) {
|
|
141
|
+
this.log({
|
|
142
|
+
time: new Date(),
|
|
143
|
+
level: LogLevel.WARNING,
|
|
144
|
+
loggerName: this.name,
|
|
145
|
+
message,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
error(message: string, error?: unknown) {
|
|
150
|
+
this.log({
|
|
151
|
+
time: new Date(),
|
|
152
|
+
level: LogLevel.ERROR,
|
|
153
|
+
loggerName: this.name,
|
|
154
|
+
message,
|
|
155
|
+
error,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private log(log: LogRecord) {
|
|
160
|
+
if (!this.filter.filter(log)) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.handlers.forEach(handler => handler.log(log));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Logger class that logs messages with a prefix.
|
|
169
|
+
*
|
|
170
|
+
* Example:
|
|
171
|
+
*
|
|
172
|
+
* ```typescript
|
|
173
|
+
* const logger = new Logger('myLogger', new LogFilter(), [new ConsoleLogHandler()]);
|
|
174
|
+
* const loggerWithPrefix = new LoggerWithPrefix(logger, 'prefix');
|
|
175
|
+
* loggerWithPrefix.info('Info message');
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export class LoggerWithPrefix {
|
|
179
|
+
constructor(private logger: LoggerInterface, private prefix: string) {
|
|
180
|
+
this.logger = logger;
|
|
181
|
+
this.prefix = prefix;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
info(message: string) {
|
|
185
|
+
this.logger.info(`${this.prefix}: ${message}`);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
debug(message: string) {
|
|
189
|
+
this.logger.debug(`${this.prefix}: ${message}`);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
warn(message: string) {
|
|
193
|
+
this.logger.warn(`${this.prefix}: ${message}`);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
error(message: string, error?: unknown) {
|
|
197
|
+
this.logger.error(`${this.prefix}: ${message}`, error);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Filter logs based on log level. It can be configured by global level or
|
|
203
|
+
* per logger level.
|
|
204
|
+
*
|
|
205
|
+
* @param globalLevel - Global log level, default INFO
|
|
206
|
+
* @param loggerLevels - Log levels for specific loggers, default empty
|
|
207
|
+
*/
|
|
208
|
+
export class LogFilter {
|
|
209
|
+
private logLevelMap = {
|
|
210
|
+
'DEBUG': 0,
|
|
211
|
+
'INFO': 1,
|
|
212
|
+
'WARNING': 2,
|
|
213
|
+
'ERROR': 3,
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
private globalLevel: number;
|
|
217
|
+
private loggerLevels: { [loggerName: string]: number };
|
|
218
|
+
|
|
219
|
+
constructor(options?: {
|
|
220
|
+
globalLevel?: LogLevel,
|
|
221
|
+
loggerLevels?: { [loggerName: string]: LogLevel },
|
|
222
|
+
}) {
|
|
223
|
+
this.globalLevel = this.logLevelMap[options?.globalLevel || LogLevel.INFO];
|
|
224
|
+
this.loggerLevels = Object.fromEntries(Object.entries(options?.loggerLevels || {})
|
|
225
|
+
.map(([loggerName, level]) => [loggerName, this.logLevelMap[level]]));
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @returns False if the log should be ignored.
|
|
230
|
+
*/
|
|
231
|
+
filter(log: LogRecord) {
|
|
232
|
+
const logLevel = this.logLevelMap[log.level];
|
|
233
|
+
if (logLevel < this.globalLevel) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
const loggerLevel = this.loggerLevels[log.loggerName] || 0;
|
|
237
|
+
if (logLevel < loggerLevel) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Log handler that logs to console.
|
|
246
|
+
*
|
|
247
|
+
* @param formatter - Formatter to use for log messages, default BasicLogFormatter
|
|
248
|
+
*/
|
|
249
|
+
export class ConsoleLogHandler implements LogHandler {
|
|
250
|
+
private logLevelMap = {
|
|
251
|
+
'DEBUG': console.debug, // eslint-disable-line no-console
|
|
252
|
+
'INFO': console.info, // eslint-disable-line no-console
|
|
253
|
+
'WARNING': console.warn, // eslint-disable-line no-console
|
|
254
|
+
'ERROR': console.error, // eslint-disable-line no-console
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
private formatter: LogFormatter;
|
|
258
|
+
|
|
259
|
+
constructor(formatter?: LogFormatter) {
|
|
260
|
+
this.formatter = formatter || new BasicLogFormatter();
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
log(log: LogRecord) {
|
|
264
|
+
const message = this.formatter.format(log);
|
|
265
|
+
this.logLevelMap[log.level](message);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Log handler that stores logs in memory with option to retrieve later.
|
|
271
|
+
*
|
|
272
|
+
* Useful for keeping logs around and retrieve them on demand when an error
|
|
273
|
+
* occures.
|
|
274
|
+
*
|
|
275
|
+
* @param formatter - Formatter to use for log messages, default JSONLogFormatter
|
|
276
|
+
* @param maxLogs - Maximum number of logs to store, default 10000
|
|
277
|
+
*/
|
|
278
|
+
export class MemoryLogHandler implements LogHandler {
|
|
279
|
+
private logs: string[] = [];
|
|
280
|
+
|
|
281
|
+
private formatter: LogFormatter;
|
|
282
|
+
|
|
283
|
+
constructor(formatter?: LogFormatter, private maxLogs = 10000) {
|
|
284
|
+
this.formatter = formatter || new JSONLogFormatter();
|
|
285
|
+
this.maxLogs = maxLogs;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
log(log: LogRecord) {
|
|
289
|
+
const message = this.formatter.format(log);
|
|
290
|
+
this.logs.push(message);
|
|
291
|
+
|
|
292
|
+
if (this.logs.length > this.maxLogs) {
|
|
293
|
+
this.logs.shift();
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
getLogs() {
|
|
298
|
+
return this.logs;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
clear() {
|
|
302
|
+
this.logs = [];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Formatter that formats logs as JSON.
|
|
308
|
+
*
|
|
309
|
+
* Useful for machine processing.
|
|
310
|
+
*/
|
|
311
|
+
export class JSONLogFormatter implements LogFormatter {
|
|
312
|
+
format(log: LogRecord) {
|
|
313
|
+
if (log.error instanceof Error) {
|
|
314
|
+
return JSON.stringify({
|
|
315
|
+
...log,
|
|
316
|
+
error: log.error.message,
|
|
317
|
+
stack: log.error.stack,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
return JSON.stringify(log);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Formatter that formats logs as plain text.
|
|
326
|
+
*
|
|
327
|
+
* Useful for human reading.
|
|
328
|
+
*/
|
|
329
|
+
export class BasicLogFormatter implements LogFormatter {
|
|
330
|
+
format(log: LogRecord) {
|
|
331
|
+
let errorDetails = '';
|
|
332
|
+
if (log.error) {
|
|
333
|
+
errorDetails = log.error instanceof Error
|
|
334
|
+
? `\nError: ${log.error.message}\nStack:\n${log.error.stack}`
|
|
335
|
+
: `\nError: ${log.error}`;
|
|
336
|
+
}
|
|
337
|
+
return `${log.time.toISOString()} ${log.level} [${log.loggerName}] ${log.message}${errorDetails}`;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
class ConsoleMetricHandler<T extends MetricEvent> implements MetricHandler<T> {
|
|
342
|
+
onEvent(metric: MetricRecord<T>) {
|
|
343
|
+
// eslint-disable-next-line no-console
|
|
344
|
+
console.info(`${metric.time.toISOString()} INFO [metric] ${metric.event.eventName} ${JSON.stringify({ ...metric.event, name: undefined })}`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { MaybeNode as PublicMaybeNode, MaybeMissingNode as PublicMaybeMissingNode, NodeEntity as PublicNodeEntity, DegradedNode as PublicDegradedNode, Result, resultOk, resultError, MissingNode } from './interface';
|
|
2
|
+
import { DecryptedNode as InternalNode } from './internal/nodes';
|
|
3
|
+
|
|
4
|
+
type InternalPartialNode = Pick<
|
|
5
|
+
InternalNode,
|
|
6
|
+
'uid' |
|
|
7
|
+
'parentUid' |
|
|
8
|
+
'name' |
|
|
9
|
+
'keyAuthor' |
|
|
10
|
+
'nameAuthor' |
|
|
11
|
+
'directMemberRole' |
|
|
12
|
+
'type' |
|
|
13
|
+
'mediaType' |
|
|
14
|
+
'isShared' |
|
|
15
|
+
'creationTime' |
|
|
16
|
+
'trashTime' |
|
|
17
|
+
'activeRevision' |
|
|
18
|
+
'folder' |
|
|
19
|
+
'totalStorageSize' |
|
|
20
|
+
'errors'
|
|
21
|
+
>;
|
|
22
|
+
|
|
23
|
+
type NodeUid = string | { uid: string } | Result<{ uid: string }, { uid: string }>;
|
|
24
|
+
|
|
25
|
+
export function getUid(nodeUid: NodeUid): string {
|
|
26
|
+
if (typeof nodeUid === "string") {
|
|
27
|
+
return nodeUid;
|
|
28
|
+
}
|
|
29
|
+
// Directly passed NodeEntity or DegradedNode that has UID directly.
|
|
30
|
+
if ('uid' in nodeUid) {
|
|
31
|
+
return nodeUid.uid;
|
|
32
|
+
}
|
|
33
|
+
// MaybeNode that can be either NodeEntity or DegradedNode.
|
|
34
|
+
if (nodeUid.ok) {
|
|
35
|
+
return nodeUid.value.uid;
|
|
36
|
+
}
|
|
37
|
+
return nodeUid.error.uid;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function getUids(nodeUids: NodeUid[]): string[] {
|
|
41
|
+
return nodeUids.map(getUid);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export async function *convertInternalNodeIterator(nodeIterator: AsyncGenerator<InternalPartialNode>): AsyncGenerator<PublicMaybeNode> {
|
|
45
|
+
for await (const node of nodeIterator) {
|
|
46
|
+
yield convertInternalNode(node);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export async function *convertInternalMissingNodeIterator(nodeIterator: AsyncGenerator<InternalPartialNode | MissingNode>): AsyncGenerator<PublicMaybeMissingNode> {
|
|
51
|
+
for await (const node of nodeIterator) {
|
|
52
|
+
if ('missingUid' in node) {
|
|
53
|
+
yield resultError(node);
|
|
54
|
+
} else {
|
|
55
|
+
yield convertInternalNode(node);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export async function convertInternalNodePromise(nodePromise: Promise<InternalPartialNode>): Promise<PublicMaybeNode> {
|
|
61
|
+
const node = await nodePromise;
|
|
62
|
+
return convertInternalNode(node);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function convertInternalNode(node: InternalPartialNode): PublicMaybeNode {
|
|
66
|
+
const baseNodeMetadata = {
|
|
67
|
+
uid: node.uid,
|
|
68
|
+
parentUid: node.parentUid,
|
|
69
|
+
keyAuthor: node.keyAuthor,
|
|
70
|
+
nameAuthor: node.nameAuthor,
|
|
71
|
+
directMemberRole: node.directMemberRole,
|
|
72
|
+
type: node.type,
|
|
73
|
+
mediaType: node.mediaType,
|
|
74
|
+
isShared: node.isShared,
|
|
75
|
+
creationTime: node.creationTime,
|
|
76
|
+
trashTime: node.trashTime,
|
|
77
|
+
totalStorageSize: node.totalStorageSize,
|
|
78
|
+
folder: node.folder,
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const name = node.name;
|
|
82
|
+
const activeRevision = node.activeRevision;
|
|
83
|
+
|
|
84
|
+
if (node.errors?.length || !name.ok || (activeRevision && !activeRevision.ok)) {
|
|
85
|
+
return resultError({
|
|
86
|
+
...baseNodeMetadata,
|
|
87
|
+
name,
|
|
88
|
+
activeRevision,
|
|
89
|
+
errors: node.errors,
|
|
90
|
+
} as PublicDegradedNode);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return resultOk({
|
|
94
|
+
...baseNodeMetadata,
|
|
95
|
+
name: name.value,
|
|
96
|
+
activeRevision: activeRevision?.value,
|
|
97
|
+
} as PublicNodeEntity);
|
|
98
|
+
}
|
package/src/version.ts
ADDED