@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.
- package/dist/crypto/driveCrypto.d.ts +1 -1
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/interface.d.ts +1 -1
- package/dist/crypto/openPGPCrypto.d.ts +1 -1
- package/dist/crypto/openPGPCrypto.js +4 -1
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/internal/apiService/errorCodes.d.ts +1 -0
- package/dist/internal/apiService/errors.d.ts +3 -0
- package/dist/internal/apiService/errors.js +7 -1
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/devices/interface.d.ts +1 -1
- package/dist/internal/devices/manager.js +1 -1
- package/dist/internal/devices/manager.js.map +1 -1
- package/dist/internal/devices/manager.test.js +3 -3
- package/dist/internal/devices/manager.test.js.map +1 -1
- package/dist/internal/download/cryptoService.js +2 -2
- package/dist/internal/download/cryptoService.js.map +1 -1
- package/dist/internal/download/fileDownloader.js +2 -2
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js +3 -1
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/events/apiService.js +1 -1
- package/dist/internal/events/apiService.js.map +1 -1
- package/dist/internal/events/coreEventManager.js +1 -1
- package/dist/internal/events/coreEventManager.js.map +1 -1
- package/dist/internal/events/coreEventManager.test.js +18 -24
- package/dist/internal/events/coreEventManager.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +3 -4
- package/dist/internal/events/index.js +4 -4
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/events/interface.d.ts +3 -0
- package/dist/internal/nodes/apiService.d.ts +12 -3
- package/dist/internal/nodes/apiService.js +53 -13
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +19 -2
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cache.js +3 -1
- package/dist/internal/nodes/cache.js.map +1 -1
- package/dist/internal/nodes/cryptoReporter.d.ts +20 -0
- package/dist/internal/nodes/cryptoReporter.js +96 -0
- package/dist/internal/nodes/cryptoReporter.js.map +1 -0
- package/dist/internal/nodes/cryptoService.d.ts +18 -13
- package/dist/internal/nodes/cryptoService.js +18 -98
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js +7 -5
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/errors.d.ts +4 -0
- package/dist/internal/nodes/errors.js +9 -0
- package/dist/internal/nodes/errors.js.map +1 -0
- package/dist/internal/nodes/index.js +3 -1
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/index.test.js +1 -1
- package/dist/internal/nodes/index.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +5 -2
- package/dist/internal/nodes/nodesAccess.d.ts +4 -4
- package/dist/internal/nodes/nodesAccess.js +77 -69
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +48 -8
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +2 -0
- package/dist/internal/nodes/nodesManagement.js +86 -9
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +81 -5
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
- package/dist/internal/photos/albums.d.ts +9 -7
- package/dist/internal/photos/albums.js +26 -13
- package/dist/internal/photos/albums.js.map +1 -1
- package/dist/internal/photos/apiService.d.ts +34 -3
- package/dist/internal/photos/apiService.js +96 -3
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/index.d.ts +20 -4
- package/dist/internal/photos/index.js +30 -7
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +25 -1
- package/dist/internal/photos/shares.d.ts +43 -0
- package/dist/internal/photos/shares.js +112 -0
- package/dist/internal/photos/shares.js.map +1 -0
- package/dist/internal/photos/timeline.d.ts +15 -0
- package/dist/internal/photos/timeline.js +22 -0
- package/dist/internal/photos/timeline.js.map +1 -0
- package/dist/internal/shares/manager.d.ts +1 -1
- package/dist/internal/shares/manager.js +4 -4
- package/dist/internal/shares/manager.js.map +1 -1
- package/dist/internal/shares/manager.test.js +7 -7
- package/dist/internal/shares/manager.test.js.map +1 -1
- package/dist/internal/sharing/cache.d.ts +3 -0
- package/dist/internal/sharing/cache.js +17 -2
- package/dist/internal/sharing/cache.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +2 -2
- package/dist/internal/sharing/interface.js +1 -1
- package/dist/internal/sharing/sharingAccess.js +7 -1
- package/dist/internal/sharing/sharingAccess.js.map +1 -1
- package/dist/internal/sharing/sharingAccess.test.js +243 -34
- package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
- package/dist/internal/sharingPublic/apiService.d.ts +1 -1
- package/dist/internal/sharingPublic/apiService.js +9 -2
- package/dist/internal/sharingPublic/apiService.js.map +1 -1
- package/dist/internal/sharingPublic/cryptoService.d.ts +6 -20
- package/dist/internal/sharingPublic/cryptoService.js +40 -103
- package/dist/internal/sharingPublic/cryptoService.js.map +1 -1
- package/dist/internal/sharingPublic/index.d.ts +2 -2
- package/dist/internal/sharingPublic/index.js +2 -2
- package/dist/internal/sharingPublic/index.js.map +1 -1
- package/dist/internal/sharingPublic/interface.d.ts +1 -43
- package/dist/internal/sharingPublic/manager.d.ts +1 -1
- package/dist/internal/sharingPublic/manager.js +9 -7
- package/dist/internal/sharingPublic/manager.js.map +1 -1
- package/dist/internal/upload/streamUploader.js +1 -1
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +3 -1
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/protonDriveClient.d.ts +20 -3
- package/dist/protonDriveClient.js +24 -4
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.d.ts +86 -12
- package/dist/protonDrivePhotosClient.js +132 -29
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +13 -4
- package/dist/protonDrivePublicLinkClient.js +13 -11
- package/dist/protonDrivePublicLinkClient.js.map +1 -1
- package/package.json +1 -1
- package/src/crypto/driveCrypto.ts +1 -1
- package/src/crypto/interface.ts +1 -1
- package/src/crypto/openPGPCrypto.ts +5 -2
- package/src/internal/apiService/errorCodes.ts +1 -0
- package/src/internal/apiService/errors.ts +6 -0
- package/src/internal/devices/interface.ts +1 -1
- package/src/internal/devices/manager.test.ts +3 -3
- package/src/internal/devices/manager.ts +1 -1
- package/src/internal/download/cryptoService.ts +2 -2
- package/src/internal/download/fileDownloader.test.ts +3 -1
- package/src/internal/download/fileDownloader.ts +2 -2
- package/src/internal/events/apiService.ts +1 -1
- package/src/internal/events/coreEventManager.test.ts +21 -27
- package/src/internal/events/coreEventManager.ts +1 -1
- package/src/internal/events/index.ts +3 -4
- package/src/internal/events/interface.ts +4 -0
- package/src/internal/nodes/apiService.test.ts +35 -1
- package/src/internal/nodes/apiService.ts +103 -17
- package/src/internal/nodes/cache.ts +3 -1
- package/src/internal/nodes/cryptoReporter.ts +145 -0
- package/src/internal/nodes/cryptoService.test.ts +11 -9
- package/src/internal/nodes/cryptoService.ts +45 -138
- package/src/internal/nodes/errors.ts +5 -0
- package/src/internal/nodes/index.test.ts +1 -1
- package/src/internal/nodes/index.ts +3 -1
- package/src/internal/nodes/interface.ts +6 -2
- package/src/internal/nodes/nodesAccess.test.ts +68 -8
- package/src/internal/nodes/nodesAccess.ts +101 -76
- package/src/internal/nodes/nodesManagement.test.ts +100 -5
- package/src/internal/nodes/nodesManagement.ts +100 -13
- package/src/internal/photos/albums.ts +31 -12
- package/src/internal/photos/apiService.ts +159 -4
- package/src/internal/photos/index.ts +54 -9
- package/src/internal/photos/interface.ts +23 -1
- package/src/internal/photos/shares.ts +134 -0
- package/src/internal/photos/timeline.ts +24 -0
- package/src/internal/shares/manager.test.ts +7 -7
- package/src/internal/shares/manager.ts +4 -4
- package/src/internal/sharing/cache.ts +19 -2
- package/src/internal/sharing/interface.ts +2 -2
- package/src/internal/sharing/sharingAccess.test.ts +283 -35
- package/src/internal/sharing/sharingAccess.ts +7 -1
- package/src/internal/sharingPublic/apiService.ts +11 -2
- package/src/internal/sharingPublic/cryptoService.ts +71 -135
- package/src/internal/sharingPublic/index.ts +3 -2
- package/src/internal/sharingPublic/interface.ts +8 -53
- package/src/internal/sharingPublic/manager.ts +9 -8
- package/src/internal/upload/streamUploader.test.ts +3 -1
- package/src/internal/upload/streamUploader.ts +1 -1
- package/src/protonDriveClient.ts +34 -4
- package/src/protonDrivePhotosClient.ts +211 -32
- package/src/protonDrivePublicLinkClient.ts +26 -12
- package/dist/internal/photos/cache.d.ts +0 -6
- package/dist/internal/photos/cache.js +0 -15
- package/dist/internal/photos/cache.js.map +0 -1
- package/dist/internal/photos/photosTimeline.d.ts +0 -10
- package/dist/internal/photos/photosTimeline.js +0 -19
- package/dist/internal/photos/photosTimeline.js.map +0 -1
- package/src/internal/photos/cache.ts +0 -11
- package/src/internal/photos/photosTimeline.ts +0 -17
|
@@ -1,19 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
Logger,
|
|
3
|
+
ProtonDriveClientContructorParameters,
|
|
4
|
+
NodeOrUid,
|
|
5
|
+
MaybeMissingNode,
|
|
6
|
+
UploadMetadata,
|
|
7
|
+
FileDownloader,
|
|
8
|
+
FileUploader,
|
|
9
|
+
SDKEvent,
|
|
10
|
+
MaybeNode,
|
|
11
|
+
} from './interface';
|
|
12
|
+
import { getConfig } from './config';
|
|
3
13
|
import { DriveCrypto } from './crypto';
|
|
4
|
-
import {
|
|
14
|
+
import { Telemetry } from './telemetry';
|
|
15
|
+
import { convertInternalMissingNodeIterator, convertInternalNodeIterator, getUid, getUids } from './transformers';
|
|
16
|
+
import { DriveAPIService } from './internal/apiService';
|
|
17
|
+
import { initDownloadModule } from './internal/download';
|
|
18
|
+
import { DriveEventsService, DriveListener, EventSubscription } from './internal/events';
|
|
5
19
|
import { initNodesModule } from './internal/nodes';
|
|
6
|
-
import { initPhotosModule } from './internal/photos';
|
|
7
|
-
import { DriveEventsService } from './internal/events';
|
|
20
|
+
import { initPhotoSharesModule, initPhotosModule } from './internal/photos';
|
|
8
21
|
import { SDKEvents } from './internal/sdkEvents';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
22
|
+
import { initSharesModule } from './internal/shares';
|
|
23
|
+
import { initSharingModule } from './internal/sharing';
|
|
24
|
+
import { initUploadModule } from './internal/upload';
|
|
11
25
|
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* ProtonDrivePhotosClient is the interface to access Photos functionality.
|
|
28
|
+
*
|
|
29
|
+
* The client provides high-level operations for managing photos, albums, sharing,
|
|
30
|
+
* and downloading/uploading photos.
|
|
31
|
+
*
|
|
32
|
+
* @deprecated This is an experimental feature that might change without a warning.
|
|
33
|
+
*/
|
|
13
34
|
export class ProtonDrivePhotosClient {
|
|
35
|
+
private logger: Logger;
|
|
36
|
+
private sdkEvents: SDKEvents;
|
|
37
|
+
private events: DriveEventsService;
|
|
38
|
+
private photoShares: ReturnType<typeof initPhotoSharesModule>;
|
|
14
39
|
private nodes: ReturnType<typeof initNodesModule>;
|
|
40
|
+
private sharing: ReturnType<typeof initSharingModule>;
|
|
41
|
+
private download: ReturnType<typeof initDownloadModule>;
|
|
42
|
+
private upload: ReturnType<typeof initUploadModule>;
|
|
15
43
|
private photos: ReturnType<typeof initPhotosModule>;
|
|
16
44
|
|
|
45
|
+
public experimental: {
|
|
46
|
+
/**
|
|
47
|
+
* Experimental feature to return the URL of the node.
|
|
48
|
+
*
|
|
49
|
+
* See `ProtonDriveClient.experimental.getNodeUrl` for more information.
|
|
50
|
+
*/
|
|
51
|
+
getNodeUrl: (nodeUid: NodeOrUid) => Promise<string>;
|
|
52
|
+
};
|
|
53
|
+
|
|
17
54
|
constructor({
|
|
18
55
|
httpClient,
|
|
19
56
|
entitiesCache,
|
|
@@ -23,41 +60,183 @@ export class ProtonDrivePhotosClient {
|
|
|
23
60
|
srpModule,
|
|
24
61
|
config,
|
|
25
62
|
telemetry,
|
|
63
|
+
latestEventIdProvider,
|
|
26
64
|
}: ProtonDriveClientContructorParameters) {
|
|
27
65
|
if (!telemetry) {
|
|
28
66
|
telemetry = new Telemetry();
|
|
29
67
|
}
|
|
68
|
+
this.logger = telemetry.getLogger('interface');
|
|
30
69
|
|
|
31
70
|
const fullConfig = getConfig(config);
|
|
32
|
-
|
|
71
|
+
this.sdkEvents = new SDKEvents(telemetry);
|
|
33
72
|
const cryptoModule = new DriveCrypto(openPGPCryptoModule, srpModule);
|
|
34
73
|
const apiService = new DriveAPIService(
|
|
35
74
|
telemetry,
|
|
36
|
-
sdkEvents,
|
|
75
|
+
this.sdkEvents,
|
|
37
76
|
httpClient,
|
|
38
77
|
fullConfig.baseUrl,
|
|
39
78
|
fullConfig.language,
|
|
40
79
|
);
|
|
41
|
-
const
|
|
42
|
-
this.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
80
|
+
const coreShares = initSharesModule(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule);
|
|
81
|
+
this.photoShares = initPhotoSharesModule(
|
|
82
|
+
telemetry,
|
|
83
|
+
apiService,
|
|
84
|
+
entitiesCache,
|
|
85
|
+
cryptoCache,
|
|
86
|
+
account,
|
|
87
|
+
cryptoModule,
|
|
88
|
+
coreShares,
|
|
89
|
+
);
|
|
90
|
+
this.nodes = initNodesModule(
|
|
91
|
+
telemetry,
|
|
92
|
+
apiService,
|
|
93
|
+
entitiesCache,
|
|
94
|
+
cryptoCache,
|
|
95
|
+
account,
|
|
96
|
+
cryptoModule,
|
|
97
|
+
this.photoShares,
|
|
98
|
+
);
|
|
99
|
+
this.photos = initPhotosModule(apiService, this.photoShares, this.nodes.access);
|
|
100
|
+
this.sharing = initSharingModule(
|
|
101
|
+
telemetry,
|
|
102
|
+
apiService,
|
|
103
|
+
entitiesCache,
|
|
104
|
+
account,
|
|
105
|
+
cryptoModule,
|
|
106
|
+
this.photoShares,
|
|
107
|
+
this.nodes.access,
|
|
108
|
+
);
|
|
109
|
+
this.download = initDownloadModule(
|
|
110
|
+
telemetry,
|
|
111
|
+
apiService,
|
|
112
|
+
cryptoModule,
|
|
113
|
+
account,
|
|
114
|
+
this.photoShares,
|
|
115
|
+
this.nodes.access,
|
|
116
|
+
this.nodes.revisions,
|
|
117
|
+
);
|
|
118
|
+
this.upload = initUploadModule(
|
|
119
|
+
telemetry,
|
|
120
|
+
apiService,
|
|
121
|
+
cryptoModule,
|
|
122
|
+
this.photoShares,
|
|
123
|
+
this.nodes.access,
|
|
124
|
+
fullConfig.clientUid,
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
// These are used to keep the internal cache up to date
|
|
128
|
+
const cacheEventListeners: DriveListener[] = [
|
|
129
|
+
this.nodes.eventHandler.updateNodesCacheOnEvent.bind(this.nodes.eventHandler),
|
|
130
|
+
this.sharing.eventHandler.handleDriveEvent.bind(this.sharing.eventHandler),
|
|
131
|
+
];
|
|
132
|
+
this.events = new DriveEventsService(
|
|
133
|
+
telemetry,
|
|
134
|
+
apiService,
|
|
135
|
+
this.photoShares,
|
|
136
|
+
cacheEventListeners,
|
|
137
|
+
latestEventIdProvider,
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
this.experimental = {
|
|
141
|
+
getNodeUrl: async (nodeUid: NodeOrUid) => {
|
|
142
|
+
this.logger.debug(`Getting node URL for ${getUid(nodeUid)}`);
|
|
143
|
+
return this.nodes.access.getNodeUrl(getUid(nodeUid));
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Subscribes to the general SDK events.
|
|
150
|
+
*
|
|
151
|
+
* See `ProtonDriveClient.onMessage` for more information.
|
|
152
|
+
*/
|
|
153
|
+
onMessage(eventName: SDKEvent, callback: () => void): () => void {
|
|
154
|
+
this.logger.debug(`Subscribing to event ${eventName}`);
|
|
155
|
+
return this.sdkEvents.addListener(eventName, callback);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Subscribes to the remote data updates for all files in a tree.
|
|
160
|
+
*
|
|
161
|
+
* See `ProtonDriveClient.subscribeToTreeEvents` for more information.
|
|
162
|
+
*/
|
|
163
|
+
async subscribeToTreeEvents(treeEventScopeId: string, callback: DriveListener): Promise<EventSubscription> {
|
|
164
|
+
this.logger.debug('Subscribing to node updates');
|
|
165
|
+
return this.events.subscribeToTreeEvents(treeEventScopeId, callback);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Subscribes to the remote general data updates.
|
|
170
|
+
*
|
|
171
|
+
* See `ProtonDriveClient.subscribeToDriveEvents` for more information.
|
|
172
|
+
*/
|
|
173
|
+
async subscribeToDriveEvents(callback: DriveListener): Promise<EventSubscription> {
|
|
174
|
+
this.logger.debug('Subscribing to core updates');
|
|
175
|
+
return this.events.subscribeToCoreEvents(callback);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Iterates all the photos for the timeline view.
|
|
180
|
+
*
|
|
181
|
+
* The output includes only necessary information to quickly prepare
|
|
182
|
+
* the whole timeline view with the break-down per month/year and fast
|
|
183
|
+
* scrollbar.
|
|
184
|
+
*
|
|
185
|
+
* Individual photos details must be loaded separately based on what
|
|
186
|
+
* is visible in the UI.
|
|
187
|
+
*
|
|
188
|
+
* The output is sorted by the capture time, starting from the
|
|
189
|
+
* the most recent photos.
|
|
190
|
+
*/
|
|
191
|
+
async *iterateTimeline(signal?: AbortSignal): AsyncGenerator<{
|
|
192
|
+
nodeUid: string;
|
|
193
|
+
captureTime: Date;
|
|
194
|
+
tags: number[];
|
|
195
|
+
}> {
|
|
196
|
+
// TODO: expose better type
|
|
197
|
+
yield* this.photos.timeline.iterateTimeline(signal);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Iterates the nodes by their UIDs.
|
|
202
|
+
*
|
|
203
|
+
* See `ProtonDriveClient.iterateNodes` for more information.
|
|
204
|
+
*/
|
|
205
|
+
async *iterateNodes(nodeUids: NodeOrUid[], signal?: AbortSignal): AsyncGenerator<MaybeMissingNode> {
|
|
206
|
+
this.logger.info(`Iterating ${nodeUids.length} nodes`);
|
|
207
|
+
// TODO: expose photo type
|
|
208
|
+
yield* convertInternalMissingNodeIterator(this.nodes.access.iterateNodes(getUids(nodeUids), signal));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Iterates the albums.
|
|
213
|
+
*
|
|
214
|
+
* The output is not sorted and the order of the nodes is not guaranteed.
|
|
215
|
+
*/
|
|
216
|
+
async *iterateAlbums(signal?: AbortSignal): AsyncGenerator<MaybeNode> {
|
|
217
|
+
this.logger.info('Iterating albums');
|
|
218
|
+
// TODO: expose album type
|
|
219
|
+
yield* convertInternalNodeIterator(this.photos.albums.iterateAlbums(signal));
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Get the file downloader to download the node content.
|
|
224
|
+
*
|
|
225
|
+
* See `ProtonDriveClient.getFileDownloader` for more information.
|
|
226
|
+
*/
|
|
227
|
+
async getFileDownloader(nodeUid: NodeOrUid, signal?: AbortSignal): Promise<FileDownloader> {
|
|
228
|
+
this.logger.info(`Getting file downloader for ${getUid(nodeUid)}`);
|
|
229
|
+
return this.download.getFileDownloader(getUid(nodeUid), signal);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Get the file uploader to upload a new file.
|
|
234
|
+
*
|
|
235
|
+
* See `ProtonDriveClient.getFileUploader` for more information.
|
|
236
|
+
*/
|
|
237
|
+
async getFileUploader(name: string, metadata: UploadMetadata, signal?: AbortSignal): Promise<FileUploader> {
|
|
238
|
+
this.logger.info(`Getting file uploader`);
|
|
239
|
+
const parentFolderUid = await this.nodes.access.getVolumeRootFolder();
|
|
240
|
+
return this.upload.getFileUploader(getUid(parentFolderUid), name, metadata, signal);
|
|
241
|
+
}
|
|
63
242
|
}
|
|
@@ -7,9 +7,11 @@ import {
|
|
|
7
7
|
Logger,
|
|
8
8
|
ProtonDriveCryptoCache,
|
|
9
9
|
NodeOrUid,
|
|
10
|
+
ProtonDriveAccount,
|
|
11
|
+
MaybeNode,
|
|
10
12
|
} from './interface';
|
|
11
13
|
import { Telemetry } from './telemetry';
|
|
12
|
-
import { getUid } from './transformers';
|
|
14
|
+
import { getUid, convertInternalNodePromise, convertInternalNodeIterator } from './transformers';
|
|
13
15
|
import { DriveAPIService } from './internal/apiService';
|
|
14
16
|
import { SDKEvents } from './internal/sdkEvents';
|
|
15
17
|
import { initSharingPublicModule } from './internal/sharingPublic';
|
|
@@ -52,6 +54,7 @@ export class ProtonDrivePublicLinkClient {
|
|
|
52
54
|
constructor({
|
|
53
55
|
httpClient,
|
|
54
56
|
cryptoCache,
|
|
57
|
+
account,
|
|
55
58
|
openPGPCryptoModule,
|
|
56
59
|
srpModule,
|
|
57
60
|
config,
|
|
@@ -61,6 +64,7 @@ export class ProtonDrivePublicLinkClient {
|
|
|
61
64
|
}: {
|
|
62
65
|
httpClient: ProtonDriveHTTPClient;
|
|
63
66
|
cryptoCache: ProtonDriveCryptoCache;
|
|
67
|
+
account: ProtonDriveAccount;
|
|
64
68
|
openPGPCryptoModule: OpenPGPCrypto;
|
|
65
69
|
srpModule: SRPModule;
|
|
66
70
|
config?: ProtonDriveConfig;
|
|
@@ -84,7 +88,15 @@ export class ProtonDrivePublicLinkClient {
|
|
|
84
88
|
fullConfig.language,
|
|
85
89
|
);
|
|
86
90
|
const driveCrypto = new DriveCrypto(openPGPCryptoModule, srpModule);
|
|
87
|
-
this.sharingPublic = initSharingPublicModule(
|
|
91
|
+
this.sharingPublic = initSharingPublicModule(
|
|
92
|
+
telemetry,
|
|
93
|
+
apiService,
|
|
94
|
+
cryptoCache,
|
|
95
|
+
driveCrypto,
|
|
96
|
+
account,
|
|
97
|
+
token,
|
|
98
|
+
password,
|
|
99
|
+
);
|
|
88
100
|
|
|
89
101
|
this.experimental = {
|
|
90
102
|
getNodeUrl: async (nodeUid: NodeOrUid) => {
|
|
@@ -103,19 +115,21 @@ export class ProtonDrivePublicLinkClient {
|
|
|
103
115
|
};
|
|
104
116
|
}
|
|
105
117
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
118
|
+
/**
|
|
119
|
+
* @returns The root folder to the public link.
|
|
120
|
+
*/
|
|
121
|
+
async getRootNode(): Promise<MaybeNode> {
|
|
109
122
|
this.logger.info(`Getting root node`);
|
|
110
|
-
|
|
111
|
-
return this.sharingPublic.getRootNode();
|
|
123
|
+
return convertInternalNodePromise(this.sharingPublic.getRootNode());
|
|
112
124
|
}
|
|
113
125
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Iterates the children of the given parent node.
|
|
128
|
+
*
|
|
129
|
+
* See `ProtonDriveClient.iterateFolderChildren` for more information.
|
|
130
|
+
*/
|
|
131
|
+
async *iterateFolderChildren(parentUid: NodeOrUid, signal?: AbortSignal): AsyncGenerator<MaybeNode> {
|
|
117
132
|
this.logger.info(`Iterating children of ${getUid(parentUid)}`);
|
|
118
|
-
|
|
119
|
-
yield * this.sharingPublic.iterateChildren(getUid(parentUid));
|
|
133
|
+
yield * convertInternalNodeIterator(this.sharingPublic.iterateFolderChildren(getUid(parentUid), signal));
|
|
120
134
|
}
|
|
121
135
|
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PhotosCache = void 0;
|
|
4
|
-
class PhotosCache {
|
|
5
|
-
driveCache;
|
|
6
|
-
constructor(driveCache) {
|
|
7
|
-
this.driveCache = driveCache;
|
|
8
|
-
this.driveCache = driveCache;
|
|
9
|
-
}
|
|
10
|
-
async setAlbum(album) {
|
|
11
|
-
await this.driveCache.setEntity(album.uid, album);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.PhotosCache = PhotosCache;
|
|
15
|
-
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/internal/photos/cache.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IACA;IAApB,YAAoB,UAAoC;QAApC,eAAU,GAAV,UAAU,CAA0B;QACpD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAU;QACrB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;CACJ;AARD,kCAQC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PhotosAPIService } from './apiService';
|
|
2
|
-
import { PhotosCache } from './cache';
|
|
3
|
-
import { NodesService } from './interface';
|
|
4
|
-
export declare class PhotosTimeline {
|
|
5
|
-
private apiService;
|
|
6
|
-
private cache;
|
|
7
|
-
private nodesService;
|
|
8
|
-
constructor(apiService: PhotosAPIService, cache: PhotosCache, nodesService: NodesService);
|
|
9
|
-
getTimelineStructure(): Promise<void>;
|
|
10
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PhotosTimeline = void 0;
|
|
4
|
-
class PhotosTimeline {
|
|
5
|
-
apiService;
|
|
6
|
-
cache;
|
|
7
|
-
nodesService;
|
|
8
|
-
constructor(apiService, cache, nodesService) {
|
|
9
|
-
this.apiService = apiService;
|
|
10
|
-
this.cache = cache;
|
|
11
|
-
this.nodesService = nodesService;
|
|
12
|
-
this.apiService = apiService;
|
|
13
|
-
this.cache = cache;
|
|
14
|
-
this.nodesService = nodesService;
|
|
15
|
-
}
|
|
16
|
-
async getTimelineStructure() { }
|
|
17
|
-
}
|
|
18
|
-
exports.PhotosTimeline = PhotosTimeline;
|
|
19
|
-
//# sourceMappingURL=photosTimeline.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"photosTimeline.js","sourceRoot":"","sources":["../../../src/internal/photos/photosTimeline.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;IAEX;IACA;IACA;IAHZ,YACY,UAA4B,EAC5B,KAAkB,EAClB,YAA0B;QAF1B,eAAU,GAAV,UAAU,CAAkB;QAC5B,UAAK,GAAL,KAAK,CAAa;QAClB,iBAAY,GAAZ,YAAY,CAAc;QAElC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,oBAAoB,KAAI,CAAC;CAClC;AAZD,wCAYC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ProtonDriveEntitiesCache } from '../../interface';
|
|
2
|
-
|
|
3
|
-
export class PhotosCache {
|
|
4
|
-
constructor(private driveCache: ProtonDriveEntitiesCache) {
|
|
5
|
-
this.driveCache = driveCache;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
async setAlbum(album: any) {
|
|
9
|
-
await this.driveCache.setEntity(album.uid, album);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { PhotosAPIService } from './apiService';
|
|
2
|
-
import { PhotosCache } from './cache';
|
|
3
|
-
import { NodesService } from './interface';
|
|
4
|
-
|
|
5
|
-
export class PhotosTimeline {
|
|
6
|
-
constructor(
|
|
7
|
-
private apiService: PhotosAPIService,
|
|
8
|
-
private cache: PhotosCache,
|
|
9
|
-
private nodesService: NodesService,
|
|
10
|
-
) {
|
|
11
|
-
this.apiService = apiService;
|
|
12
|
-
this.cache = cache;
|
|
13
|
-
this.nodesService = nodesService;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async getTimelineStructure() {}
|
|
17
|
-
}
|