@protontech/drive-sdk 0.14.9 → 0.15.0
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 +5 -0
- package/dist/cache/index.d.ts +1 -1
- package/dist/cache/memoryCache.d.ts +1 -1
- package/dist/cache/nullCache.d.ts +1 -1
- package/dist/crypto/driveCrypto.d.ts +7 -11
- package/dist/crypto/driveCrypto.js +35 -38
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/driveCrypto.test.js +1 -21
- package/dist/crypto/driveCrypto.test.js.map +1 -1
- package/dist/crypto/index.d.ts +2 -4
- package/dist/crypto/index.js +3 -6
- package/dist/crypto/index.js.map +1 -1
- package/dist/crypto/interface.d.ts +3 -35
- package/dist/crypto/interface.js +0 -7
- package/dist/crypto/interface.js.map +1 -1
- package/dist/crypto/openPGPCrypto.d.ts +10 -106
- package/dist/crypto/openPGPCrypto.js +2 -4
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/diagnostic/index.d.ts +1 -1
- package/dist/diagnostic/index.js +1 -1
- package/dist/diagnostic/index.js.map +1 -1
- package/dist/diagnostic/integrityVerificationStream.js +1 -2
- package/dist/diagnostic/integrityVerificationStream.js.map +1 -1
- package/dist/diagnostic/interface.d.ts +1 -1
- package/dist/diagnostic/nodeUtils.d.ts +1 -1
- package/dist/diagnostic/sdkDiagnosticBase.d.ts +2 -2
- package/dist/diagnostic/sdkDiagnosticBase.js.map +1 -1
- package/dist/diagnostic/sdkDiagnosticMain.js +1 -1
- package/dist/diagnostic/sdkDiagnosticMain.js.map +1 -1
- package/dist/diagnostic/sdkDiagnosticPhotos.js +1 -1
- package/dist/diagnostic/sdkDiagnosticPhotos.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/interface/account.d.ts +1 -1
- package/dist/interface/devices.d.ts +1 -1
- package/dist/interface/index.d.ts +15 -15
- package/dist/interface/index.js +7 -7
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +1 -1
- package/dist/interface/photos.d.ts +1 -1
- package/dist/interface/sharing.d.ts +2 -2
- package/dist/internal/apiService/apiService.js +1 -1
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/coreTypes.d.ts +8552 -7249
- package/dist/internal/apiService/driveTypes.d.ts +47 -92
- package/dist/internal/apiService/errors.test.js +1 -1
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/apiService/index.d.ts +4 -4
- package/dist/internal/apiService/index.js +5 -5
- package/dist/internal/apiService/index.js.map +1 -1
- package/dist/internal/apiService/transformers.d.ts +1 -1
- package/dist/internal/devices/index.d.ts +1 -1
- package/dist/internal/devices/manager.test.js +1 -1
- package/dist/internal/devices/manager.test.js.map +1 -1
- package/dist/internal/download/cryptoService.js +3 -2
- package/dist/internal/download/cryptoService.js.map +1 -1
- package/dist/internal/download/fileDownloader.js +8 -7
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js +1 -1
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/download/index.d.ts +2 -2
- package/dist/internal/download/index.js +1 -1
- package/dist/internal/download/index.js.map +1 -1
- package/dist/internal/download/interface.d.ts +1 -1
- package/dist/internal/download/telemetry.js +2 -3
- package/dist/internal/download/telemetry.js.map +1 -1
- package/dist/internal/download/telemetry.test.js +5 -0
- package/dist/internal/download/telemetry.test.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.d.ts +1 -1
- package/dist/internal/download/thumbnailDownloader.js +1 -1
- package/dist/internal/download/thumbnailDownloader.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
- package/dist/internal/errors.d.ts +1 -0
- package/dist/internal/errors.js +11 -0
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/events/coreEventManager.test.js +1 -1
- package/dist/internal/events/coreEventManager.test.js.map +1 -1
- package/dist/internal/events/eventManager.d.ts +1 -1
- package/dist/internal/events/eventManager.js +1 -0
- package/dist/internal/events/eventManager.js.map +1 -1
- package/dist/internal/events/index.js +1 -1
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/events/interface.d.ts +8 -0
- package/dist/internal/events/interface.js.map +1 -1
- package/dist/internal/events/volumeEventManager.js +1 -1
- package/dist/internal/events/volumeEventManager.js.map +1 -1
- package/dist/internal/events/volumeEventManager.test.js +1 -1
- package/dist/internal/events/volumeEventManager.test.js.map +1 -1
- package/dist/internal/nodes/apiService.d.ts +10 -4
- package/dist/internal/nodes/apiService.js +6 -2
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +6 -2
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cache.d.ts +1 -1
- package/dist/internal/nodes/cryptoCache.d.ts +1 -1
- package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoReporter.d.ts +1 -1
- package/dist/internal/nodes/cryptoService.d.ts +2 -2
- package/dist/internal/nodes/cryptoService.js +2 -2
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js +1 -1
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/events.test.js.map +1 -1
- package/dist/internal/nodes/index.d.ts +4 -4
- package/dist/internal/nodes/index.js +2 -2
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/index.test.js +3 -3
- package/dist/internal/nodes/index.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +1 -1
- package/dist/internal/nodes/nodesAccess.d.ts +2 -2
- package/dist/internal/nodes/nodesAccess.js +3 -3
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +2 -2
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +1 -1
- package/dist/internal/nodes/nodesManagement.js +2 -2
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +6 -6
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
- package/dist/internal/nodes/nodesRevisions.d.ts +1 -1
- package/dist/internal/nodes/nodesRevisions.js.map +1 -1
- package/dist/internal/photos/addToAlbum.d.ts +1 -1
- package/dist/internal/photos/addToAlbum.js.map +1 -1
- package/dist/internal/photos/albumsCrypto.js.map +1 -1
- package/dist/internal/photos/albumsManager.js +15 -5
- package/dist/internal/photos/albumsManager.js.map +1 -1
- package/dist/internal/photos/albumsManager.test.js +3 -2
- package/dist/internal/photos/albumsManager.test.js.map +1 -1
- package/dist/internal/photos/apiService.js +1 -1
- package/dist/internal/photos/index.d.ts +2 -2
- package/dist/internal/photos/index.js +5 -5
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +2 -2
- package/dist/internal/photos/nodes.d.ts +2 -2
- package/dist/internal/photos/nodes.js +11 -1
- package/dist/internal/photos/nodes.js.map +1 -1
- package/dist/internal/photos/nodes.test.js +17 -3
- package/dist/internal/photos/nodes.test.js.map +1 -1
- package/dist/internal/photos/photosManager.d.ts +1 -1
- package/dist/internal/photos/photosManager.js +1 -1
- package/dist/internal/photos/photosManager.js.map +1 -1
- package/dist/internal/photos/photosManager.test.js +1 -1
- package/dist/internal/photos/photosManager.test.js.map +1 -1
- package/dist/internal/photos/photosTransferPayloadBuilder.test.js.map +1 -1
- package/dist/internal/photos/timeline.test.js.map +1 -1
- package/dist/internal/photos/upload.d.ts +1 -1
- package/dist/internal/shares/apiService.d.ts +1 -1
- package/dist/internal/shares/cache.d.ts +1 -1
- package/dist/internal/shares/cryptoCache.test.js.map +1 -1
- package/dist/internal/shares/cryptoService.d.ts +2 -2
- package/dist/internal/shares/cryptoService.js +1 -1
- package/dist/internal/shares/cryptoService.js.map +1 -1
- package/dist/internal/shares/cryptoService.test.js +1 -1
- package/dist/internal/shares/cryptoService.test.js.map +1 -1
- package/dist/internal/shares/index.d.ts +2 -2
- package/dist/internal/shares/index.js +1 -1
- package/dist/internal/shares/index.js.map +1 -1
- package/dist/internal/shares/manager.d.ts +2 -2
- package/dist/internal/shares/manager.js.map +1 -1
- package/dist/internal/sharing/apiService.d.ts +2 -2
- package/dist/internal/sharing/cryptoService.d.ts +2 -3
- package/dist/internal/sharing/cryptoService.js +10 -31
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.test.js.map +1 -1
- package/dist/internal/sharing/index.d.ts +3 -3
- package/dist/internal/sharing/index.js +1 -1
- package/dist/internal/sharing/index.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +2 -2
- package/dist/internal/sharing/sharingAccess.d.ts +1 -1
- package/dist/internal/sharing/sharingAccess.js +1 -1
- package/dist/internal/sharing/sharingAccess.js.map +1 -1
- package/dist/internal/sharing/sharingAccess.test.js +1 -1
- package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +3 -3
- package/dist/internal/sharing/sharingManagement.js +1 -1
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +2 -2
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/sharingPublic/cryptoReporter.d.ts +1 -1
- package/dist/internal/sharingPublic/cryptoReporter.js +1 -1
- package/dist/internal/sharingPublic/cryptoReporter.js.map +1 -1
- package/dist/internal/sharingPublic/index.d.ts +2 -2
- package/dist/internal/sharingPublic/index.js +3 -3
- package/dist/internal/sharingPublic/index.js.map +1 -1
- package/dist/internal/sharingPublic/nodes.d.ts +4 -4
- package/dist/internal/sharingPublic/nodes.js +4 -1
- package/dist/internal/sharingPublic/nodes.js.map +1 -1
- package/dist/internal/sharingPublic/session/apiService.d.ts +1 -1
- package/dist/internal/sharingPublic/session/manager.d.ts +1 -1
- package/dist/internal/upload/apiService.d.ts +1 -1
- package/dist/internal/upload/apiService.js +13 -6
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/cryptoService.d.ts +1 -1
- package/dist/internal/upload/cryptoService.js +5 -4
- package/dist/internal/upload/cryptoService.js.map +1 -1
- package/dist/internal/upload/fileUploader.test.js +1 -1
- package/dist/internal/upload/fileUploader.test.js.map +1 -1
- package/dist/internal/upload/index.d.ts +2 -2
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +1 -1
- package/dist/internal/upload/manager.d.ts +1 -1
- package/dist/internal/upload/manager.js +1 -1
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/smallFileUploader.test.js +1 -1
- package/dist/internal/upload/smallFileUploader.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +3 -3
- package/dist/internal/upload/streamUploader.js +1 -1
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +2 -2
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/internal/upload/telemetry.d.ts +1 -1
- package/dist/internal/upload/telemetry.js +2 -3
- package/dist/internal/upload/telemetry.js.map +1 -1
- package/dist/internal/upload/telemetry.test.js +5 -0
- package/dist/internal/upload/telemetry.test.js.map +1 -1
- package/dist/polyfill.d.ts +1 -0
- package/dist/polyfill.js +4 -0
- package/dist/polyfill.js.map +1 -0
- package/dist/protonDriveClient.d.ts +1 -1
- package/dist/protonDriveClient.js +3 -3
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.d.ts +7 -1
- package/dist/protonDrivePhotosClient.js +13 -4
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +3 -3
- package/dist/protonDrivePublicLinkClient.js +3 -3
- package/dist/protonDrivePublicLinkClient.js.map +1 -1
- package/dist/transformers.d.ts +1 -1
- package/package.json +8 -4
- package/src/cache/index.ts +1 -1
- package/src/cache/memoryCache.ts +1 -1
- package/src/cache/nullCache.ts +1 -1
- package/src/crypto/driveCrypto.test.ts +1 -24
- package/src/crypto/driveCrypto.ts +37 -35
- package/src/crypto/index.ts +2 -4
- package/src/crypto/interface.ts +3 -49
- package/src/crypto/openPGPCrypto.ts +4 -88
- package/src/diagnostic/index.ts +3 -3
- package/src/diagnostic/integrityVerificationStream.ts +1 -2
- package/src/diagnostic/interface.ts +1 -1
- package/src/diagnostic/nodeUtils.ts +1 -1
- package/src/diagnostic/sdkDiagnosticBase.ts +6 -6
- package/src/diagnostic/sdkDiagnosticMain.ts +2 -2
- package/src/diagnostic/sdkDiagnosticPhotos.ts +2 -2
- package/src/diagnostic/telemetry.ts +1 -1
- package/src/index.ts +4 -3
- package/src/interface/account.ts +1 -1
- package/src/interface/devices.ts +1 -1
- package/src/interface/index.ts +40 -40
- package/src/interface/nodes.ts +1 -1
- package/src/interface/photos.ts +1 -1
- package/src/interface/sharing.ts +2 -2
- package/src/internal/apiService/apiService.test.ts +2 -2
- package/src/internal/apiService/apiService.ts +3 -3
- package/src/internal/apiService/coreTypes.ts +8641 -7349
- package/src/internal/apiService/driveTypes.ts +47 -92
- package/src/internal/apiService/errors.test.ts +2 -2
- package/src/internal/apiService/index.ts +4 -4
- package/src/internal/apiService/transformers.ts +1 -1
- package/src/internal/devices/index.ts +1 -1
- package/src/internal/devices/manager.test.ts +2 -2
- package/src/internal/download/cryptoService.ts +6 -11
- package/src/internal/download/fileDownloader.test.ts +3 -3
- package/src/internal/download/fileDownloader.ts +8 -6
- package/src/internal/download/index.ts +3 -3
- package/src/internal/download/interface.ts +1 -1
- package/src/internal/download/seekableStream.test.ts +1 -1
- package/src/internal/download/telemetry.test.ts +7 -1
- package/src/internal/download/telemetry.ts +4 -7
- package/src/internal/download/thumbnailDownloader.test.ts +1 -1
- package/src/internal/download/thumbnailDownloader.ts +2 -2
- package/src/internal/errors.ts +15 -0
- package/src/internal/events/apiService.ts +2 -2
- package/src/internal/events/coreEventManager.test.ts +1 -1
- package/src/internal/events/eventManager.ts +2 -1
- package/src/internal/events/index.ts +2 -2
- package/src/internal/events/interface.ts +8 -0
- package/src/internal/events/volumeEventManager.test.ts +1 -1
- package/src/internal/events/volumeEventManager.ts +1 -1
- package/src/internal/nodes/apiService.test.ts +8 -3
- package/src/internal/nodes/apiService.ts +22 -7
- package/src/internal/nodes/cache.test.ts +1 -1
- package/src/internal/nodes/cache.ts +1 -1
- package/src/internal/nodes/cryptoCache.test.ts +1 -1
- package/src/internal/nodes/cryptoCache.ts +1 -1
- package/src/internal/nodes/cryptoReporter.ts +4 -4
- package/src/internal/nodes/cryptoService.test.ts +2 -2
- package/src/internal/nodes/cryptoService.ts +14 -15
- package/src/internal/nodes/events.test.ts +1 -1
- package/src/internal/nodes/extendedAttributes.test.ts +3 -3
- package/src/internal/nodes/index.test.ts +8 -8
- package/src/internal/nodes/index.ts +6 -6
- package/src/internal/nodes/interface.ts +6 -6
- package/src/internal/nodes/nodeName.test.ts +1 -1
- package/src/internal/nodes/nodesAccess.test.ts +3 -3
- package/src/internal/nodes/nodesAccess.ts +6 -6
- package/src/internal/nodes/nodesManagement.test.ts +4 -4
- package/src/internal/nodes/nodesManagement.ts +6 -6
- package/src/internal/nodes/nodesRevisions.ts +1 -1
- package/src/internal/photos/addToAlbum.ts +1 -1
- package/src/internal/photos/albumsCrypto.ts +1 -0
- package/src/internal/photos/albumsManager.test.ts +4 -3
- package/src/internal/photos/albumsManager.ts +13 -5
- package/src/internal/photos/apiService.ts +1 -1
- package/src/internal/photos/index.ts +7 -7
- package/src/internal/photos/interface.ts +2 -2
- package/src/internal/photos/nodes.test.ts +22 -6
- package/src/internal/photos/nodes.ts +16 -9
- package/src/internal/photos/photosManager.test.ts +5 -5
- package/src/internal/photos/photosManager.ts +4 -4
- package/src/internal/photos/photosTransferPayloadBuilder.test.ts +1 -1
- package/src/internal/photos/timeline.test.ts +1 -1
- package/src/internal/photos/upload.ts +3 -3
- package/src/internal/sdkEvents.ts +1 -1
- package/src/internal/shares/apiService.ts +1 -1
- package/src/internal/shares/cache.ts +1 -1
- package/src/internal/shares/cryptoCache.test.ts +1 -1
- package/src/internal/shares/cryptoService.test.ts +1 -1
- package/src/internal/shares/cryptoService.ts +8 -8
- package/src/internal/shares/index.ts +5 -5
- package/src/internal/shares/manager.ts +2 -2
- package/src/internal/sharing/apiService.ts +10 -10
- package/src/internal/sharing/cryptoService.test.ts +1 -1
- package/src/internal/sharing/cryptoService.ts +12 -37
- package/src/internal/sharing/events.test.ts +2 -2
- package/src/internal/sharing/index.ts +3 -3
- package/src/internal/sharing/interface.ts +2 -2
- package/src/internal/sharing/sharingAccess.test.ts +4 -4
- package/src/internal/sharing/sharingAccess.ts +3 -3
- package/src/internal/sharing/sharingManagement.test.ts +4 -4
- package/src/internal/sharing/sharingManagement.ts +9 -9
- package/src/internal/sharingPublic/cryptoReporter.ts +7 -7
- package/src/internal/sharingPublic/index.ts +6 -6
- package/src/internal/sharingPublic/nodes.ts +7 -4
- package/src/internal/sharingPublic/session/apiService.ts +1 -1
- package/src/internal/sharingPublic/session/manager.ts +1 -1
- package/src/internal/upload/apiService.ts +17 -8
- package/src/internal/upload/cryptoService.ts +8 -6
- package/src/internal/upload/fileUploader.test.ts +4 -4
- package/src/internal/upload/index.ts +3 -3
- package/src/internal/upload/interface.ts +1 -2
- package/src/internal/upload/manager.ts +4 -4
- package/src/internal/upload/smallFileUploader.test.ts +4 -4
- package/src/internal/upload/streamUploader.test.ts +5 -5
- package/src/internal/upload/streamUploader.ts +4 -4
- package/src/internal/upload/telemetry.test.ts +7 -1
- package/src/internal/upload/telemetry.ts +5 -8
- package/src/polyfill.ts +1 -0
- package/src/protonDriveClient.ts +32 -32
- package/src/protonDrivePhotosClient.ts +42 -32
- package/src/protonDrivePublicLinkClient.ts +25 -25
- package/src/transformers.ts +9 -9
- package/dist/crypto/hmac.d.ts +0 -22
- package/dist/crypto/hmac.js +0 -44
- package/dist/crypto/hmac.js.map +0 -1
- package/dist/crypto/utils.d.ts +0 -2
- package/dist/crypto/utils.js +0 -35
- package/dist/crypto/utils.js.map +0 -1
- package/src/crypto/hmac.ts +0 -46
- package/src/crypto/utils.ts +0 -40
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ValidationError } from '../../errors';
|
|
2
2
|
import {
|
|
3
3
|
Logger,
|
|
4
4
|
Member,
|
|
@@ -10,13 +10,13 @@ import {
|
|
|
10
10
|
PublicLink,
|
|
11
11
|
resultOk,
|
|
12
12
|
} from '../../interface';
|
|
13
|
+
import { getMockLogger } from '../../tests/logger';
|
|
14
|
+
import { ErrorCode } from '../apiService';
|
|
13
15
|
import { SharingAPIService } from './apiService';
|
|
14
16
|
import { SharingCache } from './cache';
|
|
15
17
|
import { SharingCryptoService } from './cryptoService';
|
|
16
|
-
import {
|
|
18
|
+
import { NodesService, SharesService } from './interface';
|
|
17
19
|
import { SharingManagement } from './sharingManagement';
|
|
18
|
-
import { ValidationError } from '../../errors';
|
|
19
|
-
import { ErrorCode } from '../apiService';
|
|
20
20
|
|
|
21
21
|
const DEFAULT_SHARE_ID = 'shareId';
|
|
22
22
|
|
|
@@ -4,24 +4,24 @@ import { PrivateKey, SessionKey } from '../../crypto';
|
|
|
4
4
|
import { ValidationError } from '../../errors';
|
|
5
5
|
import {
|
|
6
6
|
Logger,
|
|
7
|
+
Member,
|
|
7
8
|
MemberRole,
|
|
8
|
-
ShareNodeSettings,
|
|
9
|
-
UnshareNodeSettings,
|
|
10
|
-
ShareResult,
|
|
11
|
-
ProtonInvitation,
|
|
12
9
|
NonProtonInvitation,
|
|
13
|
-
Member,
|
|
14
|
-
resultOk,
|
|
15
10
|
ProtonDriveAccount,
|
|
11
|
+
ProtonInvitation,
|
|
12
|
+
resultOk,
|
|
13
|
+
ShareNodeSettings,
|
|
16
14
|
SharePublicLinkSettingsObject,
|
|
15
|
+
ShareResult,
|
|
16
|
+
UnshareNodeSettings,
|
|
17
17
|
} from '../../interface';
|
|
18
18
|
import { ErrorCode } from '../apiService';
|
|
19
|
-
import { splitNodeUid, splitInvitationUid } from '../uids';
|
|
20
19
|
import { getErrorMessage } from '../errors';
|
|
20
|
+
import { splitInvitationUid, splitNodeUid } from '../uids';
|
|
21
21
|
import { SharingAPIService } from './apiService';
|
|
22
|
-
import { PUBLIC_LINK_GENERATED_PASSWORD_LENGTH, SharingCryptoService } from './cryptoService';
|
|
23
|
-
import { SharesService, NodesService, ShareResultWithCreatorEmail, PublicLinkWithCreatorEmail } from './interface';
|
|
24
22
|
import { SharingCache } from './cache';
|
|
23
|
+
import { PUBLIC_LINK_GENERATED_PASSWORD_LENGTH, SharingCryptoService } from './cryptoService';
|
|
24
|
+
import { NodesService, PublicLinkWithCreatorEmail, ShareResultWithCreatorEmail, SharesService } from './interface';
|
|
25
25
|
|
|
26
26
|
interface InternalShareResult extends ShareResultWithCreatorEmail {
|
|
27
27
|
share: Share;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { c } from 'ttag';
|
|
2
2
|
|
|
3
3
|
import { VERIFICATION_STATUS } from '../../crypto';
|
|
4
|
-
import { getVerificationMessage, isNotApplicationError } from '../errors';
|
|
5
4
|
import {
|
|
6
|
-
resultOk,
|
|
7
|
-
resultError,
|
|
8
|
-
Author,
|
|
9
5
|
AnonymousUser,
|
|
10
|
-
|
|
6
|
+
Author,
|
|
7
|
+
Logger,
|
|
8
|
+
MetricsDecryptionErrorField,
|
|
11
9
|
MetricVerificationErrorField,
|
|
12
10
|
MetricVolumeType,
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
ProtonDriveTelemetry,
|
|
12
|
+
resultError,
|
|
13
|
+
resultOk,
|
|
15
14
|
} from '../../interface';
|
|
15
|
+
import { getVerificationMessage, isNotApplicationError } from '../errors';
|
|
16
16
|
|
|
17
17
|
export class SharingPublicCryptoReporter {
|
|
18
18
|
private logger: Logger;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { DriveCrypto, PrivateKey } from '../../crypto';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
ProtonDriveTelemetry,
|
|
3
|
+
MemberRole,
|
|
5
4
|
ProtonDriveAccount,
|
|
5
|
+
ProtonDriveCryptoCache,
|
|
6
6
|
ProtonDriveEntitiesCache,
|
|
7
|
-
|
|
7
|
+
ProtonDriveTelemetry,
|
|
8
8
|
} from '../../interface';
|
|
9
9
|
import { DriveAPIService } from '../apiService';
|
|
10
|
-
import { SharingPublicNodesAPIService, SharingPublicNodesCryptoService } from './nodes';
|
|
11
10
|
import { NodesCache } from '../nodes/cache';
|
|
12
11
|
import { NodesCryptoCache } from '../nodes/cryptoCache';
|
|
13
12
|
import { NodesRevisons } from '../nodes/nodesRevisions';
|
|
13
|
+
import { SharingPublicAPIService } from './apiService';
|
|
14
14
|
import { SharingPublicCryptoReporter } from './cryptoReporter';
|
|
15
|
+
import { SharingPublicNodesAPIService, SharingPublicNodesCryptoService } from './nodes';
|
|
15
16
|
import { SharingPublicNodesAccess, SharingPublicNodesManagement } from './nodes';
|
|
16
|
-
import { SharingPublicSharesManager } from './shares';
|
|
17
|
-
import { SharingPublicAPIService } from './apiService';
|
|
18
17
|
import { NodesSecurity } from './nodesSecurity';
|
|
18
|
+
import { SharingPublicSharesManager } from './shares';
|
|
19
19
|
|
|
20
20
|
export { SharingPublicSessionManager } from './session/manager';
|
|
21
21
|
export { getTokenAndPasswordFromUrl } from './session/url';
|
|
@@ -4,14 +4,14 @@ import { PrivateKey } from '../../crypto';
|
|
|
4
4
|
import { ValidationError } from '../../errors';
|
|
5
5
|
import { type Logger, MemberRole, NodeResult, ProtonDriveTelemetry } from '../../interface';
|
|
6
6
|
import { type DriveAPIService, drivePaths } from '../apiService';
|
|
7
|
-
import {
|
|
7
|
+
import { linkToEncryptedNode, NodeAPIService } from '../nodes/apiService';
|
|
8
8
|
import { NodesCache } from '../nodes/cache';
|
|
9
9
|
import { NodesCryptoCache } from '../nodes/cryptoCache';
|
|
10
10
|
import { NodesCryptoService } from '../nodes/cryptoService';
|
|
11
|
-
import { DecryptedNode, DecryptedNodeKeys,
|
|
11
|
+
import { DecryptedNode, DecryptedNodeKeys, EncryptedNode, NodeSigningKeys } from '../nodes/interface';
|
|
12
|
+
import { isProtonDocument, isProtonSheet } from '../nodes/mediaTypes';
|
|
12
13
|
import { NodesAccess } from '../nodes/nodesAccess';
|
|
13
14
|
import { NodesManagement } from '../nodes/nodesManagement';
|
|
14
|
-
import { isProtonDocument, isProtonSheet } from '../nodes/mediaTypes';
|
|
15
15
|
import { validateNodeName } from '../nodes/validations';
|
|
16
16
|
import { makeNodeUid, splitNodeUid } from '../uids';
|
|
17
17
|
import { SharingPublicSharesManager } from './shares';
|
|
@@ -82,9 +82,12 @@ export class SharingPublicNodesAPIService extends NodeAPIService {
|
|
|
82
82
|
volumeId: string,
|
|
83
83
|
link: PostLoadLinksMetadataResponse['Links'][0],
|
|
84
84
|
isOwnVolumeId: boolean,
|
|
85
|
-
): EncryptedNode {
|
|
85
|
+
): EncryptedNode | undefined {
|
|
86
86
|
const nodeUid = makeNodeUid(volumeId, link.Link.LinkID);
|
|
87
87
|
const encryptedNode = linkToEncryptedNode(this.logger, volumeId, link, isOwnVolumeId);
|
|
88
|
+
if (!encryptedNode) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
88
91
|
|
|
89
92
|
// TODO: This affects the cache. At this moment, the public link is not cached
|
|
90
93
|
// anywhere, thus OK. To avoid issues when public links reuses the same cache,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Logger } from '../../../interface';
|
|
2
2
|
import { DriveAPIService, drivePaths, permissionsToMemberRole } from '../../apiService';
|
|
3
3
|
import { makeNodeUid } from '../../uids';
|
|
4
|
-
import {
|
|
4
|
+
import { EncryptedShareCrypto, PublicLinkInfo, PublicLinkSession, PublicLinkSrpAuth } from './interface';
|
|
5
5
|
|
|
6
6
|
type GetPublicLinkInfoResponse =
|
|
7
7
|
drivePaths['/drive/urls/{token}/info']['get']['responses']['200']['content']['application/json'];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger, MemberRole, ProtonDriveHTTPClient, ProtonDriveTelemetry } from '../../../interface';
|
|
2
1
|
import { DriveCrypto, PrivateKey, SRPModule } from '../../../crypto';
|
|
2
|
+
import { Logger, MemberRole, ProtonDriveHTTPClient, ProtonDriveTelemetry } from '../../../interface';
|
|
3
3
|
import { DriveAPIService, permissionsToMemberRole } from '../../apiService';
|
|
4
4
|
import { SharingPublicSessionAPIService } from './apiService';
|
|
5
5
|
import { SharingPublicSessionHttpClient } from './httpClient';
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { c } from 'ttag';
|
|
2
2
|
|
|
3
|
-
import { base64StringToUint8Array, uint8ArrayToBase64String } from '../../crypto';
|
|
4
3
|
import { AnonymousUser } from '../../interface';
|
|
4
|
+
import { ThumbnailType } from '../../interface';
|
|
5
5
|
import { APICodeError, DriveAPIService, drivePaths, isCodeOk } from '../apiService';
|
|
6
|
-
import {
|
|
6
|
+
import { makeNodeRevisionUid, makeNodeUid, splitNodeRevisionUid, splitNodeUid } from '../uids';
|
|
7
7
|
import { UploadTokens } from './interface';
|
|
8
|
-
import { ThumbnailType } from '../../interface';
|
|
9
8
|
|
|
10
9
|
type PostCreateDraftRequest = Extract<
|
|
11
10
|
drivePaths['/drive/v2/volumes/{volumeID}/files']['post']['requestBody'],
|
|
@@ -171,7 +170,7 @@ export class UploadAPIService {
|
|
|
171
170
|
);
|
|
172
171
|
|
|
173
172
|
return {
|
|
174
|
-
verificationCode:
|
|
173
|
+
verificationCode: Uint8Array.fromBase64(result.VerificationCode),
|
|
175
174
|
base64ContentKeyPacket: result.ContentKeyPacket,
|
|
176
175
|
};
|
|
177
176
|
}
|
|
@@ -210,7 +209,7 @@ export class UploadAPIService {
|
|
|
210
209
|
Index: block.index,
|
|
211
210
|
EncSignature: block.armoredSignature,
|
|
212
211
|
Verifier: {
|
|
213
|
-
Token:
|
|
212
|
+
Token: block.verificationToken.toBase64(),
|
|
214
213
|
},
|
|
215
214
|
})),
|
|
216
215
|
ThumbnailList: (blocks.thumbnails || []).map((block) => ({
|
|
@@ -287,7 +286,17 @@ export class UploadAPIService {
|
|
|
287
286
|
const formData = new FormData();
|
|
288
287
|
formData.append('Block', new Blob([block]), 'blob');
|
|
289
288
|
|
|
290
|
-
|
|
289
|
+
let onProgressCalled = false;
|
|
290
|
+
const onProgressHandler = (uploadedBytes: number) => {
|
|
291
|
+
onProgressCalled = true;
|
|
292
|
+
onProgress?.(uploadedBytes);
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
await this.apiService.postBlockStream(url, token, formData, onProgressHandler, signal);
|
|
296
|
+
|
|
297
|
+
if (!onProgressCalled) {
|
|
298
|
+
onProgress?.(block.length);
|
|
299
|
+
}
|
|
291
300
|
}
|
|
292
301
|
|
|
293
302
|
async isRevisionUploaded(nodeRevisionUid: string): Promise<boolean> {
|
|
@@ -355,7 +364,7 @@ export class UploadAPIService {
|
|
|
355
364
|
ManifestSignature: content.armoredManifestSignature,
|
|
356
365
|
ContentBlockEncSignature: content.block ? content.block.armoredSignature : null,
|
|
357
366
|
ContentBlockVerificationToken: content.block
|
|
358
|
-
?
|
|
367
|
+
? content.block.verificationToken.toBase64()
|
|
359
368
|
: null,
|
|
360
369
|
XAttr: metadata.armoredExtendedAttributes,
|
|
361
370
|
ChecksumVerified: content.checksumVerified || false,
|
|
@@ -423,7 +432,7 @@ export class UploadAPIService {
|
|
|
423
432
|
ManifestSignature: content.armoredManifestSignature,
|
|
424
433
|
ContentBlockEncSignature: content.block ? content.block.armoredSignature : null,
|
|
425
434
|
ContentBlockVerificationToken: content.block
|
|
426
|
-
?
|
|
435
|
+
? content.block.verificationToken.toBase64()
|
|
427
436
|
: null,
|
|
428
437
|
XAttr: metadata.armoredExtendedAttributes,
|
|
429
438
|
ChecksumVerified: content.checksumVerified || false,
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { c } from 'ttag';
|
|
2
2
|
|
|
3
|
+
import { computeSHA256 } from '@protontech/crypto/subtle/hash.ts';
|
|
4
|
+
|
|
3
5
|
import { DriveCrypto, PrivateKey, SessionKey } from '../../crypto';
|
|
4
6
|
import { IntegrityError } from '../../errors';
|
|
5
7
|
import {
|
|
6
|
-
Thumbnail,
|
|
7
8
|
AnonymousUser,
|
|
8
9
|
FeatureFlagProvider,
|
|
9
10
|
FeatureFlags,
|
|
10
|
-
ProtonDriveTelemetry,
|
|
11
11
|
Logger,
|
|
12
|
+
ProtonDriveTelemetry,
|
|
13
|
+
Thumbnail,
|
|
12
14
|
} from '../../interface';
|
|
13
15
|
import {
|
|
14
16
|
EncryptedBlock,
|
|
@@ -133,14 +135,14 @@ export class UploadCryptoService {
|
|
|
133
135
|
nodeRevisionDraftKeys.signingKeys.contentSigningKey,
|
|
134
136
|
);
|
|
135
137
|
|
|
136
|
-
const digestPromise =
|
|
138
|
+
const digestPromise = computeSHA256(encryptedData);
|
|
137
139
|
|
|
138
140
|
return {
|
|
139
141
|
type: thumbnail.type,
|
|
140
142
|
encryptedData: encryptedData,
|
|
141
143
|
originalSize: thumbnail.thumbnail.length,
|
|
142
144
|
encryptedSize: encryptedData.length,
|
|
143
|
-
hashPromise: digestPromise
|
|
145
|
+
hashPromise: digestPromise,
|
|
144
146
|
};
|
|
145
147
|
}
|
|
146
148
|
|
|
@@ -158,7 +160,7 @@ export class UploadCryptoService {
|
|
|
158
160
|
nodeRevisionDraftKeys.contentKeyPacketSessionKey,
|
|
159
161
|
nodeRevisionDraftKeys.signingKeys.contentSigningKey,
|
|
160
162
|
);
|
|
161
|
-
const digestPromise =
|
|
163
|
+
const digestPromise = computeSHA256(encryptedData);
|
|
162
164
|
const { verificationToken } = await verifyBlock(encryptedData);
|
|
163
165
|
|
|
164
166
|
return {
|
|
@@ -168,7 +170,7 @@ export class UploadCryptoService {
|
|
|
168
170
|
verificationToken,
|
|
169
171
|
originalSize: block.length,
|
|
170
172
|
encryptedSize: encryptedData.length,
|
|
171
|
-
hashPromise: digestPromise
|
|
173
|
+
hashPromise: digestPromise,
|
|
172
174
|
};
|
|
173
175
|
}
|
|
174
176
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Thumbnail, UploadMetadata } from '../../interface';
|
|
2
|
-
import { FileUploader } from './fileUploader';
|
|
3
|
-
import { UploadTelemetry } from './telemetry';
|
|
4
2
|
import { UploadAPIService } from './apiService';
|
|
5
|
-
import { UploadCryptoService } from './cryptoService';
|
|
6
|
-
import { UploadController } from './controller';
|
|
7
3
|
import { BlockVerifier } from './blockVerifier';
|
|
4
|
+
import { UploadController } from './controller';
|
|
5
|
+
import { UploadCryptoService } from './cryptoService';
|
|
6
|
+
import { FileUploader } from './fileUploader';
|
|
8
7
|
import { NodeRevisionDraft } from './interface';
|
|
9
8
|
import { UploadManager } from './manager';
|
|
9
|
+
import { UploadTelemetry } from './telemetry';
|
|
10
10
|
|
|
11
11
|
const BLOCK_ENCRYPTION_OVERHEAD = 10000;
|
|
12
12
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DriveCrypto } from '../../crypto';
|
|
2
2
|
import type { FileUploader } from '../../interface';
|
|
3
|
+
import { FeatureFlagProvider, FeatureFlags, ProtonDriveTelemetry, UploadMetadata } from '../../interface';
|
|
3
4
|
import { DriveAPIService } from '../apiService';
|
|
4
|
-
import { DriveCrypto } from '../../crypto';
|
|
5
5
|
import { UploadAPIService } from './apiService';
|
|
6
6
|
import { UploadCryptoService } from './cryptoService';
|
|
7
|
-
import { FileUploader as FileUploaderClass
|
|
7
|
+
import { FileRevisionUploader, FileUploader as FileUploaderClass } from './fileUploader';
|
|
8
8
|
import { NodesService, SharesService } from './interface';
|
|
9
9
|
import { UploadManager } from './manager';
|
|
10
10
|
import { UploadQueue } from './queue';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PrivateKey, SessionKey } from '../../crypto';
|
|
2
|
-
|
|
3
|
-
import { MetricVolumeType, ThumbnailType, Result, Revision, AnonymousUser } from '../../interface';
|
|
2
|
+
import { AnonymousUser, MetricVolumeType, Result, Revision, ThumbnailType } from '../../interface';
|
|
4
3
|
import { DecryptedNode } from '../nodes';
|
|
5
4
|
|
|
6
5
|
export type NodeRevisionDraft = {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { c } from 'ttag';
|
|
2
2
|
|
|
3
3
|
import { PrivateKey, SessionKey } from '../../crypto';
|
|
4
|
+
import { NodeWithSameNameExistsValidationError, ValidationError } from '../../errors';
|
|
4
5
|
import { Logger, ProtonDriveTelemetry, ThumbnailType, UploadMetadata } from '../../interface';
|
|
5
|
-
import {
|
|
6
|
+
import { reduceSizePrecision } from '../../telemetry';
|
|
6
7
|
import { ErrorCode } from '../apiService';
|
|
7
8
|
import { generateFileExtendedAttributes } from '../nodes';
|
|
9
|
+
import { makeNodeUid, splitNodeUid } from '../uids';
|
|
8
10
|
import { UploadAPIService } from './apiService';
|
|
9
11
|
import { UploadCryptoService } from './cryptoService';
|
|
10
|
-
import { NodeRevisionDraft, NodesService
|
|
11
|
-
import { makeNodeUid, splitNodeUid } from '../uids';
|
|
12
|
-
import { reduceSizePrecision } from '../../telemetry';
|
|
12
|
+
import { NodeCrypto, NodeRevisionDraft, NodesService } from './interface';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* UploadManager is responsible for creating and deleting draft nodes
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { IntegrityError } from '../../errors';
|
|
2
2
|
import { Thumbnail, ThumbnailType, UploadMetadata } from '../../interface';
|
|
3
|
-
import {
|
|
4
|
-
import { UploadTelemetry } from './telemetry';
|
|
3
|
+
import { mergeUint8Arrays } from '../utils';
|
|
5
4
|
import { UploadAPIService } from './apiService';
|
|
6
5
|
import { UploadCryptoService } from './cryptoService';
|
|
7
|
-
import { UploadManager } from './manager';
|
|
8
6
|
import { NodeCrypto } from './interface';
|
|
9
|
-
import {
|
|
7
|
+
import { UploadManager } from './manager';
|
|
8
|
+
import { SmallFileRevisionUploader, SmallFileUploader } from './smallFileUploader';
|
|
9
|
+
import { UploadTelemetry } from './telemetry';
|
|
10
10
|
|
|
11
11
|
const MOCK_BLOCK_HASH = new Uint8Array(32).fill(4);
|
|
12
12
|
const MOCK_VERIFICATION_TOKEN = new Uint8Array(16).fill(5);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Logger, Thumbnail, ThumbnailType, UploadMetadata } from '../../interface';
|
|
2
1
|
import { IntegrityError } from '../../errors';
|
|
2
|
+
import { Logger, Thumbnail, ThumbnailType, UploadMetadata } from '../../interface';
|
|
3
3
|
import { getMockLogger } from '../../tests/logger';
|
|
4
4
|
import { APIHTTPError, HTTPErrorCode } from '../apiService';
|
|
5
|
-
import { FILE_CHUNK_SIZE, StreamUploader } from './streamUploader';
|
|
6
|
-
import { UploadTelemetry } from './telemetry';
|
|
7
5
|
import { UploadAPIService } from './apiService';
|
|
8
|
-
import { UploadCryptoService } from './cryptoService';
|
|
9
|
-
import { UploadController } from './controller';
|
|
10
6
|
import { BlockVerifier } from './blockVerifier';
|
|
7
|
+
import { UploadController } from './controller';
|
|
8
|
+
import { UploadCryptoService } from './cryptoService';
|
|
11
9
|
import { NodeRevisionDraft } from './interface';
|
|
12
10
|
import { UploadManager } from './manager';
|
|
11
|
+
import { FILE_CHUNK_SIZE, StreamUploader } from './streamUploader';
|
|
12
|
+
import { UploadTelemetry } from './telemetry';
|
|
13
13
|
|
|
14
14
|
const BLOCK_ENCRYPTION_OVERHEAD = 10000;
|
|
15
15
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c } from 'ttag';
|
|
2
2
|
|
|
3
|
-
import { Thumbnail, Logger, ThumbnailType, UploadMetadata } from '../../interface';
|
|
4
3
|
import { AbortError, IntegrityError } from '../../errors';
|
|
4
|
+
import { Logger, Thumbnail, ThumbnailType, UploadMetadata } from '../../interface';
|
|
5
5
|
import { LoggerWithPrefix } from '../../telemetry';
|
|
6
6
|
import { APIHTTPError, HTTPErrorCode, NotFoundAPIError } from '../apiService';
|
|
7
7
|
import { getErrorMessage } from '../errors';
|
|
@@ -9,13 +9,13 @@ import { mergeUint8Arrays } from '../utils';
|
|
|
9
9
|
import { waitForCondition } from '../wait';
|
|
10
10
|
import { UploadAPIService } from './apiService';
|
|
11
11
|
import { BlockVerifier } from './blockVerifier';
|
|
12
|
+
import { ChunkStreamReader } from './chunkStreamReader';
|
|
12
13
|
import { UploadController } from './controller';
|
|
13
14
|
import { UploadCryptoService } from './cryptoService';
|
|
14
15
|
import { UploadDigests } from './digests';
|
|
15
|
-
import {
|
|
16
|
-
import { UploadTelemetry } from './telemetry';
|
|
17
|
-
import { ChunkStreamReader } from './chunkStreamReader';
|
|
16
|
+
import { EncryptedBlock, EncryptedBlockMetadata, EncryptedThumbnail, NodeRevisionDraft } from './interface';
|
|
18
17
|
import { UploadManager } from './manager';
|
|
18
|
+
import { UploadTelemetry } from './telemetry';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* File chunk size in bytes representing the size of each block.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RateLimitedError, ValidationError
|
|
1
|
+
import { IntegrityError, RateLimitedError, ValidationError } from '../../errors';
|
|
2
2
|
import { ProtonDriveTelemetry } from '../../interface';
|
|
3
3
|
import { APIHTTPError } from '../apiService';
|
|
4
4
|
import { SharesService } from './interface';
|
|
@@ -135,5 +135,11 @@ describe('UploadTelemetry', () => {
|
|
|
135
135
|
await uploadTelemetry.uploadFailed(revisionUid, error, 500, 1000);
|
|
136
136
|
verifyErrorCategory('network_error');
|
|
137
137
|
});
|
|
138
|
+
|
|
139
|
+
it('should detect "network_error" for TypeError', async () => {
|
|
140
|
+
const error = new TypeError('Failed to fetch');
|
|
141
|
+
await uploadTelemetry.uploadFailed(revisionUid, error, 500, 1000);
|
|
142
|
+
verifyErrorCategory('network_error');
|
|
143
|
+
});
|
|
138
144
|
});
|
|
139
145
|
});
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { RateLimitedError, ValidationError
|
|
2
|
-
import {
|
|
1
|
+
import { IntegrityError, RateLimitedError, ValidationError } from '../../errors';
|
|
2
|
+
import { Logger, MetricsUploadErrorType, MetricVolumeType, ProtonDriveTelemetry } from '../../interface';
|
|
3
3
|
import { LoggerWithPrefix, reduceSizePrecision } from '../../telemetry';
|
|
4
4
|
import { APIHTTPError } from '../apiService';
|
|
5
|
-
import {
|
|
5
|
+
import { isNetworkError } from '../errors';
|
|
6
|
+
import { splitNodeRevisionUid, splitNodeUid } from '../uids';
|
|
6
7
|
import { SharesService } from './interface';
|
|
7
8
|
|
|
8
9
|
export class UploadTelemetry {
|
|
@@ -124,11 +125,7 @@ function getErrorCategory(error: unknown): MetricsUploadErrorType | undefined {
|
|
|
124
125
|
if (error.name === 'TimeoutError') {
|
|
125
126
|
return 'server_error';
|
|
126
127
|
}
|
|
127
|
-
if (
|
|
128
|
-
error.name === 'OfflineError' ||
|
|
129
|
-
error.name === 'NetworkError' ||
|
|
130
|
-
error.message?.toLowerCase() === 'network error'
|
|
131
|
-
) {
|
|
128
|
+
if (isNetworkError(error)) {
|
|
132
129
|
return 'network_error';
|
|
133
130
|
}
|
|
134
131
|
if (error.name === 'AbortError') {
|
package/src/polyfill.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@protontech/crypto/polyfill';
|
package/src/protonDriveClient.ts
CHANGED
|
@@ -2,47 +2,37 @@ import { getConfig } from './config';
|
|
|
2
2
|
import { DriveCrypto, SessionKey } from './crypto';
|
|
3
3
|
import { NullFeatureFlagProvider } from './featureFlags';
|
|
4
4
|
import {
|
|
5
|
+
BookmarkOrUid,
|
|
6
|
+
Device,
|
|
7
|
+
DeviceOrUid,
|
|
8
|
+
DeviceType,
|
|
9
|
+
FileDownloader,
|
|
10
|
+
FileUploader,
|
|
5
11
|
Logger,
|
|
6
|
-
|
|
7
|
-
NodeOrUid,
|
|
8
|
-
MaybeNode,
|
|
12
|
+
MaybeBookmark,
|
|
9
13
|
MaybeMissingNode,
|
|
14
|
+
MaybeNode,
|
|
15
|
+
MemberRole,
|
|
16
|
+
NodeOrUid,
|
|
10
17
|
NodeResult,
|
|
11
18
|
NodeResultWithError,
|
|
12
19
|
NodeResultWithNewUid,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
UnshareNodeSettings,
|
|
20
|
+
NodeType,
|
|
21
|
+
NonProtonInvitationOrUid,
|
|
22
|
+
ProtonDriveClientContructorParameters,
|
|
17
23
|
ProtonInvitation,
|
|
18
24
|
ProtonInvitationOrUid,
|
|
19
|
-
NonProtonInvitationOrUid,
|
|
20
25
|
ProtonInvitationWithNode,
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
Revision,
|
|
27
|
+
RevisionOrUid,
|
|
28
|
+
SDKEvent,
|
|
29
|
+
ShareNodeSettings,
|
|
23
30
|
ShareResult,
|
|
24
|
-
Device,
|
|
25
|
-
DeviceType,
|
|
26
|
-
DeviceOrUid,
|
|
27
|
-
UploadMetadata,
|
|
28
|
-
FileDownloader,
|
|
29
|
-
FileUploader,
|
|
30
|
-
ThumbnailType,
|
|
31
31
|
ThumbnailResult,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
ThumbnailType,
|
|
33
|
+
UnshareNodeSettings,
|
|
34
|
+
UploadMetadata,
|
|
35
35
|
} from './interface';
|
|
36
|
-
import {
|
|
37
|
-
getUid,
|
|
38
|
-
getUids,
|
|
39
|
-
convertInternalNodePromise,
|
|
40
|
-
convertInternalNodeIterator,
|
|
41
|
-
convertInternalMissingNodeIterator,
|
|
42
|
-
convertInternalNode,
|
|
43
|
-
convertInternalRevisionIterator,
|
|
44
|
-
} from './transformers';
|
|
45
|
-
import { Telemetry } from './telemetry';
|
|
46
36
|
import { DriveAPIService } from './internal/apiService';
|
|
47
37
|
import { initDevicesModule } from './internal/devices';
|
|
48
38
|
import { initDownloadModule } from './internal/download';
|
|
@@ -51,10 +41,20 @@ import { initNodesModule } from './internal/nodes';
|
|
|
51
41
|
import { SDKEvents } from './internal/sdkEvents';
|
|
52
42
|
import { initSharesModule } from './internal/shares';
|
|
53
43
|
import { initSharingModule } from './internal/sharing';
|
|
54
|
-
import {
|
|
55
|
-
import { initUploadModule } from './internal/upload';
|
|
44
|
+
import { getTokenAndPasswordFromUrl, SharingPublicSessionManager } from './internal/sharingPublic';
|
|
56
45
|
import { makeNodeUid } from './internal/uids';
|
|
46
|
+
import { initUploadModule } from './internal/upload';
|
|
57
47
|
import { ProtonDrivePublicLinkClient } from './protonDrivePublicLinkClient';
|
|
48
|
+
import { Telemetry } from './telemetry';
|
|
49
|
+
import {
|
|
50
|
+
convertInternalMissingNodeIterator,
|
|
51
|
+
convertInternalNode,
|
|
52
|
+
convertInternalNodeIterator,
|
|
53
|
+
convertInternalNodePromise,
|
|
54
|
+
convertInternalRevisionIterator,
|
|
55
|
+
getUid,
|
|
56
|
+
getUids,
|
|
57
|
+
} from './transformers';
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* ProtonDriveClient is the main interface for the ProtonDrive SDK.
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
+
import { getConfig } from './config';
|
|
2
|
+
import { DriveCrypto } from './crypto';
|
|
3
|
+
import { NullFeatureFlagProvider } from './featureFlags';
|
|
1
4
|
import {
|
|
2
|
-
Logger,
|
|
3
|
-
ProtonDriveClientContructorParameters,
|
|
4
|
-
NodeOrUid,
|
|
5
|
-
MaybeMissingPhotoNode,
|
|
6
|
-
UploadMetadata,
|
|
7
5
|
FileDownloader,
|
|
8
6
|
FileUploader,
|
|
9
|
-
|
|
7
|
+
Logger,
|
|
8
|
+
MaybeMissingPhotoNode,
|
|
10
9
|
MaybePhotoNode,
|
|
11
|
-
|
|
12
|
-
ThumbnailResult,
|
|
13
|
-
ShareNodeSettings,
|
|
14
|
-
ShareResult,
|
|
15
|
-
UnshareNodeSettings,
|
|
16
|
-
ProtonInvitation,
|
|
17
|
-
ProtonInvitationOrUid,
|
|
18
|
-
NonProtonInvitationOrUid,
|
|
19
|
-
ProtonInvitationWithNode,
|
|
10
|
+
NodeOrUid,
|
|
20
11
|
NodeResult,
|
|
21
12
|
NodeResultWithError,
|
|
13
|
+
NonProtonInvitationOrUid,
|
|
22
14
|
PhotoTag,
|
|
15
|
+
ProtonDriveClientContructorParameters,
|
|
16
|
+
ProtonInvitation,
|
|
17
|
+
ProtonInvitationOrUid,
|
|
18
|
+
ProtonInvitationWithNode,
|
|
19
|
+
SDKEvent,
|
|
20
|
+
ShareNodeSettings,
|
|
21
|
+
ShareResult,
|
|
22
|
+
ThumbnailResult,
|
|
23
|
+
ThumbnailType,
|
|
24
|
+
UnshareNodeSettings,
|
|
25
|
+
UploadMetadata,
|
|
23
26
|
} from './interface';
|
|
24
|
-
import { getConfig } from './config';
|
|
25
|
-
import { DriveCrypto } from './crypto';
|
|
26
|
-
import { Telemetry } from './telemetry';
|
|
27
|
-
import {
|
|
28
|
-
convertInternalMissingPhotoNodeIterator,
|
|
29
|
-
convertInternalPhotoNode,
|
|
30
|
-
convertInternalPhotoNodeIterator,
|
|
31
|
-
convertInternalPhotoNodePromise,
|
|
32
|
-
getUid,
|
|
33
|
-
getUids,
|
|
34
|
-
} from './transformers';
|
|
35
27
|
import { DriveAPIService } from './internal/apiService';
|
|
36
|
-
import { makeNodeUid } from './internal/uids';
|
|
37
28
|
import { initDownloadModule } from './internal/download';
|
|
38
29
|
import { DriveEventsService, DriveListener, EventSubscription } from './internal/events';
|
|
39
30
|
import {
|
|
40
|
-
|
|
41
|
-
initPhotosModule,
|
|
31
|
+
AlbumItem,
|
|
42
32
|
initPhotoSharesModule,
|
|
43
|
-
|
|
33
|
+
initPhotosModule,
|
|
44
34
|
initPhotosNodesModule,
|
|
45
|
-
|
|
35
|
+
initPhotoUploadModule,
|
|
36
|
+
PHOTOS_SHARE_TARGET_TYPES,
|
|
46
37
|
TimelineItem,
|
|
47
38
|
} from './internal/photos';
|
|
48
39
|
import { SDKEvents } from './internal/sdkEvents';
|
|
49
40
|
import { initSharesModule } from './internal/shares';
|
|
50
41
|
import { initSharingModule } from './internal/sharing';
|
|
51
|
-
import {
|
|
42
|
+
import { makeNodeUid } from './internal/uids';
|
|
43
|
+
import { Telemetry } from './telemetry';
|
|
44
|
+
import {
|
|
45
|
+
convertInternalMissingPhotoNodeIterator,
|
|
46
|
+
convertInternalPhotoNode,
|
|
47
|
+
convertInternalPhotoNodeIterator,
|
|
48
|
+
convertInternalPhotoNodePromise,
|
|
49
|
+
getUid,
|
|
50
|
+
getUids,
|
|
51
|
+
} from './transformers';
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* ProtonDrivePhotosClient is the interface to access Photos functionality.
|
|
@@ -511,6 +511,16 @@ export class ProtonDrivePhotosClient {
|
|
|
511
511
|
return this.upload.getFileUploader(getUid(parentFolderUid), name, metadata, signal);
|
|
512
512
|
}
|
|
513
513
|
|
|
514
|
+
/**
|
|
515
|
+
* Returns an available name for a new node in the given parent folder.
|
|
516
|
+
*
|
|
517
|
+
* See `ProtonDriveClient.getAvailableName` for more information.
|
|
518
|
+
*/
|
|
519
|
+
async getAvailableName(parentFolderUid: NodeOrUid, name: string): Promise<string> {
|
|
520
|
+
this.logger.info(`Getting available name in photos folder ${getUid(parentFolderUid)}`);
|
|
521
|
+
return this.nodes.management.findAvailableName(getUid(parentFolderUid), name);
|
|
522
|
+
}
|
|
523
|
+
|
|
514
524
|
/**
|
|
515
525
|
* Check if the photo is a duplicate.
|
|
516
526
|
*
|