@protontech/drive-sdk 0.0.12 → 0.0.13
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/errors.d.ts +7 -3
- package/dist/errors.js +9 -4
- package/dist/errors.js.map +1 -1
- package/dist/interface/index.d.ts +1 -1
- package/dist/interface/nodes.d.ts +12 -1
- package/dist/interface/nodes.js +11 -0
- package/dist/interface/nodes.js.map +1 -1
- package/dist/interface/upload.d.ts +51 -3
- package/dist/internal/apiService/driveTypes.d.ts +1341 -465
- package/dist/internal/apiService/errors.js +2 -2
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/apiService/transformers.js +2 -0
- package/dist/internal/apiService/transformers.js.map +1 -1
- package/dist/internal/asyncIteratorMap.d.ts +15 -0
- package/dist/internal/asyncIteratorMap.js +59 -0
- package/dist/internal/asyncIteratorMap.js.map +1 -0
- package/dist/internal/asyncIteratorMap.test.d.ts +1 -0
- package/dist/internal/asyncIteratorMap.test.js +120 -0
- package/dist/internal/asyncIteratorMap.test.js.map +1 -0
- package/dist/internal/nodes/apiService.d.ts +2 -2
- package/dist/internal/nodes/apiService.js +16 -6
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +30 -8
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cache.js +1 -0
- package/dist/internal/nodes/cache.js.map +1 -1
- package/dist/internal/nodes/cache.test.js +1 -0
- package/dist/internal/nodes/cache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js +34 -0
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/index.test.js +3 -1
- package/dist/internal/nodes/index.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +3 -1
- package/dist/internal/nodes/nodesAccess.js +28 -7
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +7 -6
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/sharing/apiService.js +19 -2
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/upload/fileUploader.d.ts +49 -53
- package/dist/internal/upload/fileUploader.js +91 -395
- package/dist/internal/upload/fileUploader.js.map +1 -1
- package/dist/internal/upload/fileUploader.test.js +38 -292
- package/dist/internal/upload/fileUploader.test.js.map +1 -1
- package/dist/internal/upload/index.d.ts +3 -3
- package/dist/internal/upload/index.js +20 -41
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/manager.d.ts +1 -1
- package/dist/internal/upload/manager.js +16 -19
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +42 -83
- package/dist/internal/upload/manager.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +62 -0
- package/dist/internal/upload/streamUploader.js +441 -0
- package/dist/internal/upload/streamUploader.js.map +1 -0
- package/dist/internal/upload/streamUploader.test.d.ts +1 -0
- package/dist/internal/upload/streamUploader.test.js +358 -0
- package/dist/internal/upload/streamUploader.test.js.map +1 -0
- package/dist/protonDriveClient.d.ts +4 -4
- package/dist/protonDriveClient.js +1 -1
- package/dist/protonDriveClient.js.map +1 -1
- package/package.json +2 -2
- package/src/errors.ts +10 -4
- package/src/interface/index.ts +1 -1
- package/src/interface/nodes.ts +11 -0
- package/src/interface/upload.ts +53 -3
- package/src/internal/apiService/driveTypes.ts +1341 -465
- package/src/internal/apiService/errors.ts +3 -2
- package/src/internal/apiService/transformers.ts +2 -0
- package/src/internal/asyncIteratorMap.test.ts +150 -0
- package/src/internal/asyncIteratorMap.ts +64 -0
- package/src/internal/nodes/apiService.test.ts +36 -7
- package/src/internal/nodes/apiService.ts +19 -7
- package/src/internal/nodes/cache.test.ts +1 -0
- package/src/internal/nodes/cache.ts +1 -0
- package/src/internal/nodes/cryptoService.test.ts +38 -0
- package/src/internal/nodes/index.test.ts +3 -1
- package/src/internal/nodes/interface.ts +4 -1
- package/src/internal/nodes/nodesAccess.test.ts +7 -6
- package/src/internal/nodes/nodesAccess.ts +30 -7
- package/src/internal/sharing/apiService.ts +24 -2
- package/src/internal/upload/fileUploader.test.ts +46 -376
- package/src/internal/upload/fileUploader.ts +114 -494
- package/src/internal/upload/index.ts +26 -50
- package/src/internal/upload/manager.test.ts +45 -92
- package/src/internal/upload/manager.ts +30 -32
- package/src/internal/upload/streamUploader.test.ts +469 -0
- package/src/internal/upload/streamUploader.ts +552 -0
- package/src/protonDriveClient.ts +5 -4
|
@@ -1,84 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const errors_1 = require("../../errors");
|
|
6
|
-
const telemetry_1 = require("../../telemetry");
|
|
7
|
-
const apiService_1 = require("../apiService");
|
|
8
|
-
const errors_2 = require("../errors");
|
|
9
|
-
const utils_1 = require("../utils");
|
|
10
|
-
const wait_1 = require("../wait");
|
|
3
|
+
exports.FileRevisionUploader = exports.FileUploader = void 0;
|
|
4
|
+
const blockVerifier_1 = require("./blockVerifier");
|
|
11
5
|
const controller_1 = require("./controller");
|
|
12
|
-
const
|
|
13
|
-
const chunkStreamReader_1 = require("./chunkStreamReader");
|
|
6
|
+
const streamUploader_1 = require("./streamUploader");
|
|
14
7
|
/**
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
exports.FILE_CHUNK_SIZE = 4 * 1024 * 1024;
|
|
18
|
-
/**
|
|
19
|
-
* Maximum number of blocks that can be buffered before upload.
|
|
20
|
-
* This is to prevent using too much memory.
|
|
21
|
-
*/
|
|
22
|
-
const MAX_BUFFERED_BLOCKS = 15;
|
|
23
|
-
/**
|
|
24
|
-
* Maximum number of blocks that can be uploaded at the same time.
|
|
25
|
-
* This is to prevent overloading the server with too many requests.
|
|
26
|
-
*/
|
|
27
|
-
const MAX_UPLOADING_BLOCKS = 5;
|
|
28
|
-
/**
|
|
29
|
-
* Maximum number of retries for block encryption.
|
|
30
|
-
* This is to automatically retry random errors that can happen
|
|
31
|
-
* during encryption, for example bitflips.
|
|
32
|
-
*/
|
|
33
|
-
const MAX_BLOCK_ENCRYPTION_RETRIES = 1;
|
|
34
|
-
/**
|
|
35
|
-
* Maximum number of retries for block upload.
|
|
36
|
-
* This is to ensure we don't end up in an infinite loop.
|
|
37
|
-
*/
|
|
38
|
-
const MAX_BLOCK_UPLOAD_RETRIES = 3;
|
|
39
|
-
/**
|
|
40
|
-
* Fileuploader is responsible for uploading file content to the server.
|
|
8
|
+
* Uploader is generic class responsible for creating a revision draft
|
|
9
|
+
* and initiate the upload process for a file object or a stream.
|
|
41
10
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* that the upload process is efficient and does not overload the server.
|
|
11
|
+
* This class is not meant to be used directly, but rather to be extended
|
|
12
|
+
* by `FileUploader` and `FileRevisionUploader`.
|
|
45
13
|
*/
|
|
46
|
-
class
|
|
14
|
+
class Uploader {
|
|
47
15
|
telemetry;
|
|
48
16
|
apiService;
|
|
49
17
|
cryptoService;
|
|
50
|
-
|
|
51
|
-
blockVerifier;
|
|
52
|
-
revisionDraft;
|
|
18
|
+
manager;
|
|
53
19
|
metadata;
|
|
54
20
|
onFinish;
|
|
55
21
|
signal;
|
|
56
|
-
logger;
|
|
57
|
-
digests;
|
|
58
22
|
controller;
|
|
59
23
|
abortController;
|
|
60
|
-
|
|
61
|
-
encryptedBlocks = new Map();
|
|
62
|
-
encryptionFinished = false;
|
|
63
|
-
ongoingUploads = new Map();
|
|
64
|
-
uploadedThumbnails = [];
|
|
65
|
-
uploadedBlocks = [];
|
|
66
|
-
constructor(telemetry, apiService, cryptoService, uploadManager, blockVerifier, revisionDraft, metadata, onFinish, signal) {
|
|
24
|
+
constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal) {
|
|
67
25
|
this.telemetry = telemetry;
|
|
68
26
|
this.apiService = apiService;
|
|
69
27
|
this.cryptoService = cryptoService;
|
|
70
|
-
this.
|
|
71
|
-
this.blockVerifier = blockVerifier;
|
|
72
|
-
this.revisionDraft = revisionDraft;
|
|
28
|
+
this.manager = manager;
|
|
73
29
|
this.metadata = metadata;
|
|
74
30
|
this.onFinish = onFinish;
|
|
75
31
|
this.signal = signal;
|
|
76
32
|
this.telemetry = telemetry;
|
|
77
|
-
this.logger = telemetry.getLoggerForRevision(revisionDraft.nodeRevisionUid);
|
|
78
33
|
this.apiService = apiService;
|
|
79
34
|
this.cryptoService = cryptoService;
|
|
80
|
-
this.
|
|
81
|
-
this.revisionDraft = revisionDraft;
|
|
35
|
+
this.manager = manager;
|
|
82
36
|
this.metadata = metadata;
|
|
83
37
|
this.onFinish = onFinish;
|
|
84
38
|
this.signal = signal;
|
|
@@ -88,10 +42,9 @@ class Fileuploader {
|
|
|
88
42
|
this.abortController.abort();
|
|
89
43
|
});
|
|
90
44
|
}
|
|
91
|
-
this.digests = new digests_1.UploadDigests();
|
|
92
45
|
this.controller = new controller_1.UploadController();
|
|
93
46
|
}
|
|
94
|
-
writeFile(fileObject, thumbnails, onProgress) {
|
|
47
|
+
async writeFile(fileObject, thumbnails, onProgress) {
|
|
95
48
|
if (this.controller.promise) {
|
|
96
49
|
throw new Error(`Upload already started`);
|
|
97
50
|
}
|
|
@@ -104,360 +57,103 @@ class Fileuploader {
|
|
|
104
57
|
if (!this.metadata.modificationTime) {
|
|
105
58
|
this.metadata.modificationTime = new Date(fileObject.lastModified);
|
|
106
59
|
}
|
|
107
|
-
|
|
60
|
+
this.controller.promise = this.startUpload(fileObject.stream(), thumbnails, onProgress);
|
|
61
|
+
return this.controller;
|
|
108
62
|
}
|
|
109
|
-
writeStream(stream, thumbnails, onProgress) {
|
|
63
|
+
async writeStream(stream, thumbnails, onProgress) {
|
|
110
64
|
if (this.controller.promise) {
|
|
111
65
|
throw new Error(`Upload already started`);
|
|
112
66
|
}
|
|
113
|
-
this.controller.promise = this.
|
|
67
|
+
this.controller.promise = this.startUpload(stream, thumbnails, onProgress);
|
|
114
68
|
return this.controller;
|
|
115
69
|
}
|
|
116
|
-
async
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// point the download failed.
|
|
120
|
-
let fileProgress = 0;
|
|
121
|
-
try {
|
|
122
|
-
this.logger.info(`Starting upload`);
|
|
123
|
-
await this.encryptAndUploadBlocks(stream, thumbnails, (uploadedBytes) => {
|
|
124
|
-
fileProgress += uploadedBytes;
|
|
125
|
-
onProgress?.(uploadedBytes);
|
|
126
|
-
});
|
|
127
|
-
this.logger.debug(`All blocks uploaded, committing`);
|
|
128
|
-
await this.commitFile(thumbnails);
|
|
129
|
-
void this.telemetry.uploadFinished(this.revisionDraft.nodeRevisionUid, fileProgress);
|
|
130
|
-
this.logger.info(`Upload succeeded`);
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
failure = true;
|
|
134
|
-
this.logger.error(`Upload failed`, error);
|
|
135
|
-
void this.telemetry.uploadFailed(this.revisionDraft.nodeRevisionUid, error, fileProgress, this.metadata.expectedSize);
|
|
136
|
-
throw error;
|
|
137
|
-
}
|
|
138
|
-
finally {
|
|
139
|
-
this.logger.debug(`Upload cleanup`);
|
|
140
|
-
// Help the garbage collector to clean up the memory.
|
|
141
|
-
this.encryptedBlocks.clear();
|
|
142
|
-
this.encryptedThumbnails.clear();
|
|
143
|
-
this.ongoingUploads.clear();
|
|
144
|
-
this.uploadedBlocks = [];
|
|
145
|
-
this.uploadedThumbnails = [];
|
|
146
|
-
this.encryptionFinished = false;
|
|
147
|
-
await this.onFinish(failure);
|
|
148
|
-
}
|
|
149
|
-
return this.revisionDraft.nodeRevisionUid;
|
|
70
|
+
async startUpload(stream, thumbnails, onProgress) {
|
|
71
|
+
const uploader = await this.initStreamUploader();
|
|
72
|
+
return uploader.start(stream, thumbnails, onProgress);
|
|
150
73
|
}
|
|
151
|
-
async
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
// For that reason, we want to await for the encryption later.
|
|
158
|
-
// However, jest complains if encryptBlock rejects asynchronously.
|
|
159
|
-
// For that reason we handle manually to save error to the variable
|
|
160
|
-
// and throw if set after we await for the encryption.
|
|
161
|
-
let encryptionError;
|
|
162
|
-
const encryptBlocksPromise = this.encryptBlocks(stream).catch((error) => {
|
|
163
|
-
encryptionError = error;
|
|
164
|
-
void this.abortUpload(error);
|
|
165
|
-
});
|
|
166
|
-
while (!encryptionError) {
|
|
167
|
-
await this.controller.waitIfPaused();
|
|
168
|
-
await this.waitForUploadCapacityAndBufferedBlocks();
|
|
169
|
-
if (this.isEncryptionFullyFinished) {
|
|
170
|
-
break;
|
|
74
|
+
async initStreamUploader() {
|
|
75
|
+
const { revisionDraft, blockVerifier } = await this.createRevisionDraft();
|
|
76
|
+
const onFinish = async (failure) => {
|
|
77
|
+
this.onFinish();
|
|
78
|
+
if (failure) {
|
|
79
|
+
await this.manager.deleteDraftNode(revisionDraft.nodeUid);
|
|
171
80
|
}
|
|
172
|
-
await this.requestAndInitiateUpload(onProgress);
|
|
173
|
-
if (this.isEncryptionFullyFinished) {
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
this.logger.debug(`All blocks uploading, waiting for them to finish`);
|
|
178
|
-
// Technically this is finished as while-block above will break
|
|
179
|
-
// when encryption is finished. But in case of error there could
|
|
180
|
-
// be a race condition that would cause the encryptionError to
|
|
181
|
-
// not be set yet.
|
|
182
|
-
await encryptBlocksPromise;
|
|
183
|
-
if (encryptionError) {
|
|
184
|
-
throw encryptionError;
|
|
185
|
-
}
|
|
186
|
-
await Promise.all(this.ongoingUploads.values().map(({ uploadPromise }) => uploadPromise));
|
|
187
|
-
}
|
|
188
|
-
async commitFile(thumbnails) {
|
|
189
|
-
this.verifyIntegrity(thumbnails);
|
|
190
|
-
const uploadedBlocks = Array.from(this.uploadedBlocks.values());
|
|
191
|
-
uploadedBlocks.sort((a, b) => a.index - b.index);
|
|
192
|
-
const extendedAttributes = {
|
|
193
|
-
modificationTime: this.metadata.modificationTime,
|
|
194
|
-
size: this.metadata.expectedSize,
|
|
195
|
-
blockSizes: uploadedBlocks.map(block => block.originalSize),
|
|
196
|
-
digests: this.digests.digests(),
|
|
197
81
|
};
|
|
198
|
-
|
|
199
|
-
await this.uploadManager.commitDraft(this.revisionDraft, this.manifest, this.metadata, extendedAttributes, encryptedSize);
|
|
82
|
+
return new streamUploader_1.StreamUploader(this.telemetry, this.apiService, this.cryptoService, this.manager, blockVerifier, revisionDraft, this.metadata, onFinish, this.signal);
|
|
200
83
|
}
|
|
201
|
-
async
|
|
202
|
-
|
|
203
|
-
throw new Error(`Duplicate thumbnail types`);
|
|
204
|
-
}
|
|
205
|
-
for (const thumbnail of thumbnails) {
|
|
206
|
-
this.logger.debug(`Encrypting thumbnail ${thumbnail.type}`);
|
|
207
|
-
const encryptedThumbnail = await this.cryptoService.encryptThumbnail(this.revisionDraft.nodeKeys, thumbnail);
|
|
208
|
-
this.encryptedThumbnails.set(thumbnail.type, encryptedThumbnail);
|
|
209
|
-
}
|
|
84
|
+
async createRevisionDraft() {
|
|
85
|
+
throw new Error('Not implemented');
|
|
210
86
|
}
|
|
211
|
-
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Uploader implementation for a new file.
|
|
90
|
+
*/
|
|
91
|
+
class FileUploader extends Uploader {
|
|
92
|
+
parentFolderUid;
|
|
93
|
+
name;
|
|
94
|
+
constructor(telemetry, apiService, cryptoService, manager, parentFolderUid, name, metadata, onFinish, signal) {
|
|
95
|
+
super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
|
|
96
|
+
this.parentFolderUid = parentFolderUid;
|
|
97
|
+
this.name = name;
|
|
98
|
+
this.parentFolderUid = parentFolderUid;
|
|
99
|
+
this.name = name;
|
|
100
|
+
}
|
|
101
|
+
async createRevisionDraft() {
|
|
102
|
+
let revisionDraft, blockVerifier;
|
|
212
103
|
try {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
index++;
|
|
217
|
-
this.digests.update(block);
|
|
218
|
-
await this.controller.waitIfPaused();
|
|
219
|
-
await this.waitForBufferCapacity();
|
|
220
|
-
this.logger.debug(`Encrypting block ${index}`);
|
|
221
|
-
let attempt = 0;
|
|
222
|
-
let integrityError = false;
|
|
223
|
-
let encryptedBlock;
|
|
224
|
-
while (!encryptedBlock) {
|
|
225
|
-
attempt++;
|
|
226
|
-
try {
|
|
227
|
-
encryptedBlock = await this.cryptoService.encryptBlock((encryptedBlock) => this.blockVerifier.verifyBlock(encryptedBlock), this.revisionDraft.nodeKeys, block, index);
|
|
228
|
-
if (integrityError) {
|
|
229
|
-
void this.telemetry.logBlockVerificationError(true);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
if (error instanceof errors_1.IntegrityError) {
|
|
234
|
-
integrityError = true;
|
|
235
|
-
}
|
|
236
|
-
if (attempt <= MAX_BLOCK_ENCRYPTION_RETRIES) {
|
|
237
|
-
this.logger.warn(`Block encryption failed #${attempt}, retrying: ${(0, errors_2.getErrorMessage)(error)}`);
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
this.logger.error(`Failed to encrypt block ${index}`, error);
|
|
241
|
-
if (integrityError) {
|
|
242
|
-
void this.telemetry.logBlockVerificationError(false);
|
|
243
|
-
}
|
|
244
|
-
throw error;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
this.encryptedBlocks.set(index, encryptedBlock);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
finally {
|
|
251
|
-
this.encryptionFinished = true;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
async requestAndInitiateUpload(onProgress) {
|
|
255
|
-
this.logger.info(`Requesting upload tokens for ${this.encryptedBlocks.size} blocks`);
|
|
256
|
-
const uploadTokens = await this.apiService.requestBlockUpload(this.revisionDraft.nodeRevisionUid, this.revisionDraft.nodeKeys.signatureAddress.addressId, {
|
|
257
|
-
contentBlocks: Array.from(this.encryptedBlocks.values().map(block => ({
|
|
258
|
-
index: block.index,
|
|
259
|
-
encryptedSize: block.encryptedSize,
|
|
260
|
-
hash: block.hash,
|
|
261
|
-
armoredSignature: block.armoredSignature,
|
|
262
|
-
verificationToken: block.verificationToken,
|
|
263
|
-
}))),
|
|
264
|
-
thumbnails: Array.from(this.encryptedThumbnails.values().map(block => ({
|
|
265
|
-
type: block.type,
|
|
266
|
-
encryptedSize: block.encryptedSize,
|
|
267
|
-
hash: block.hash,
|
|
268
|
-
}))),
|
|
269
|
-
});
|
|
270
|
-
for (const thumbnailToken of uploadTokens.thumbnailTokens) {
|
|
271
|
-
let encryptedThumbnail = this.encryptedThumbnails.get(thumbnailToken.type);
|
|
272
|
-
if (!encryptedThumbnail) {
|
|
273
|
-
throw new Error(`Thumbnail ${thumbnailToken.type} not found`);
|
|
274
|
-
}
|
|
275
|
-
this.encryptedThumbnails.delete(thumbnailToken.type);
|
|
276
|
-
const uploadKey = `thumbnail:${thumbnailToken.type}`;
|
|
277
|
-
this.ongoingUploads.set(uploadKey, {
|
|
278
|
-
uploadPromise: this.uploadThumbnail(thumbnailToken, encryptedThumbnail, onProgress).finally(() => {
|
|
279
|
-
this.ongoingUploads.delete(uploadKey);
|
|
280
|
-
// Help the garbage collector to clean up the memory.
|
|
281
|
-
encryptedThumbnail = undefined;
|
|
282
|
-
}),
|
|
283
|
-
encryptedBlock: encryptedThumbnail,
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
for (const blockToken of uploadTokens.blockTokens) {
|
|
287
|
-
let encryptedBlock = this.encryptedBlocks.get(blockToken.index);
|
|
288
|
-
if (!encryptedBlock) {
|
|
289
|
-
throw new Error(`Block ${blockToken.index} not found`);
|
|
290
|
-
}
|
|
291
|
-
this.encryptedBlocks.delete(blockToken.index);
|
|
292
|
-
const uploadKey = `block:${blockToken.index}`;
|
|
293
|
-
this.ongoingUploads.set(uploadKey, {
|
|
294
|
-
uploadPromise: this.uploadBlock(blockToken, encryptedBlock, onProgress).finally(() => {
|
|
295
|
-
this.ongoingUploads.delete(uploadKey);
|
|
296
|
-
// Help the garbage collector to clean up the memory.
|
|
297
|
-
encryptedBlock = undefined;
|
|
298
|
-
}),
|
|
299
|
-
encryptedBlock,
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
async uploadThumbnail(uploadToken, encryptedThumbnail, onProgress) {
|
|
304
|
-
const logger = new telemetry_1.LoggerWithPrefix(this.logger, `thubmnail ${uploadToken.token}`);
|
|
305
|
-
logger.info(`Upload started`);
|
|
306
|
-
let blockProgress = 0;
|
|
307
|
-
let attempt = 0;
|
|
308
|
-
while (true) {
|
|
309
|
-
attempt++;
|
|
310
|
-
try {
|
|
311
|
-
logger.debug(`Uploading`);
|
|
312
|
-
await this.apiService.uploadBlock(uploadToken.bareUrl, uploadToken.token, encryptedThumbnail.encryptedData, (uploadedBytes) => {
|
|
313
|
-
blockProgress += uploadedBytes;
|
|
314
|
-
onProgress?.(uploadedBytes);
|
|
315
|
-
}, this.abortController.signal);
|
|
316
|
-
this.uploadedThumbnails.push({
|
|
317
|
-
type: encryptedThumbnail.type,
|
|
318
|
-
hash: encryptedThumbnail.hash,
|
|
319
|
-
encryptedSize: encryptedThumbnail.encryptedSize,
|
|
320
|
-
originalSize: encryptedThumbnail.originalSize,
|
|
321
|
-
});
|
|
322
|
-
break;
|
|
323
|
-
}
|
|
324
|
-
catch (error) {
|
|
325
|
-
if (blockProgress !== 0) {
|
|
326
|
-
onProgress?.(-blockProgress);
|
|
327
|
-
blockProgress = 0;
|
|
328
|
-
}
|
|
329
|
-
// Note: We don't handle token expiration for thumbnails, because
|
|
330
|
-
// the API requires the thumbnails to be requested with the first
|
|
331
|
-
// upload block request. Thumbnails are tiny, so this edge case
|
|
332
|
-
// should be very rare and considering it is the beginning of the
|
|
333
|
-
// upload, the whole retry is cheap.
|
|
334
|
-
// Upload can fail for various reasons, for example integrity
|
|
335
|
-
// can fail due to bitflips. We want to retry and solve the issue
|
|
336
|
-
// seamlessly for the user. We retry only once, because we don't
|
|
337
|
-
// want to get stuck in a loop.
|
|
338
|
-
if (attempt <= MAX_BLOCK_UPLOAD_RETRIES) {
|
|
339
|
-
logger.warn(`Upload failed #${attempt}, retrying: ${(0, errors_2.getErrorMessage)(error)}`);
|
|
340
|
-
continue;
|
|
341
|
-
}
|
|
342
|
-
logger.error(`Upload failed`, error);
|
|
343
|
-
await this.abortUpload(error);
|
|
344
|
-
throw error;
|
|
345
|
-
}
|
|
104
|
+
revisionDraft = await this.manager.createDraftNode(this.parentFolderUid, this.name, this.metadata);
|
|
105
|
+
blockVerifier = new blockVerifier_1.BlockVerifier(this.apiService, this.cryptoService, revisionDraft.nodeKeys.key, revisionDraft.nodeRevisionUid);
|
|
106
|
+
await blockVerifier.loadVerificationData();
|
|
346
107
|
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
logger.info(`Upload started`);
|
|
352
|
-
let blockProgress = 0;
|
|
353
|
-
let attempt = 0;
|
|
354
|
-
while (true) {
|
|
355
|
-
attempt++;
|
|
356
|
-
try {
|
|
357
|
-
logger.debug(`Uploading`);
|
|
358
|
-
await this.apiService.uploadBlock(uploadToken.bareUrl, uploadToken.token, encryptedBlock.encryptedData, (uploadedBytes) => {
|
|
359
|
-
blockProgress += uploadedBytes;
|
|
360
|
-
onProgress?.(uploadedBytes);
|
|
361
|
-
}, this.abortController.signal);
|
|
362
|
-
this.uploadedBlocks.push({
|
|
363
|
-
index: encryptedBlock.index,
|
|
364
|
-
hash: encryptedBlock.hash,
|
|
365
|
-
encryptedSize: encryptedBlock.encryptedSize,
|
|
366
|
-
originalSize: encryptedBlock.originalSize,
|
|
367
|
-
});
|
|
368
|
-
break;
|
|
369
|
-
}
|
|
370
|
-
catch (error) {
|
|
371
|
-
if (blockProgress !== 0) {
|
|
372
|
-
onProgress?.(-blockProgress);
|
|
373
|
-
blockProgress = 0;
|
|
374
|
-
}
|
|
375
|
-
if ((error instanceof apiService_1.APIHTTPError && error.statusCode === 404 /* HTTPErrorCode.NOT_FOUND */) ||
|
|
376
|
-
(error instanceof apiService_1.NotFoundAPIError)) {
|
|
377
|
-
logger.warn(`Token expired, fetching new token and retrying`);
|
|
378
|
-
const uploadTokens = await this.apiService.requestBlockUpload(this.revisionDraft.nodeRevisionUid, this.revisionDraft.nodeKeys.signatureAddress.addressId, {
|
|
379
|
-
contentBlocks: [{
|
|
380
|
-
index: encryptedBlock.index,
|
|
381
|
-
encryptedSize: encryptedBlock.encryptedSize,
|
|
382
|
-
hash: encryptedBlock.hash,
|
|
383
|
-
armoredSignature: encryptedBlock.armoredSignature,
|
|
384
|
-
verificationToken: encryptedBlock.verificationToken,
|
|
385
|
-
}],
|
|
386
|
-
});
|
|
387
|
-
uploadToken = uploadTokens.blockTokens[0];
|
|
388
|
-
continue;
|
|
389
|
-
}
|
|
390
|
-
// Upload can fail for various reasons, for example integrity
|
|
391
|
-
// can fail due to bitflips. We want to retry and solve the issue
|
|
392
|
-
// seamlessly for the user. We retry only once, because we don't
|
|
393
|
-
// want to get stuck in a loop.
|
|
394
|
-
if (attempt <= MAX_BLOCK_UPLOAD_RETRIES) {
|
|
395
|
-
logger.warn(`Upload failed #${attempt}, retrying: ${(0, errors_2.getErrorMessage)(error)}`);
|
|
396
|
-
continue;
|
|
397
|
-
}
|
|
398
|
-
logger.error(`Upload failed`, error);
|
|
399
|
-
await this.abortUpload(error);
|
|
400
|
-
throw error;
|
|
108
|
+
catch (error) {
|
|
109
|
+
this.onFinish();
|
|
110
|
+
if (revisionDraft) {
|
|
111
|
+
await this.manager.deleteDraftNode(revisionDraft.nodeUid);
|
|
401
112
|
}
|
|
113
|
+
void this.telemetry.uploadInitFailed(this.parentFolderUid, error, this.metadata.expectedSize);
|
|
114
|
+
throw error;
|
|
402
115
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
await (0, wait_1.waitForCondition)(() => this.encryptedBlocks.size < MAX_BUFFERED_BLOCKS);
|
|
408
|
-
}
|
|
116
|
+
return {
|
|
117
|
+
revisionDraft,
|
|
118
|
+
blockVerifier,
|
|
119
|
+
};
|
|
409
120
|
}
|
|
410
|
-
async
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
}
|
|
414
|
-
await (0, wait_1.waitForCondition)(() => this.encryptedBlocks.size > 0 || this.encryptionFinished);
|
|
121
|
+
async getAvailableName() {
|
|
122
|
+
const availableName = await this.manager.findAvailableName(this.parentFolderUid, this.name);
|
|
123
|
+
return availableName;
|
|
415
124
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
125
|
+
}
|
|
126
|
+
exports.FileUploader = FileUploader;
|
|
127
|
+
/**
|
|
128
|
+
* Uploader implementation for a new file revision.
|
|
129
|
+
*/
|
|
130
|
+
class FileRevisionUploader extends Uploader {
|
|
131
|
+
nodeUid;
|
|
132
|
+
constructor(telemetry, apiService, cryptoService, manager, nodeUid, metadata, onFinish, signal) {
|
|
133
|
+
super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
|
|
134
|
+
this.nodeUid = nodeUid;
|
|
135
|
+
this.nodeUid = nodeUid;
|
|
136
|
+
}
|
|
137
|
+
async createRevisionDraft() {
|
|
138
|
+
let revisionDraft, blockVerifier;
|
|
139
|
+
try {
|
|
140
|
+
revisionDraft = await this.manager.createDraftRevision(this.nodeUid, this.metadata);
|
|
141
|
+
blockVerifier = new blockVerifier_1.BlockVerifier(this.apiService, this.cryptoService, revisionDraft.nodeKeys.key, revisionDraft.nodeRevisionUid);
|
|
142
|
+
await blockVerifier.loadVerificationData();
|
|
429
143
|
}
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
get isEncryptionFullyFinished() {
|
|
438
|
-
return this.encryptionFinished && this.encryptedBlocks.size === 0 && this.encryptedThumbnails.size === 0;
|
|
439
|
-
}
|
|
440
|
-
get uploadedBlockCount() {
|
|
441
|
-
return this.uploadedBlocks.length + this.uploadedThumbnails.length;
|
|
442
|
-
}
|
|
443
|
-
get uploadedOriginalFileSize() {
|
|
444
|
-
return this.uploadedBlocks.reduce((sum, { originalSize }) => sum + originalSize, 0);
|
|
445
|
-
}
|
|
446
|
-
get manifest() {
|
|
447
|
-
this.uploadedThumbnails.sort((a, b) => a.type - b.type);
|
|
448
|
-
this.uploadedBlocks.sort((a, b) => a.index - b.index);
|
|
449
|
-
const hashes = [
|
|
450
|
-
...this.uploadedThumbnails.map(({ hash }) => hash),
|
|
451
|
-
...this.uploadedBlocks.map(({ hash }) => hash),
|
|
452
|
-
];
|
|
453
|
-
return (0, utils_1.mergeUint8Arrays)(hashes);
|
|
454
|
-
}
|
|
455
|
-
async abortUpload(error) {
|
|
456
|
-
if (this.abortController.signal.aborted || this.signal?.aborted) {
|
|
457
|
-
return;
|
|
144
|
+
catch (error) {
|
|
145
|
+
this.onFinish();
|
|
146
|
+
if (revisionDraft) {
|
|
147
|
+
await this.manager.deleteDraftRevision(revisionDraft.nodeRevisionUid);
|
|
148
|
+
}
|
|
149
|
+
void this.telemetry.uploadInitFailed(this.nodeUid, error, this.metadata.expectedSize);
|
|
150
|
+
throw error;
|
|
458
151
|
}
|
|
459
|
-
|
|
152
|
+
return {
|
|
153
|
+
revisionDraft,
|
|
154
|
+
blockVerifier,
|
|
155
|
+
};
|
|
460
156
|
}
|
|
461
157
|
}
|
|
462
|
-
exports.
|
|
158
|
+
exports.FileRevisionUploader = FileRevisionUploader;
|
|
463
159
|
//# sourceMappingURL=fileUploader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileUploader.js","sourceRoot":"","sources":["../../../src/internal/upload/fileUploader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileUploader.js","sourceRoot":"","sources":["../../../src/internal/upload/fileUploader.ts"],"names":[],"mappings":";;;AAEA,mDAAgD;AAChD,6CAAgD;AAIhD,qDAAkD;AAGlD;;;;;;GAMG;AACH,MAAM,QAAQ;IAKI;IACA;IACA;IACA;IACA;IACA;IACA;IAVJ,UAAU,CAAmB;IAC7B,eAAe,CAAkB;IAE3C,YACc,SAA0B,EAC1B,UAA4B,EAC5B,aAAkC,EAClC,OAAsB,EACtB,QAAwB,EACxB,QAAoB,EACpB,MAAoB;QANpB,cAAS,GAAT,SAAS,CAAiB;QAC1B,eAAU,GAAV,UAAU,CAAkB;QAC5B,kBAAa,GAAb,aAAa,CAAqB;QAClC,YAAO,GAAP,OAAO,CAAe;QACtB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,aAAQ,GAAR,QAAQ,CAAY;QACpB,WAAM,GAAN,MAAM,CAAc;QAE9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAgB,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAgB,EAAE,UAAuB,EAAE,UAA4C;QACnG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAsB,EAAE,UAAuB,EAAE,UAA4C;QAC3G,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,MAAsB,EAAE,UAAuB,EAAE,UAA4C;QACrH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAES,KAAK,CAAC,kBAAkB;QAC9B,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE1E,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;YACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC,CAAA;QAED,OAAO,IAAI,+BAAc,CACrB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,OAAO,EACZ,aAAa,EACb,aAAa,EACb,IAAI,CAAC,QAAQ,EACb,QAAQ,EACR,IAAI,CAAC,MAAM,CACd,CAAC;IACN,CAAC;IAES,KAAK,CAAC,mBAAmB;QAC/B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;CACJ;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IAM1B;IACA;IANZ,YACI,SAA0B,EAC1B,UAA4B,EAC5B,aAAkC,EAClC,OAAsB,EACd,eAAuB,EACvB,IAAY,EACpB,QAAwB,EACxB,QAAoB,EACpB,MAAoB;QAEpB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QANzE,oBAAe,GAAf,eAAe,CAAQ;QACvB,SAAI,GAAJ,IAAI,CAAQ;QAOpB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,mBAAmB;QAC/B,IAAI,aAAa,EAAE,aAAa,CAAC;QACjC,IAAI,CAAC;YACD,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEnG,aAAa,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;YAClI,MAAM,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;YACD,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC9F,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,OAAO;YACH,aAAa;YACb,aAAa;SAChB,CAAA;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5F,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AA5CD,oCA4CC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,QAAQ;IAMlC;IALZ,YACI,SAA0B,EAC1B,UAA4B,EAC5B,aAAkC,EAClC,OAAsB,EACd,OAAe,EACvB,QAAwB,EACxB,QAAoB,EACpB,MAAoB;QAEpB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QALzE,YAAO,GAAP,OAAO,CAAQ;QAOvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAES,KAAK,CAAC,mBAAmB;QAC/B,IAAI,aAAa,EAAE,aAAa,CAAC;QACjC,IAAI,CAAC;YACD,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpF,aAAa,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;YAClI,MAAM,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YAC1E,CAAC;YACD,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACtF,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,OAAO;YACH,aAAa;YACb,aAAa;SAChB,CAAA;IACL,CAAC;CACJ;AArCD,oDAqCC"}
|