@protontech/drive-sdk 0.11.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/crypto/driveCrypto.d.ts +16 -1
  2. package/dist/crypto/driveCrypto.js +55 -19
  3. package/dist/crypto/driveCrypto.js.map +1 -1
  4. package/dist/crypto/driveCrypto.test.js +1 -1
  5. package/dist/crypto/driveCrypto.test.js.map +1 -1
  6. package/dist/crypto/interface.d.ts +22 -8
  7. package/dist/crypto/openPGPCrypto.d.ts +30 -7
  8. package/dist/crypto/openPGPCrypto.js +46 -8
  9. package/dist/crypto/openPGPCrypto.js.map +1 -1
  10. package/dist/interface/featureFlags.d.ts +4 -1
  11. package/dist/interface/featureFlags.js +5 -0
  12. package/dist/interface/featureFlags.js.map +1 -1
  13. package/dist/interface/index.d.ts +1 -0
  14. package/dist/interface/index.js +3 -1
  15. package/dist/interface/index.js.map +1 -1
  16. package/dist/internal/photos/index.d.ts +2 -2
  17. package/dist/internal/photos/index.js +2 -2
  18. package/dist/internal/photos/index.js.map +1 -1
  19. package/dist/internal/photos/upload.d.ts +2 -2
  20. package/dist/internal/photos/upload.js +2 -2
  21. package/dist/internal/photos/upload.js.map +1 -1
  22. package/dist/internal/sharingPublic/nodes.js +11 -4
  23. package/dist/internal/sharingPublic/nodes.js.map +1 -1
  24. package/dist/internal/upload/cryptoService.d.ts +4 -2
  25. package/dist/internal/upload/cryptoService.js +14 -2
  26. package/dist/internal/upload/cryptoService.js.map +1 -1
  27. package/dist/internal/upload/index.d.ts +2 -2
  28. package/dist/internal/upload/index.js +2 -2
  29. package/dist/internal/upload/index.js.map +1 -1
  30. package/dist/protonDriveClient.js +1 -1
  31. package/dist/protonDriveClient.js.map +1 -1
  32. package/dist/protonDrivePhotosClient.d.ts +1 -1
  33. package/dist/protonDrivePhotosClient.js +6 -2
  34. package/dist/protonDrivePhotosClient.js.map +1 -1
  35. package/dist/protonDrivePublicLinkClient.d.ts +3 -2
  36. package/dist/protonDrivePublicLinkClient.js +6 -2
  37. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/crypto/driveCrypto.test.ts +1 -0
  40. package/src/crypto/driveCrypto.ts +51 -10
  41. package/src/crypto/interface.ts +21 -8
  42. package/src/crypto/openPGPCrypto.ts +68 -8
  43. package/src/interface/featureFlags.ts +5 -1
  44. package/src/interface/index.ts +1 -0
  45. package/src/internal/photos/index.ts +3 -1
  46. package/src/internal/photos/upload.ts +14 -6
  47. package/src/internal/sharingPublic/nodes.ts +11 -4
  48. package/src/internal/upload/cryptoService.ts +24 -2
  49. package/src/internal/upload/index.ts +3 -2
  50. package/src/protonDriveClient.ts +1 -0
  51. package/src/protonDrivePhotosClient.ts +14 -9
  52. package/src/protonDrivePublicLinkClient.ts +8 -0
@@ -1,4 +1,4 @@
1
- import { ProtonDriveTelemetry, UploadMetadata } from '../../interface';
1
+ import { FeatureFlagProvider, ProtonDriveTelemetry, UploadMetadata } from '../../interface';
2
2
  import { DriveAPIService } from '../apiService';
3
3
  import { DriveCrypto } from '../../crypto';
4
4
  import { UploadAPIService } from './apiService';
@@ -22,10 +22,11 @@ export function initUploadModule(
22
22
  driveCrypto: DriveCrypto,
23
23
  sharesService: SharesService,
24
24
  nodesService: NodesService,
25
+ featureFlagProvider: FeatureFlagProvider,
25
26
  clientUid?: string,
26
27
  ) {
27
28
  const api = new UploadAPIService(apiService, clientUid);
28
- const cryptoService = new UploadCryptoService(driveCrypto, nodesService);
29
+ const cryptoService = new UploadCryptoService(telemetry, driveCrypto, nodesService, featureFlagProvider);
29
30
 
30
31
  const uploadTelemetry = new UploadTelemetry(telemetry, sharesService);
31
32
  const manager = new UploadManager(telemetry, api, cryptoService, nodesService, clientUid);
@@ -178,6 +178,7 @@ export class ProtonDriveClient {
178
178
  cryptoModule,
179
179
  this.shares,
180
180
  this.nodes.access,
181
+ featureFlagProvider,
181
182
  fullConfig.clientUid,
182
183
  );
183
184
  this.devices = initDevicesModule(
@@ -46,6 +46,7 @@ import {
46
46
  import { SDKEvents } from './internal/sdkEvents';
47
47
  import { initSharesModule } from './internal/shares';
48
48
  import { initSharingModule } from './internal/sharing';
49
+ import { NullFeatureFlagProvider } from './featureFlags';
49
50
 
50
51
  /**
51
52
  * ProtonDrivePhotosClient is the interface to access Photos functionality.
@@ -84,11 +85,15 @@ export class ProtonDrivePhotosClient {
84
85
  srpModule,
85
86
  config,
86
87
  telemetry,
88
+ featureFlagProvider,
87
89
  latestEventIdProvider,
88
90
  }: ProtonDriveClientContructorParameters) {
89
91
  if (!telemetry) {
90
92
  telemetry = new Telemetry();
91
93
  }
94
+ if (!featureFlagProvider) {
95
+ featureFlagProvider = new NullFeatureFlagProvider();
96
+ }
92
97
  this.logger = telemetry.getLogger('photos-interface');
93
98
 
94
99
  const fullConfig = getConfig(config);
@@ -147,6 +152,7 @@ export class ProtonDrivePhotosClient {
147
152
  cryptoModule,
148
153
  this.photoShares,
149
154
  this.nodes.access,
155
+ featureFlagProvider,
150
156
  fullConfig.clientUid,
151
157
  );
152
158
 
@@ -658,14 +664,13 @@ export class ProtonDrivePhotosClient {
658
664
  signal?: AbortSignal,
659
665
  ): AsyncGenerator<NodeResultWithError> {
660
666
  this.logger.info(`Updating ${photos.length} photos`);
661
- yield *
662
- this.photos.photos.updatePhotos(
663
- photos.map((p) => ({
664
- nodeUid: getUid(p.nodeUid),
665
- tagsToAdd: p.tagsToAdd || [],
666
- tagsToRemove: p.tagsToRemove || [],
667
- })),
668
- signal,
669
- );
667
+ yield* this.photos.photos.updatePhotos(
668
+ photos.map((p) => ({
669
+ nodeUid: getUid(p.nodeUid),
670
+ tagsToAdd: p.tagsToAdd || [],
671
+ tagsToRemove: p.tagsToRemove || [],
672
+ })),
673
+ signal,
674
+ );
670
675
  }
671
676
  }
@@ -20,6 +20,7 @@ import {
20
20
  NodeResult,
21
21
  SDKEvent,
22
22
  MemberRole,
23
+ FeatureFlagProvider,
23
24
  } from './interface';
24
25
  import { Telemetry } from './telemetry';
25
26
  import {
@@ -33,6 +34,7 @@ import { initDownloadModule } from './internal/download';
33
34
  import { SDKEvents } from './internal/sdkEvents';
34
35
  import { initSharingPublicModule, UnauthDriveAPIService } from './internal/sharingPublic';
35
36
  import { initUploadModule } from './internal/upload';
37
+ import { NullFeatureFlagProvider } from './featureFlags';
36
38
  import { NodesSecurityScanResult } from './internal/sharingPublic/nodesSecurity';
37
39
 
38
40
  /**
@@ -93,6 +95,7 @@ export class ProtonDrivePublicLinkClient {
93
95
  srpModule,
94
96
  config,
95
97
  telemetry,
98
+ featureFlagProvider,
96
99
  url,
97
100
  token,
98
101
  publicShareKey,
@@ -106,6 +109,7 @@ export class ProtonDrivePublicLinkClient {
106
109
  srpModule: SRPModule;
107
110
  config?: ProtonDriveConfig;
108
111
  telemetry?: ProtonDriveTelemetry;
112
+ featureFlagProvider?: FeatureFlagProvider;
109
113
  url: string;
110
114
  token: string;
111
115
  publicShareKey: PrivateKey;
@@ -116,6 +120,9 @@ export class ProtonDrivePublicLinkClient {
116
120
  if (!telemetry) {
117
121
  telemetry = new Telemetry();
118
122
  }
123
+ if (!featureFlagProvider) {
124
+ featureFlagProvider = new NullFeatureFlagProvider();
125
+ }
119
126
  this.logger = telemetry.getLogger('publicLink-interface');
120
127
 
121
128
  // Use only in memory cache for public link as there are no events to keep it up to date if persisted.
@@ -165,6 +172,7 @@ export class ProtonDrivePublicLinkClient {
165
172
  cryptoModule,
166
173
  this.sharingPublic.shares,
167
174
  this.sharingPublic.nodes.access,
175
+ featureFlagProvider,
168
176
  fullConfig.clientUid,
169
177
  );
170
178