@protontech/drive-sdk 0.5.1 → 0.6.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 (201) hide show
  1. package/dist/diagnostic/diagnostic.d.ts +7 -4
  2. package/dist/diagnostic/diagnostic.js +16 -8
  3. package/dist/diagnostic/diagnostic.js.map +1 -1
  4. package/dist/diagnostic/index.d.ts +1 -1
  5. package/dist/diagnostic/index.js +9 -1
  6. package/dist/diagnostic/index.js.map +1 -1
  7. package/dist/diagnostic/interface.d.ts +24 -9
  8. package/dist/diagnostic/nodeUtils.d.ts +13 -0
  9. package/dist/diagnostic/nodeUtils.js +90 -0
  10. package/dist/diagnostic/nodeUtils.js.map +1 -0
  11. package/dist/diagnostic/sdkDiagnosticBase.d.ts +36 -0
  12. package/dist/diagnostic/sdkDiagnosticBase.js +305 -0
  13. package/dist/diagnostic/sdkDiagnosticBase.js.map +1 -0
  14. package/dist/diagnostic/sdkDiagnosticMain.d.ts +16 -0
  15. package/dist/diagnostic/sdkDiagnosticMain.js +79 -0
  16. package/dist/diagnostic/sdkDiagnosticMain.js.map +1 -0
  17. package/dist/diagnostic/sdkDiagnosticPhotos.d.ts +13 -0
  18. package/dist/diagnostic/sdkDiagnosticPhotos.js +65 -0
  19. package/dist/diagnostic/sdkDiagnosticPhotos.js.map +1 -0
  20. package/dist/interface/index.d.ts +1 -1
  21. package/dist/interface/upload.d.ts +1 -12
  22. package/dist/internal/devices/interface.d.ts +1 -1
  23. package/dist/internal/devices/manager.js +1 -1
  24. package/dist/internal/devices/manager.js.map +1 -1
  25. package/dist/internal/devices/manager.test.js +3 -3
  26. package/dist/internal/devices/manager.test.js.map +1 -1
  27. package/dist/internal/errors.d.ts +5 -0
  28. package/dist/internal/errors.js +23 -0
  29. package/dist/internal/errors.js.map +1 -1
  30. package/dist/internal/errors.test.js +53 -2
  31. package/dist/internal/errors.test.js.map +1 -1
  32. package/dist/internal/nodes/apiService.d.ts +11 -1
  33. package/dist/internal/nodes/apiService.js +20 -1
  34. package/dist/internal/nodes/apiService.js.map +1 -1
  35. package/dist/internal/nodes/apiService.test.js +1 -1
  36. package/dist/internal/nodes/apiService.test.js.map +1 -1
  37. package/dist/internal/nodes/cryptoReporter.js +3 -0
  38. package/dist/internal/nodes/cryptoReporter.js.map +1 -1
  39. package/dist/internal/nodes/cryptoService.d.ts +4 -0
  40. package/dist/internal/nodes/cryptoService.js +6 -0
  41. package/dist/internal/nodes/cryptoService.js.map +1 -1
  42. package/dist/internal/nodes/index.d.ts +1 -1
  43. package/dist/internal/nodes/index.js +2 -2
  44. package/dist/internal/nodes/index.js.map +1 -1
  45. package/dist/internal/nodes/index.test.js +2 -2
  46. package/dist/internal/nodes/index.test.js.map +1 -1
  47. package/dist/internal/nodes/interface.d.ts +1 -1
  48. package/dist/internal/nodes/nodeName.d.ts +8 -0
  49. package/dist/internal/nodes/nodeName.js +30 -0
  50. package/dist/internal/nodes/nodeName.js.map +1 -0
  51. package/dist/internal/nodes/nodeName.test.d.ts +1 -0
  52. package/dist/internal/nodes/nodeName.test.js +50 -0
  53. package/dist/internal/nodes/nodeName.test.js.map +1 -0
  54. package/dist/internal/nodes/nodesAccess.d.ts +1 -1
  55. package/dist/internal/nodes/nodesAccess.js +4 -4
  56. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  57. package/dist/internal/nodes/nodesAccess.test.js +2 -2
  58. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  59. package/dist/internal/nodes/nodesManagement.d.ts +1 -0
  60. package/dist/internal/nodes/nodesManagement.js +30 -1
  61. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  62. package/dist/internal/nodes/nodesManagement.test.js +61 -0
  63. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  64. package/dist/internal/photos/albums.js +1 -1
  65. package/dist/internal/photos/albums.js.map +1 -1
  66. package/dist/internal/photos/apiService.d.ts +6 -0
  67. package/dist/internal/photos/apiService.js +16 -0
  68. package/dist/internal/photos/apiService.js.map +1 -1
  69. package/dist/internal/photos/index.d.ts +3 -1
  70. package/dist/internal/photos/index.js +6 -2
  71. package/dist/internal/photos/index.js.map +1 -1
  72. package/dist/internal/photos/interface.d.ts +4 -1
  73. package/dist/internal/photos/shares.d.ts +1 -1
  74. package/dist/internal/photos/shares.js +3 -3
  75. package/dist/internal/photos/shares.js.map +1 -1
  76. package/dist/internal/photos/timeline.d.ts +8 -1
  77. package/dist/internal/photos/timeline.js +36 -2
  78. package/dist/internal/photos/timeline.js.map +1 -1
  79. package/dist/internal/photos/timeline.test.d.ts +1 -0
  80. package/dist/internal/photos/timeline.test.js +99 -0
  81. package/dist/internal/photos/timeline.test.js.map +1 -0
  82. package/dist/internal/shares/cryptoService.js +3 -0
  83. package/dist/internal/shares/cryptoService.js.map +1 -1
  84. package/dist/internal/shares/index.d.ts +1 -0
  85. package/dist/internal/shares/index.js +3 -0
  86. package/dist/internal/shares/index.js.map +1 -1
  87. package/dist/internal/shares/interface.d.ts +8 -0
  88. package/dist/internal/shares/interface.js +10 -1
  89. package/dist/internal/shares/interface.js.map +1 -1
  90. package/dist/internal/shares/manager.d.ts +1 -1
  91. package/dist/internal/shares/manager.js +4 -4
  92. package/dist/internal/shares/manager.js.map +1 -1
  93. package/dist/internal/shares/manager.test.js +7 -7
  94. package/dist/internal/shares/manager.test.js.map +1 -1
  95. package/dist/internal/sharing/apiService.d.ts +3 -1
  96. package/dist/internal/sharing/apiService.js +16 -12
  97. package/dist/internal/sharing/apiService.js.map +1 -1
  98. package/dist/internal/sharing/index.d.ts +2 -1
  99. package/dist/internal/sharing/index.js +6 -2
  100. package/dist/internal/sharing/index.js.map +1 -1
  101. package/dist/internal/sharing/interface.d.ts +1 -1
  102. package/dist/internal/sharing/sharingAccess.js +1 -1
  103. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  104. package/dist/internal/sharing/sharingAccess.test.js +1 -1
  105. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  106. package/dist/internal/sharing/sharingManagement.js +32 -14
  107. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  108. package/dist/internal/sharing/sharingManagement.test.js +46 -1
  109. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  110. package/dist/internal/sharingPublic/cryptoReporter.js +3 -0
  111. package/dist/internal/sharingPublic/cryptoReporter.js.map +1 -1
  112. package/dist/internal/sharingPublic/index.d.ts +3 -0
  113. package/dist/internal/sharingPublic/index.js +5 -1
  114. package/dist/internal/sharingPublic/index.js.map +1 -1
  115. package/dist/internal/sharingPublic/shares.d.ts +1 -1
  116. package/dist/internal/sharingPublic/shares.js +1 -2
  117. package/dist/internal/sharingPublic/shares.js.map +1 -1
  118. package/dist/internal/upload/apiService.d.ts +0 -9
  119. package/dist/internal/upload/apiService.js +0 -16
  120. package/dist/internal/upload/apiService.js.map +1 -1
  121. package/dist/internal/upload/cryptoService.d.ts +0 -4
  122. package/dist/internal/upload/cryptoService.js +0 -6
  123. package/dist/internal/upload/cryptoService.js.map +1 -1
  124. package/dist/internal/upload/fileUploader.d.ts +0 -1
  125. package/dist/internal/upload/fileUploader.js +0 -4
  126. package/dist/internal/upload/fileUploader.js.map +1 -1
  127. package/dist/internal/upload/manager.d.ts +0 -1
  128. package/dist/internal/upload/manager.js +0 -51
  129. package/dist/internal/upload/manager.js.map +1 -1
  130. package/dist/internal/upload/manager.test.js +0 -61
  131. package/dist/internal/upload/manager.test.js.map +1 -1
  132. package/dist/protonDriveClient.d.ts +17 -2
  133. package/dist/protonDriveClient.js +19 -1
  134. package/dist/protonDriveClient.js.map +1 -1
  135. package/dist/protonDrivePhotosClient.d.ts +119 -4
  136. package/dist/protonDrivePhotosClient.js +183 -10
  137. package/dist/protonDrivePhotosClient.js.map +1 -1
  138. package/dist/protonDrivePublicLinkClient.d.ts +33 -1
  139. package/dist/protonDrivePublicLinkClient.js +51 -2
  140. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  141. package/package.json +1 -1
  142. package/src/diagnostic/diagnostic.ts +27 -8
  143. package/src/diagnostic/index.ts +17 -2
  144. package/src/diagnostic/interface.ts +35 -9
  145. package/src/diagnostic/nodeUtils.ts +100 -0
  146. package/src/diagnostic/{sdkDiagnostic.ts → sdkDiagnosticBase.ts} +204 -204
  147. package/src/diagnostic/sdkDiagnosticMain.ts +95 -0
  148. package/src/diagnostic/sdkDiagnosticPhotos.ts +70 -0
  149. package/src/interface/index.ts +1 -1
  150. package/src/interface/upload.ts +1 -13
  151. package/src/internal/devices/interface.ts +1 -1
  152. package/src/internal/devices/manager.test.ts +3 -3
  153. package/src/internal/devices/manager.ts +1 -1
  154. package/src/internal/errors.test.ts +62 -1
  155. package/src/internal/errors.ts +27 -0
  156. package/src/internal/nodes/apiService.test.ts +1 -1
  157. package/src/internal/nodes/apiService.ts +42 -0
  158. package/src/internal/nodes/cryptoReporter.ts +6 -5
  159. package/src/internal/nodes/cryptoService.ts +9 -0
  160. package/src/internal/nodes/index.test.ts +2 -1
  161. package/src/internal/nodes/index.ts +2 -1
  162. package/src/internal/nodes/interface.ts +1 -1
  163. package/src/internal/nodes/nodeName.test.ts +57 -0
  164. package/src/internal/nodes/nodeName.ts +26 -0
  165. package/src/internal/nodes/nodesAccess.test.ts +2 -2
  166. package/src/internal/nodes/nodesAccess.ts +5 -5
  167. package/src/internal/nodes/nodesManagement.test.ts +65 -0
  168. package/src/internal/nodes/nodesManagement.ts +43 -1
  169. package/src/internal/photos/albums.ts +1 -1
  170. package/src/internal/photos/apiService.ts +40 -0
  171. package/src/internal/photos/index.ts +13 -1
  172. package/src/internal/photos/interface.ts +4 -1
  173. package/src/internal/photos/shares.ts +3 -3
  174. package/src/internal/photos/timeline.test.ts +116 -0
  175. package/src/internal/photos/timeline.ts +47 -2
  176. package/src/internal/shares/cryptoService.ts +5 -1
  177. package/src/internal/shares/index.ts +1 -0
  178. package/src/internal/shares/interface.ts +9 -0
  179. package/src/internal/shares/manager.test.ts +7 -7
  180. package/src/internal/shares/manager.ts +4 -4
  181. package/src/internal/sharing/apiService.ts +15 -12
  182. package/src/internal/sharing/index.ts +7 -1
  183. package/src/internal/sharing/interface.ts +1 -1
  184. package/src/internal/sharing/sharingAccess.test.ts +1 -1
  185. package/src/internal/sharing/sharingAccess.ts +1 -1
  186. package/src/internal/sharing/sharingManagement.test.ts +59 -1
  187. package/src/internal/sharing/sharingManagement.ts +33 -14
  188. package/src/internal/sharingPublic/cryptoReporter.ts +5 -1
  189. package/src/internal/sharingPublic/index.ts +5 -1
  190. package/src/internal/sharingPublic/shares.ts +1 -2
  191. package/src/internal/upload/apiService.ts +0 -39
  192. package/src/internal/upload/cryptoService.ts +0 -9
  193. package/src/internal/upload/fileUploader.ts +0 -5
  194. package/src/internal/upload/manager.test.ts +0 -65
  195. package/src/internal/upload/manager.ts +0 -64
  196. package/src/protonDriveClient.ts +21 -2
  197. package/src/protonDrivePhotosClient.ts +217 -9
  198. package/src/protonDrivePublicLinkClient.ts +77 -2
  199. package/dist/diagnostic/sdkDiagnostic.d.ts +0 -23
  200. package/dist/diagnostic/sdkDiagnostic.js +0 -320
  201. package/dist/diagnostic/sdkDiagnostic.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { ProtonDriveClientContructorParameters, NodeOrUid, MaybeMissingNode, UploadMetadata, FileDownloader, FileUploader, SDKEvent, MaybeNode, ThumbnailType, ThumbnailResult } from './interface';
1
+ import { ProtonDriveClientContructorParameters, NodeOrUid, MaybeMissingNode, UploadMetadata, FileDownloader, FileUploader, SDKEvent, MaybeNode, ThumbnailType, ThumbnailResult, ShareNodeSettings, ShareResult, UnshareNodeSettings, ProtonInvitationOrUid, NonProtonInvitationOrUid, ProtonInvitationWithNode, NodeResult } from './interface';
2
2
  import { DriveListener, EventSubscription } from './internal/events';
3
3
  /**
4
4
  * ProtonDrivePhotosClient is the interface to access Photos functionality.
@@ -63,6 +63,12 @@ export declare class ProtonDrivePhotosClient {
63
63
  captureTime: Date;
64
64
  tags: number[];
65
65
  }>;
66
+ /**
67
+ * Iterates the trashed nodes.
68
+ *
69
+ * See `ProtonDriveClient.iterateTrashedNodes` for more information.
70
+ */
71
+ iterateTrashedNodes(signal?: AbortSignal): AsyncGenerator<MaybeNode>;
66
72
  /**
67
73
  * Iterates the nodes by their UIDs.
68
74
  *
@@ -76,11 +82,95 @@ export declare class ProtonDrivePhotosClient {
76
82
  */
77
83
  getNode(nodeUid: NodeOrUid): Promise<MaybeNode>;
78
84
  /**
79
- * Iterates the albums.
85
+ * Rename the node.
80
86
  *
81
- * The output is not sorted and the order of the nodes is not guaranteed.
87
+ * See `ProtonDriveClient.renameNode` for more information.
82
88
  */
83
- iterateAlbums(signal?: AbortSignal): AsyncGenerator<MaybeNode>;
89
+ renameNode(nodeUid: NodeOrUid, newName: string): Promise<MaybeNode>;
90
+ /**
91
+ * Trash the nodes.
92
+ *
93
+ * See `ProtonDriveClient.trashNodes` for more information.
94
+ */
95
+ trashNodes(nodeUids: NodeOrUid[], signal?: AbortSignal): AsyncGenerator<NodeResult>;
96
+ /**
97
+ * Restore the nodes from the trash to their original place.
98
+ *
99
+ * See `ProtonDriveClient.restoreNodes` for more information.
100
+ */
101
+ restoreNodes(nodeUids: NodeOrUid[], signal?: AbortSignal): AsyncGenerator<NodeResult>;
102
+ /**
103
+ * Delete the nodes permanently.
104
+ *
105
+ * See `ProtonDriveClient.deleteNodes` for more information.
106
+ */
107
+ deleteNodes(nodeUids: NodeOrUid[], signal?: AbortSignal): AsyncGenerator<NodeResult>;
108
+ /**
109
+ * Empty the trash.
110
+ *
111
+ * See `ProtonDriveClient.emptyTrash` for more information.
112
+ */
113
+ emptyTrash(): Promise<void>;
114
+ /**
115
+ * Iterates the nodes shared by the user.
116
+ *
117
+ * See `ProtonDriveClient.iterateSharedNodes` for more information.
118
+ */
119
+ iterateSharedNodes(signal?: AbortSignal): AsyncGenerator<MaybeNode>;
120
+ /**
121
+ * Iterates the nodes shared with the user.
122
+ *
123
+ * See `ProtonDriveClient.iterateSharedNodesWithMe` for more information.
124
+ */
125
+ iterateSharedNodesWithMe(signal?: AbortSignal): AsyncGenerator<MaybeNode>;
126
+ /**
127
+ * Leave shared node that was previously shared with the user.
128
+ *
129
+ * See `ProtonDriveClient.leaveSharedNode` for more information.
130
+ */
131
+ leaveSharedNode(nodeUid: NodeOrUid): Promise<void>;
132
+ /**
133
+ * Iterates the invitations to shared nodes.
134
+ *
135
+ * See `ProtonDriveClient.iterateInvitations` for more information.
136
+ */
137
+ iterateInvitations(signal?: AbortSignal): AsyncGenerator<ProtonInvitationWithNode>;
138
+ /**
139
+ * Accept the invitation to the shared node.
140
+ *
141
+ * See `ProtonDriveClient.acceptInvitation` for more information.
142
+ */
143
+ acceptInvitation(invitationUid: ProtonInvitationOrUid): Promise<void>;
144
+ /**
145
+ * Reject the invitation to the shared node.
146
+ *
147
+ * See `ProtonDriveClient.rejectInvitation` for more information.
148
+ */
149
+ rejectInvitation(invitationUid: ProtonInvitationOrUid): Promise<void>;
150
+ /**
151
+ * Get sharing info of the node.
152
+ *
153
+ * See `ProtonDriveClient.getSharingInfo` for more information.
154
+ */
155
+ getSharingInfo(nodeUid: NodeOrUid): Promise<ShareResult | undefined>;
156
+ /**
157
+ * Share or update sharing of the node.
158
+ *
159
+ * See `ProtonDriveClient.shareNode` for more information.
160
+ */
161
+ shareNode(nodeUid: NodeOrUid, settings: ShareNodeSettings): Promise<ShareResult>;
162
+ /**
163
+ * Unshare the node, completely or partially.
164
+ *
165
+ * See `ProtonDriveClient.unshareNode` for more information.
166
+ */
167
+ unshareNode(nodeUid: NodeOrUid, settings?: UnshareNodeSettings): Promise<ShareResult | undefined>;
168
+ /**
169
+ * Resend the invitation email to shared node.
170
+ *
171
+ * See `ProtonDriveClient.resendInvitation` for more information.
172
+ */
173
+ resendInvitation(nodeUid: NodeOrUid, invitationUid: ProtonInvitationOrUid | NonProtonInvitationOrUid): Promise<void>;
84
174
  /**
85
175
  * Get the file downloader to download the node content.
86
176
  *
@@ -103,4 +193,29 @@ export declare class ProtonDrivePhotosClient {
103
193
  mainPhotoLinkID?: string;
104
194
  tags?: (0 | 3 | 1 | 2 | 7 | 4 | 5 | 6 | 8 | 9)[];
105
195
  }, signal?: AbortSignal): Promise<FileUploader>;
196
+ /**
197
+ * Check if the photo is a duplicate.
198
+ *
199
+ * For given photo name, find existing photos with the same name
200
+ * in the timeline and check if the photo content is also the same.
201
+ * Only the same name is not considered as duplicate photo because
202
+ * it is expected that there are photos with the same name (e.g.,
203
+ * date as a name from multiple cameras, or rolling number).
204
+ *
205
+ * The function accepts a callback to generate the SHA1 and it is
206
+ * called only when there is any matching node name hash to avoid
207
+ * computation for every node if its not necessary.
208
+ *
209
+ * @param name - The name of the photo to check for duplicates.
210
+ * @param generateSha1 - A callback to generate the hex string representation of the SHA1 of the photo content.
211
+ * @param signal - An optional abort signal to cancel the operation.
212
+ * @returns True if the photo already exists in the timeline, false otherwise.
213
+ */
214
+ isDuplicatePhoto(name: string, generateSha1: () => Promise<string>, signal?: AbortSignal): Promise<boolean>;
215
+ /**
216
+ * Iterates the albums.
217
+ *
218
+ * The output is not sorted and the order of the nodes is not guaranteed.
219
+ */
220
+ iterateAlbums(signal?: AbortSignal): AsyncGenerator<MaybeNode>;
106
221
  }
@@ -36,16 +36,16 @@ class ProtonDrivePhotosClient {
36
36
  if (!telemetry) {
37
37
  telemetry = new telemetry_1.Telemetry();
38
38
  }
39
- this.logger = telemetry.getLogger('interface');
39
+ this.logger = telemetry.getLogger('photos-interface');
40
40
  const fullConfig = (0, config_1.getConfig)(config);
41
41
  this.sdkEvents = new sdkEvents_1.SDKEvents(telemetry);
42
42
  const cryptoModule = new crypto_1.DriveCrypto(openPGPCryptoModule, srpModule);
43
43
  const apiService = new apiService_1.DriveAPIService(telemetry, this.sdkEvents, httpClient, fullConfig.baseUrl, fullConfig.language);
44
44
  const coreShares = (0, shares_1.initSharesModule)(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule);
45
45
  this.photoShares = (0, photos_1.initPhotoSharesModule)(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule, coreShares);
46
- this.nodes = (0, nodes_1.initNodesModule)(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule, this.photoShares);
47
- this.photos = (0, photos_1.initPhotosModule)(apiService, this.photoShares, this.nodes.access);
48
- this.sharing = (0, sharing_1.initSharingModule)(telemetry, apiService, entitiesCache, account, cryptoModule, this.photoShares, this.nodes.access);
46
+ this.nodes = (0, nodes_1.initNodesModule)(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule, this.photoShares, fullConfig.clientUid);
47
+ this.photos = (0, photos_1.initPhotosModule)(telemetry, apiService, cryptoModule, this.photoShares, this.nodes.access);
48
+ this.sharing = (0, sharing_1.initSharingModule)(telemetry, apiService, entitiesCache, account, cryptoModule, this.photoShares, this.nodes.access, photos_1.PHOTOS_SHARE_TARGET_TYPES);
49
49
  this.download = (0, download_1.initDownloadModule)(telemetry, apiService, cryptoModule, account, this.photoShares, this.nodes.access, this.nodes.revisions);
50
50
  this.upload = (0, photos_1.initPhotoUploadModule)(telemetry, apiService, cryptoModule, this.photoShares, this.nodes.access, fullConfig.clientUid);
51
51
  // These are used to keep the internal cache up to date
@@ -105,6 +105,15 @@ class ProtonDrivePhotosClient {
105
105
  // TODO: expose better type
106
106
  yield* this.photos.timeline.iterateTimeline(signal);
107
107
  }
108
+ /**
109
+ * Iterates the trashed nodes.
110
+ *
111
+ * See `ProtonDriveClient.iterateTrashedNodes` for more information.
112
+ */
113
+ async *iterateTrashedNodes(signal) {
114
+ this.logger.info('Iterating trashed nodes');
115
+ yield* (0, transformers_1.convertInternalNodeIterator)(this.nodes.access.iterateTrashedNodes(signal));
116
+ }
108
117
  /**
109
118
  * Iterates the nodes by their UIDs.
110
119
  *
@@ -125,14 +134,146 @@ class ProtonDrivePhotosClient {
125
134
  return (0, transformers_1.convertInternalNodePromise)(this.nodes.access.getNode((0, transformers_1.getUid)(nodeUid)));
126
135
  }
127
136
  /**
128
- * Iterates the albums.
137
+ * Rename the node.
129
138
  *
130
- * The output is not sorted and the order of the nodes is not guaranteed.
139
+ * See `ProtonDriveClient.renameNode` for more information.
131
140
  */
132
- async *iterateAlbums(signal) {
133
- this.logger.info('Iterating albums');
134
- // TODO: expose album type
135
- yield* (0, transformers_1.convertInternalNodeIterator)(this.photos.albums.iterateAlbums(signal));
141
+ async renameNode(nodeUid, newName) {
142
+ this.logger.info(`Renaming node ${(0, transformers_1.getUid)(nodeUid)}`);
143
+ return (0, transformers_1.convertInternalNodePromise)(this.nodes.management.renameNode((0, transformers_1.getUid)(nodeUid), newName));
144
+ }
145
+ /**
146
+ * Trash the nodes.
147
+ *
148
+ * See `ProtonDriveClient.trashNodes` for more information.
149
+ */
150
+ async *trashNodes(nodeUids, signal) {
151
+ this.logger.info(`Trashing ${nodeUids.length} nodes`);
152
+ yield* this.nodes.management.trashNodes((0, transformers_1.getUids)(nodeUids), signal);
153
+ }
154
+ /**
155
+ * Restore the nodes from the trash to their original place.
156
+ *
157
+ * See `ProtonDriveClient.restoreNodes` for more information.
158
+ */
159
+ async *restoreNodes(nodeUids, signal) {
160
+ this.logger.info(`Restoring ${nodeUids.length} nodes`);
161
+ yield* this.nodes.management.restoreNodes((0, transformers_1.getUids)(nodeUids), signal);
162
+ }
163
+ /**
164
+ * Delete the nodes permanently.
165
+ *
166
+ * See `ProtonDriveClient.deleteNodes` for more information.
167
+ */
168
+ async *deleteNodes(nodeUids, signal) {
169
+ this.logger.info(`Deleting ${nodeUids.length} nodes`);
170
+ yield* this.nodes.management.deleteNodes((0, transformers_1.getUids)(nodeUids), signal);
171
+ }
172
+ /**
173
+ * Empty the trash.
174
+ *
175
+ * See `ProtonDriveClient.emptyTrash` for more information.
176
+ */
177
+ async emptyTrash() {
178
+ this.logger.info('Emptying trash');
179
+ throw new Error('Method not implemented');
180
+ }
181
+ /**
182
+ * Iterates the nodes shared by the user.
183
+ *
184
+ * See `ProtonDriveClient.iterateSharedNodes` for more information.
185
+ */
186
+ async *iterateSharedNodes(signal) {
187
+ this.logger.info('Iterating shared nodes by me');
188
+ yield* (0, transformers_1.convertInternalNodeIterator)(this.sharing.access.iterateSharedNodes(signal));
189
+ }
190
+ /**
191
+ * Iterates the nodes shared with the user.
192
+ *
193
+ * See `ProtonDriveClient.iterateSharedNodesWithMe` for more information.
194
+ */
195
+ async *iterateSharedNodesWithMe(signal) {
196
+ this.logger.info('Iterating shared nodes with me');
197
+ for await (const node of this.sharing.access.iterateSharedNodesWithMe(signal)) {
198
+ yield (0, transformers_1.convertInternalNode)(node);
199
+ }
200
+ }
201
+ /**
202
+ * Leave shared node that was previously shared with the user.
203
+ *
204
+ * See `ProtonDriveClient.leaveSharedNode` for more information.
205
+ */
206
+ async leaveSharedNode(nodeUid) {
207
+ this.logger.info(`Leaving shared node with me ${(0, transformers_1.getUid)(nodeUid)}`);
208
+ await this.sharing.access.removeSharedNodeWithMe((0, transformers_1.getUid)(nodeUid));
209
+ }
210
+ /**
211
+ * Iterates the invitations to shared nodes.
212
+ *
213
+ * See `ProtonDriveClient.iterateInvitations` for more information.
214
+ */
215
+ async *iterateInvitations(signal) {
216
+ this.logger.info('Iterating invitations');
217
+ yield* this.sharing.access.iterateInvitations(signal);
218
+ }
219
+ /**
220
+ * Accept the invitation to the shared node.
221
+ *
222
+ * See `ProtonDriveClient.acceptInvitation` for more information.
223
+ */
224
+ async acceptInvitation(invitationUid) {
225
+ this.logger.info(`Accepting invitation ${(0, transformers_1.getUid)(invitationUid)}`);
226
+ await this.sharing.access.acceptInvitation((0, transformers_1.getUid)(invitationUid));
227
+ }
228
+ /**
229
+ * Reject the invitation to the shared node.
230
+ *
231
+ * See `ProtonDriveClient.rejectInvitation` for more information.
232
+ */
233
+ async rejectInvitation(invitationUid) {
234
+ this.logger.info(`Rejecting invitation ${(0, transformers_1.getUid)(invitationUid)}`);
235
+ await this.sharing.access.rejectInvitation((0, transformers_1.getUid)(invitationUid));
236
+ }
237
+ /**
238
+ * Get sharing info of the node.
239
+ *
240
+ * See `ProtonDriveClient.getSharingInfo` for more information.
241
+ */
242
+ async getSharingInfo(nodeUid) {
243
+ this.logger.info(`Getting sharing info for ${(0, transformers_1.getUid)(nodeUid)}`);
244
+ return this.sharing.management.getSharingInfo((0, transformers_1.getUid)(nodeUid));
245
+ }
246
+ /**
247
+ * Share or update sharing of the node.
248
+ *
249
+ * See `ProtonDriveClient.shareNode` for more information.
250
+ */
251
+ async shareNode(nodeUid, settings) {
252
+ this.logger.info(`Sharing node ${(0, transformers_1.getUid)(nodeUid)}`);
253
+ return this.sharing.management.shareNode((0, transformers_1.getUid)(nodeUid), settings);
254
+ }
255
+ /**
256
+ * Unshare the node, completely or partially.
257
+ *
258
+ * See `ProtonDriveClient.unshareNode` for more information.
259
+ */
260
+ async unshareNode(nodeUid, settings) {
261
+ if (!settings) {
262
+ this.logger.info(`Unsharing node ${(0, transformers_1.getUid)(nodeUid)}`);
263
+ }
264
+ else {
265
+ this.logger.info(`Partially unsharing ${(0, transformers_1.getUid)(nodeUid)}`);
266
+ }
267
+ return this.sharing.management.unshareNode((0, transformers_1.getUid)(nodeUid), settings);
268
+ }
269
+ /**
270
+ * Resend the invitation email to shared node.
271
+ *
272
+ * See `ProtonDriveClient.resendInvitation` for more information.
273
+ */
274
+ async resendInvitation(nodeUid, invitationUid) {
275
+ this.logger.info(`Resending invitation ${(0, transformers_1.getUid)(invitationUid)}`);
276
+ return this.sharing.management.resendInvitationEmail((0, transformers_1.getUid)(nodeUid), (0, transformers_1.getUid)(invitationUid));
136
277
  }
137
278
  /**
138
279
  * Get the file downloader to download the node content.
@@ -162,6 +303,38 @@ class ProtonDrivePhotosClient {
162
303
  const parentFolderUid = await this.nodes.access.getVolumeRootFolder();
163
304
  return this.upload.getFileUploader((0, transformers_1.getUid)(parentFolderUid), name, metadata, signal);
164
305
  }
306
+ /**
307
+ * Check if the photo is a duplicate.
308
+ *
309
+ * For given photo name, find existing photos with the same name
310
+ * in the timeline and check if the photo content is also the same.
311
+ * Only the same name is not considered as duplicate photo because
312
+ * it is expected that there are photos with the same name (e.g.,
313
+ * date as a name from multiple cameras, or rolling number).
314
+ *
315
+ * The function accepts a callback to generate the SHA1 and it is
316
+ * called only when there is any matching node name hash to avoid
317
+ * computation for every node if its not necessary.
318
+ *
319
+ * @param name - The name of the photo to check for duplicates.
320
+ * @param generateSha1 - A callback to generate the hex string representation of the SHA1 of the photo content.
321
+ * @param signal - An optional abort signal to cancel the operation.
322
+ * @returns True if the photo already exists in the timeline, false otherwise.
323
+ */
324
+ async isDuplicatePhoto(name, generateSha1, signal) {
325
+ this.logger.info(`Checking if photo is a duplicate`);
326
+ return this.photos.timeline.isDuplicatePhoto(name, generateSha1, signal);
327
+ }
328
+ /**
329
+ * Iterates the albums.
330
+ *
331
+ * The output is not sorted and the order of the nodes is not guaranteed.
332
+ */
333
+ async *iterateAlbums(signal) {
334
+ this.logger.info('Iterating albums');
335
+ // TODO: expose album type
336
+ yield* (0, transformers_1.convertInternalNodeIterator)(this.photos.albums.iterateAlbums(signal));
337
+ }
165
338
  }
166
339
  exports.ProtonDrivePhotosClient = ProtonDrivePhotosClient;
167
340
  //# sourceMappingURL=protonDrivePhotosClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protonDrivePhotosClient.js","sourceRoot":"","sources":["../src/protonDrivePhotosClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protonDrivePhotosClient.js","sourceRoot":"","sources":["../src/protonDrivePhotosClient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { OpenPGPCrypto, PrivateKey, SRPModule, SessionKey } from './crypto';
2
- import { ProtonDriveHTTPClient, ProtonDriveTelemetry, ProtonDriveConfig, NodeOrUid, ProtonDriveAccount, MaybeNode, NodeType, MaybeMissingNode, FileDownloader, ThumbnailType, ThumbnailResult } from './interface';
2
+ import { ProtonDriveHTTPClient, ProtonDriveTelemetry, ProtonDriveConfig, NodeOrUid, ProtonDriveAccount, MaybeNode, NodeType, MaybeMissingNode, FileDownloader, ThumbnailType, ThumbnailResult, UploadMetadata, FileUploader, NodeResult } from './interface';
3
3
  /**
4
4
  * ProtonDrivePublicLinkClient is the interface for the public link client.
5
5
  *
@@ -18,6 +18,7 @@ export declare class ProtonDrivePublicLinkClient {
18
18
  private sdkEvents;
19
19
  private sharingPublic;
20
20
  private download;
21
+ private upload;
21
22
  experimental: {
22
23
  /**
23
24
  * Experimental feature to return the URL of the node.
@@ -70,6 +71,24 @@ export declare class ProtonDrivePublicLinkClient {
70
71
  * See `ProtonDriveClient.getNode` for more information.
71
72
  */
72
73
  getNode(nodeUid: NodeOrUid): Promise<MaybeNode>;
74
+ /**
75
+ * Rename the node.
76
+ *
77
+ * See `ProtonDriveClient.renameNode` for more information.
78
+ */
79
+ renameNode(nodeUid: NodeOrUid, newName: string): Promise<MaybeNode>;
80
+ /**
81
+ * Delete the nodes permanently.
82
+ *
83
+ * See `ProtonDriveClient.deleteNodes` for more information.
84
+ */
85
+ deleteNodes(nodeUids: NodeOrUid[], signal?: AbortSignal): AsyncGenerator<NodeResult>;
86
+ /**
87
+ * Create a new folder.
88
+ *
89
+ * See `ProtonDriveClient.createFolder` for more information.
90
+ */
91
+ createFolder(parentNodeUid: NodeOrUid, name: string, modificationTime?: Date): Promise<MaybeNode>;
73
92
  /**
74
93
  * Get the file downloader to download the node content.
75
94
  *
@@ -82,4 +101,17 @@ export declare class ProtonDrivePublicLinkClient {
82
101
  * See `ProtonDriveClient.iterateThumbnails` for more information.
83
102
  */
84
103
  iterateThumbnails(nodeUids: NodeOrUid[], thumbnailType?: ThumbnailType, signal?: AbortSignal): AsyncGenerator<ThumbnailResult>;
104
+ /**
105
+ * Get the file uploader to upload a new file. For uploading a new
106
+ * revision, use `getFileRevisionUploader` instead.
107
+ *
108
+ * See `ProtonDriveClient.getFileUploader` for more information.
109
+ */
110
+ getFileUploader(parentFolderUid: NodeOrUid, name: string, metadata: UploadMetadata, signal?: AbortSignal): Promise<FileUploader>;
111
+ /**
112
+ * Same as `getFileUploader`, but for a uploading new revision of the file.
113
+ *
114
+ * See `ProtonDriveClient.getFileRevisionUploader` for more information.
115
+ */
116
+ getFileRevisionUploader(nodeUid: NodeOrUid, metadata: UploadMetadata, signal?: AbortSignal): Promise<FileUploader>;
85
117
  }
@@ -10,6 +10,7 @@ const apiService_1 = require("./internal/apiService");
10
10
  const download_1 = require("./internal/download");
11
11
  const sdkEvents_1 = require("./internal/sdkEvents");
12
12
  const sharingPublic_1 = require("./internal/sharingPublic");
13
+ const upload_1 = require("./internal/upload");
13
14
  /**
14
15
  * ProtonDrivePublicLinkClient is the interface for the public link client.
15
16
  *
@@ -28,12 +29,13 @@ class ProtonDrivePublicLinkClient {
28
29
  sdkEvents;
29
30
  sharingPublic;
30
31
  download;
32
+ upload;
31
33
  experimental;
32
34
  constructor({ httpClient, account, openPGPCryptoModule, srpModule, config, telemetry, url, token, publicShareKey, publicRootNodeUid, }) {
33
35
  if (!telemetry) {
34
36
  telemetry = new telemetry_1.Telemetry();
35
37
  }
36
- this.logger = telemetry.getLogger('interface');
38
+ this.logger = telemetry.getLogger('publicLink-interface');
37
39
  // Use only in memory cache for public link as there are no events to keep it up to date if persisted.
38
40
  const entitiesCache = new cache_1.MemoryCache();
39
41
  const cryptoCache = new cache_1.MemoryCache();
@@ -43,6 +45,7 @@ class ProtonDrivePublicLinkClient {
43
45
  const cryptoModule = new crypto_1.DriveCrypto(openPGPCryptoModule, srpModule);
44
46
  this.sharingPublic = (0, sharingPublic_1.initSharingPublicModule)(telemetry, apiService, entitiesCache, cryptoCache, cryptoModule, account, url, token, publicShareKey, publicRootNodeUid);
45
47
  this.download = (0, download_1.initDownloadModule)(telemetry, apiService, cryptoModule, account, this.sharingPublic.shares, this.sharingPublic.nodes.access, this.sharingPublic.nodes.revisions);
48
+ this.upload = (0, upload_1.initUploadModule)(telemetry, apiService, cryptoModule, this.sharingPublic.shares, this.sharingPublic.nodes.access, fullConfig.clientUid);
46
49
  this.experimental = {
47
50
  getNodeUrl: async (nodeUid) => {
48
51
  this.logger.debug(`Getting node URL for ${(0, transformers_1.getUid)(nodeUid)}`);
@@ -63,7 +66,7 @@ class ProtonDrivePublicLinkClient {
63
66
  */
64
67
  async getRootNode() {
65
68
  this.logger.info(`Getting root node`);
66
- const { rootNodeUid } = await this.sharingPublic.shares.getOwnVolumeIDs();
69
+ const { rootNodeUid } = await this.sharingPublic.shares.getRootIDs();
67
70
  return (0, transformers_1.convertInternalNodePromise)(this.sharingPublic.nodes.access.getNode(rootNodeUid));
68
71
  }
69
72
  /**
@@ -93,6 +96,33 @@ class ProtonDrivePublicLinkClient {
93
96
  this.logger.info(`Getting node ${(0, transformers_1.getUid)(nodeUid)}`);
94
97
  return (0, transformers_1.convertInternalNodePromise)(this.sharingPublic.nodes.access.getNode((0, transformers_1.getUid)(nodeUid)));
95
98
  }
99
+ /**
100
+ * Rename the node.
101
+ *
102
+ * See `ProtonDriveClient.renameNode` for more information.
103
+ */
104
+ async renameNode(nodeUid, newName) {
105
+ this.logger.info(`Renaming node ${(0, transformers_1.getUid)(nodeUid)}`);
106
+ return (0, transformers_1.convertInternalNodePromise)(this.sharingPublic.nodes.management.renameNode((0, transformers_1.getUid)(nodeUid), newName));
107
+ }
108
+ /**
109
+ * Delete the nodes permanently.
110
+ *
111
+ * See `ProtonDriveClient.deleteNodes` for more information.
112
+ */
113
+ async *deleteNodes(nodeUids, signal) {
114
+ this.logger.info(`Deleting ${nodeUids.length} nodes`);
115
+ yield* this.sharingPublic.nodes.management.deleteNodes((0, transformers_1.getUids)(nodeUids), signal);
116
+ }
117
+ /**
118
+ * Create a new folder.
119
+ *
120
+ * See `ProtonDriveClient.createFolder` for more information.
121
+ */
122
+ async createFolder(parentNodeUid, name, modificationTime) {
123
+ this.logger.info(`Creating folder in ${(0, transformers_1.getUid)(parentNodeUid)}`);
124
+ return (0, transformers_1.convertInternalNodePromise)(this.sharingPublic.nodes.management.createFolder((0, transformers_1.getUid)(parentNodeUid), name, modificationTime));
125
+ }
96
126
  /**
97
127
  * Get the file downloader to download the node content.
98
128
  *
@@ -111,6 +141,25 @@ class ProtonDrivePublicLinkClient {
111
141
  this.logger.info(`Iterating ${nodeUids.length} thumbnails`);
112
142
  yield* this.download.iterateThumbnails((0, transformers_1.getUids)(nodeUids), thumbnailType, signal);
113
143
  }
144
+ /**
145
+ * Get the file uploader to upload a new file. For uploading a new
146
+ * revision, use `getFileRevisionUploader` instead.
147
+ *
148
+ * See `ProtonDriveClient.getFileUploader` for more information.
149
+ */
150
+ async getFileUploader(parentFolderUid, name, metadata, signal) {
151
+ this.logger.info(`Getting file uploader for parent ${(0, transformers_1.getUid)(parentFolderUid)}`);
152
+ return this.upload.getFileUploader((0, transformers_1.getUid)(parentFolderUid), name, metadata, signal);
153
+ }
154
+ /**
155
+ * Same as `getFileUploader`, but for a uploading new revision of the file.
156
+ *
157
+ * See `ProtonDriveClient.getFileRevisionUploader` for more information.
158
+ */
159
+ async getFileRevisionUploader(nodeUid, metadata, signal) {
160
+ this.logger.info(`Getting file revision uploader for ${(0, transformers_1.getUid)(nodeUid)}`);
161
+ return this.upload.getFileRevisionUploader((0, transformers_1.getUid)(nodeUid), metadata, signal);
162
+ }
114
163
  }
115
164
  exports.ProtonDrivePublicLinkClient = ProtonDrivePublicLinkClient;
116
165
  //# sourceMappingURL=protonDrivePublicLinkClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protonDrivePublicLinkClient.js","sourceRoot":"","sources":["../src/protonDrivePublicLinkClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protonDrivePublicLinkClient.js","sourceRoot":"","sources":["../src/protonDrivePublicLinkClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protontech/drive-sdk",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Proton Drive SDK",
5
5
  "license": "GPL-3.0",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,10 @@
1
1
  import { MaybeNode } from '../interface';
2
2
  import { ProtonDriveClient } from '../protonDriveClient';
3
+ import { ProtonDrivePhotosClient } from '../protonDrivePhotosClient';
3
4
  import { DiagnosticHTTPClient } from './httpClient';
4
- import { DiagnosticOptions, DiagnosticResult } from './interface';
5
- import { SDKDiagnostic } from './sdkDiagnostic';
5
+ import { DiagnosticOptions, DiagnosticProgressCallback, DiagnosticResult } from './interface';
6
+ import { SDKDiagnosticMain } from './sdkDiagnosticMain';
7
+ import { SDKDiagnosticPhotos } from './sdkDiagnosticPhotos';
6
8
  import { DiagnosticTelemetry } from './telemetry';
7
9
  import { zipGenerators } from './zipGenerators';
8
10
 
@@ -15,20 +17,37 @@ export class Diagnostic {
15
17
  private telemetry: DiagnosticTelemetry,
16
18
  private httpClient: DiagnosticHTTPClient,
17
19
  private protonDriveClient: ProtonDriveClient,
20
+ private protonDrivePhotosClient: ProtonDrivePhotosClient,
18
21
  ) {
19
22
  this.telemetry = telemetry;
20
23
  this.httpClient = httpClient;
21
24
  this.protonDriveClient = protonDriveClient;
25
+ this.protonDrivePhotosClient = protonDrivePhotosClient;
22
26
  }
23
27
 
24
- async *verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
25
- const diagnostic = new SDKDiagnostic(this.protonDriveClient);
26
- yield* this.yieldEvents(diagnostic.verifyMyFiles(options));
28
+ async *verifyMyFiles(
29
+ options?: DiagnosticOptions,
30
+ onProgress?: DiagnosticProgressCallback,
31
+ ): AsyncGenerator<DiagnosticResult> {
32
+ const diagnostic = new SDKDiagnosticMain(this.protonDriveClient, options, onProgress);
33
+ yield* this.yieldEvents(diagnostic.verifyMyFiles(options?.expectedStructure));
27
34
  }
28
35
 
29
- async *verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
30
- const diagnostic = new SDKDiagnostic(this.protonDriveClient);
31
- yield* this.yieldEvents(diagnostic.verifyNodeTree(node, options));
36
+ async *verifyNodeTree(
37
+ node: MaybeNode,
38
+ options?: DiagnosticOptions,
39
+ onProgress?: DiagnosticProgressCallback,
40
+ ): AsyncGenerator<DiagnosticResult> {
41
+ const diagnostic = new SDKDiagnosticMain(this.protonDriveClient, options, onProgress);
42
+ yield* this.yieldEvents(diagnostic.verifyNodeTree(node, options?.expectedStructure));
43
+ }
44
+
45
+ async *verifyPhotosTimeline(
46
+ options?: DiagnosticOptions,
47
+ onProgress?: DiagnosticProgressCallback,
48
+ ): AsyncGenerator<DiagnosticResult> {
49
+ const diagnostic = new SDKDiagnosticPhotos(this.protonDrivePhotosClient, options, onProgress);
50
+ yield* this.yieldEvents(diagnostic.verifyTimeline(options?.expectedStructure));
32
51
  }
33
52
 
34
53
  private async *yieldEvents(generator: AsyncGenerator<DiagnosticResult>): AsyncGenerator<DiagnosticResult> {