@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,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventManager = void 0;
|
|
4
|
+
const apiService_1 = require("../apiService");
|
|
5
|
+
const DEFAULT_POLLING_INTERVAL_IN_SECONDS = 30;
|
|
6
|
+
const FIBONACCI_LIST = [1, 1, 2, 3, 5, 8, 13];
|
|
7
|
+
/**
|
|
8
|
+
* Event manager general helper that is responsible for fetching events
|
|
9
|
+
* from the server and notifying listeners about the events.
|
|
10
|
+
*
|
|
11
|
+
* The specific implementation of fetching the events from the API must
|
|
12
|
+
* be passed as dependency and can be used for any type of events that
|
|
13
|
+
* supports the same structure.
|
|
14
|
+
*
|
|
15
|
+
* The manager will not start fetching events until the `start` method is
|
|
16
|
+
* called. Once started, the manager will fetch events in a loop with
|
|
17
|
+
* a timeout between each fetch. The default timeout is 30 seconds and
|
|
18
|
+
* additional jitter is used in case of failure.
|
|
19
|
+
*
|
|
20
|
+
* Example of usage:
|
|
21
|
+
*
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const manager = new EventManager(
|
|
24
|
+
* logger,
|
|
25
|
+
* () => apiService.getLatestEventId(),
|
|
26
|
+
* (eventId) => apiService.getEvents(eventId),
|
|
27
|
+
* );
|
|
28
|
+
*
|
|
29
|
+
* manager.addListener((events, fullRefresh) => {
|
|
30
|
+
* // Process the events
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* manager.start();
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
class EventManager {
|
|
37
|
+
logger;
|
|
38
|
+
getLatestEventId;
|
|
39
|
+
getEvents;
|
|
40
|
+
updateLatestEventId;
|
|
41
|
+
latestEventId;
|
|
42
|
+
timeoutHandle;
|
|
43
|
+
processPromise;
|
|
44
|
+
listeners = [];
|
|
45
|
+
retryIndex = 0;
|
|
46
|
+
pollingIntervalInSeconds = DEFAULT_POLLING_INTERVAL_IN_SECONDS;
|
|
47
|
+
constructor(logger, getLatestEventId, getEvents, updateLatestEventId) {
|
|
48
|
+
this.logger = logger;
|
|
49
|
+
this.getLatestEventId = getLatestEventId;
|
|
50
|
+
this.getEvents = getEvents;
|
|
51
|
+
this.updateLatestEventId = updateLatestEventId;
|
|
52
|
+
this.logger = logger;
|
|
53
|
+
this.getLatestEventId = getLatestEventId;
|
|
54
|
+
this.getEvents = getEvents;
|
|
55
|
+
this.updateLatestEventId = updateLatestEventId;
|
|
56
|
+
}
|
|
57
|
+
addListener(callback) {
|
|
58
|
+
this.listeners.push(callback);
|
|
59
|
+
}
|
|
60
|
+
async start() {
|
|
61
|
+
this.logger.info(`Starting event manager with polling interval ${this.pollingIntervalInSeconds} seconds`);
|
|
62
|
+
await this.stop();
|
|
63
|
+
this.processPromise = this.processEvents();
|
|
64
|
+
}
|
|
65
|
+
async processEvents() {
|
|
66
|
+
try {
|
|
67
|
+
if (!this.latestEventId) {
|
|
68
|
+
this.latestEventId = await this.getLatestEventId();
|
|
69
|
+
await this.updateLatestEventId(this.latestEventId);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
while (true) {
|
|
73
|
+
let result;
|
|
74
|
+
try {
|
|
75
|
+
result = await this.getEvents(this.latestEventId);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// If last event ID is not found, we need to refresh the data.
|
|
79
|
+
// Caller is notified via standard event update with refresh flag.
|
|
80
|
+
if (error instanceof apiService_1.NotFoundAPIError) {
|
|
81
|
+
this.logger.warn(`Last event ID not found, refreshing data`);
|
|
82
|
+
result = {
|
|
83
|
+
lastEventId: await this.getLatestEventId(),
|
|
84
|
+
more: false,
|
|
85
|
+
refresh: true,
|
|
86
|
+
events: [],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Any other error is considered as a failure and we will retry
|
|
91
|
+
// with backoff policy.
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
await this.notifyListeners(result);
|
|
96
|
+
if (result.lastEventId !== this.latestEventId) {
|
|
97
|
+
await this.updateLatestEventId(result.lastEventId);
|
|
98
|
+
this.latestEventId = result.lastEventId;
|
|
99
|
+
}
|
|
100
|
+
if (!result.more) {
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
this.retryIndex = 0;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
this.logger.error(`Failed to process events: ${error instanceof Error ? error.message : error} (retry ${this.retryIndex}, last event ID: ${this.latestEventId})`);
|
|
109
|
+
this.retryIndex++;
|
|
110
|
+
}
|
|
111
|
+
this.timeoutHandle = setTimeout(() => {
|
|
112
|
+
this.processPromise = this.processEvents();
|
|
113
|
+
}, this.nextPollTimeout);
|
|
114
|
+
}
|
|
115
|
+
;
|
|
116
|
+
async notifyListeners(result) {
|
|
117
|
+
if (result.events.length === 0 && !result.refresh) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (!this.listeners.length) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.logger.debug(`Notifying listeners about ${result.events.length} events`);
|
|
124
|
+
for (const listener of this.listeners) {
|
|
125
|
+
try {
|
|
126
|
+
await listener(result.events, result.refresh);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
this.logger.error(`Failed to process events: ${error instanceof Error ? error.message : error} (last event ID: ${result.lastEventId}, refresh: ${result.refresh})`);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Polling timeout is using exponential backoff with Fibonacci sequence.
|
|
136
|
+
*
|
|
137
|
+
* The timeout is public for testing purposes only.
|
|
138
|
+
*/
|
|
139
|
+
get nextPollTimeout() {
|
|
140
|
+
const retryIndex = Math.min(this.retryIndex, FIBONACCI_LIST.length - 1);
|
|
141
|
+
return this.pollingIntervalInSeconds * 1000 * FIBONACCI_LIST[retryIndex];
|
|
142
|
+
}
|
|
143
|
+
async stop() {
|
|
144
|
+
if (this.processPromise) {
|
|
145
|
+
this.logger.info(`Stopping event manager`);
|
|
146
|
+
try {
|
|
147
|
+
await this.processPromise;
|
|
148
|
+
}
|
|
149
|
+
catch { }
|
|
150
|
+
}
|
|
151
|
+
if (!this.timeoutHandle) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
clearTimeout(this.timeoutHandle);
|
|
155
|
+
this.timeoutHandle = undefined;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.EventManager = EventManager;
|
|
159
|
+
//# sourceMappingURL=eventManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const logger_1 = require("../../tests/logger");
|
|
4
|
+
const apiService_1 = require("../apiService");
|
|
5
|
+
const eventManager_1 = require("./eventManager");
|
|
6
|
+
jest.useFakeTimers();
|
|
7
|
+
describe("EventManager", () => {
|
|
8
|
+
let manager;
|
|
9
|
+
const getLastEventIdMock = jest.fn();
|
|
10
|
+
const getEventsMock = jest.fn();
|
|
11
|
+
const updateLatestEventIdMock = jest.fn();
|
|
12
|
+
const listenerMock = jest.fn();
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
jest.clearAllMocks();
|
|
15
|
+
getLastEventIdMock.mockImplementation(() => Promise.resolve("eventId1"));
|
|
16
|
+
getEventsMock.mockImplementation(() => Promise.resolve({
|
|
17
|
+
lastEventId: "eventId2",
|
|
18
|
+
more: false,
|
|
19
|
+
refresh: false,
|
|
20
|
+
events: ["event1", "event2"],
|
|
21
|
+
}));
|
|
22
|
+
manager = new eventManager_1.EventManager((0, logger_1.getMockLogger)(), getLastEventIdMock, getEventsMock, updateLatestEventIdMock);
|
|
23
|
+
manager.addListener(listenerMock);
|
|
24
|
+
});
|
|
25
|
+
afterEach(async () => {
|
|
26
|
+
await manager.stop();
|
|
27
|
+
});
|
|
28
|
+
it("should get latest event ID on first run only", async () => {
|
|
29
|
+
await manager.start();
|
|
30
|
+
expect(getLastEventIdMock).toHaveBeenCalledTimes(1);
|
|
31
|
+
expect(getEventsMock).toHaveBeenCalledTimes(0);
|
|
32
|
+
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
33
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
|
|
34
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
|
|
35
|
+
});
|
|
36
|
+
it("should notify about events in the next run", async () => {
|
|
37
|
+
await manager.start();
|
|
38
|
+
expect(getLastEventIdMock).toHaveBeenCalledTimes(1);
|
|
39
|
+
expect(getEventsMock).toHaveBeenCalledTimes(0);
|
|
40
|
+
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
41
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
|
|
42
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
|
|
43
|
+
updateLatestEventIdMock.mockClear();
|
|
44
|
+
await jest.runOnlyPendingTimersAsync();
|
|
45
|
+
expect(getEventsMock).toHaveBeenCalledTimes(1);
|
|
46
|
+
expect(listenerMock).toHaveBeenCalledTimes(1);
|
|
47
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
|
|
48
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId2');
|
|
49
|
+
});
|
|
50
|
+
it("should continue with more events", async () => {
|
|
51
|
+
getEventsMock.mockImplementation((lastEventId) => Promise.resolve({
|
|
52
|
+
lastEventId: lastEventId === "eventId1" ? "eventId2" : "eventId3",
|
|
53
|
+
more: lastEventId === "eventId1" ? true : false,
|
|
54
|
+
refresh: false,
|
|
55
|
+
events: lastEventId === "eventId1" ? ["event1", "event2"] : ["event3"],
|
|
56
|
+
}));
|
|
57
|
+
await manager.start();
|
|
58
|
+
await jest.runOnlyPendingTimersAsync();
|
|
59
|
+
expect(getEventsMock).toHaveBeenCalledTimes(2);
|
|
60
|
+
expect(listenerMock).toHaveBeenCalledTimes(2);
|
|
61
|
+
expect(listenerMock).toHaveBeenCalledWith(["event1", "event2"], false);
|
|
62
|
+
expect(listenerMock).toHaveBeenCalledWith(["event3"], false);
|
|
63
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledTimes(3);
|
|
64
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
|
|
65
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId2');
|
|
66
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId3');
|
|
67
|
+
});
|
|
68
|
+
it("should refresh if event does not exist", async () => {
|
|
69
|
+
getEventsMock.mockImplementation(() => Promise.reject(new apiService_1.NotFoundAPIError('Event not found', 2501)));
|
|
70
|
+
await manager.start();
|
|
71
|
+
await jest.runOnlyPendingTimersAsync();
|
|
72
|
+
expect(getLastEventIdMock).toHaveBeenCalledTimes(2);
|
|
73
|
+
expect(listenerMock).toHaveBeenCalledTimes(1);
|
|
74
|
+
expect(listenerMock).toHaveBeenCalledWith([], true);
|
|
75
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
|
|
76
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
|
|
77
|
+
});
|
|
78
|
+
it("should retry on error", async () => {
|
|
79
|
+
let index = 0;
|
|
80
|
+
getEventsMock.mockImplementation(() => {
|
|
81
|
+
index++;
|
|
82
|
+
if (index <= 3) {
|
|
83
|
+
return Promise.reject(new Error("Error"));
|
|
84
|
+
}
|
|
85
|
+
return Promise.resolve({
|
|
86
|
+
lastEventId: "eventId2",
|
|
87
|
+
more: false,
|
|
88
|
+
refresh: false,
|
|
89
|
+
events: ["event1", "event2"],
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
await manager.start();
|
|
93
|
+
updateLatestEventIdMock.mockClear();
|
|
94
|
+
// First failure.
|
|
95
|
+
await jest.runOnlyPendingTimersAsync();
|
|
96
|
+
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
97
|
+
expect(manager.nextPollTimeout).toBe(30000);
|
|
98
|
+
// Second failure.
|
|
99
|
+
await jest.runOnlyPendingTimersAsync();
|
|
100
|
+
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
101
|
+
expect(manager.nextPollTimeout).toBe(60000);
|
|
102
|
+
// Third failure.
|
|
103
|
+
await jest.runOnlyPendingTimersAsync();
|
|
104
|
+
expect(listenerMock).toHaveBeenCalledTimes(0);
|
|
105
|
+
expect(manager.nextPollTimeout).toBe(90000);
|
|
106
|
+
// And now it passes.
|
|
107
|
+
await jest.runOnlyPendingTimersAsync();
|
|
108
|
+
expect(listenerMock).toHaveBeenCalledTimes(1);
|
|
109
|
+
expect(listenerMock).toHaveBeenCalledWith(["event1", "event2"], false);
|
|
110
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
|
|
111
|
+
expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId2');
|
|
112
|
+
});
|
|
113
|
+
it("should stop polling", async () => {
|
|
114
|
+
await manager.start();
|
|
115
|
+
await manager.stop();
|
|
116
|
+
await jest.runOnlyPendingTimersAsync();
|
|
117
|
+
expect(getEventsMock).toHaveBeenCalledTimes(0);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=eventManager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventManager.test.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ProtonDriveEntitiesCache, ProtonDriveTelemetry } from "../../interface";
|
|
2
|
+
import { DriveAPIService } from "../apiService";
|
|
3
|
+
import { DriveListener } from "./interface";
|
|
4
|
+
export type { DriveEvent, DriveListener } from "./interface";
|
|
5
|
+
export { DriveEventType } from "./interface";
|
|
6
|
+
/**
|
|
7
|
+
* Service for listening to drive events. The service is responsible for
|
|
8
|
+
* managing the subscriptions to the events and notifying the listeners
|
|
9
|
+
* about the new events.
|
|
10
|
+
*/
|
|
11
|
+
export declare class DriveEventsService {
|
|
12
|
+
private telemetry;
|
|
13
|
+
private apiService;
|
|
14
|
+
private cache;
|
|
15
|
+
private subscribedToRemoteDataUpdates;
|
|
16
|
+
private listeners;
|
|
17
|
+
private coreEvents;
|
|
18
|
+
private volumesEvents;
|
|
19
|
+
private logger;
|
|
20
|
+
constructor(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache);
|
|
21
|
+
/**
|
|
22
|
+
* Loads all the subscribed volumes (including core events) from the
|
|
23
|
+
* cache and starts listening to their events. Any additional volume
|
|
24
|
+
* that is subscribed to later will be automatically started.
|
|
25
|
+
*/
|
|
26
|
+
subscribeToRemoteDataUpdates(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to given volume. The volume will be polled for events
|
|
29
|
+
* with the polling interval depending on the type of the volume.
|
|
30
|
+
* Own volumes are polled with highest frequency, while others are
|
|
31
|
+
* polled with lower frequency depending on the total number of
|
|
32
|
+
* subscriptions.
|
|
33
|
+
*
|
|
34
|
+
* @param isOwnVolume - Owned volumes are polled with higher frequency.
|
|
35
|
+
*/
|
|
36
|
+
listenToVolume(volumeId: string, isOwnVolume?: boolean): Promise<void>;
|
|
37
|
+
private loadSubscribedVolumeEventServices;
|
|
38
|
+
private sendNumberOfVolumeSubscriptionsToTelemetry;
|
|
39
|
+
private createVolumeEventManager;
|
|
40
|
+
/**
|
|
41
|
+
* Listen to the drive events. The listener will be called with the
|
|
42
|
+
* new events as they arrive.
|
|
43
|
+
*
|
|
44
|
+
* One call always provides events from withing the same volume. The
|
|
45
|
+
* second argument of the callback `fullRefreshVolumeId` is thus single
|
|
46
|
+
* ID and if multiple volumes must be fully refreshed, client will
|
|
47
|
+
* receive multiple calls.
|
|
48
|
+
*/
|
|
49
|
+
addListener(callback: DriveListener): void;
|
|
50
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DriveEventsService = exports.DriveEventType = void 0;
|
|
4
|
+
const apiService_1 = require("./apiService");
|
|
5
|
+
const cache_1 = require("./cache");
|
|
6
|
+
const coreEventManager_1 = require("./coreEventManager");
|
|
7
|
+
const volumeEventManager_1 = require("./volumeEventManager");
|
|
8
|
+
var interface_1 = require("./interface");
|
|
9
|
+
Object.defineProperty(exports, "DriveEventType", { enumerable: true, get: function () { return interface_1.DriveEventType; } });
|
|
10
|
+
const OWN_VOLUME_POLLING_INTERVAL = 30;
|
|
11
|
+
const OTHER_VOLUME_POLLING_INTERVAL = 60;
|
|
12
|
+
/**
|
|
13
|
+
* Service for listening to drive events. The service is responsible for
|
|
14
|
+
* managing the subscriptions to the events and notifying the listeners
|
|
15
|
+
* about the new events.
|
|
16
|
+
*/
|
|
17
|
+
class DriveEventsService {
|
|
18
|
+
telemetry;
|
|
19
|
+
apiService;
|
|
20
|
+
cache;
|
|
21
|
+
subscribedToRemoteDataUpdates = false;
|
|
22
|
+
listeners = [];
|
|
23
|
+
coreEvents;
|
|
24
|
+
volumesEvents;
|
|
25
|
+
logger;
|
|
26
|
+
constructor(telemetry, apiService, driveEntitiesCache) {
|
|
27
|
+
this.telemetry = telemetry;
|
|
28
|
+
this.telemetry = telemetry;
|
|
29
|
+
this.logger = telemetry.getLogger('events');
|
|
30
|
+
this.apiService = new apiService_1.EventsAPIService(apiService);
|
|
31
|
+
this.cache = new cache_1.EventsCache(driveEntitiesCache);
|
|
32
|
+
// FIXME: Allow to pass own core events manager from the public interface.
|
|
33
|
+
this.coreEvents = new coreEventManager_1.CoreEventManager(this.logger, this.apiService, this.cache);
|
|
34
|
+
this.volumesEvents = {};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Loads all the subscribed volumes (including core events) from the
|
|
38
|
+
* cache and starts listening to their events. Any additional volume
|
|
39
|
+
* that is subscribed to later will be automatically started.
|
|
40
|
+
*/
|
|
41
|
+
async subscribeToRemoteDataUpdates() {
|
|
42
|
+
if (this.subscribedToRemoteDataUpdates) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
await this.loadSubscribedVolumeEventServices();
|
|
46
|
+
this.sendNumberOfVolumeSubscriptionsToTelemetry();
|
|
47
|
+
this.subscribedToRemoteDataUpdates = true;
|
|
48
|
+
await this.coreEvents.startSubscription();
|
|
49
|
+
await Promise.all(Object.values(this.volumesEvents)
|
|
50
|
+
.map((volumeEvents) => volumeEvents.startSubscription()));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to given volume. The volume will be polled for events
|
|
54
|
+
* with the polling interval depending on the type of the volume.
|
|
55
|
+
* Own volumes are polled with highest frequency, while others are
|
|
56
|
+
* polled with lower frequency depending on the total number of
|
|
57
|
+
* subscriptions.
|
|
58
|
+
*
|
|
59
|
+
* @param isOwnVolume - Owned volumes are polled with higher frequency.
|
|
60
|
+
*/
|
|
61
|
+
async listenToVolume(volumeId, isOwnVolume = false) {
|
|
62
|
+
await this.loadSubscribedVolumeEventServices();
|
|
63
|
+
if (this.volumesEvents[volumeId]) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.logger.debug(`Creating volume event manager for volume ${volumeId}`);
|
|
67
|
+
const manager = this.createVolumeEventManager(volumeId, isOwnVolume);
|
|
68
|
+
// FIXME: Use dynamic algorithm to determine polling interval for non-own volumes.
|
|
69
|
+
manager.setPollingInterval(isOwnVolume ? OWN_VOLUME_POLLING_INTERVAL : OTHER_VOLUME_POLLING_INTERVAL);
|
|
70
|
+
if (this.subscribedToRemoteDataUpdates) {
|
|
71
|
+
await manager.startSubscription();
|
|
72
|
+
this.sendNumberOfVolumeSubscriptionsToTelemetry();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async loadSubscribedVolumeEventServices() {
|
|
76
|
+
for (const volumeId of await this.cache.getSubscribedVolumeIds()) {
|
|
77
|
+
if (!this.volumesEvents[volumeId]) {
|
|
78
|
+
const isOwnVolume = await this.cache.isOwnVolume(volumeId) || false;
|
|
79
|
+
this.createVolumeEventManager(volumeId, isOwnVolume);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
sendNumberOfVolumeSubscriptionsToTelemetry() {
|
|
84
|
+
this.telemetry.logEvent({
|
|
85
|
+
eventName: 'volumeEventsSubscriptionsChanged',
|
|
86
|
+
numberOfVolumeSubscriptions: Object.keys(this.volumesEvents).length,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
createVolumeEventManager(volumeId, isOwnVolume) {
|
|
90
|
+
const manager = new volumeEventManager_1.VolumeEventManager(this.logger, this.apiService, this.cache, volumeId, isOwnVolume);
|
|
91
|
+
for (const listener of this.listeners) {
|
|
92
|
+
manager.addListener(listener);
|
|
93
|
+
}
|
|
94
|
+
this.volumesEvents[volumeId] = manager;
|
|
95
|
+
return manager;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Listen to the drive events. The listener will be called with the
|
|
99
|
+
* new events as they arrive.
|
|
100
|
+
*
|
|
101
|
+
* One call always provides events from withing the same volume. The
|
|
102
|
+
* second argument of the callback `fullRefreshVolumeId` is thus single
|
|
103
|
+
* ID and if multiple volumes must be fully refreshed, client will
|
|
104
|
+
* receive multiple calls.
|
|
105
|
+
*/
|
|
106
|
+
addListener(callback) {
|
|
107
|
+
// Add new listener to the list for any new event manager.
|
|
108
|
+
this.listeners.push(callback);
|
|
109
|
+
// Add new listener to all existings managers.
|
|
110
|
+
this.coreEvents.addListener(callback);
|
|
111
|
+
for (const volumeEvents of Object.values(this.volumesEvents)) {
|
|
112
|
+
volumeEvents.addListener(callback);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.DriveEventsService = DriveEventsService;
|
|
117
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/events/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Callback that accepts list of Drive events and flag whether no
|
|
3
|
+
* event should be processed, but rather full cache refresh should be
|
|
4
|
+
* performed.
|
|
5
|
+
*
|
|
6
|
+
* @param fullRefreshVolumeId - ID of the volume that should be fully refreshed.
|
|
7
|
+
*/
|
|
8
|
+
export type DriveListener = (events: DriveEvent[], fullRefreshVolumeId?: string) => Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Generic internal event interface representing a list of events
|
|
11
|
+
* with metadata about the last event ID, whether there are more
|
|
12
|
+
* events to fetch, or whether the listener should refresh its state.
|
|
13
|
+
*/
|
|
14
|
+
export type Events<T> = {
|
|
15
|
+
lastEventId: string;
|
|
16
|
+
more: boolean;
|
|
17
|
+
refresh: boolean;
|
|
18
|
+
events: T[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Internal event interface representing a list of specific Drive events.
|
|
22
|
+
*/
|
|
23
|
+
export type DriveEvents = Events<DriveEvent>;
|
|
24
|
+
export type DriveEvent = {
|
|
25
|
+
type: DriveEventType.NodeCreated | DriveEventType.NodeUpdated | DriveEventType.NodeUpdatedMetadata;
|
|
26
|
+
nodeUid: string;
|
|
27
|
+
parentNodeUid?: string;
|
|
28
|
+
isTrashed: boolean;
|
|
29
|
+
isShared: boolean;
|
|
30
|
+
isOwnVolume: boolean;
|
|
31
|
+
} | {
|
|
32
|
+
type: DriveEventType.NodeDeleted;
|
|
33
|
+
nodeUid: string;
|
|
34
|
+
parentNodeUid?: string;
|
|
35
|
+
isTrashed?: boolean;
|
|
36
|
+
isShared?: boolean;
|
|
37
|
+
isOwnVolume: boolean;
|
|
38
|
+
} | {
|
|
39
|
+
type: DriveEventType.ShareWithMeUpdated;
|
|
40
|
+
};
|
|
41
|
+
export declare enum DriveEventType {
|
|
42
|
+
NodeCreated = "node_created",
|
|
43
|
+
NodeUpdated = "node_updated",
|
|
44
|
+
NodeUpdatedMetadata = "node_updated_metadata",
|
|
45
|
+
NodeDeleted = "node_deleted",
|
|
46
|
+
ShareWithMeUpdated = "share_with_me_updated"
|
|
47
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DriveEventType = void 0;
|
|
4
|
+
var DriveEventType;
|
|
5
|
+
(function (DriveEventType) {
|
|
6
|
+
DriveEventType["NodeCreated"] = "node_created";
|
|
7
|
+
DriveEventType["NodeUpdated"] = "node_updated";
|
|
8
|
+
DriveEventType["NodeUpdatedMetadata"] = "node_updated_metadata";
|
|
9
|
+
DriveEventType["NodeDeleted"] = "node_deleted";
|
|
10
|
+
DriveEventType["ShareWithMeUpdated"] = "share_with_me_updated";
|
|
11
|
+
})(DriveEventType || (exports.DriveEventType = DriveEventType = {}));
|
|
12
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/internal/events/interface.ts"],"names":[],"mappings":";;;AA4CA,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,8CAA4B,CAAA;IAC5B,8CAA4B,CAAA;IAC5B,+DAA6C,CAAA;IAC7C,8CAA4B,CAAA;IAC5B,8DAA4C,CAAA;AAChD,CAAC,EANW,cAAc,8BAAd,cAAc,QAMzB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Logger } from "../../interface";
|
|
2
|
+
import { EventsAPIService } from "./apiService";
|
|
3
|
+
import { EventsCache } from "./cache";
|
|
4
|
+
import { DriveListener } from "./interface";
|
|
5
|
+
/**
|
|
6
|
+
* Combines API and event manager to provide a service for listening to
|
|
7
|
+
* volume events. Volume events are all about nodes updates. Whenever
|
|
8
|
+
* there is update to the node metadata or content, the event is emitted.
|
|
9
|
+
*/
|
|
10
|
+
export declare class VolumeEventManager {
|
|
11
|
+
private apiService;
|
|
12
|
+
private cache;
|
|
13
|
+
private volumeId;
|
|
14
|
+
private manager;
|
|
15
|
+
constructor(logger: Logger, apiService: EventsAPIService, cache: EventsCache, volumeId: string, isOwnVolume: boolean);
|
|
16
|
+
private getLastEventId;
|
|
17
|
+
/**
|
|
18
|
+
* There is a limit how many volume subscribtions can be active at
|
|
19
|
+
* the same time. The manager of all volume managers should set the
|
|
20
|
+
* intervals for each volume accordingly depending on the volume
|
|
21
|
+
* type or the total number of subscriptions.
|
|
22
|
+
*/
|
|
23
|
+
setPollingInterval(pollingIntervalInSeconds: number): void;
|
|
24
|
+
startSubscription(): Promise<void>;
|
|
25
|
+
stopSubscription(): Promise<void>;
|
|
26
|
+
addListener(callback: DriveListener): void;
|
|
27
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VolumeEventManager = void 0;
|
|
4
|
+
const telemetry_1 = require("../../telemetry");
|
|
5
|
+
const eventManager_1 = require("./eventManager");
|
|
6
|
+
/**
|
|
7
|
+
* Combines API and event manager to provide a service for listening to
|
|
8
|
+
* volume events. Volume events are all about nodes updates. Whenever
|
|
9
|
+
* there is update to the node metadata or content, the event is emitted.
|
|
10
|
+
*/
|
|
11
|
+
class VolumeEventManager {
|
|
12
|
+
apiService;
|
|
13
|
+
cache;
|
|
14
|
+
volumeId;
|
|
15
|
+
manager;
|
|
16
|
+
constructor(logger, apiService, cache, volumeId, isOwnVolume) {
|
|
17
|
+
this.apiService = apiService;
|
|
18
|
+
this.cache = cache;
|
|
19
|
+
this.volumeId = volumeId;
|
|
20
|
+
this.apiService = apiService;
|
|
21
|
+
this.volumeId = volumeId;
|
|
22
|
+
this.manager = new eventManager_1.EventManager(new telemetry_1.LoggerWithPrefix(logger, `volume ${volumeId}`), () => this.getLastEventId(), (eventId) => this.apiService.getVolumeEvents(volumeId, eventId, isOwnVolume), (lastEventId) => this.cache.setLastEventId(volumeId, {
|
|
23
|
+
lastEventId,
|
|
24
|
+
pollingIntervalInSeconds: this.manager.pollingIntervalInSeconds,
|
|
25
|
+
isOwnVolume
|
|
26
|
+
}));
|
|
27
|
+
this.cache.getPollingIntervalInSeconds(volumeId)
|
|
28
|
+
.then((pollingIntervalInSeconds) => {
|
|
29
|
+
if (pollingIntervalInSeconds) {
|
|
30
|
+
this.manager.pollingIntervalInSeconds = pollingIntervalInSeconds;
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
.catch(() => { });
|
|
34
|
+
}
|
|
35
|
+
async getLastEventId() {
|
|
36
|
+
const lastEventId = await this.cache.getLastEventId(this.volumeId);
|
|
37
|
+
if (lastEventId) {
|
|
38
|
+
return lastEventId;
|
|
39
|
+
}
|
|
40
|
+
return this.apiService.getVolumeLatestEventId(this.volumeId);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* There is a limit how many volume subscribtions can be active at
|
|
44
|
+
* the same time. The manager of all volume managers should set the
|
|
45
|
+
* intervals for each volume accordingly depending on the volume
|
|
46
|
+
* type or the total number of subscriptions.
|
|
47
|
+
*/
|
|
48
|
+
setPollingInterval(pollingIntervalInSeconds) {
|
|
49
|
+
this.manager.pollingIntervalInSeconds = pollingIntervalInSeconds;
|
|
50
|
+
}
|
|
51
|
+
async startSubscription() {
|
|
52
|
+
await this.manager.start();
|
|
53
|
+
}
|
|
54
|
+
async stopSubscription() {
|
|
55
|
+
await this.manager.stop();
|
|
56
|
+
}
|
|
57
|
+
addListener(callback) {
|
|
58
|
+
this.manager.addListener(async (events, fullRefresh) => {
|
|
59
|
+
if (fullRefresh) {
|
|
60
|
+
await callback([], this.volumeId);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
await callback(events);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.VolumeEventManager = VolumeEventManager;
|
|
69
|
+
//# sourceMappingURL=volumeEventManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumeEventManager.js","sourceRoot":"","sources":["../../../src/internal/events/volumeEventManager.ts"],"names":[],"mappings":";;;AACA,+CAAmD;AAInD,iDAA8C;AAE9C;;;;GAIG;AACH,MAAa,kBAAkB;IAGS;IAAsC;IAA4B;IAF9F,OAAO,CAA2B;IAE1C,YAAY,MAAc,EAAU,UAA4B,EAAU,KAAkB,EAAU,QAAgB,EAAE,WAAoB;QAAxG,eAAU,GAAV,UAAU,CAAkB;QAAU,UAAK,GAAL,KAAK,CAAa;QAAU,aAAQ,GAAR,QAAQ,CAAQ;QAClH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,2BAAY,CAC3B,IAAI,4BAAgB,CAAC,MAAM,EAAE,UAAU,QAAQ,EAAE,CAAC,EAClD,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAC3B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAC5E,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;YACjD,WAAW;YACX,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAC/D,WAAW;SACd,CAAC,CACL,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,QAAQ,CAAC;aAC3C,IAAI,CAAC,CAAC,wBAAwB,EAAE,EAAE;YAC/B,IAAI,wBAAwB,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;YACrE,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,cAAc;QACxB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,wBAAgC;QAC/C,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,QAAuB;QAC/B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YACnD,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7DD,gDA6DC"}
|