@protontech/drive-sdk 0.15.1 → 0.15.2

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 (65) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/internal/apiService/apiService.d.ts +1 -1
  3. package/dist/internal/apiService/apiService.js +22 -7
  4. package/dist/internal/apiService/apiService.js.map +1 -1
  5. package/dist/internal/apiService/apiService.test.js +13 -0
  6. package/dist/internal/apiService/apiService.test.js.map +1 -1
  7. package/dist/internal/errors.js +35 -2
  8. package/dist/internal/errors.js.map +1 -1
  9. package/dist/internal/events/apiService.d.ts +4 -2
  10. package/dist/internal/events/apiService.js +17 -13
  11. package/dist/internal/events/apiService.js.map +1 -1
  12. package/dist/internal/events/index.d.ts +12 -1
  13. package/dist/internal/events/index.js +17 -1
  14. package/dist/internal/events/index.js.map +1 -1
  15. package/dist/internal/events/index.test.d.ts +1 -0
  16. package/dist/internal/events/index.test.js +58 -0
  17. package/dist/internal/events/index.test.js.map +1 -0
  18. package/dist/internal/nodes/cryptoService.d.ts +1 -0
  19. package/dist/internal/nodes/cryptoService.js +4 -0
  20. package/dist/internal/nodes/cryptoService.js.map +1 -1
  21. package/dist/internal/nodes/nodesRevisions.d.ts +1 -1
  22. package/dist/internal/nodes/nodesRevisions.js +3 -0
  23. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  24. package/dist/internal/photos/addToAlbum.js +1 -1
  25. package/dist/internal/photos/addToAlbum.js.map +1 -1
  26. package/dist/internal/photos/addToAlbum.test.js +12 -12
  27. package/dist/internal/photos/addToAlbum.test.js.map +1 -1
  28. package/dist/internal/photos/apiService.d.ts +3 -3
  29. package/dist/internal/photos/apiService.js +5 -5
  30. package/dist/internal/photos/apiService.js.map +1 -1
  31. package/dist/internal/photos/apiService.test.js +4 -4
  32. package/dist/internal/photos/apiService.test.js.map +1 -1
  33. package/dist/internal/photos/photosManager.d.ts +1 -0
  34. package/dist/internal/photos/photosManager.js +38 -2
  35. package/dist/internal/photos/photosManager.js.map +1 -1
  36. package/dist/internal/photos/photosManager.test.js +26 -0
  37. package/dist/internal/photos/photosManager.test.js.map +1 -1
  38. package/dist/internal/sharingPublic/nodes.d.ts +1 -0
  39. package/dist/internal/sharingPublic/nodes.js +2 -0
  40. package/dist/internal/sharingPublic/nodes.js.map +1 -1
  41. package/dist/protonDriveClient.d.ts +14 -2
  42. package/dist/protonDriveClient.js +6 -0
  43. package/dist/protonDriveClient.js.map +1 -1
  44. package/dist/protonDrivePhotosClient.d.ts +10 -2
  45. package/dist/protonDrivePhotosClient.js +6 -0
  46. package/dist/protonDrivePhotosClient.js.map +1 -1
  47. package/package.json +1 -1
  48. package/src/index.ts +1 -1
  49. package/src/internal/apiService/apiService.test.ts +16 -0
  50. package/src/internal/apiService/apiService.ts +20 -2
  51. package/src/internal/errors.ts +40 -1
  52. package/src/internal/events/apiService.ts +20 -17
  53. package/src/internal/events/index.test.ts +67 -0
  54. package/src/internal/events/index.ts +20 -2
  55. package/src/internal/nodes/cryptoService.ts +6 -0
  56. package/src/internal/nodes/nodesRevisions.ts +5 -1
  57. package/src/internal/photos/addToAlbum.test.ts +12 -12
  58. package/src/internal/photos/addToAlbum.ts +1 -1
  59. package/src/internal/photos/apiService.test.ts +4 -4
  60. package/src/internal/photos/apiService.ts +6 -6
  61. package/src/internal/photos/photosManager.test.ts +36 -1
  62. package/src/internal/photos/photosManager.ts +48 -7
  63. package/src/internal/sharingPublic/nodes.ts +3 -0
  64. package/src/protonDriveClient.ts +18 -1
  65. package/src/protonDrivePhotosClient.ts +15 -5
@@ -6,6 +6,7 @@ import {
6
6
  Device,
7
7
  DeviceOrUid,
8
8
  DeviceType,
9
+ DriveEvent,
9
10
  FileDownloader,
10
11
  FileUploader,
11
12
  Logger,
@@ -36,7 +37,7 @@ import {
36
37
  import { DriveAPIService } from './internal/apiService';
37
38
  import { initDevicesModule } from './internal/devices';
38
39
  import { initDownloadModule } from './internal/download';
39
- import { DriveEventsService, DriveListener, EventSubscription } from './internal/events';
40
+ import { CoreApiEvent, DriveEventsService, DriveListener, EventSubscription } from './internal/events';
40
41
  import { initNodesModule } from './internal/nodes';
41
42
  import { SDKEvents } from './internal/sdkEvents';
42
43
  import { initSharesModule } from './internal/shares';
@@ -113,6 +114,16 @@ export class ProtonDriveClient {
113
114
  customPassword?: string,
114
115
  isAnonymousContext?: boolean,
115
116
  ) => Promise<ProtonDrivePublicLinkClient>;
117
+ /**
118
+ * Feed a raw core API event response into the SDK.
119
+ *
120
+ * The SDK will derive drive-relevant events (e.g. `SharedWithMeUpdated`)
121
+ * from it, update internal caches, and return the derived events.
122
+ *
123
+ * The `rawEvent` shape matches the response of the
124
+ * `core/v5/events/{id}` endpoint.
125
+ */
126
+ processCoreEvent: (rawEvent: CoreApiEvent) => Promise<DriveEvent[]>;
116
127
  };
117
128
 
118
129
  constructor({
@@ -255,6 +266,10 @@ export class ProtonDriveClient {
255
266
  session,
256
267
  });
257
268
  },
269
+ processCoreEvent: async (rawEvent: CoreApiEvent) => {
270
+ this.logger.debug(`Processing core event ${rawEvent.EventID}`);
271
+ return this.events.processCoreEvent(rawEvent);
272
+ },
258
273
  };
259
274
  }
260
275
 
@@ -293,6 +308,8 @@ export class ProtonDriveClient {
293
308
  * Subscribes to the remote general data updates.
294
309
  *
295
310
  * Only one instance of the SDK should subscribe to updates.
311
+ *
312
+ * @deprecated Use `experimental.processCoreEvent` instead.
296
313
  */
297
314
  async subscribeToDriveEvents(callback: DriveListener): Promise<EventSubscription> {
298
315
  this.logger.debug('Subscribing to core updates');
@@ -2,6 +2,7 @@ import { getConfig } from './config';
2
2
  import { DriveCrypto } from './crypto';
3
3
  import { NullFeatureFlagProvider } from './featureFlags';
4
4
  import {
5
+ DriveEvent,
5
6
  FileDownloader,
6
7
  FileUploader,
7
8
  Logger,
@@ -26,7 +27,7 @@ import {
26
27
  } from './interface';
27
28
  import { DriveAPIService } from './internal/apiService';
28
29
  import { initDownloadModule } from './internal/download';
29
- import { DriveEventsService, DriveListener, EventSubscription } from './internal/events';
30
+ import { CoreApiEvent, DriveEventsService, DriveListener, EventSubscription } from './internal/events';
30
31
  import {
31
32
  AlbumItem,
32
33
  initPhotoSharesModule,
@@ -82,6 +83,12 @@ export class ProtonDrivePhotosClient {
82
83
  * @param signal - An optional abort signal to cancel the operation.
83
84
  */
84
85
  iterateAlbumUids: (signal?: AbortSignal) => AsyncGenerator<string>;
86
+ /**
87
+ * Feed a raw core API event response into the SDK.
88
+ *
89
+ * See `ProtonDriveClient.experimental.processCoreEvent` for more information.
90
+ */
91
+ processCoreEvent: (rawEvent: CoreApiEvent) => Promise<DriveEvent[]>;
85
92
  };
86
93
 
87
94
  constructor({
@@ -186,6 +193,10 @@ export class ProtonDrivePhotosClient {
186
193
  this.logger.debug('Iterating album UIDs');
187
194
  return this.photos.albums.iterateAlbumUids(signal);
188
195
  },
196
+ processCoreEvent: async (rawEvent: CoreApiEvent) => {
197
+ this.logger.debug(`Processing core event ${rawEvent.EventID}`);
198
+ return this.events.processCoreEvent(rawEvent);
199
+ },
189
200
  };
190
201
  }
191
202
 
@@ -213,6 +224,8 @@ export class ProtonDrivePhotosClient {
213
224
  * Subscribes to the remote general data updates.
214
225
  *
215
226
  * See `ProtonDriveClient.subscribeToDriveEvents` for more information.
227
+ *
228
+ * @deprecated Use `experimental.processCoreEvent` instead.
216
229
  */
217
230
  async subscribeToDriveEvents(callback: DriveListener): Promise<EventSubscription> {
218
231
  this.logger.debug('Subscribing to core updates');
@@ -707,10 +720,7 @@ export class ProtonDrivePhotosClient {
707
720
  * @param signal - An optional abort signal to cancel the operation.
708
721
  * @returns An async generator of per-photo results.
709
722
  */
710
- async *savePhotosToTimeline(
711
- photoNodeUids: NodeOrUid[],
712
- signal?: AbortSignal,
713
- ): AsyncGenerator<NodeResultWithError> {
723
+ async *savePhotosToTimeline(photoNodeUids: NodeOrUid[], signal?: AbortSignal): AsyncGenerator<NodeResultWithError> {
714
724
  this.logger.info(`Saving ${photoNodeUids.length} photos to timeline`);
715
725
  yield* this.photos.photos.saveToTimeline(getUids(photoNodeUids), signal);
716
726
  }