@protontech/drive-sdk 0.12.1 → 0.13.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 (154) hide show
  1. package/dist/crypto/driveCrypto.d.ts +1 -0
  2. package/dist/crypto/driveCrypto.js +1 -0
  3. package/dist/crypto/driveCrypto.js.map +1 -1
  4. package/dist/interface/events.d.ts +1 -1
  5. package/dist/interface/featureFlags.d.ts +2 -1
  6. package/dist/interface/featureFlags.js +1 -0
  7. package/dist/interface/featureFlags.js.map +1 -1
  8. package/dist/interface/httpClient.d.ts +1 -0
  9. package/dist/interface/nodes.d.ts +7 -0
  10. package/dist/interface/nodes.js.map +1 -1
  11. package/dist/interface/telemetry.d.ts +4 -0
  12. package/dist/interface/telemetry.js.map +1 -1
  13. package/dist/internal/apiService/apiService.d.ts +1 -0
  14. package/dist/internal/apiService/apiService.js +16 -7
  15. package/dist/internal/apiService/apiService.js.map +1 -1
  16. package/dist/internal/apiService/apiService.test.js +24 -0
  17. package/dist/internal/apiService/apiService.test.js.map +1 -1
  18. package/dist/internal/apiService/driveTypes.d.ts +162 -101
  19. package/dist/internal/download/telemetry.js +4 -0
  20. package/dist/internal/download/telemetry.js.map +1 -1
  21. package/dist/internal/download/telemetry.test.js +5 -0
  22. package/dist/internal/download/telemetry.test.js.map +1 -1
  23. package/dist/internal/events/index.js +2 -2
  24. package/dist/internal/events/index.js.map +1 -1
  25. package/dist/internal/events/interface.d.ts +1 -1
  26. package/dist/internal/nodes/apiService.d.ts +4 -0
  27. package/dist/internal/nodes/apiService.js +4 -0
  28. package/dist/internal/nodes/apiService.js.map +1 -1
  29. package/dist/internal/nodes/apiService.test.js +8 -0
  30. package/dist/internal/nodes/apiService.test.js.map +1 -1
  31. package/dist/internal/nodes/cryptoService.js +3 -0
  32. package/dist/internal/nodes/cryptoService.js.map +1 -1
  33. package/dist/internal/nodes/extendedAttributes.d.ts +5 -5
  34. package/dist/internal/nodes/extendedAttributes.js +5 -14
  35. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  36. package/dist/internal/nodes/extendedAttributes.test.js +16 -22
  37. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  38. package/dist/internal/nodes/interface.d.ts +5 -0
  39. package/dist/internal/nodes/nodesManagement.d.ts +3 -3
  40. package/dist/internal/nodes/nodesManagement.js +7 -5
  41. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  42. package/dist/internal/photos/albumsManager.js +1 -0
  43. package/dist/internal/photos/albumsManager.js.map +1 -1
  44. package/dist/internal/photos/nodes.d.ts +1 -1
  45. package/dist/internal/photos/nodes.js +2 -2
  46. package/dist/internal/photos/nodes.js.map +1 -1
  47. package/dist/internal/photos/upload.d.ts +5 -5
  48. package/dist/internal/photos/upload.js +8 -2
  49. package/dist/internal/photos/upload.js.map +1 -1
  50. package/dist/internal/sharing/apiService.js +1 -1
  51. package/dist/internal/sharing/apiService.js.map +1 -1
  52. package/dist/internal/sharingPublic/nodes.d.ts +1 -0
  53. package/dist/internal/upload/apiService.d.ts +45 -1
  54. package/dist/internal/upload/apiService.js +69 -1
  55. package/dist/internal/upload/apiService.js.map +1 -1
  56. package/dist/internal/upload/blockVerifier.d.ts +4 -1
  57. package/dist/internal/upload/blockVerifier.js +5 -0
  58. package/dist/internal/upload/blockVerifier.js.map +1 -1
  59. package/dist/internal/upload/cryptoService.d.ts +2 -2
  60. package/dist/internal/upload/cryptoService.js +1 -3
  61. package/dist/internal/upload/cryptoService.js.map +1 -1
  62. package/dist/internal/upload/fileUploader.d.ts +4 -3
  63. package/dist/internal/upload/fileUploader.js +17 -7
  64. package/dist/internal/upload/fileUploader.js.map +1 -1
  65. package/dist/internal/upload/index.d.ts +3 -3
  66. package/dist/internal/upload/index.js +17 -1
  67. package/dist/internal/upload/index.js.map +1 -1
  68. package/dist/internal/upload/index.test.d.ts +1 -0
  69. package/dist/internal/upload/index.test.js +71 -0
  70. package/dist/internal/upload/index.test.js.map +1 -0
  71. package/dist/internal/upload/interface.d.ts +2 -0
  72. package/dist/internal/upload/manager.d.ts +41 -2
  73. package/dist/internal/upload/manager.js +126 -44
  74. package/dist/internal/upload/manager.js.map +1 -1
  75. package/dist/internal/upload/manager.test.js +268 -1
  76. package/dist/internal/upload/manager.test.js.map +1 -1
  77. package/dist/internal/upload/smallFileUploader.d.ts +83 -0
  78. package/dist/internal/upload/smallFileUploader.js +197 -0
  79. package/dist/internal/upload/smallFileUploader.js.map +1 -0
  80. package/dist/internal/upload/smallFileUploader.test.d.ts +1 -0
  81. package/dist/internal/upload/smallFileUploader.test.js +358 -0
  82. package/dist/internal/upload/smallFileUploader.test.js.map +1 -0
  83. package/dist/internal/upload/streamReader.d.ts +4 -0
  84. package/dist/internal/upload/streamReader.js +37 -0
  85. package/dist/internal/upload/streamReader.js.map +1 -0
  86. package/dist/internal/upload/streamReader.test.d.ts +1 -0
  87. package/dist/internal/upload/streamReader.test.js +90 -0
  88. package/dist/internal/upload/streamReader.test.js.map +1 -0
  89. package/dist/internal/upload/streamUploader.d.ts +6 -0
  90. package/dist/internal/upload/streamUploader.js +3 -3
  91. package/dist/internal/upload/streamUploader.js.map +1 -1
  92. package/dist/internal/upload/telemetry.d.ts +3 -2
  93. package/dist/internal/upload/telemetry.js +5 -0
  94. package/dist/internal/upload/telemetry.js.map +1 -1
  95. package/dist/internal/upload/telemetry.test.js +6 -0
  96. package/dist/internal/upload/telemetry.test.js.map +1 -1
  97. package/dist/protonDrivePhotosClient.d.ts +1 -1
  98. package/dist/protonDrivePublicLinkClient.js +3 -1
  99. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  100. package/dist/telemetry.d.ts +1 -0
  101. package/dist/telemetry.js +21 -0
  102. package/dist/telemetry.js.map +1 -1
  103. package/dist/telemetry.test.d.ts +1 -0
  104. package/dist/telemetry.test.js +37 -0
  105. package/dist/telemetry.test.js.map +1 -0
  106. package/dist/transformers.d.ts +1 -1
  107. package/dist/transformers.js +1 -0
  108. package/dist/transformers.js.map +1 -1
  109. package/package.json +1 -1
  110. package/src/crypto/driveCrypto.ts +2 -0
  111. package/src/interface/events.ts +1 -1
  112. package/src/interface/featureFlags.ts +1 -0
  113. package/src/interface/httpClient.ts +1 -0
  114. package/src/interface/nodes.ts +7 -0
  115. package/src/interface/telemetry.ts +4 -0
  116. package/src/internal/apiService/apiService.test.ts +30 -0
  117. package/src/internal/apiService/apiService.ts +23 -7
  118. package/src/internal/apiService/driveTypes.ts +162 -101
  119. package/src/internal/download/telemetry.test.ts +5 -0
  120. package/src/internal/download/telemetry.ts +5 -1
  121. package/src/internal/events/index.ts +2 -2
  122. package/src/internal/events/interface.ts +1 -1
  123. package/src/internal/nodes/apiService.test.ts +9 -0
  124. package/src/internal/nodes/apiService.ts +4 -0
  125. package/src/internal/nodes/cryptoService.ts +11 -1
  126. package/src/internal/nodes/extendedAttributes.test.ts +25 -25
  127. package/src/internal/nodes/extendedAttributes.ts +10 -19
  128. package/src/internal/nodes/interface.ts +5 -0
  129. package/src/internal/nodes/nodesManagement.ts +8 -6
  130. package/src/internal/photos/albumsManager.ts +1 -0
  131. package/src/internal/photos/nodes.ts +2 -2
  132. package/src/internal/photos/upload.ts +23 -10
  133. package/src/internal/sharing/apiService.ts +5 -5
  134. package/src/internal/upload/apiService.ts +167 -2
  135. package/src/internal/upload/blockVerifier.ts +12 -0
  136. package/src/internal/upload/cryptoService.ts +10 -10
  137. package/src/internal/upload/fileUploader.ts +20 -7
  138. package/src/internal/upload/index.test.ts +99 -0
  139. package/src/internal/upload/index.ts +45 -4
  140. package/src/internal/upload/interface.ts +2 -0
  141. package/src/internal/upload/manager.test.ts +368 -2
  142. package/src/internal/upload/manager.ts +229 -78
  143. package/src/internal/upload/smallFileUploader.test.ts +491 -0
  144. package/src/internal/upload/smallFileUploader.ts +353 -0
  145. package/src/internal/upload/streamReader.test.ts +109 -0
  146. package/src/internal/upload/streamReader.ts +38 -0
  147. package/src/internal/upload/streamUploader.ts +1 -1
  148. package/src/internal/upload/telemetry.test.ts +6 -0
  149. package/src/internal/upload/telemetry.ts +8 -2
  150. package/src/protonDrivePhotosClient.ts +1 -1
  151. package/src/protonDrivePublicLinkClient.ts +2 -0
  152. package/src/telemetry.test.ts +40 -0
  153. package/src/telemetry.ts +22 -0
  154. package/src/transformers.ts +2 -0
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const errors_1 = require("../../errors");
4
+ const interface_1 = require("../../interface");
4
5
  const telemetry_1 = require("../../tests/telemetry");
5
6
  const manager_1 = require("./manager");
6
7
  describe('UploadManager', () => {
@@ -20,6 +21,14 @@ describe('UploadManager', () => {
20
21
  }),
21
22
  deleteDraft: jest.fn(),
22
23
  commitDraftRevision: jest.fn(),
24
+ uploadSmallFile: jest.fn().mockResolvedValue({
25
+ nodeUid: 'uploaded:nodeUid',
26
+ nodeRevisionUid: 'uploaded:nodeRevisionUid',
27
+ }),
28
+ uploadSmallRevision: jest.fn().mockResolvedValue({
29
+ nodeUid: 'revised:nodeUid',
30
+ nodeRevisionUid: 'revised:nodeRevisionUid',
31
+ }),
23
32
  };
24
33
  // @ts-expect-error No need to implement all methods for mocking
25
34
  cryptoService = {
@@ -52,6 +61,12 @@ describe('UploadManager', () => {
52
61
  signatureEmail: 'signatureEmail',
53
62
  armoredExtendedAttributes: 'newNode:armoredExtendedAttributes',
54
63
  }),
64
+ getSigningKeysForExistingNode: jest.fn().mockResolvedValue({
65
+ email: 'signatureEmail',
66
+ addressId: 'addressId',
67
+ nameAndPassphraseSigningKey: {},
68
+ contentSigningKey: {},
69
+ }),
55
70
  };
56
71
  nodesService = {
57
72
  getNode: jest.fn(async (nodeUid) => ({
@@ -107,7 +122,7 @@ describe('UploadManager', () => {
107
122
  armoredEncryptedName: 'newNode:encryptedName',
108
123
  hash: 'newNode:hash',
109
124
  mediaType: 'myMimeType',
110
- intendedUploadSize: 123456,
125
+ intendedUploadSize: 100_000,
111
126
  armoredNodeKey: 'newNode:armoredKey',
112
127
  armoredNodePassphrase: 'newNode:armoredPassphrase',
113
128
  armoredNodePassphraseSignature: 'newNode:armoredPassphraseSignature',
@@ -240,6 +255,258 @@ describe('UploadManager', () => {
240
255
  expect(apiService.deleteDraft).toHaveBeenCalledTimes(1);
241
256
  });
242
257
  });
258
+ describe('generateNewFileCrypto', () => {
259
+ it('should throw when parent is not a folder (no hashKey)', async () => {
260
+ nodesService.getNodeKeys = jest.fn().mockResolvedValue({ hashKey: undefined });
261
+ const result = manager.generateNewFileCrypto('parentUid', 'fileName');
262
+ await expect(result).rejects.toThrow('Creating files in non-folders is not allowed');
263
+ expect(nodesService.getNodeKeys).toHaveBeenCalledWith('parentUid');
264
+ expect(cryptoService.generateFileCrypto).not.toHaveBeenCalled();
265
+ });
266
+ it('should return generated crypto with parentHashKey when parent is folder', async () => {
267
+ const result = await manager.generateNewFileCrypto('parentUid', 'fileName');
268
+ expect(nodesService.getNodeKeys).toHaveBeenCalledWith('parentUid');
269
+ expect(cryptoService.generateFileCrypto).toHaveBeenCalledWith('parentUid', { key: 'parentNode:nodekey', hashKey: 'parentNode:hashKey' }, 'fileName');
270
+ expect(result).toMatchObject({
271
+ parentHashKey: 'parentNode:hashKey',
272
+ encryptedNode: { encryptedName: 'newNode:encryptedName', hash: 'newNode:hash' },
273
+ nodeKeys: expect.anything(),
274
+ contentKey: expect.anything(),
275
+ signingKeys: { email: 'signatureEmail' },
276
+ });
277
+ });
278
+ });
279
+ describe('getExistingFileNodeCrypto', () => {
280
+ it('should throw when node has no active revision', async () => {
281
+ nodesService.getNode = jest.fn().mockResolvedValue({
282
+ uid: 'fileNodeUid',
283
+ parentUid: 'parentUid',
284
+ activeRevision: { ok: false, error: new Error('No revision') },
285
+ });
286
+ const result = manager.getExistingFileNodeCrypto('fileNodeUid');
287
+ await expect(result).rejects.toThrow('Creating revisions in non-files is not allowed');
288
+ });
289
+ it('should throw when nodeKeys has no contentKeyPacketSessionKey', async () => {
290
+ nodesService.getNode = jest.fn().mockResolvedValue({
291
+ uid: 'fileNodeUid',
292
+ parentUid: 'parentUid',
293
+ activeRevision: { ok: true, value: { uid: 'revisionUid' } },
294
+ });
295
+ nodesService.getNodeKeys = jest.fn().mockResolvedValue({
296
+ key: 'nodeKey',
297
+ contentKeyPacket: new Uint8Array([1, 2, 3]),
298
+ hashKey: 'hashKey',
299
+ });
300
+ const result = manager.getExistingFileNodeCrypto('fileNodeUid');
301
+ await expect(result).rejects.toThrow('Creating revisions in non-files is not allowed');
302
+ });
303
+ it('should throw when nodeKeys has no contentKeyPacket', async () => {
304
+ nodesService.getNode = jest.fn().mockResolvedValue({
305
+ uid: 'fileNodeUid',
306
+ parentUid: 'parentUid',
307
+ activeRevision: { ok: true, value: { uid: 'revisionUid' } },
308
+ });
309
+ nodesService.getNodeKeys = jest.fn().mockResolvedValue({
310
+ key: 'nodeKey',
311
+ contentKeyPacketSessionKey: 'sessionKey',
312
+ hashKey: 'hashKey',
313
+ });
314
+ const result = manager.getExistingFileNodeCrypto('fileNodeUid');
315
+ await expect(result).rejects.toThrow('Content key packet is required for small revision upload');
316
+ });
317
+ it('should return key, contentKeyPacket, contentKeyPacketSessionKey and signingKeys', async () => {
318
+ const contentKeyPacket = new Uint8Array([1, 2, 3]);
319
+ nodesService.getNode = jest.fn().mockResolvedValue({
320
+ uid: 'fileNodeUid',
321
+ parentUid: 'parentUid',
322
+ activeRevision: { ok: true, value: { uid: 'revisionUid' } },
323
+ });
324
+ nodesService.getNodeKeys = jest.fn().mockResolvedValue({
325
+ key: 'nodeKey',
326
+ contentKeyPacket,
327
+ contentKeyPacketSessionKey: 'sessionKey',
328
+ hashKey: 'hashKey',
329
+ });
330
+ const result = await manager.getExistingFileNodeCrypto('fileNodeUid');
331
+ expect(cryptoService.getSigningKeysForExistingNode).toHaveBeenCalledWith({
332
+ nodeUid: 'fileNodeUid',
333
+ parentNodeUid: 'parentUid',
334
+ });
335
+ expect(result).toEqual({
336
+ key: 'nodeKey',
337
+ contentKeyPacket,
338
+ contentKeyPacketSessionKey: 'sessionKey',
339
+ signingKeys: {
340
+ email: 'signatureEmail',
341
+ addressId: 'addressId',
342
+ nameAndPassphraseSigningKey: {},
343
+ contentSigningKey: {},
344
+ },
345
+ });
346
+ });
347
+ });
348
+ describe('uploadFile', () => {
349
+ const nodeCrypto = {
350
+ encryptedNode: { encryptedName: 'encName', hash: 'hash' },
351
+ nodeKeys: {
352
+ encrypted: {
353
+ armoredKey: 'armoredKey',
354
+ armoredPassphrase: 'armoredPassphrase',
355
+ armoredPassphraseSignature: 'armoredPassphraseSignature',
356
+ },
357
+ },
358
+ contentKey: {
359
+ encrypted: {
360
+ base64ContentKeyPacket: 'base64ContentKeyPacket',
361
+ armoredContentKeyPacketSignature: 'armoredContentKeyPacketSignature',
362
+ },
363
+ },
364
+ signingKeys: { email: 'signatureEmail' },
365
+ };
366
+ const metadata = { mediaType: 'application/octet-stream', expectedSize: 100 };
367
+ const commitPayload = {
368
+ armoredManifestSignature: 'manifestSignature',
369
+ armoredExtendedAttributes: 'extAttr',
370
+ };
371
+ const encryptedBlock = {
372
+ encryptedData: new Uint8Array([1, 2, 3]),
373
+ armoredSignature: 'blockSig',
374
+ verificationToken: new Uint8Array([4, 5, 6]),
375
+ };
376
+ const encryptedThumbnails = [{ type: interface_1.ThumbnailType.Type1, encryptedData: new Uint8Array([7, 8, 9]) }];
377
+ it('should call uploadSmallFile and notifyChildCreated on success', async () => {
378
+ const result = await manager.uploadFile('parentUid', nodeCrypto, metadata, commitPayload, encryptedBlock, encryptedThumbnails);
379
+ expect(result).toEqual({
380
+ nodeUid: 'uploaded:nodeUid',
381
+ nodeRevisionUid: 'uploaded:nodeRevisionUid',
382
+ });
383
+ expect(apiService.uploadSmallFile).toHaveBeenCalledWith('parentUid', {
384
+ armoredEncryptedName: 'encName',
385
+ hash: 'hash',
386
+ mediaType: 'application/octet-stream',
387
+ armoredNodeKey: 'armoredKey',
388
+ armoredNodePassphrase: 'armoredPassphrase',
389
+ armoredNodePassphraseSignature: 'armoredPassphraseSignature',
390
+ base64ContentKeyPacket: 'base64ContentKeyPacket',
391
+ armoredContentKeyPacketSignature: 'armoredContentKeyPacketSignature',
392
+ armoredExtendedAttributes: 'extAttr',
393
+ signatureEmail: 'signatureEmail',
394
+ }, {
395
+ armoredManifestSignature: 'manifestSignature',
396
+ block: encryptedBlock,
397
+ thumbnails: encryptedThumbnails,
398
+ }, undefined);
399
+ expect(nodesService.notifyChildCreated).toHaveBeenCalledWith('parentUid');
400
+ });
401
+ it('should delete existing draft and retry on ALREADY_EXISTS when own draft', async () => {
402
+ let firstCall = true;
403
+ apiService.uploadSmallFile = jest.fn().mockImplementation(() => {
404
+ if (firstCall) {
405
+ firstCall = false;
406
+ throw new errors_1.ValidationError('Already exists', 2500 /* ErrorCode.ALREADY_EXISTS */, {
407
+ ConflictLinkID: 'existingLinkId',
408
+ ConflictDraftRevisionID: 'existingDraftRevisionId',
409
+ ConflictDraftClientUID: clientUid,
410
+ });
411
+ }
412
+ return {
413
+ nodeUid: 'uploaded:nodeUid',
414
+ nodeRevisionUid: 'uploaded:nodeRevisionUid',
415
+ };
416
+ });
417
+ const result = await manager.uploadFile('volumeId~parentUid', nodeCrypto, { ...metadata, overrideExistingDraftByOtherClient: false }, commitPayload, encryptedBlock, encryptedThumbnails);
418
+ expect(result).toEqual({
419
+ nodeUid: 'uploaded:nodeUid',
420
+ nodeRevisionUid: 'uploaded:nodeRevisionUid',
421
+ });
422
+ expect(apiService.deleteDraft).toHaveBeenCalledWith('volumeId~existingLinkId');
423
+ expect(apiService.uploadSmallFile).toHaveBeenCalledTimes(2);
424
+ });
425
+ it('should call uploadSmallFile with block undefined for zero-byte file', async () => {
426
+ const result = await manager.uploadFile('parentUid', nodeCrypto, { ...metadata, expectedSize: 0 }, commitPayload, undefined, []);
427
+ expect(result).toEqual({
428
+ nodeUid: 'uploaded:nodeUid',
429
+ nodeRevisionUid: 'uploaded:nodeRevisionUid',
430
+ });
431
+ expect(apiService.uploadSmallFile).toHaveBeenCalledWith('parentUid', expect.objectContaining({
432
+ armoredEncryptedName: 'encName',
433
+ hash: 'hash',
434
+ mediaType: 'application/octet-stream',
435
+ armoredExtendedAttributes: 'extAttr',
436
+ signatureEmail: 'signatureEmail',
437
+ }), {
438
+ armoredManifestSignature: 'manifestSignature',
439
+ block: undefined,
440
+ thumbnails: [],
441
+ }, undefined);
442
+ expect(nodesService.notifyChildCreated).toHaveBeenCalledWith('parentUid');
443
+ });
444
+ });
445
+ describe('uploadSmallRevision', () => {
446
+ const nodeCrypto = { signingKeys: { email: 'signatureEmail' } };
447
+ const commitPayload = {
448
+ armoredManifestSignature: 'manifestSig',
449
+ armoredExtendedAttributes: 'extAttr',
450
+ };
451
+ const encryptedBlock = {
452
+ encryptedData: new Uint8Array([1, 2, 3]),
453
+ armoredSignature: 'blockSig',
454
+ verificationToken: new Uint8Array([4, 5, 6]),
455
+ };
456
+ const encryptedThumbnails = [{ type: interface_1.ThumbnailType.Type1, encryptedData: new Uint8Array([7, 8, 9]) }];
457
+ it('should throw when file has no revision', async () => {
458
+ nodesService.getNode = jest.fn().mockResolvedValue({
459
+ uid: 'fileNodeUid',
460
+ parentUid: 'parentUid',
461
+ activeRevision: { ok: false, error: new Error('No revision') },
462
+ });
463
+ const result = manager.uploadSmallRevision('fileNodeUid', nodeCrypto, commitPayload, encryptedBlock, encryptedThumbnails);
464
+ await expect(result).rejects.toThrow('File has no revision');
465
+ expect(apiService.uploadSmallRevision).not.toHaveBeenCalled();
466
+ });
467
+ it('should call uploadSmallRevision and notifyNodeChanged on success', async () => {
468
+ nodesService.getNode = jest.fn().mockResolvedValue({
469
+ uid: 'fileNodeUid',
470
+ parentUid: 'parentUid',
471
+ activeRevision: { ok: true, value: { uid: 'currentRevisionUid' } },
472
+ });
473
+ const result = await manager.uploadSmallRevision('fileNodeUid', nodeCrypto, commitPayload, encryptedBlock, encryptedThumbnails);
474
+ expect(result).toEqual({
475
+ nodeUid: 'revised:nodeUid',
476
+ nodeRevisionUid: 'revised:nodeRevisionUid',
477
+ });
478
+ expect(apiService.uploadSmallRevision).toHaveBeenCalledWith('fileNodeUid', 'currentRevisionUid', {
479
+ signatureEmail: 'signatureEmail',
480
+ armoredExtendedAttributes: 'extAttr',
481
+ }, {
482
+ armoredManifestSignature: 'manifestSig',
483
+ block: encryptedBlock,
484
+ thumbnails: encryptedThumbnails,
485
+ }, undefined);
486
+ expect(nodesService.notifyNodeChanged).toHaveBeenCalledWith('fileNodeUid');
487
+ });
488
+ it('should call uploadSmallRevision with block undefined for zero-byte revision', async () => {
489
+ nodesService.getNode = jest.fn().mockResolvedValue({
490
+ uid: 'fileNodeUid',
491
+ parentUid: 'parentUid',
492
+ activeRevision: { ok: true, value: { uid: 'currentRevisionUid' } },
493
+ });
494
+ const result = await manager.uploadSmallRevision('fileNodeUid', nodeCrypto, commitPayload, undefined, []);
495
+ expect(result).toEqual({
496
+ nodeUid: 'revised:nodeUid',
497
+ nodeRevisionUid: 'revised:nodeRevisionUid',
498
+ });
499
+ expect(apiService.uploadSmallRevision).toHaveBeenCalledWith('fileNodeUid', 'currentRevisionUid', {
500
+ signatureEmail: 'signatureEmail',
501
+ armoredExtendedAttributes: 'extAttr',
502
+ }, {
503
+ armoredManifestSignature: 'manifestSig',
504
+ block: undefined,
505
+ thumbnails: [],
506
+ }, undefined);
507
+ expect(nodesService.notifyNodeChanged).toHaveBeenCalledWith('fileNodeUid');
508
+ });
509
+ });
243
510
  describe('commit draft', () => {
244
511
  const nodeRevisionDraft = {
245
512
  nodeUid: 'newNode:nodeUid',
@@ -1 +1 @@
1
- {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../src/internal/upload/manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../src/internal/upload/manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { PrivateKey, SessionKey } from '../../crypto';
2
+ import { Logger, Thumbnail, ThumbnailType, UploadMetadata } from '../../interface';
3
+ import { UploadAPIService } from './apiService';
4
+ import { BlockVerifier } from './blockVerifier';
5
+ import { UploadCryptoService } from './cryptoService';
6
+ import { Uploader } from './fileUploader';
7
+ import { NodeRevisionDraft, NodeCrypto } from './interface';
8
+ import { UploadManager } from './manager';
9
+ import { UploadTelemetry } from './telemetry';
10
+ export type NodeKeys = {
11
+ key: PrivateKey;
12
+ contentKeyPacket: Uint8Array<ArrayBuffer>;
13
+ contentKeyPacketSessionKey: SessionKey;
14
+ signingKeys: NodeCrypto['signingKeys'];
15
+ };
16
+ /**
17
+ * Base uploader for small file and small revision uploads.
18
+ * Shares the single-request flow: read content, get node crypto, encrypt, then call API.
19
+ */
20
+ declare abstract class SmallUploader extends Uploader {
21
+ protected logger: Logger;
22
+ constructor(telemetry: UploadTelemetry, apiService: UploadAPIService, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined);
23
+ protected createRevisionDraft(): Promise<{
24
+ revisionDraft: NodeRevisionDraft;
25
+ blockVerifier: BlockVerifier;
26
+ }>;
27
+ protected deleteRevisionDraft(revisionDraft: NodeRevisionDraft): Promise<void>;
28
+ protected startUpload(stream: ReadableStream, thumbnails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<{
29
+ nodeRevisionUid: string;
30
+ nodeUid: string;
31
+ }>;
32
+ protected abstract getTelemetryContextUid(): string;
33
+ protected abstract handleUpload(stream: ReadableStream, thumbnails: Thumbnail[]): Promise<{
34
+ nodeUid: string;
35
+ nodeRevisionUid: string;
36
+ }>;
37
+ protected buildPayloads(nodeKeys: NodeKeys, stream: ReadableStream, thumbnails: Thumbnail[]): Promise<{
38
+ commitPayload: {
39
+ armoredManifestSignature: string;
40
+ armoredExtendedAttributes: string;
41
+ };
42
+ encryptedBlock: {
43
+ encryptedData: Uint8Array<ArrayBuffer>;
44
+ armoredSignature: string;
45
+ verificationToken: Uint8Array<ArrayBuffer>;
46
+ } | undefined;
47
+ encryptedThumbnails: {
48
+ type: ThumbnailType;
49
+ encryptedData: Uint8Array<ArrayBuffer>;
50
+ }[];
51
+ }>;
52
+ private readStreamContent;
53
+ private encryptThumbnails;
54
+ private encryptContentBlock;
55
+ private encryptCommitPayload;
56
+ }
57
+ /**
58
+ * Uploader for small new files using the single-request small file endpoint.
59
+ */
60
+ export declare class SmallFileUploader extends SmallUploader {
61
+ private parentFolderUid;
62
+ private name;
63
+ constructor(telemetry: UploadTelemetry, apiService: UploadAPIService, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined, parentFolderUid: string, name: string);
64
+ protected getTelemetryContextUid(): string;
65
+ protected handleUpload(stream: ReadableStream, thumbnails: Thumbnail[]): Promise<{
66
+ nodeUid: string;
67
+ nodeRevisionUid: string;
68
+ }>;
69
+ }
70
+ /**
71
+ * Uploader for small new revisions using the single-request small revision endpoint.
72
+ * Reuses the existing file's keys.
73
+ */
74
+ export declare class SmallFileRevisionUploader extends SmallUploader {
75
+ private nodeUid;
76
+ constructor(telemetry: UploadTelemetry, apiService: UploadAPIService, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined, nodeUid: string);
77
+ protected getTelemetryContextUid(): string;
78
+ protected handleUpload(stream: ReadableStream, thumbnails: Thumbnail[]): Promise<{
79
+ nodeUid: string;
80
+ nodeRevisionUid: string;
81
+ }>;
82
+ }
83
+ export {};
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SmallFileRevisionUploader = exports.SmallFileUploader = void 0;
4
+ const errors_1 = require("../../errors");
5
+ const errors_2 = require("../errors");
6
+ const nodes_1 = require("../nodes");
7
+ const blockVerifier_1 = require("./blockVerifier");
8
+ const digests_1 = require("./digests");
9
+ const fileUploader_1 = require("./fileUploader");
10
+ const streamReader_1 = require("./streamReader");
11
+ const streamUploader_1 = require("./streamUploader");
12
+ /**
13
+ * Base uploader for small file and small revision uploads.
14
+ * Shares the single-request flow: read content, get node crypto, encrypt, then call API.
15
+ */
16
+ class SmallUploader extends fileUploader_1.Uploader {
17
+ logger;
18
+ constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal) {
19
+ super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
20
+ this.logger = telemetry.getLoggerForSmallUpload();
21
+ }
22
+ async createRevisionDraft() {
23
+ throw new Error('Small upload does not use revision draft');
24
+ }
25
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
26
+ async deleteRevisionDraft(revisionDraft) {
27
+ throw new Error('Small upload does not use revision draft');
28
+ }
29
+ async startUpload(stream, thumbnails, onProgress) {
30
+ try {
31
+ const result = await this.handleUpload(stream, thumbnails);
32
+ onProgress?.(this.metadata.expectedSize);
33
+ void this.telemetry.uploadFinished(result.nodeRevisionUid, this.metadata.expectedSize);
34
+ return result;
35
+ }
36
+ catch (error) {
37
+ void this.telemetry.uploadInitFailed(this.getTelemetryContextUid(), error, this.metadata.expectedSize);
38
+ throw error;
39
+ }
40
+ finally {
41
+ this.onFinish();
42
+ }
43
+ }
44
+ async buildPayloads(nodeKeys, stream, thumbnails) {
45
+ const content = await this.readStreamContent(stream);
46
+ const [encryptedThumbnails, encryptedBlock] = await Promise.all([
47
+ this.encryptThumbnails(nodeKeys, thumbnails),
48
+ this.encryptContentBlock(nodeKeys, content.data),
49
+ ]);
50
+ const commitPayload = await this.encryptCommitPayload(nodeKeys, content.sha1, encryptedBlock);
51
+ return {
52
+ commitPayload,
53
+ encryptedBlock,
54
+ encryptedThumbnails,
55
+ };
56
+ }
57
+ async readStreamContent(stream) {
58
+ const content = await (0, streamReader_1.readStreamToUint8Array)(stream, this.abortController.signal);
59
+ if (content.length !== this.metadata.expectedSize) {
60
+ throw new errors_1.IntegrityError(new Error('Stream size does not match expected size').message, {
61
+ actual: content.length,
62
+ expected: this.metadata.expectedSize,
63
+ });
64
+ }
65
+ const digests = new digests_1.UploadDigests();
66
+ digests.update(content);
67
+ const contentSha1 = digests.digests().sha1;
68
+ if (this.metadata.expectedSha1 && contentSha1 !== this.metadata.expectedSha1) {
69
+ throw new errors_1.IntegrityError(new Error('File hash does not match expected hash').message, {
70
+ uploadedSha1: contentSha1,
71
+ expectedSha1: this.metadata.expectedSha1,
72
+ });
73
+ }
74
+ return {
75
+ data: content,
76
+ sha1: contentSha1,
77
+ };
78
+ }
79
+ async encryptThumbnails(nodeKeys, thumbnails) {
80
+ const result = [];
81
+ for (const thumbnail of thumbnails) {
82
+ this.logger.debug(`Encrypting thumbnail ${thumbnail.type}`);
83
+ const enc = await this.cryptoService.encryptThumbnail(nodeKeys, thumbnail);
84
+ result.push({ type: thumbnail.type, encryptedData: enc.encryptedData });
85
+ }
86
+ return result;
87
+ }
88
+ async encryptContentBlock(nodeKeys, content) {
89
+ this.logger.debug(`Encrypting block`);
90
+ if (content.length === 0) {
91
+ return;
92
+ }
93
+ let attempt = 0;
94
+ let integrityError = false;
95
+ let encrypted;
96
+ while (!encrypted) {
97
+ attempt++;
98
+ try {
99
+ encrypted = await this.cryptoService.encryptBlock((encryptedBlock) => (0, blockVerifier_1.verifyBlockWithContentKey)(this.cryptoService, nodeKeys.contentKeyPacket, nodeKeys.contentKeyPacketSessionKey, encryptedBlock), nodeKeys, content, 0);
100
+ if (integrityError) {
101
+ void this.telemetry.logBlockVerificationError(true);
102
+ }
103
+ }
104
+ catch (error) {
105
+ // Do not retry or report anything if the upload was aborted.
106
+ if (error instanceof errors_1.AbortError) {
107
+ throw error;
108
+ }
109
+ if (error instanceof errors_1.IntegrityError) {
110
+ integrityError = true;
111
+ }
112
+ if (attempt <= streamUploader_1.MAX_BLOCK_ENCRYPTION_RETRIES) {
113
+ this.logger.warn(`Block encryption failed #${attempt}, retrying: ${(0, errors_2.getErrorMessage)(error)}`);
114
+ continue;
115
+ }
116
+ this.logger.error(`Failed to encrypt block`, error);
117
+ if (integrityError) {
118
+ void this.telemetry.logBlockVerificationError(false);
119
+ }
120
+ throw error;
121
+ }
122
+ }
123
+ const blockHash = await encrypted.hashPromise;
124
+ return {
125
+ encryptedData: encrypted.encryptedData,
126
+ armoredSignature: encrypted.armoredSignature,
127
+ verificationToken: encrypted.verificationToken,
128
+ blockHash,
129
+ };
130
+ }
131
+ async encryptCommitPayload(nodeKeys, contentSha1, encryptedBlock) {
132
+ this.logger.debug(`Preparing commit payload`);
133
+ const manifest = encryptedBlock ? encryptedBlock.blockHash : new Uint8Array(0);
134
+ const extendedAttributes = (0, nodes_1.generateFileExtendedAttributes)({
135
+ modificationTime: this.metadata.modificationTime,
136
+ size: this.metadata.expectedSize,
137
+ blockSizes: this.metadata.expectedSize > 0 ? [this.metadata.expectedSize] : [],
138
+ digests: { sha1: contentSha1 },
139
+ }, this.metadata.additionalMetadata);
140
+ const commitCrypto = await this.cryptoService.commitFile(nodeKeys, manifest, extendedAttributes);
141
+ return {
142
+ armoredManifestSignature: commitCrypto.armoredManifestSignature,
143
+ armoredExtendedAttributes: commitCrypto.armoredExtendedAttributes,
144
+ };
145
+ }
146
+ }
147
+ /**
148
+ * Uploader for small new files using the single-request small file endpoint.
149
+ */
150
+ class SmallFileUploader extends SmallUploader {
151
+ parentFolderUid;
152
+ name;
153
+ constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal, parentFolderUid, name) {
154
+ super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
155
+ this.parentFolderUid = parentFolderUid;
156
+ this.name = name;
157
+ this.parentFolderUid = parentFolderUid;
158
+ this.name = name;
159
+ }
160
+ getTelemetryContextUid() {
161
+ return this.parentFolderUid;
162
+ }
163
+ async handleUpload(stream, thumbnails) {
164
+ const nodeCrypto = await this.manager.generateNewFileCrypto(this.parentFolderUid, this.name);
165
+ const nodeKeys = {
166
+ key: nodeCrypto.nodeKeys.decrypted.key,
167
+ contentKeyPacket: nodeCrypto.contentKey.encrypted.contentKeyPacket,
168
+ contentKeyPacketSessionKey: nodeCrypto.contentKey.decrypted.contentKeyPacketSessionKey,
169
+ signingKeys: nodeCrypto.signingKeys,
170
+ };
171
+ const payloads = await this.buildPayloads(nodeKeys, stream, thumbnails);
172
+ return this.manager.uploadFile(this.parentFolderUid, nodeCrypto, this.metadata, payloads.commitPayload, payloads.encryptedBlock, payloads.encryptedThumbnails);
173
+ }
174
+ }
175
+ exports.SmallFileUploader = SmallFileUploader;
176
+ /**
177
+ * Uploader for small new revisions using the single-request small revision endpoint.
178
+ * Reuses the existing file's keys.
179
+ */
180
+ class SmallFileRevisionUploader extends SmallUploader {
181
+ nodeUid;
182
+ constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal, nodeUid) {
183
+ super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
184
+ this.nodeUid = nodeUid;
185
+ this.nodeUid = nodeUid;
186
+ }
187
+ getTelemetryContextUid() {
188
+ return this.nodeUid;
189
+ }
190
+ async handleUpload(stream, thumbnails) {
191
+ const nodeKeys = await this.manager.getExistingFileNodeCrypto(this.nodeUid);
192
+ const payloads = await this.buildPayloads(nodeKeys, stream, thumbnails);
193
+ return this.manager.uploadSmallRevision(this.nodeUid, nodeKeys, payloads.commitPayload, payloads.encryptedBlock, payloads.encryptedThumbnails);
194
+ }
195
+ }
196
+ exports.SmallFileRevisionUploader = SmallFileRevisionUploader;
197
+ //# sourceMappingURL=smallFileUploader.js.map