@protontech/drive-sdk 0.3.1 → 0.4.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.
Files changed (181) hide show
  1. package/dist/crypto/driveCrypto.d.ts +1 -1
  2. package/dist/crypto/driveCrypto.js.map +1 -1
  3. package/dist/crypto/interface.d.ts +1 -1
  4. package/dist/crypto/openPGPCrypto.d.ts +1 -1
  5. package/dist/crypto/openPGPCrypto.js +4 -1
  6. package/dist/crypto/openPGPCrypto.js.map +1 -1
  7. package/dist/internal/apiService/errorCodes.d.ts +1 -0
  8. package/dist/internal/apiService/errors.d.ts +3 -0
  9. package/dist/internal/apiService/errors.js +7 -1
  10. package/dist/internal/apiService/errors.js.map +1 -1
  11. package/dist/internal/devices/interface.d.ts +1 -1
  12. package/dist/internal/devices/manager.js +1 -1
  13. package/dist/internal/devices/manager.js.map +1 -1
  14. package/dist/internal/devices/manager.test.js +3 -3
  15. package/dist/internal/devices/manager.test.js.map +1 -1
  16. package/dist/internal/download/cryptoService.js +2 -2
  17. package/dist/internal/download/cryptoService.js.map +1 -1
  18. package/dist/internal/download/fileDownloader.js +2 -2
  19. package/dist/internal/download/fileDownloader.js.map +1 -1
  20. package/dist/internal/download/fileDownloader.test.js +3 -1
  21. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  22. package/dist/internal/events/apiService.js +1 -1
  23. package/dist/internal/events/apiService.js.map +1 -1
  24. package/dist/internal/events/coreEventManager.js +1 -1
  25. package/dist/internal/events/coreEventManager.js.map +1 -1
  26. package/dist/internal/events/coreEventManager.test.js +18 -24
  27. package/dist/internal/events/coreEventManager.test.js.map +1 -1
  28. package/dist/internal/events/index.d.ts +3 -4
  29. package/dist/internal/events/index.js +4 -4
  30. package/dist/internal/events/index.js.map +1 -1
  31. package/dist/internal/events/interface.d.ts +3 -0
  32. package/dist/internal/nodes/apiService.d.ts +12 -3
  33. package/dist/internal/nodes/apiService.js +53 -13
  34. package/dist/internal/nodes/apiService.js.map +1 -1
  35. package/dist/internal/nodes/apiService.test.js +19 -2
  36. package/dist/internal/nodes/apiService.test.js.map +1 -1
  37. package/dist/internal/nodes/cache.js +3 -1
  38. package/dist/internal/nodes/cache.js.map +1 -1
  39. package/dist/internal/nodes/cryptoReporter.d.ts +20 -0
  40. package/dist/internal/nodes/cryptoReporter.js +96 -0
  41. package/dist/internal/nodes/cryptoReporter.js.map +1 -0
  42. package/dist/internal/nodes/cryptoService.d.ts +18 -13
  43. package/dist/internal/nodes/cryptoService.js +18 -98
  44. package/dist/internal/nodes/cryptoService.js.map +1 -1
  45. package/dist/internal/nodes/cryptoService.test.js +7 -5
  46. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  47. package/dist/internal/nodes/errors.d.ts +4 -0
  48. package/dist/internal/nodes/errors.js +9 -0
  49. package/dist/internal/nodes/errors.js.map +1 -0
  50. package/dist/internal/nodes/index.js +3 -1
  51. package/dist/internal/nodes/index.js.map +1 -1
  52. package/dist/internal/nodes/index.test.js +1 -1
  53. package/dist/internal/nodes/index.test.js.map +1 -1
  54. package/dist/internal/nodes/interface.d.ts +5 -2
  55. package/dist/internal/nodes/nodesAccess.d.ts +4 -4
  56. package/dist/internal/nodes/nodesAccess.js +77 -69
  57. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  58. package/dist/internal/nodes/nodesAccess.test.js +48 -8
  59. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  60. package/dist/internal/nodes/nodesManagement.d.ts +2 -0
  61. package/dist/internal/nodes/nodesManagement.js +86 -9
  62. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  63. package/dist/internal/nodes/nodesManagement.test.js +81 -5
  64. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  65. package/dist/internal/photos/albums.d.ts +9 -7
  66. package/dist/internal/photos/albums.js +26 -13
  67. package/dist/internal/photos/albums.js.map +1 -1
  68. package/dist/internal/photos/apiService.d.ts +34 -3
  69. package/dist/internal/photos/apiService.js +96 -3
  70. package/dist/internal/photos/apiService.js.map +1 -1
  71. package/dist/internal/photos/index.d.ts +20 -4
  72. package/dist/internal/photos/index.js +30 -7
  73. package/dist/internal/photos/index.js.map +1 -1
  74. package/dist/internal/photos/interface.d.ts +25 -1
  75. package/dist/internal/photos/shares.d.ts +43 -0
  76. package/dist/internal/photos/shares.js +112 -0
  77. package/dist/internal/photos/shares.js.map +1 -0
  78. package/dist/internal/photos/timeline.d.ts +15 -0
  79. package/dist/internal/photos/timeline.js +22 -0
  80. package/dist/internal/photos/timeline.js.map +1 -0
  81. package/dist/internal/shares/manager.d.ts +1 -1
  82. package/dist/internal/shares/manager.js +4 -4
  83. package/dist/internal/shares/manager.js.map +1 -1
  84. package/dist/internal/shares/manager.test.js +7 -7
  85. package/dist/internal/shares/manager.test.js.map +1 -1
  86. package/dist/internal/sharing/cache.d.ts +3 -0
  87. package/dist/internal/sharing/cache.js +17 -2
  88. package/dist/internal/sharing/cache.js.map +1 -1
  89. package/dist/internal/sharing/interface.d.ts +2 -2
  90. package/dist/internal/sharing/interface.js +1 -1
  91. package/dist/internal/sharing/sharingAccess.js +7 -1
  92. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  93. package/dist/internal/sharing/sharingAccess.test.js +243 -34
  94. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  95. package/dist/internal/sharingPublic/apiService.d.ts +1 -1
  96. package/dist/internal/sharingPublic/apiService.js +9 -2
  97. package/dist/internal/sharingPublic/apiService.js.map +1 -1
  98. package/dist/internal/sharingPublic/cryptoService.d.ts +6 -20
  99. package/dist/internal/sharingPublic/cryptoService.js +40 -103
  100. package/dist/internal/sharingPublic/cryptoService.js.map +1 -1
  101. package/dist/internal/sharingPublic/index.d.ts +2 -2
  102. package/dist/internal/sharingPublic/index.js +2 -2
  103. package/dist/internal/sharingPublic/index.js.map +1 -1
  104. package/dist/internal/sharingPublic/interface.d.ts +1 -43
  105. package/dist/internal/sharingPublic/manager.d.ts +1 -1
  106. package/dist/internal/sharingPublic/manager.js +9 -7
  107. package/dist/internal/sharingPublic/manager.js.map +1 -1
  108. package/dist/internal/upload/streamUploader.js +1 -1
  109. package/dist/internal/upload/streamUploader.js.map +1 -1
  110. package/dist/internal/upload/streamUploader.test.js +3 -1
  111. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  112. package/dist/protonDriveClient.d.ts +20 -3
  113. package/dist/protonDriveClient.js +24 -4
  114. package/dist/protonDriveClient.js.map +1 -1
  115. package/dist/protonDrivePhotosClient.d.ts +86 -12
  116. package/dist/protonDrivePhotosClient.js +132 -29
  117. package/dist/protonDrivePhotosClient.js.map +1 -1
  118. package/dist/protonDrivePublicLinkClient.d.ts +13 -4
  119. package/dist/protonDrivePublicLinkClient.js +13 -11
  120. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  121. package/package.json +1 -1
  122. package/src/crypto/driveCrypto.ts +1 -1
  123. package/src/crypto/interface.ts +1 -1
  124. package/src/crypto/openPGPCrypto.ts +5 -2
  125. package/src/internal/apiService/errorCodes.ts +1 -0
  126. package/src/internal/apiService/errors.ts +6 -0
  127. package/src/internal/devices/interface.ts +1 -1
  128. package/src/internal/devices/manager.test.ts +3 -3
  129. package/src/internal/devices/manager.ts +1 -1
  130. package/src/internal/download/cryptoService.ts +2 -2
  131. package/src/internal/download/fileDownloader.test.ts +3 -1
  132. package/src/internal/download/fileDownloader.ts +2 -2
  133. package/src/internal/events/apiService.ts +1 -1
  134. package/src/internal/events/coreEventManager.test.ts +21 -27
  135. package/src/internal/events/coreEventManager.ts +1 -1
  136. package/src/internal/events/index.ts +3 -4
  137. package/src/internal/events/interface.ts +4 -0
  138. package/src/internal/nodes/apiService.test.ts +35 -1
  139. package/src/internal/nodes/apiService.ts +103 -17
  140. package/src/internal/nodes/cache.ts +3 -1
  141. package/src/internal/nodes/cryptoReporter.ts +145 -0
  142. package/src/internal/nodes/cryptoService.test.ts +11 -9
  143. package/src/internal/nodes/cryptoService.ts +45 -138
  144. package/src/internal/nodes/errors.ts +5 -0
  145. package/src/internal/nodes/index.test.ts +1 -1
  146. package/src/internal/nodes/index.ts +3 -1
  147. package/src/internal/nodes/interface.ts +6 -2
  148. package/src/internal/nodes/nodesAccess.test.ts +68 -8
  149. package/src/internal/nodes/nodesAccess.ts +101 -76
  150. package/src/internal/nodes/nodesManagement.test.ts +100 -5
  151. package/src/internal/nodes/nodesManagement.ts +100 -13
  152. package/src/internal/photos/albums.ts +31 -12
  153. package/src/internal/photos/apiService.ts +159 -4
  154. package/src/internal/photos/index.ts +54 -9
  155. package/src/internal/photos/interface.ts +23 -1
  156. package/src/internal/photos/shares.ts +134 -0
  157. package/src/internal/photos/timeline.ts +24 -0
  158. package/src/internal/shares/manager.test.ts +7 -7
  159. package/src/internal/shares/manager.ts +4 -4
  160. package/src/internal/sharing/cache.ts +19 -2
  161. package/src/internal/sharing/interface.ts +2 -2
  162. package/src/internal/sharing/sharingAccess.test.ts +283 -35
  163. package/src/internal/sharing/sharingAccess.ts +7 -1
  164. package/src/internal/sharingPublic/apiService.ts +11 -2
  165. package/src/internal/sharingPublic/cryptoService.ts +71 -135
  166. package/src/internal/sharingPublic/index.ts +3 -2
  167. package/src/internal/sharingPublic/interface.ts +8 -53
  168. package/src/internal/sharingPublic/manager.ts +9 -8
  169. package/src/internal/upload/streamUploader.test.ts +3 -1
  170. package/src/internal/upload/streamUploader.ts +1 -1
  171. package/src/protonDriveClient.ts +34 -4
  172. package/src/protonDrivePhotosClient.ts +211 -32
  173. package/src/protonDrivePublicLinkClient.ts +26 -12
  174. package/dist/internal/photos/cache.d.ts +0 -6
  175. package/dist/internal/photos/cache.js +0 -15
  176. package/dist/internal/photos/cache.js.map +0 -1
  177. package/dist/internal/photos/photosTimeline.d.ts +0 -10
  178. package/dist/internal/photos/photosTimeline.js +0 -19
  179. package/dist/internal/photos/photosTimeline.js.map +0 -1
  180. package/src/internal/photos/cache.ts +0 -11
  181. package/src/internal/photos/photosTimeline.ts +0 -17
@@ -1,8 +1,39 @@
1
1
  import { DriveAPIService } from '../apiService';
2
+ import { EncryptedRootShare, EncryptedShareCrypto } from '../shares/interface';
3
+ /**
4
+ * Provides API communication for fetching and manipulating photos and albums
5
+ * metadata.
6
+ *
7
+ * The service is responsible for transforming local objects to API payloads
8
+ * and vice versa. It should not contain any business logic.
9
+ */
2
10
  export declare class PhotosAPIService {
3
11
  private apiService;
4
12
  constructor(apiService: DriveAPIService);
5
- iterateTimeline(): AsyncGenerator<any>;
6
- iterateAlbums(): AsyncGenerator<any>;
7
- createAlbum(object: any): Promise<any>;
13
+ getPhotoShare(): Promise<EncryptedRootShare>;
14
+ createPhotoVolume(share: {
15
+ addressId: string;
16
+ addressKeyId: string;
17
+ } & EncryptedShareCrypto, node: {
18
+ encryptedName: string;
19
+ armoredKey: string;
20
+ armoredPassphrase: string;
21
+ armoredPassphraseSignature: string;
22
+ armoredHashKey: string;
23
+ }): Promise<{
24
+ volumeId: string;
25
+ shareId: string;
26
+ rootNodeId: string;
27
+ }>;
28
+ iterateTimeline(volumeId: string, signal?: AbortSignal): AsyncGenerator<{
29
+ nodeUid: string;
30
+ captureTime: Date;
31
+ tags: number[];
32
+ }>;
33
+ iterateAlbums(volumeId: string, signal?: AbortSignal): AsyncGenerator<{
34
+ albumUid: string;
35
+ coverNodeUid?: string;
36
+ photoCount: number;
37
+ lastActivityTime: Date;
38
+ }>;
8
39
  }
@@ -1,15 +1,108 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PhotosAPIService = void 0;
4
+ const ttag_1 = require("ttag");
5
+ const apiService_1 = require("../apiService");
6
+ const interface_1 = require("../shares/interface");
7
+ const uids_1 = require("../uids");
8
+ /**
9
+ * Provides API communication for fetching and manipulating photos and albums
10
+ * metadata.
11
+ *
12
+ * The service is responsible for transforming local objects to API payloads
13
+ * and vice versa. It should not contain any business logic.
14
+ */
4
15
  class PhotosAPIService {
5
16
  apiService;
6
17
  constructor(apiService) {
7
18
  this.apiService = apiService;
8
19
  this.apiService = apiService;
9
20
  }
10
- async *iterateTimeline() { }
11
- async *iterateAlbums() { }
12
- async createAlbum(object) { }
21
+ async getPhotoShare() {
22
+ // TODO: Switch to drive/v2/shares/photos once available.
23
+ const volumesResponse = await this.apiService.get('drive/volumes');
24
+ const photoVolume = volumesResponse.Volumes.find((volume) => volume.Type === 2);
25
+ if (!photoVolume) {
26
+ throw new apiService_1.NotFoundAPIError((0, ttag_1.c)('Error').t `Photo volume not found`);
27
+ }
28
+ const response = await this.apiService.get(`drive/shares/${photoVolume.Share.ShareID}`);
29
+ if (!response.AddressID) {
30
+ throw new Error('Photo root share has not address ID set');
31
+ }
32
+ return {
33
+ volumeId: response.VolumeID,
34
+ shareId: response.ShareID,
35
+ rootNodeId: response.LinkID,
36
+ creatorEmail: response.Creator,
37
+ encryptedCrypto: {
38
+ armoredKey: response.Key,
39
+ armoredPassphrase: response.Passphrase,
40
+ armoredPassphraseSignature: response.PassphraseSignature,
41
+ },
42
+ addressId: response.AddressID,
43
+ type: interface_1.ShareType.Photo,
44
+ };
45
+ }
46
+ async createPhotoVolume(share, node) {
47
+ const response = await this.apiService.post('drive/photos/volumes', {
48
+ Share: {
49
+ AddressID: share.addressId,
50
+ AddressKeyID: share.addressKeyId,
51
+ Key: share.armoredKey,
52
+ Passphrase: share.armoredPassphrase,
53
+ PassphraseSignature: share.armoredPassphraseSignature,
54
+ },
55
+ Link: {
56
+ Name: node.encryptedName,
57
+ NodeKey: node.armoredKey,
58
+ NodePassphrase: node.armoredPassphrase,
59
+ NodePassphraseSignature: node.armoredPassphraseSignature,
60
+ NodeHashKey: node.armoredHashKey,
61
+ },
62
+ });
63
+ return {
64
+ volumeId: response.Volume.VolumeID,
65
+ shareId: response.Volume.Share.ShareID,
66
+ rootNodeId: response.Volume.Share.LinkID,
67
+ };
68
+ }
69
+ async *iterateTimeline(volumeId, signal) {
70
+ let anchor = '';
71
+ while (true) {
72
+ const response = await this.apiService.get(`drive/volumes/${volumeId}/photos?${anchor ? `PreviousPageLastLinkID=${anchor}` : ''}`, signal);
73
+ for (const photo of response.Photos) {
74
+ const nodeUid = (0, uids_1.makeNodeUid)(volumeId, photo.LinkID);
75
+ yield {
76
+ nodeUid,
77
+ captureTime: new Date(photo.CaptureTime * 1000),
78
+ tags: photo.Tags,
79
+ };
80
+ }
81
+ if (!response.Photos.length) {
82
+ break;
83
+ }
84
+ anchor = response.Photos[response.Photos.length - 1].LinkID;
85
+ }
86
+ }
87
+ async *iterateAlbums(volumeId, signal) {
88
+ let anchor = '';
89
+ while (true) {
90
+ const response = await this.apiService.get(`drive/photos/volumes/${volumeId}/albums?${anchor ? `AnchorID=${anchor}` : ''}`, signal);
91
+ for (const album of response.Albums) {
92
+ const albumUid = (0, uids_1.makeNodeUid)(volumeId, album.LinkID);
93
+ yield {
94
+ albumUid,
95
+ coverNodeUid: album.CoverLinkID ? (0, uids_1.makeNodeUid)(volumeId, album.CoverLinkID) : undefined,
96
+ photoCount: album.PhotoCount,
97
+ lastActivityTime: new Date(album.LastActivityTime * 1000),
98
+ };
99
+ }
100
+ if (!response.More || !response.AnchorID) {
101
+ break;
102
+ }
103
+ anchor = response.AnchorID;
104
+ }
105
+ }
13
106
  }
14
107
  exports.PhotosAPIService = PhotosAPIService;
15
108
  //# sourceMappingURL=apiService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/photos/apiService.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IACL;IAApB,YAAoB,UAA2B;QAA3B,eAAU,GAAV,UAAU,CAAiB;QAC3C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,CAAC,eAAe,KAAyB,CAAC;IAEhD,KAAK,CAAC,CAAC,aAAa,KAAyB,CAAC;IAE9C,KAAK,CAAC,WAAW,CAAC,MAAW,IAAiB,CAAC;CAClD;AAVD,4CAUC"}
1
+ {"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/photos/apiService.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,25 @@
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
4
  import { Albums } from './albums';
5
- import { NodesService } from './interface';
6
- export declare function initPhotosModule(apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache, nodesService: NodesService): {
5
+ import { NodesService, SharesService } from './interface';
6
+ import { PhotoSharesManager } from './shares';
7
+ import { PhotosTimeline } from './timeline';
8
+ /**
9
+ * Provides facade for the whole photos module.
10
+ *
11
+ * The photos module is responsible for handling photos and albums metadata,
12
+ * including API communication, crypto, caching, and event handling.
13
+ */
14
+ export declare function initPhotosModule(apiService: DriveAPIService, photoShares: PhotoSharesManager, nodesService: NodesService): {
7
15
  timeline: PhotosTimeline;
8
16
  albums: Albums;
9
17
  };
18
+ /**
19
+ * Provides facade for the photo share module.
20
+ *
21
+ * The photo share wraps the core share module, but uses photos volume instead
22
+ * of main volume. It provides the same interface so it can be used in the same
23
+ * way in various modules that use shares.
24
+ */
25
+ export declare function initPhotoSharesModule(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache, driveCryptoCache: ProtonDriveCryptoCache, account: ProtonDriveAccount, crypto: DriveCrypto, sharesService: SharesService): PhotoSharesManager;
@@ -1,18 +1,41 @@
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
+ const cache_1 = require("../shares/cache");
6
+ const cryptoCache_1 = require("../shares/cryptoCache");
7
+ const cryptoService_1 = require("../shares/cryptoService");
7
8
  const albums_1 = require("./albums");
8
- function initPhotosModule(apiService, driveEntitiesCache, nodesService) {
9
+ const apiService_1 = require("./apiService");
10
+ const shares_1 = require("./shares");
11
+ const timeline_1 = require("./timeline");
12
+ /**
13
+ * Provides facade for the whole photos module.
14
+ *
15
+ * The photos module is responsible for handling photos and albums metadata,
16
+ * including API communication, crypto, caching, and event handling.
17
+ */
18
+ function initPhotosModule(apiService, photoShares, nodesService) {
9
19
  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);
20
+ const timeline = new timeline_1.PhotosTimeline(api, photoShares);
21
+ const albums = new albums_1.Albums(api, photoShares, nodesService);
13
22
  return {
14
23
  timeline,
15
24
  albums,
16
25
  };
17
26
  }
27
+ /**
28
+ * Provides facade for the photo share module.
29
+ *
30
+ * The photo share wraps the core share module, but uses photos volume instead
31
+ * of main volume. It provides the same interface so it can be used in the same
32
+ * way in various modules that use shares.
33
+ */
34
+ function initPhotoSharesModule(telemetry, apiService, driveEntitiesCache, driveCryptoCache, account, crypto, sharesService) {
35
+ const api = new apiService_1.PhotosAPIService(apiService);
36
+ const cache = new cache_1.SharesCache(telemetry.getLogger('shares-cache'), driveEntitiesCache);
37
+ const cryptoCache = new cryptoCache_1.SharesCryptoCache(telemetry.getLogger('shares-cache'), driveCryptoCache);
38
+ const cryptoService = new cryptoService_1.SharesCryptoService(telemetry, crypto, account);
39
+ return new shares_1.PhotoSharesManager(telemetry.getLogger('photos-shares'), api, cache, cryptoCache, cryptoService, sharesService);
40
+ }
18
41
  //# 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":";;AAuBA,4CAaC;AASD,sDAsBC;AA3DD,2CAA8C;AAC9C,uDAA0D;AAC1D,2DAA8D;AAC9D,qCAAkC;AAClC,6CAAgD;AAEhD,qCAA8C;AAC9C,yCAA4C;AAE5C;;;;;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"}
@@ -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"}
@@ -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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"}
@@ -41,7 +41,7 @@ describe('SharesManager', () => {
41
41
  };
42
42
  manager = new manager_1.SharesManager((0, logger_1.getMockLogger)(), apiService, cache, cryptoCache, cryptoService, account);
43
43
  });
44
- describe('getMyFilesIDs', () => {
44
+ describe('getOwnVolumeIDs', () => {
45
45
  const myFilesShare = {
46
46
  shareId: 'myFilesShareId',
47
47
  volumeId: 'myFilesVolumeId',
@@ -59,8 +59,8 @@ describe('SharesManager', () => {
59
59
  apiService.getMyFiles = jest.fn().mockResolvedValue(encryptedShare);
60
60
  cryptoService.decryptRootShare = jest.fn().mockResolvedValue({ share: myFilesShare, key });
61
61
  // Calling twice to check if it loads only once.
62
- await manager.getMyFilesIDs();
63
- const result = await manager.getMyFilesIDs();
62
+ await manager.getOwnVolumeIDs();
63
+ const result = await manager.getOwnVolumeIDs();
64
64
  expect(result).toStrictEqual(myFilesShare);
65
65
  expect(apiService.getMyFiles).toHaveBeenCalledTimes(1);
66
66
  expect(cryptoService.decryptRootShare).toHaveBeenCalledTimes(1);
@@ -88,14 +88,14 @@ describe('SharesManager', () => {
88
88
  },
89
89
  });
90
90
  apiService.createVolume = jest.fn().mockResolvedValue(myFilesShare);
91
- const result = await manager.getMyFilesIDs();
91
+ const result = await manager.getOwnVolumeIDs();
92
92
  expect(result).toStrictEqual(myFilesShare);
93
93
  expect(cryptoService.decryptRootShare).not.toHaveBeenCalled();
94
94
  expect(cryptoCache.setShareKey).toHaveBeenCalledWith('myFilesShareId', 'decrypted share key');
95
95
  });
96
96
  it('should throw on unknown error', async () => {
97
97
  apiService.getMyFiles = jest.fn().mockRejectedValue(new Error('Some error'));
98
- await expect(manager.getMyFilesIDs()).rejects.toThrow('Some error');
98
+ await expect(manager.getOwnVolumeIDs()).rejects.toThrow('Some error');
99
99
  expect(cryptoService.decryptRootShare).not.toHaveBeenCalled();
100
100
  expect(apiService.createVolume).not.toHaveBeenCalled();
101
101
  });
@@ -117,7 +117,7 @@ describe('SharesManager', () => {
117
117
  });
118
118
  describe('getMyFilesShareMemberEmailKey', () => {
119
119
  it('should return cached volume email key', async () => {
120
- jest.spyOn(manager, 'getMyFilesIDs').mockResolvedValue({ volumeId: 'volumeId' });
120
+ jest.spyOn(manager, 'getOwnVolumeIDs').mockResolvedValue({ volumeId: 'volumeId' });
121
121
  cache.getVolume = jest.fn().mockResolvedValue({ addressId: 'addressId' });
122
122
  account.getOwnAddress = jest
123
123
  .fn()
@@ -130,7 +130,7 @@ describe('SharesManager', () => {
130
130
  });
131
131
  });
132
132
  it('should load volume email key if not in cache', async () => {
133
- jest.spyOn(manager, 'getMyFilesIDs').mockResolvedValue({ volumeId: 'volumeId' });
133
+ jest.spyOn(manager, 'getOwnVolumeIDs').mockResolvedValue({ volumeId: 'volumeId' });
134
134
  const share = {
135
135
  volumeId: 'volumeId',
136
136
  shareId: 'shareId',