@protontech/drive-sdk 0.3.2 → 0.4.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 (171) hide show
  1. package/dist/interface/nodes.d.ts +4 -0
  2. package/dist/interface/nodes.js.map +1 -1
  3. package/dist/internal/apiService/errorCodes.d.ts +1 -0
  4. package/dist/internal/apiService/errors.d.ts +3 -0
  5. package/dist/internal/apiService/errors.js +7 -1
  6. package/dist/internal/apiService/errors.js.map +1 -1
  7. package/dist/internal/devices/interface.d.ts +1 -1
  8. package/dist/internal/devices/manager.js +1 -1
  9. package/dist/internal/devices/manager.js.map +1 -1
  10. package/dist/internal/devices/manager.test.js +3 -3
  11. package/dist/internal/devices/manager.test.js.map +1 -1
  12. package/dist/internal/events/apiService.js +1 -1
  13. package/dist/internal/events/apiService.js.map +1 -1
  14. package/dist/internal/events/coreEventManager.js +1 -1
  15. package/dist/internal/events/coreEventManager.js.map +1 -1
  16. package/dist/internal/events/coreEventManager.test.js +18 -24
  17. package/dist/internal/events/coreEventManager.test.js.map +1 -1
  18. package/dist/internal/events/index.d.ts +3 -4
  19. package/dist/internal/events/index.js +4 -4
  20. package/dist/internal/events/index.js.map +1 -1
  21. package/dist/internal/events/interface.d.ts +3 -0
  22. package/dist/internal/nodes/apiService.d.ts +12 -3
  23. package/dist/internal/nodes/apiService.js +54 -13
  24. package/dist/internal/nodes/apiService.js.map +1 -1
  25. package/dist/internal/nodes/apiService.test.js +35 -2
  26. package/dist/internal/nodes/apiService.test.js.map +1 -1
  27. package/dist/internal/nodes/cache.test.js +1 -0
  28. package/dist/internal/nodes/cache.test.js.map +1 -1
  29. package/dist/internal/nodes/cryptoService.d.ts +1 -1
  30. package/dist/internal/nodes/cryptoService.js +1 -1
  31. package/dist/internal/nodes/cryptoService.js.map +1 -1
  32. package/dist/internal/nodes/cryptoService.test.js +4 -4
  33. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  34. package/dist/internal/nodes/errors.d.ts +4 -0
  35. package/dist/internal/nodes/errors.js +9 -0
  36. package/dist/internal/nodes/errors.js.map +1 -0
  37. package/dist/internal/nodes/extendedAttributes.d.ts +2 -2
  38. package/dist/internal/nodes/extendedAttributes.js +15 -11
  39. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  40. package/dist/internal/nodes/extendedAttributes.test.js +19 -1
  41. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  42. package/dist/internal/nodes/index.test.js +2 -1
  43. package/dist/internal/nodes/index.test.js.map +1 -1
  44. package/dist/internal/nodes/interface.d.ts +5 -1
  45. package/dist/internal/nodes/nodesAccess.d.ts +3 -3
  46. package/dist/internal/nodes/nodesAccess.js +25 -15
  47. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  48. package/dist/internal/nodes/nodesAccess.test.js +48 -8
  49. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  50. package/dist/internal/nodes/nodesManagement.d.ts +2 -0
  51. package/dist/internal/nodes/nodesManagement.js +87 -9
  52. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  53. package/dist/internal/nodes/nodesManagement.test.js +81 -5
  54. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  55. package/dist/internal/photos/albums.d.ts +9 -7
  56. package/dist/internal/photos/albums.js +26 -13
  57. package/dist/internal/photos/albums.js.map +1 -1
  58. package/dist/internal/photos/apiService.d.ts +34 -3
  59. package/dist/internal/photos/apiService.js +96 -3
  60. package/dist/internal/photos/apiService.js.map +1 -1
  61. package/dist/internal/photos/index.d.ts +31 -4
  62. package/dist/internal/photos/index.js +57 -7
  63. package/dist/internal/photos/index.js.map +1 -1
  64. package/dist/internal/photos/interface.d.ts +25 -1
  65. package/dist/internal/photos/shares.d.ts +43 -0
  66. package/dist/internal/photos/shares.js +112 -0
  67. package/dist/internal/photos/shares.js.map +1 -0
  68. package/dist/internal/photos/timeline.d.ts +15 -0
  69. package/dist/internal/photos/timeline.js +22 -0
  70. package/dist/internal/photos/timeline.js.map +1 -0
  71. package/dist/internal/photos/upload.d.ts +59 -0
  72. package/dist/internal/photos/upload.js +104 -0
  73. package/dist/internal/photos/upload.js.map +1 -0
  74. package/dist/internal/shares/manager.d.ts +1 -1
  75. package/dist/internal/shares/manager.js +4 -4
  76. package/dist/internal/shares/manager.js.map +1 -1
  77. package/dist/internal/shares/manager.test.js +7 -7
  78. package/dist/internal/shares/manager.test.js.map +1 -1
  79. package/dist/internal/sharing/interface.d.ts +1 -1
  80. package/dist/internal/sharing/sharingAccess.js +1 -1
  81. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  82. package/dist/internal/sharing/sharingAccess.test.js +1 -1
  83. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  84. package/dist/internal/sharingPublic/apiService.js +2 -0
  85. package/dist/internal/sharingPublic/apiService.js.map +1 -1
  86. package/dist/internal/upload/apiService.d.ts +2 -2
  87. package/dist/internal/upload/apiService.js +1 -1
  88. package/dist/internal/upload/apiService.js.map +1 -1
  89. package/dist/internal/upload/cryptoService.d.ts +2 -2
  90. package/dist/internal/upload/cryptoService.js.map +1 -1
  91. package/dist/internal/upload/fileUploader.d.ts +1 -0
  92. package/dist/internal/upload/fileUploader.js +3 -0
  93. package/dist/internal/upload/fileUploader.js.map +1 -1
  94. package/dist/internal/upload/interface.d.ts +3 -0
  95. package/dist/internal/upload/manager.d.ts +12 -11
  96. package/dist/internal/upload/manager.js +8 -2
  97. package/dist/internal/upload/manager.js.map +1 -1
  98. package/dist/internal/upload/manager.test.js +8 -0
  99. package/dist/internal/upload/manager.test.js.map +1 -1
  100. package/dist/internal/upload/streamUploader.d.ts +34 -24
  101. package/dist/internal/upload/streamUploader.js +7 -4
  102. package/dist/internal/upload/streamUploader.js.map +1 -1
  103. package/dist/internal/upload/streamUploader.test.js +1 -1
  104. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  105. package/dist/protonDriveClient.d.ts +20 -3
  106. package/dist/protonDriveClient.js +23 -4
  107. package/dist/protonDriveClient.js.map +1 -1
  108. package/dist/protonDrivePhotosClient.d.ts +102 -12
  109. package/dist/protonDrivePhotosClient.js +149 -29
  110. package/dist/protonDrivePhotosClient.js.map +1 -1
  111. package/dist/transformers.d.ts +1 -1
  112. package/dist/transformers.js +1 -0
  113. package/dist/transformers.js.map +1 -1
  114. package/package.json +1 -1
  115. package/src/interface/nodes.ts +4 -0
  116. package/src/internal/apiService/errorCodes.ts +1 -0
  117. package/src/internal/apiService/errors.ts +6 -0
  118. package/src/internal/devices/interface.ts +1 -1
  119. package/src/internal/devices/manager.test.ts +3 -3
  120. package/src/internal/devices/manager.ts +1 -1
  121. package/src/internal/events/apiService.ts +1 -1
  122. package/src/internal/events/coreEventManager.test.ts +21 -27
  123. package/src/internal/events/coreEventManager.ts +1 -1
  124. package/src/internal/events/index.ts +3 -4
  125. package/src/internal/events/interface.ts +4 -0
  126. package/src/internal/nodes/apiService.test.ts +58 -1
  127. package/src/internal/nodes/apiService.ts +104 -17
  128. package/src/internal/nodes/cache.test.ts +1 -0
  129. package/src/internal/nodes/cryptoService.test.ts +8 -8
  130. package/src/internal/nodes/cryptoService.ts +1 -1
  131. package/src/internal/nodes/errors.ts +5 -0
  132. package/src/internal/nodes/extendedAttributes.test.ts +23 -1
  133. package/src/internal/nodes/extendedAttributes.ts +26 -18
  134. package/src/internal/nodes/index.test.ts +2 -1
  135. package/src/internal/nodes/interface.ts +6 -1
  136. package/src/internal/nodes/nodesAccess.test.ts +68 -8
  137. package/src/internal/nodes/nodesAccess.ts +42 -15
  138. package/src/internal/nodes/nodesManagement.test.ts +100 -5
  139. package/src/internal/nodes/nodesManagement.ts +101 -13
  140. package/src/internal/photos/albums.ts +31 -12
  141. package/src/internal/photos/apiService.ts +159 -4
  142. package/src/internal/photos/index.ts +116 -9
  143. package/src/internal/photos/interface.ts +23 -1
  144. package/src/internal/photos/shares.ts +134 -0
  145. package/src/internal/photos/timeline.ts +24 -0
  146. package/src/internal/photos/upload.ts +209 -0
  147. package/src/internal/shares/manager.test.ts +7 -7
  148. package/src/internal/shares/manager.ts +4 -4
  149. package/src/internal/sharing/interface.ts +1 -1
  150. package/src/internal/sharing/sharingAccess.test.ts +1 -1
  151. package/src/internal/sharing/sharingAccess.ts +1 -1
  152. package/src/internal/sharingPublic/apiService.ts +2 -0
  153. package/src/internal/upload/apiService.ts +3 -3
  154. package/src/internal/upload/cryptoService.ts +2 -2
  155. package/src/internal/upload/fileUploader.ts +12 -0
  156. package/src/internal/upload/interface.ts +3 -0
  157. package/src/internal/upload/manager.test.ts +8 -0
  158. package/src/internal/upload/manager.ts +20 -10
  159. package/src/internal/upload/streamUploader.test.ts +17 -12
  160. package/src/internal/upload/streamUploader.ts +35 -27
  161. package/src/protonDriveClient.ts +33 -4
  162. package/src/protonDrivePhotosClient.ts +251 -32
  163. package/src/transformers.ts +2 -0
  164. package/dist/internal/photos/cache.d.ts +0 -6
  165. package/dist/internal/photos/cache.js +0 -15
  166. package/dist/internal/photos/cache.js.map +0 -1
  167. package/dist/internal/photos/photosTimeline.d.ts +0 -10
  168. package/dist/internal/photos/photosTimeline.js +0 -19
  169. package/dist/internal/photos/photosTimeline.js.map +0 -1
  170. package/src/internal/photos/cache.ts +0 -11
  171. package/src/internal/photos/photosTimeline.ts +0 -17
@@ -1,9 +1,36 @@
1
1
  import { DriveAPIService } from '../apiService';
2
- import { ProtonDriveEntitiesCache } from '../../interface';
3
- import { PhotosTimeline } from './photosTimeline';
2
+ import { DriveCrypto } from '../../crypto';
3
+ import { ProtonDriveAccount, ProtonDriveCryptoCache, ProtonDriveEntitiesCache, ProtonDriveTelemetry } from '../../interface';
4
+ import { NodesService as UploadNodesService } from '../upload/interface';
4
5
  import { Albums } from './albums';
5
- import { NodesService } from './interface';
6
- export declare function initPhotosModule(apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache, nodesService: NodesService): {
6
+ import { NodesService, SharesService } from './interface';
7
+ import { PhotoSharesManager } from './shares';
8
+ import { PhotosTimeline } from './timeline';
9
+ import { PhotoFileUploader, PhotoUploadMetadata } from './upload';
10
+ /**
11
+ * Provides facade for the whole photos module.
12
+ *
13
+ * The photos module is responsible for handling photos and albums metadata,
14
+ * including API communication, crypto, caching, and event handling.
15
+ */
16
+ export declare function initPhotosModule(apiService: DriveAPIService, photoShares: PhotoSharesManager, nodesService: NodesService): {
7
17
  timeline: PhotosTimeline;
8
18
  albums: Albums;
9
19
  };
20
+ /**
21
+ * Provides facade for the photo share module.
22
+ *
23
+ * The photo share wraps the core share module, but uses photos volume instead
24
+ * of main volume. It provides the same interface so it can be used in the same
25
+ * way in various modules that use shares.
26
+ */
27
+ export declare function initPhotoSharesModule(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache, driveCryptoCache: ProtonDriveCryptoCache, account: ProtonDriveAccount, crypto: DriveCrypto, sharesService: SharesService): PhotoSharesManager;
28
+ /**
29
+ * Provides facade for the photo upload module.
30
+ *
31
+ * The photo upload wraps the core upload module and adds photo specific metadata.
32
+ * It provides the same interface so it can be used in the same way.
33
+ */
34
+ export declare function initPhotoUploadModule(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveCrypto: DriveCrypto, sharesService: SharesService, nodesService: UploadNodesService, clientUid?: string): {
35
+ getFileUploader: (parentFolderUid: string, name: string, metadata: PhotoUploadMetadata, signal?: AbortSignal) => Promise<PhotoFileUploader>;
36
+ };
@@ -1,18 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initPhotosModule = initPhotosModule;
4
- const apiService_1 = require("./apiService");
5
- const cache_1 = require("./cache");
6
- const photosTimeline_1 = require("./photosTimeline");
4
+ exports.initPhotoSharesModule = initPhotoSharesModule;
5
+ exports.initPhotoUploadModule = initPhotoUploadModule;
6
+ const cache_1 = require("../shares/cache");
7
+ const cryptoCache_1 = require("../shares/cryptoCache");
8
+ const cryptoService_1 = require("../shares/cryptoService");
9
+ const telemetry_1 = require("../upload/telemetry");
10
+ const queue_1 = require("../upload/queue");
7
11
  const albums_1 = require("./albums");
8
- function initPhotosModule(apiService, driveEntitiesCache, nodesService) {
12
+ const apiService_1 = require("./apiService");
13
+ const shares_1 = require("./shares");
14
+ const timeline_1 = require("./timeline");
15
+ const upload_1 = require("./upload");
16
+ /**
17
+ * Provides facade for the whole photos module.
18
+ *
19
+ * The photos module is responsible for handling photos and albums metadata,
20
+ * including API communication, crypto, caching, and event handling.
21
+ */
22
+ function initPhotosModule(apiService, photoShares, nodesService) {
9
23
  const api = new apiService_1.PhotosAPIService(apiService);
10
- const cache = new cache_1.PhotosCache(driveEntitiesCache);
11
- const timeline = new photosTimeline_1.PhotosTimeline(api, cache, nodesService);
12
- const albums = new albums_1.Albums(api, cache, nodesService);
24
+ const timeline = new timeline_1.PhotosTimeline(api, photoShares);
25
+ const albums = new albums_1.Albums(api, photoShares, nodesService);
13
26
  return {
14
27
  timeline,
15
28
  albums,
16
29
  };
17
30
  }
31
+ /**
32
+ * Provides facade for the photo share module.
33
+ *
34
+ * The photo share wraps the core share module, but uses photos volume instead
35
+ * of main volume. It provides the same interface so it can be used in the same
36
+ * way in various modules that use shares.
37
+ */
38
+ function initPhotoSharesModule(telemetry, apiService, driveEntitiesCache, driveCryptoCache, account, crypto, sharesService) {
39
+ const api = new apiService_1.PhotosAPIService(apiService);
40
+ const cache = new cache_1.SharesCache(telemetry.getLogger('shares-cache'), driveEntitiesCache);
41
+ const cryptoCache = new cryptoCache_1.SharesCryptoCache(telemetry.getLogger('shares-cache'), driveCryptoCache);
42
+ const cryptoService = new cryptoService_1.SharesCryptoService(telemetry, crypto, account);
43
+ return new shares_1.PhotoSharesManager(telemetry.getLogger('photos-shares'), api, cache, cryptoCache, cryptoService, sharesService);
44
+ }
45
+ /**
46
+ * Provides facade for the photo upload module.
47
+ *
48
+ * The photo upload wraps the core upload module and adds photo specific metadata.
49
+ * It provides the same interface so it can be used in the same way.
50
+ */
51
+ function initPhotoUploadModule(telemetry, apiService, driveCrypto, sharesService, nodesService, clientUid) {
52
+ const api = new upload_1.PhotoUploadAPIService(apiService, clientUid);
53
+ const cryptoService = new upload_1.PhotoUploadCryptoService(driveCrypto, nodesService);
54
+ const uploadTelemetry = new telemetry_1.UploadTelemetry(telemetry, sharesService);
55
+ const manager = new upload_1.PhotoUploadManager(telemetry, api, cryptoService, nodesService, clientUid);
56
+ const queue = new queue_1.UploadQueue();
57
+ async function getFileUploader(parentFolderUid, name, metadata, signal) {
58
+ await queue.waitForCapacity(signal);
59
+ const onFinish = () => {
60
+ queue.releaseCapacity();
61
+ };
62
+ return new upload_1.PhotoFileUploader(uploadTelemetry, api, cryptoService, manager, parentFolderUid, name, metadata, onFinish, signal);
63
+ }
64
+ return {
65
+ getFileUploader,
66
+ };
67
+ }
18
68
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/photos/index.ts"],"names":[],"mappings":";;AAQA,4CAcC;AApBD,6CAAgD;AAChD,mCAAsC;AACtC,qDAAkD;AAClD,qCAAkC;AAGlC,SAAgB,gBAAgB,CAC5B,UAA2B,EAC3B,kBAA4C,EAC5C,YAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,6BAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,mBAAW,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,+BAAc,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAEpD,OAAO;QACH,QAAQ;QACR,MAAM;KACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/photos/index.ts"],"names":[],"mappings":";;AAiCA,4CAaC;AASD,sDAsBC;AAQD,sDA4CC;AAzHD,2CAA8C;AAC9C,uDAA0D;AAC1D,2DAA8D;AAE9D,mDAAsD;AACtD,2CAA8C;AAC9C,qCAAkC;AAClC,6CAAgD;AAEhD,qCAA8C;AAC9C,yCAA4C;AAC5C,qCAMkB;AAElB;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC5B,UAA2B,EAC3B,WAA+B,EAC/B,YAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,6BAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,yBAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAE1D,OAAO;QACH,QAAQ;QACR,MAAM;KACT,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACjC,SAA+B,EAC/B,UAA2B,EAC3B,kBAA4C,EAC5C,gBAAwC,EACxC,OAA2B,EAC3B,MAAmB,EACnB,aAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,6BAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,IAAI,+BAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACjG,MAAM,aAAa,GAAG,IAAI,mCAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO,IAAI,2BAAkB,CACzB,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,EACpC,GAAG,EACH,KAAK,EACL,WAAW,EACX,aAAa,EACb,aAAa,CAChB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CACjC,SAA+B,EAC/B,UAA2B,EAC3B,WAAwB,EACxB,aAA4B,EAC5B,YAAgC,EAChC,SAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,8BAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,iCAAwB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAE9E,MAAM,eAAe,GAAG,IAAI,2BAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,2BAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAE/F,MAAM,KAAK,GAAG,IAAI,mBAAW,EAAE,CAAC;IAEhC,KAAK,UAAU,eAAe,CAC1B,eAAuB,EACvB,IAAY,EACZ,QAA6B,EAC7B,MAAoB;QAEpB,MAAM,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,GAAG,EAAE;YAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC,CAAC;QAEF,OAAO,IAAI,0BAAiB,CACxB,eAAe,EACf,GAAG,EACH,aAAa,EACb,OAAO,EACP,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,CACT,CAAC;IACN,CAAC;IAED,OAAO;QACH,eAAe;KAClB,CAAC;AACN,CAAC"}
@@ -1,5 +1,29 @@
1
- import { MissingNode } from '../../interface';
1
+ import { PrivateKey } from '../../crypto';
2
+ import { MissingNode, MetricVolumeType } from '../../interface';
2
3
  import { DecryptedNode } from '../nodes';
4
+ import { EncryptedShare } from '../shares';
5
+ export interface SharesService {
6
+ getOwnVolumeIDs(): Promise<{
7
+ volumeId: string;
8
+ rootNodeId: string;
9
+ }>;
10
+ loadEncryptedShare(shareId: string): Promise<EncryptedShare>;
11
+ getSharePrivateKey(shareId: string): Promise<PrivateKey>;
12
+ getMyFilesShareMemberEmailKey(): Promise<{
13
+ email: string;
14
+ addressId: string;
15
+ addressKey: PrivateKey;
16
+ addressKeyId: string;
17
+ }>;
18
+ getContextShareMemberEmailKey(shareId: string): Promise<{
19
+ email: string;
20
+ addressId: string;
21
+ addressKey: PrivateKey;
22
+ addressKeyId: string;
23
+ }>;
24
+ isOwnVolume(volumeId: string): Promise<boolean>;
25
+ getVolumeMetricContext(volumeId: string): Promise<MetricVolumeType>;
26
+ }
3
27
  export interface NodesService {
4
28
  getNode(nodeUid: string): Promise<DecryptedNode>;
5
29
  iterateNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<DecryptedNode | MissingNode>;
@@ -0,0 +1,43 @@
1
+ import { PrivateKey } from '../../crypto';
2
+ import { Logger, MetricVolumeType } from '../../interface';
3
+ import { SharesCache } from '../shares/cache';
4
+ import { SharesCryptoCache } from '../shares/cryptoCache';
5
+ import { SharesCryptoService } from '../shares/cryptoService';
6
+ import { EncryptedShare, VolumeShareNodeIDs } from '../shares/interface';
7
+ import { PhotosAPIService } from './apiService';
8
+ import { SharesService } from './interface';
9
+ /**
10
+ * Provides high-level actions for managing photo share.
11
+ *
12
+ * The photo share manager wraps the core share service, but uses photos volume
13
+ * instead of main volume. It provides the same interface so it can be used in
14
+ * the same way in various modules that use shares.
15
+ */
16
+ export declare class PhotoSharesManager {
17
+ private logger;
18
+ private apiService;
19
+ private cache;
20
+ private cryptoCache;
21
+ private cryptoService;
22
+ private sharesService;
23
+ private photoRootIds?;
24
+ constructor(logger: Logger, apiService: PhotosAPIService, cache: SharesCache, cryptoCache: SharesCryptoCache, cryptoService: SharesCryptoService, sharesService: SharesService);
25
+ getOwnVolumeIDs(): Promise<VolumeShareNodeIDs>;
26
+ private createVolume;
27
+ getSharePrivateKey(shareId: string): Promise<PrivateKey>;
28
+ getMyFilesShareMemberEmailKey(): Promise<{
29
+ email: string;
30
+ addressId: string;
31
+ addressKey: PrivateKey;
32
+ addressKeyId: string;
33
+ }>;
34
+ getContextShareMemberEmailKey(shareId: string): Promise<{
35
+ email: string;
36
+ addressId: string;
37
+ addressKey: PrivateKey;
38
+ addressKeyId: string;
39
+ }>;
40
+ isOwnVolume(volumeId: string): Promise<boolean>;
41
+ getVolumeMetricContext(volumeId: string): Promise<MetricVolumeType>;
42
+ loadEncryptedShare(shareId: string): Promise<EncryptedShare>;
43
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhotoSharesManager = void 0;
4
+ const interface_1 = require("../../interface");
5
+ const apiService_1 = require("../apiService");
6
+ /**
7
+ * Provides high-level actions for managing photo share.
8
+ *
9
+ * The photo share manager wraps the core share service, but uses photos volume
10
+ * instead of main volume. It provides the same interface so it can be used in
11
+ * the same way in various modules that use shares.
12
+ */
13
+ class PhotoSharesManager {
14
+ logger;
15
+ apiService;
16
+ cache;
17
+ cryptoCache;
18
+ cryptoService;
19
+ sharesService;
20
+ photoRootIds;
21
+ constructor(logger, apiService, cache, cryptoCache, cryptoService, sharesService) {
22
+ this.logger = logger;
23
+ this.apiService = apiService;
24
+ this.cache = cache;
25
+ this.cryptoCache = cryptoCache;
26
+ this.cryptoService = cryptoService;
27
+ this.sharesService = sharesService;
28
+ this.logger = logger;
29
+ this.apiService = apiService;
30
+ this.cache = cache;
31
+ this.cryptoCache = cryptoCache;
32
+ this.cryptoService = cryptoService;
33
+ this.sharesService = sharesService;
34
+ }
35
+ async getOwnVolumeIDs() {
36
+ if (this.photoRootIds) {
37
+ return this.photoRootIds;
38
+ }
39
+ try {
40
+ const encryptedShare = await this.apiService.getPhotoShare();
41
+ // Once any place needs IDs for My files, it will most likely
42
+ // need also the keys for decrypting the tree. It is better to
43
+ // decrypt the share here right away.
44
+ const { share: myFilesShare, key } = await this.cryptoService.decryptRootShare(encryptedShare);
45
+ await this.cryptoCache.setShareKey(myFilesShare.shareId, key);
46
+ await this.cache.setVolume({
47
+ volumeId: myFilesShare.volumeId,
48
+ shareId: myFilesShare.shareId,
49
+ rootNodeId: myFilesShare.rootNodeId,
50
+ creatorEmail: encryptedShare.creatorEmail,
51
+ addressId: encryptedShare.addressId,
52
+ });
53
+ this.photoRootIds = {
54
+ volumeId: myFilesShare.volumeId,
55
+ shareId: myFilesShare.shareId,
56
+ rootNodeId: myFilesShare.rootNodeId,
57
+ };
58
+ return this.photoRootIds;
59
+ }
60
+ catch (error) {
61
+ if (error instanceof apiService_1.NotFoundAPIError) {
62
+ this.logger.warn('Active photo volume not found, creating a new one');
63
+ return this.createVolume();
64
+ }
65
+ this.logger.error('Failed to get active photo volume', error);
66
+ throw error;
67
+ }
68
+ }
69
+ async createVolume() {
70
+ const address = await this.sharesService.getMyFilesShareMemberEmailKey();
71
+ const bootstrap = await this.cryptoService.generateVolumeBootstrap(address.addressKey);
72
+ const photoRootIds = await this.apiService.createPhotoVolume({
73
+ addressId: address.addressId,
74
+ addressKeyId: address.addressKeyId,
75
+ ...bootstrap.shareKey.encrypted,
76
+ }, {
77
+ ...bootstrap.rootNode.key.encrypted,
78
+ encryptedName: bootstrap.rootNode.encryptedName,
79
+ armoredHashKey: bootstrap.rootNode.armoredHashKey,
80
+ });
81
+ await this.cryptoCache.setShareKey(photoRootIds.shareId, bootstrap.shareKey.decrypted);
82
+ return photoRootIds;
83
+ }
84
+ async getSharePrivateKey(shareId) {
85
+ return this.sharesService.getSharePrivateKey(shareId);
86
+ }
87
+ async getMyFilesShareMemberEmailKey() {
88
+ return this.sharesService.getMyFilesShareMemberEmailKey();
89
+ }
90
+ async getContextShareMemberEmailKey(shareId) {
91
+ return this.sharesService.getContextShareMemberEmailKey(shareId);
92
+ }
93
+ async isOwnVolume(volumeId) {
94
+ const { volumeId: myVolumeId } = await this.getOwnVolumeIDs();
95
+ if (volumeId === myVolumeId) {
96
+ return true;
97
+ }
98
+ return this.sharesService.isOwnVolume(volumeId);
99
+ }
100
+ async getVolumeMetricContext(volumeId) {
101
+ const { volumeId: myVolumeId } = await this.getOwnVolumeIDs();
102
+ if (volumeId === myVolumeId) {
103
+ return interface_1.MetricVolumeType.OwnVolume;
104
+ }
105
+ return this.sharesService.getVolumeMetricContext(volumeId);
106
+ }
107
+ async loadEncryptedShare(shareId) {
108
+ return this.sharesService.loadEncryptedShare(shareId);
109
+ }
110
+ }
111
+ exports.PhotoSharesManager = PhotoSharesManager;
112
+ //# sourceMappingURL=shares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shares.js","sourceRoot":"","sources":["../../../src/internal/photos/shares.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { PhotosAPIService } from './apiService';
2
+ import { PhotoSharesManager } from './shares';
3
+ /**
4
+ * Provides access to the photo timeline.
5
+ */
6
+ export declare class PhotosTimeline {
7
+ private apiService;
8
+ private photoShares;
9
+ constructor(apiService: PhotosAPIService, photoShares: PhotoSharesManager);
10
+ iterateTimeline(signal?: AbortSignal): AsyncGenerator<{
11
+ nodeUid: string;
12
+ captureTime: Date;
13
+ tags: number[];
14
+ }>;
15
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhotosTimeline = void 0;
4
+ /**
5
+ * Provides access to the photo timeline.
6
+ */
7
+ class PhotosTimeline {
8
+ apiService;
9
+ photoShares;
10
+ constructor(apiService, photoShares) {
11
+ this.apiService = apiService;
12
+ this.photoShares = photoShares;
13
+ this.apiService = apiService;
14
+ this.photoShares = photoShares;
15
+ }
16
+ async *iterateTimeline(signal) {
17
+ const { volumeId } = await this.photoShares.getOwnVolumeIDs();
18
+ yield* this.apiService.iterateTimeline(volumeId, signal);
19
+ }
20
+ }
21
+ exports.PhotosTimeline = PhotosTimeline;
22
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/internal/photos/timeline.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,cAAc;IAEX;IACA;IAFZ,YACY,UAA4B,EAC5B,WAA+B;QAD/B,eAAU,GAAV,UAAU,CAAkB;QAC5B,gBAAW,GAAX,WAAW,CAAoB;QAEvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,KAAK,CAAA,CAAE,eAAe,CAAC,MAAoB;QAKvC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAC9D,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;CACJ;AAjBD,wCAiBC"}
@@ -0,0 +1,59 @@
1
+ import { DriveCrypto } from '../../crypto';
2
+ import { ProtonDriveTelemetry, UploadMetadata, Thumbnail } from '../../interface';
3
+ import { DriveAPIService } from '../apiService';
4
+ import { UploadAPIService } from '../upload/apiService';
5
+ import { BlockVerifier } from '../upload/blockVerifier';
6
+ import { UploadCryptoService } from '../upload/cryptoService';
7
+ import { FileUploader } from '../upload/fileUploader';
8
+ import { NodeRevisionDraft, NodesService } from '../upload/interface';
9
+ import { UploadManager } from '../upload/manager';
10
+ import { StreamUploader } from '../upload/streamUploader';
11
+ import { UploadTelemetry } from '../upload/telemetry';
12
+ export type PhotoUploadMetadata = UploadMetadata & {
13
+ captureTime?: Date;
14
+ mainPhotoLinkID?: string;
15
+ tags?: (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)[];
16
+ };
17
+ export declare class PhotoFileUploader extends FileUploader {
18
+ private photoApiService;
19
+ private photoManager;
20
+ private photoMetadata;
21
+ constructor(telemetry: UploadTelemetry, apiService: PhotoUploadAPIService, cryptoService: UploadCryptoService, manager: PhotoUploadManager, parentFolderUid: string, name: string, metadata: PhotoUploadMetadata, onFinish: () => void, signal?: AbortSignal);
22
+ protected newStreamUploader(blockVerifier: BlockVerifier, revisionDraft: NodeRevisionDraft, onFinish: (failure: boolean) => Promise<void>): Promise<StreamUploader>;
23
+ }
24
+ export declare class PhotoStreamUploader extends StreamUploader {
25
+ private photoUploadManager;
26
+ private photoMetadata;
27
+ constructor(telemetry: UploadTelemetry, apiService: PhotoUploadAPIService, cryptoService: UploadCryptoService, uploadManager: PhotoUploadManager, blockVerifier: BlockVerifier, revisionDraft: NodeRevisionDraft, metadata: PhotoUploadMetadata, onFinish: (failure: boolean) => Promise<void>, signal?: AbortSignal);
28
+ commitFile(thumbnails: Thumbnail[]): Promise<void>;
29
+ }
30
+ export declare class PhotoUploadManager extends UploadManager {
31
+ private photoApiService;
32
+ private photoCryptoService;
33
+ constructor(telemetry: ProtonDriveTelemetry, apiService: PhotoUploadAPIService, cryptoService: PhotoUploadCryptoService, nodesService: NodesService, clientUid: string | undefined);
34
+ commitDraftPhoto(nodeRevisionDraft: NodeRevisionDraft, manifest: Uint8Array, extendedAttributes: {
35
+ modificationTime?: Date;
36
+ size: number;
37
+ blockSizes: number[];
38
+ digests: {
39
+ sha1: string;
40
+ };
41
+ }, uploadMetadata: PhotoUploadMetadata): Promise<void>;
42
+ }
43
+ export declare class PhotoUploadCryptoService extends UploadCryptoService {
44
+ constructor(driveCrypto: DriveCrypto, nodesService: NodesService);
45
+ generateContentHash(sha1: string, parentHashKey: Uint8Array): Promise<string>;
46
+ }
47
+ export declare class PhotoUploadAPIService extends UploadAPIService {
48
+ constructor(apiService: DriveAPIService, clientUid: string | undefined);
49
+ commitDraftPhoto(draftNodeRevisionUid: string, options: {
50
+ armoredManifestSignature: string;
51
+ signatureEmail: string;
52
+ armoredExtendedAttributes?: string;
53
+ }, photo: {
54
+ contentHash: string;
55
+ captureTime?: Date;
56
+ mainPhotoLinkID?: string;
57
+ tags?: (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)[];
58
+ }): Promise<void>;
59
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhotoUploadAPIService = exports.PhotoUploadCryptoService = exports.PhotoUploadManager = exports.PhotoStreamUploader = exports.PhotoFileUploader = void 0;
4
+ const nodes_1 = require("../nodes");
5
+ const uids_1 = require("../uids");
6
+ const apiService_1 = require("../upload/apiService");
7
+ const cryptoService_1 = require("../upload/cryptoService");
8
+ const fileUploader_1 = require("../upload/fileUploader");
9
+ const manager_1 = require("../upload/manager");
10
+ const streamUploader_1 = require("../upload/streamUploader");
11
+ class PhotoFileUploader extends fileUploader_1.FileUploader {
12
+ photoApiService;
13
+ photoManager;
14
+ photoMetadata;
15
+ constructor(telemetry, apiService, cryptoService, manager, parentFolderUid, name, metadata, onFinish, signal) {
16
+ super(telemetry, apiService, cryptoService, manager, parentFolderUid, name, metadata, onFinish, signal);
17
+ this.photoApiService = apiService;
18
+ this.photoManager = manager;
19
+ this.photoMetadata = metadata;
20
+ }
21
+ async newStreamUploader(blockVerifier, revisionDraft, onFinish) {
22
+ return new PhotoStreamUploader(this.telemetry, this.photoApiService, this.cryptoService, this.photoManager, blockVerifier, revisionDraft, this.photoMetadata, onFinish, this.signal);
23
+ }
24
+ }
25
+ exports.PhotoFileUploader = PhotoFileUploader;
26
+ class PhotoStreamUploader extends streamUploader_1.StreamUploader {
27
+ photoUploadManager;
28
+ photoMetadata;
29
+ constructor(telemetry, apiService, cryptoService, uploadManager, blockVerifier, revisionDraft, metadata, onFinish, signal) {
30
+ super(telemetry, apiService, cryptoService, uploadManager, blockVerifier, revisionDraft, metadata, onFinish, signal);
31
+ this.photoUploadManager = uploadManager;
32
+ this.photoMetadata = metadata;
33
+ }
34
+ async commitFile(thumbnails) {
35
+ this.verifyIntegrity(thumbnails);
36
+ const extendedAttributes = {
37
+ modificationTime: this.metadata.modificationTime,
38
+ size: this.metadata.expectedSize,
39
+ blockSizes: this.uploadedBlockSizes,
40
+ digests: this.digests.digests(),
41
+ };
42
+ await this.photoUploadManager.commitDraftPhoto(this.revisionDraft, this.manifest, extendedAttributes, this.photoMetadata);
43
+ }
44
+ }
45
+ exports.PhotoStreamUploader = PhotoStreamUploader;
46
+ class PhotoUploadManager extends manager_1.UploadManager {
47
+ photoApiService;
48
+ photoCryptoService;
49
+ constructor(telemetry, apiService, cryptoService, nodesService, clientUid) {
50
+ super(telemetry, apiService, cryptoService, nodesService, clientUid);
51
+ this.photoApiService = apiService;
52
+ this.photoCryptoService = cryptoService;
53
+ }
54
+ async commitDraftPhoto(nodeRevisionDraft, manifest, extendedAttributes, uploadMetadata) {
55
+ if (!nodeRevisionDraft.parentNodeKeys) {
56
+ throw new Error('Parent node keys are required for photo upload');
57
+ }
58
+ // TODO: handle photo extended attributes in the SDK - now it must be passed from the client
59
+ const generatedExtendedAttributes = (0, nodes_1.generateFileExtendedAttributes)(extendedAttributes, uploadMetadata.additionalMetadata);
60
+ const nodeCommitCrypto = await this.cryptoService.commitFile(nodeRevisionDraft.nodeKeys, manifest, generatedExtendedAttributes);
61
+ const sha1 = extendedAttributes.digests.sha1;
62
+ const contentHash = await this.photoCryptoService.generateContentHash(sha1, nodeRevisionDraft.parentNodeKeys?.hashKey);
63
+ const photo = {
64
+ contentHash,
65
+ captureTime: uploadMetadata.captureTime || extendedAttributes.modificationTime,
66
+ mainPhotoLinkID: uploadMetadata.mainPhotoLinkID,
67
+ tags: uploadMetadata.tags,
68
+ };
69
+ await this.photoApiService.commitDraftPhoto(nodeRevisionDraft.nodeRevisionUid, nodeCommitCrypto, photo);
70
+ await this.notifyNodeUploaded(nodeRevisionDraft);
71
+ }
72
+ }
73
+ exports.PhotoUploadManager = PhotoUploadManager;
74
+ class PhotoUploadCryptoService extends cryptoService_1.UploadCryptoService {
75
+ constructor(driveCrypto, nodesService) {
76
+ super(driveCrypto, nodesService);
77
+ }
78
+ async generateContentHash(sha1, parentHashKey) {
79
+ return this.driveCrypto.generateLookupHash(sha1, parentHashKey);
80
+ }
81
+ }
82
+ exports.PhotoUploadCryptoService = PhotoUploadCryptoService;
83
+ class PhotoUploadAPIService extends apiService_1.UploadAPIService {
84
+ constructor(apiService, clientUid) {
85
+ super(apiService, clientUid);
86
+ }
87
+ async commitDraftPhoto(draftNodeRevisionUid, options, photo) {
88
+ const { volumeId, nodeId, revisionId } = (0, uids_1.splitNodeRevisionUid)(draftNodeRevisionUid);
89
+ await this.apiService.put(`drive/v2/volumes/${volumeId}/files/${nodeId}/revisions/${revisionId}`, {
90
+ ManifestSignature: options.armoredManifestSignature,
91
+ SignatureAddress: options.signatureEmail,
92
+ XAttr: options.armoredExtendedAttributes || null,
93
+ Photo: {
94
+ ContentHash: photo.contentHash,
95
+ CaptureTime: photo.captureTime?.getTime() || 0,
96
+ MainPhotoLinkID: photo.mainPhotoLinkID || null,
97
+ Tags: photo.tags || [],
98
+ Exif: null, // Deprecated field, not used.
99
+ },
100
+ });
101
+ }
102
+ }
103
+ exports.PhotoUploadAPIService = PhotoUploadAPIService;
104
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/internal/photos/upload.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export declare class SharesManager {
29
29
  *
30
30
  * If the default volume or My files section doesn't exist, it creates it.
31
31
  */
32
- getMyFilesIDs(): Promise<VolumeShareNodeIDs>;
32
+ getOwnVolumeIDs(): Promise<VolumeShareNodeIDs>;
33
33
  /**
34
34
  * Creates new default volume for the user.
35
35
  *
@@ -44,7 +44,7 @@ class SharesManager {
44
44
  *
45
45
  * If the default volume or My files section doesn't exist, it creates it.
46
46
  */
47
- async getMyFilesIDs() {
47
+ async getOwnVolumeIDs() {
48
48
  if (this.myFilesIds) {
49
49
  return this.myFilesIds;
50
50
  }
@@ -125,7 +125,7 @@ class SharesManager {
125
125
  return key.key;
126
126
  }
127
127
  async getMyFilesShareMemberEmailKey() {
128
- const { volumeId } = await this.getMyFilesIDs();
128
+ const { volumeId } = await this.getOwnVolumeIDs();
129
129
  try {
130
130
  const { addressId } = await this.cache.getVolume(volumeId);
131
131
  const address = await this.account.getOwnAddress(addressId);
@@ -169,10 +169,10 @@ class SharesManager {
169
169
  };
170
170
  }
171
171
  async isOwnVolume(volumeId) {
172
- return (await this.getMyFilesIDs()).volumeId === volumeId;
172
+ return (await this.getOwnVolumeIDs()).volumeId === volumeId;
173
173
  }
174
174
  async getVolumeMetricContext(volumeId) {
175
- const { volumeId: myVolumeId } = await this.getMyFilesIDs();
175
+ const { volumeId: myVolumeId } = await this.getOwnVolumeIDs();
176
176
  // SDK doesn't support public sharing yet, also public sharing
177
177
  // doesn't use a volume but shareURL, thus we can simplify and
178
178
  // ignore this case for now.
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/internal/shares/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/internal/shares/manager.ts"],"names":[],"mappings":"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"}