@protontech/drive-sdk 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/internal/batchLoading.d.ts +2 -0
  2. package/dist/internal/batchLoading.js +18 -5
  3. package/dist/internal/batchLoading.js.map +1 -1
  4. package/dist/internal/batchLoading.test.js +92 -0
  5. package/dist/internal/batchLoading.test.js.map +1 -1
  6. package/dist/internal/nodes/nodesAccess.js +1 -1
  7. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  8. package/dist/internal/nodes/nodesAccess.test.js +3 -2
  9. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  10. package/dist/internal/photos/index.js +3 -1
  11. package/dist/internal/photos/index.js.map +1 -1
  12. package/dist/internal/photos/upload.d.ts +1 -1
  13. package/dist/internal/photos/upload.js +2 -2
  14. package/dist/internal/photos/upload.js.map +1 -1
  15. package/dist/internal/sharing/events.d.ts +4 -2
  16. package/dist/internal/sharing/events.js +40 -9
  17. package/dist/internal/sharing/events.js.map +1 -1
  18. package/dist/internal/sharing/events.test.js +30 -2
  19. package/dist/internal/sharing/events.test.js.map +1 -1
  20. package/dist/internal/sharing/index.js +1 -1
  21. package/dist/internal/sharing/index.js.map +1 -1
  22. package/dist/internal/sharingPublic/session/index.d.ts +1 -0
  23. package/dist/internal/sharingPublic/session/index.js +3 -1
  24. package/dist/internal/sharingPublic/session/index.js.map +1 -1
  25. package/dist/internal/sharingPublic/session/manager.d.ts +2 -0
  26. package/dist/internal/sharingPublic/session/manager.js +1 -0
  27. package/dist/internal/sharingPublic/session/manager.js.map +1 -1
  28. package/dist/internal/upload/fileUploader.d.ts +19 -3
  29. package/dist/internal/upload/fileUploader.js +31 -5
  30. package/dist/internal/upload/fileUploader.js.map +1 -1
  31. package/dist/internal/upload/fileUploader.test.js +1 -1
  32. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  33. package/dist/internal/upload/index.js +4 -11
  34. package/dist/internal/upload/index.js.map +1 -1
  35. package/dist/internal/upload/index.test.js +104 -45
  36. package/dist/internal/upload/index.test.js.map +1 -1
  37. package/dist/internal/upload/smallFileUploader.d.ts +14 -14
  38. package/dist/internal/upload/smallFileUploader.js +38 -20
  39. package/dist/internal/upload/smallFileUploader.js.map +1 -1
  40. package/dist/internal/upload/smallFileUploader.test.js +35 -36
  41. package/dist/internal/upload/smallFileUploader.test.js.map +1 -1
  42. package/dist/protonDriveClient.js +2 -1
  43. package/dist/protonDriveClient.js.map +1 -1
  44. package/dist/protonDrivePublicLinkClient.d.ts +15 -1
  45. package/dist/protonDrivePublicLinkClient.js +7 -1
  46. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  47. package/package.json +1 -1
  48. package/src/internal/batchLoading.test.ts +104 -0
  49. package/src/internal/batchLoading.ts +21 -5
  50. package/src/internal/nodes/nodesAccess.test.ts +4 -3
  51. package/src/internal/nodes/nodesAccess.ts +1 -1
  52. package/src/internal/photos/index.ts +2 -0
  53. package/src/internal/photos/upload.ts +13 -1
  54. package/src/internal/sharing/events.test.ts +35 -2
  55. package/src/internal/sharing/events.ts +47 -10
  56. package/src/internal/sharing/index.ts +1 -0
  57. package/src/internal/sharingPublic/session/index.ts +1 -0
  58. package/src/internal/sharingPublic/session/manager.ts +2 -0
  59. package/src/internal/upload/fileUploader.test.ts +1 -0
  60. package/src/internal/upload/fileUploader.ts +60 -2
  61. package/src/internal/upload/index.test.ts +121 -63
  62. package/src/internal/upload/index.ts +4 -30
  63. package/src/internal/upload/smallFileUploader.test.ts +33 -40
  64. package/src/internal/upload/smallFileUploader.ts +47 -36
  65. package/src/protonDriveClient.ts +2 -1
  66. package/src/protonDrivePublicLinkClient.ts +23 -2
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interface_1 = require("../../interface");
3
4
  const telemetry_1 = require("../../tests/telemetry");
4
5
  const fileUploader_1 = require("./fileUploader");
5
6
  const index_1 = require("./index");
6
- const smallFileUploader_1 = require("./smallFileUploader");
7
- const SMALL_FILE_SIZE_LIMIT = 128 * 1024; // 128 KiB, must match index.ts
8
- describe('initUploadModule - uploader selection', () => {
7
+ const RAW_SMALL_FILE_SIZE_LIMIT = (128 * 1024) / 1.1; // 128 KiB, must match index.ts
8
+ describe('initUploadModule', () => {
9
9
  const parentFolderUid = 'parent-folder-uid';
10
10
  const name = 'test-file.txt';
11
11
  const nodeUid = 'node-uid';
12
12
  let featureFlagProvider;
13
13
  let uploadModule;
14
+ let initSmallFileSpy;
15
+ let initSmallRevisionSpy;
16
+ let initStreamSpy;
17
+ let stream;
18
+ const thumbnail100k = { type: interface_1.ThumbnailType.Type1, thumbnail: new Uint8Array(100_000) };
14
19
  beforeEach(() => {
15
20
  const apiService = {};
16
21
  const driveCrypto = {};
@@ -20,52 +25,106 @@ describe('initUploadModule - uploader selection', () => {
20
25
  isEnabled: jest.fn().mockResolvedValue(true),
21
26
  };
22
27
  uploadModule = (0, index_1.initUploadModule)((0, telemetry_1.getMockTelemetry)(), apiService, driveCrypto, sharesService, nodesService, featureFlagProvider);
23
- });
24
- describe('getFileUploader', () => {
25
- it('returns SmallFileUploader when feature flag is enabled and file size is below limit', async () => {
26
- featureFlagProvider.isEnabled.mockResolvedValue(true);
27
- const metadata = { expectedSize: 1, mediaType: 'text/plain' };
28
- const uploader = await uploadModule.getFileUploader(parentFolderUid, name, metadata);
29
- expect(uploader).toBeInstanceOf(smallFileUploader_1.SmallFileUploader);
30
- });
31
- it('returns FileUploader when feature flag is enabled but file size exceeds limit', async () => {
32
- featureFlagProvider.isEnabled.mockResolvedValue(true);
33
- const metadata = {
34
- expectedSize: SMALL_FILE_SIZE_LIMIT,
35
- mediaType: 'text/plain',
36
- };
37
- const uploader = await uploadModule.getFileUploader(parentFolderUid, name, metadata);
38
- expect(uploader).toBeInstanceOf(fileUploader_1.FileUploader);
39
- });
40
- it('returns FileUploader when feature flag is disabled even for small file', async () => {
41
- featureFlagProvider.isEnabled.mockResolvedValue(false);
42
- const metadata = { expectedSize: 1, mediaType: 'text/plain' };
43
- const uploader = await uploadModule.getFileUploader(parentFolderUid, name, metadata);
44
- expect(uploader).toBeInstanceOf(fileUploader_1.FileUploader);
28
+ initSmallFileSpy = jest.spyOn(fileUploader_1.FileUploader.prototype, 'initSmallFileUploader').mockResolvedValue({
29
+ nodeRevisionUid: 'revision-uid',
30
+ nodeUid: 'node-uid',
45
31
  });
46
- });
47
- describe('getFileRevisionUploader', () => {
48
- it('returns SmallFileRevisionUploader when feature flag is enabled and file size is below limit', async () => {
49
- featureFlagProvider.isEnabled.mockResolvedValue(true);
50
- const metadata = { expectedSize: 1, mediaType: 'text/plain' };
51
- const uploader = await uploadModule.getFileRevisionUploader(nodeUid, metadata);
52
- expect(uploader).toBeInstanceOf(smallFileUploader_1.SmallFileRevisionUploader);
32
+ initSmallRevisionSpy = jest
33
+ .spyOn(fileUploader_1.FileRevisionUploader.prototype, 'initSmallFileUploader')
34
+ .mockResolvedValue({
35
+ nodeRevisionUid: 'revision-uid',
36
+ nodeUid: 'node-uid',
53
37
  });
54
- it('returns FileRevisionUploader when feature flag is enabled but file size exceeds limit', async () => {
55
- featureFlagProvider.isEnabled.mockResolvedValue(true);
56
- const metadata = {
57
- expectedSize: SMALL_FILE_SIZE_LIMIT + 1,
58
- mediaType: 'text/plain',
59
- };
60
- const uploader = await uploadModule.getFileRevisionUploader(nodeUid, metadata);
61
- expect(uploader).toBeInstanceOf(fileUploader_1.FileRevisionUploader);
38
+ initStreamSpy = jest.spyOn(fileUploader_1.Uploader.prototype, 'initStreamUploader').mockResolvedValue({
39
+ start: jest.fn().mockResolvedValue({
40
+ nodeRevisionUid: 'revision-uid',
41
+ nodeUid: 'node-uid',
42
+ }),
62
43
  });
63
- it('returns FileRevisionUploader when feature flag is disabled even for small file', async () => {
64
- featureFlagProvider.isEnabled.mockResolvedValue(false);
65
- const metadata = { expectedSize: 1, mediaType: 'text/plain' };
66
- const uploader = await uploadModule.getFileRevisionUploader(nodeUid, metadata);
67
- expect(uploader).toBeInstanceOf(fileUploader_1.FileRevisionUploader);
44
+ stream = new ReadableStream({
45
+ start(controller) {
46
+ controller.close();
47
+ },
68
48
  });
69
49
  });
50
+ afterEach(() => {
51
+ jest.restoreAllMocks();
52
+ });
53
+ async function drainUpload(controller) {
54
+ await controller.completion();
55
+ }
56
+ const suites = [
57
+ {
58
+ method: 'getFileUploader',
59
+ getUploader: (metadata) => uploadModule.getFileUploader(parentFolderUid, name, metadata),
60
+ expect: (option) => {
61
+ if (option === 'stream') {
62
+ expect(initStreamSpy).toHaveBeenCalled();
63
+ expect(initSmallFileSpy).not.toHaveBeenCalled();
64
+ expect(initSmallRevisionSpy).not.toHaveBeenCalled();
65
+ }
66
+ else {
67
+ expect(initSmallFileSpy).toHaveBeenCalled();
68
+ expect(initStreamSpy).not.toHaveBeenCalled();
69
+ expect(initSmallRevisionSpy).not.toHaveBeenCalled();
70
+ }
71
+ },
72
+ },
73
+ {
74
+ method: 'getFileRevisionUploader',
75
+ getUploader: (metadata) => uploadModule.getFileRevisionUploader(nodeUid, metadata),
76
+ expect: (option) => {
77
+ if (option === 'stream') {
78
+ expect(initStreamSpy).toHaveBeenCalled();
79
+ expect(initSmallFileSpy).not.toHaveBeenCalled();
80
+ expect(initSmallRevisionSpy).not.toHaveBeenCalled();
81
+ }
82
+ else {
83
+ expect(initSmallRevisionSpy).toHaveBeenCalled();
84
+ expect(initSmallFileSpy).not.toHaveBeenCalled();
85
+ expect(initStreamSpy).not.toHaveBeenCalled();
86
+ }
87
+ },
88
+ },
89
+ ];
90
+ for (const suite of suites) {
91
+ describe(suite.method, () => {
92
+ it('uses stream path when feature flag is disabled even for small file', async () => {
93
+ featureFlagProvider.isEnabled.mockResolvedValue(false);
94
+ const metadata = { expectedSize: 1, mediaType: 'text/plain' };
95
+ const uploader = await suite.getUploader(metadata);
96
+ await drainUpload(await uploader.uploadFromStream(stream, []));
97
+ suite.expect('stream');
98
+ });
99
+ it('uses small-file path when flag is on and encrypted total size is below cap', async () => {
100
+ featureFlagProvider.isEnabled.mockResolvedValue(true);
101
+ const metadata = { expectedSize: 100, mediaType: 'text/plain' };
102
+ const uploader = await suite.getUploader(metadata);
103
+ await drainUpload(await uploader.uploadFromStream(stream, []));
104
+ suite.expect('small');
105
+ });
106
+ it('uses small-file path when flag is on and encrypted total size with thumbnails is below cap', async () => {
107
+ featureFlagProvider.isEnabled.mockResolvedValue(true);
108
+ const metadata = { expectedSize: 100, mediaType: 'image/jpeg' };
109
+ const uploader = await suite.getUploader(metadata);
110
+ await drainUpload(await uploader.uploadFromStream(stream, [thumbnail100k]));
111
+ suite.expect('small');
112
+ });
113
+ it('uses stream path when feature flag is enabled but raw file size exceeds limit', async () => {
114
+ featureFlagProvider.isEnabled.mockResolvedValue(true);
115
+ const metadata = { expectedSize: RAW_SMALL_FILE_SIZE_LIMIT, mediaType: 'text/plain' };
116
+ const uploader = await suite.getUploader(metadata);
117
+ await drainUpload(await uploader.uploadFromStream(stream, []));
118
+ suite.expect('stream');
119
+ });
120
+ it('uses stream path when thumbnail bytes push encrypted total size with thumbnail exceeds limit', async () => {
121
+ featureFlagProvider.isEnabled.mockResolvedValue(true);
122
+ const metadata = { expectedSize: 100_000, mediaType: 'image/jpeg' };
123
+ const uploader = await suite.getUploader(metadata);
124
+ await drainUpload(await uploader.uploadFromStream(stream, [thumbnail100k]));
125
+ suite.expect('stream');
126
+ });
127
+ });
128
+ }
70
129
  });
71
130
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/internal/upload/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/internal/upload/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,7 @@
1
1
  import { PrivateKey, SessionKey } from '../../crypto';
2
2
  import { Logger, Thumbnail, ThumbnailType, UploadMetadata } from '../../interface';
3
- import { UploadAPIService } from './apiService';
4
- import { BlockVerifier } from './blockVerifier';
5
3
  import { UploadCryptoService } from './cryptoService';
6
- import { Uploader } from './fileUploader';
7
- import { NodeRevisionDraft, NodeCrypto } from './interface';
4
+ import { NodeCrypto } from './interface';
8
5
  import { UploadManager } from './manager';
9
6
  import { UploadTelemetry } from './telemetry';
10
7
  export type NodeKeys = {
@@ -17,15 +14,17 @@ export type NodeKeys = {
17
14
  * Base uploader for small file and small revision uploads.
18
15
  * Shares the single-request flow: read content, get node crypto, encrypt, then call API.
19
16
  */
20
- declare abstract class SmallUploader extends Uploader {
17
+ declare abstract class SmallUploader {
18
+ protected telemetry: UploadTelemetry;
19
+ protected cryptoService: UploadCryptoService;
20
+ protected manager: UploadManager;
21
+ protected metadata: UploadMetadata;
22
+ protected onFinish: () => void;
23
+ protected signal: AbortSignal | undefined;
21
24
  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<{
25
+ protected abortController: AbortController;
26
+ constructor(telemetry: UploadTelemetry, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined);
27
+ upload(stream: ReadableStream, thumbnails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<{
29
28
  nodeRevisionUid: string;
30
29
  nodeUid: string;
31
30
  }>;
@@ -52,6 +51,7 @@ declare abstract class SmallUploader extends Uploader {
52
51
  private readStreamContent;
53
52
  private encryptThumbnails;
54
53
  private encryptContentBlock;
54
+ private getManifest;
55
55
  private encryptCommitPayload;
56
56
  }
57
57
  /**
@@ -60,7 +60,7 @@ declare abstract class SmallUploader extends Uploader {
60
60
  export declare class SmallFileUploader extends SmallUploader {
61
61
  private parentFolderUid;
62
62
  private name;
63
- constructor(telemetry: UploadTelemetry, apiService: UploadAPIService, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined, parentFolderUid: string, name: string);
63
+ constructor(telemetry: UploadTelemetry, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined, parentFolderUid: string, name: string);
64
64
  protected getTelemetryContextUid(): string;
65
65
  protected handleUpload(stream: ReadableStream, thumbnails: Thumbnail[]): Promise<{
66
66
  nodeUid: string;
@@ -73,7 +73,7 @@ export declare class SmallFileUploader extends SmallUploader {
73
73
  */
74
74
  export declare class SmallFileRevisionUploader extends SmallUploader {
75
75
  private nodeUid;
76
- constructor(telemetry: UploadTelemetry, apiService: UploadAPIService, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined, nodeUid: string);
76
+ constructor(telemetry: UploadTelemetry, cryptoService: UploadCryptoService, manager: UploadManager, metadata: UploadMetadata, onFinish: () => void, signal: AbortSignal | undefined, nodeUid: string);
77
77
  protected getTelemetryContextUid(): string;
78
78
  protected handleUpload(stream: ReadableStream, thumbnails: Thumbnail[]): Promise<{
79
79
  nodeUid: string;
@@ -4,29 +4,35 @@ exports.SmallFileRevisionUploader = exports.SmallFileUploader = void 0;
4
4
  const errors_1 = require("../../errors");
5
5
  const errors_2 = require("../errors");
6
6
  const nodes_1 = require("../nodes");
7
+ const utils_1 = require("../utils");
7
8
  const blockVerifier_1 = require("./blockVerifier");
8
9
  const digests_1 = require("./digests");
9
- const fileUploader_1 = require("./fileUploader");
10
10
  const streamReader_1 = require("./streamReader");
11
11
  const streamUploader_1 = require("./streamUploader");
12
12
  /**
13
13
  * Base uploader for small file and small revision uploads.
14
14
  * Shares the single-request flow: read content, get node crypto, encrypt, then call API.
15
15
  */
16
- class SmallUploader extends fileUploader_1.Uploader {
16
+ class SmallUploader {
17
+ telemetry;
18
+ cryptoService;
19
+ manager;
20
+ metadata;
21
+ onFinish;
22
+ signal;
17
23
  logger;
18
- constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal) {
19
- super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
24
+ abortController;
25
+ constructor(telemetry, cryptoService, manager, metadata, onFinish, signal) {
26
+ this.telemetry = telemetry;
27
+ this.cryptoService = cryptoService;
28
+ this.manager = manager;
29
+ this.metadata = metadata;
30
+ this.onFinish = onFinish;
31
+ this.signal = signal;
20
32
  this.logger = telemetry.getLoggerForSmallUpload();
33
+ this.abortController = new AbortController();
21
34
  }
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) {
35
+ async upload(stream, thumbnails, onProgress) {
30
36
  try {
31
37
  const result = await this.handleUpload(stream, thumbnails);
32
38
  onProgress?.(this.metadata.expectedSize);
@@ -47,7 +53,8 @@ class SmallUploader extends fileUploader_1.Uploader {
47
53
  this.encryptThumbnails(nodeKeys, thumbnails),
48
54
  this.encryptContentBlock(nodeKeys, content.data),
49
55
  ]);
50
- const commitPayload = await this.encryptCommitPayload(nodeKeys, content.sha1, encryptedBlock);
56
+ const manifest = await this.getManifest(encryptedBlock, encryptedThumbnails);
57
+ const commitPayload = await this.encryptCommitPayload(nodeKeys, content.sha1, manifest);
51
58
  return {
52
59
  commitPayload,
53
60
  encryptedBlock,
@@ -81,7 +88,11 @@ class SmallUploader extends fileUploader_1.Uploader {
81
88
  for (const thumbnail of thumbnails) {
82
89
  this.logger.debug(`Encrypting thumbnail ${thumbnail.type}`);
83
90
  const enc = await this.cryptoService.encryptThumbnail(nodeKeys, thumbnail);
84
- result.push({ type: thumbnail.type, encryptedData: enc.encryptedData });
91
+ result.push({
92
+ type: thumbnail.type,
93
+ encryptedData: enc.encryptedData,
94
+ blockHash: await enc.hashPromise,
95
+ });
85
96
  }
86
97
  return result;
87
98
  }
@@ -128,9 +139,16 @@ class SmallUploader extends fileUploader_1.Uploader {
128
139
  blockHash,
129
140
  };
130
141
  }
131
- async encryptCommitPayload(nodeKeys, contentSha1, encryptedBlock) {
142
+ async getManifest(encryptedBlock, encryptedThumbnails) {
143
+ encryptedThumbnails.sort((a, b) => a.type - b.type);
144
+ const hashes = [
145
+ ...(await Promise.all(encryptedThumbnails.map(({ blockHash }) => blockHash))),
146
+ ...(encryptedBlock ? [encryptedBlock.blockHash] : []),
147
+ ];
148
+ return (0, utils_1.mergeUint8Arrays)(hashes);
149
+ }
150
+ async encryptCommitPayload(nodeKeys, contentSha1, manifest) {
132
151
  this.logger.debug(`Preparing commit payload`);
133
- const manifest = encryptedBlock ? encryptedBlock.blockHash : new Uint8Array(0);
134
152
  const extendedAttributes = (0, nodes_1.generateFileExtendedAttributes)({
135
153
  modificationTime: this.metadata.modificationTime,
136
154
  size: this.metadata.expectedSize,
@@ -150,8 +168,8 @@ class SmallUploader extends fileUploader_1.Uploader {
150
168
  class SmallFileUploader extends SmallUploader {
151
169
  parentFolderUid;
152
170
  name;
153
- constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal, parentFolderUid, name) {
154
- super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
171
+ constructor(telemetry, cryptoService, manager, metadata, onFinish, signal, parentFolderUid, name) {
172
+ super(telemetry, cryptoService, manager, metadata, onFinish, signal);
155
173
  this.parentFolderUid = parentFolderUid;
156
174
  this.name = name;
157
175
  this.parentFolderUid = parentFolderUid;
@@ -179,8 +197,8 @@ exports.SmallFileUploader = SmallFileUploader;
179
197
  */
180
198
  class SmallFileRevisionUploader extends SmallUploader {
181
199
  nodeUid;
182
- constructor(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal, nodeUid) {
183
- super(telemetry, apiService, cryptoService, manager, metadata, onFinish, signal);
200
+ constructor(telemetry, cryptoService, manager, metadata, onFinish, signal, nodeUid) {
201
+ super(telemetry, cryptoService, manager, metadata, onFinish, signal);
184
202
  this.nodeUid = nodeUid;
185
203
  this.nodeUid = nodeUid;
186
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smallFileUploader.js","sourceRoot":"","sources":["../../../src/internal/upload/smallFileUploader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smallFileUploader.js","sourceRoot":"","sources":["../../../src/internal/upload/smallFileUploader.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const errors_1 = require("../../errors");
4
4
  const interface_1 = require("../../interface");
5
5
  const smallFileUploader_1 = require("./smallFileUploader");
6
- const MOCK_BLOCK_HASH = new Uint8Array(32).fill(1);
7
- const MOCK_VERIFICATION_TOKEN = new Uint8Array(16).fill(2);
6
+ const utils_1 = require("../utils");
7
+ const MOCK_BLOCK_HASH = new Uint8Array(32).fill(4);
8
+ const MOCK_VERIFICATION_TOKEN = new Uint8Array(16).fill(5);
8
9
  function createStream(bytes) {
9
10
  return new ReadableStream({
10
11
  start(controller) {
@@ -91,7 +92,7 @@ describe('SmallFileUploader', () => {
91
92
  encryptedData: new Uint8Array(thumbnail.thumbnail),
92
93
  originalSize: thumbnail.thumbnail.length,
93
94
  encryptedSize: thumbnail.thumbnail.length + 100,
94
- hash: 'thumbnailHash',
95
+ hashPromise: Promise.resolve(new Uint8Array(32).fill(thumbnail.type)),
95
96
  })),
96
97
  encryptBlock: jest.fn().mockImplementation(mockEncryptBlock),
97
98
  verifyBlock: jest.fn().mockResolvedValue({ verificationToken: MOCK_VERIFICATION_TOKEN }),
@@ -115,7 +116,7 @@ describe('SmallFileUploader', () => {
115
116
  abortController = new AbortController();
116
117
  });
117
118
  function createUploader() {
118
- return new smallFileUploader_1.SmallFileUploader(telemetry, apiService, cryptoService, uploadManager, metadata, onFinish, abortController.signal, parentFolderUid, name);
119
+ return new smallFileUploader_1.SmallFileUploader(telemetry, cryptoService, uploadManager, metadata, onFinish, abortController.signal, parentFolderUid, name);
119
120
  }
120
121
  describe('uploadFromStream', () => {
121
122
  const thumbnails = [];
@@ -123,19 +124,12 @@ describe('SmallFileUploader', () => {
123
124
  it('should start upload and call manager.generateNewFileCrypto and manager.uploadFile', async () => {
124
125
  const uploader = createUploader();
125
126
  const stream = createStream([1, 2, 3]);
126
- const controller = await uploader.uploadFromStream(stream, thumbnails, onProgress);
127
- const result = await controller.completion();
127
+ const result = await uploader.upload(stream, thumbnails, onProgress);
128
128
  expect(uploadManager.generateNewFileCrypto).toHaveBeenCalledWith(parentFolderUid, name);
129
129
  expect(uploadManager.uploadFile).toHaveBeenCalledTimes(1);
130
130
  expect(result).toEqual({ nodeUid: 'nodeUid', nodeRevisionUid: 'nodeRevisionUid' });
131
131
  expect(onProgress).toHaveBeenCalledWith(metadata.expectedSize);
132
132
  });
133
- it('should throw if upload already started', async () => {
134
- const uploader = createUploader();
135
- const stream = createStream([1, 2, 3]);
136
- await uploader.uploadFromStream(stream, thumbnails, onProgress);
137
- await expect(uploader.uploadFromStream(stream, thumbnails, onProgress)).rejects.toThrow('Upload already started');
138
- });
139
133
  });
140
134
  describe('buildPayloads (via upload flow)', () => {
141
135
  it('should build commitPayload, encryptedBlock, and encryptedThumbnails from stream and pass to manager.uploadFile', async () => {
@@ -145,8 +139,7 @@ describe('SmallFileUploader', () => {
145
139
  { type: interface_1.ThumbnailType.Type1, thumbnail: new Uint8Array([10, 20]) },
146
140
  { type: interface_1.ThumbnailType.Type2, thumbnail: new Uint8Array([30, 40, 50]) },
147
141
  ];
148
- await uploader.uploadFromStream(stream, thumbnails, undefined);
149
- await uploader.controller.completion();
142
+ await uploader.upload(stream, thumbnails, undefined);
150
143
  expect(uploadManager.uploadFile).toHaveBeenCalledWith(parentFolderUid, mockNodeCrypto, metadata, expect.objectContaining({
151
144
  armoredManifestSignature: 'mockManifestSignature',
152
145
  armoredExtendedAttributes: 'mockExtendedAttributes',
@@ -155,20 +148,31 @@ describe('SmallFileUploader', () => {
155
148
  armoredSignature: 'mockBlockSignature',
156
149
  verificationToken: MOCK_VERIFICATION_TOKEN,
157
150
  }), [
158
- { type: interface_1.ThumbnailType.Type1, encryptedData: expect.any(Uint8Array) },
159
- { type: interface_1.ThumbnailType.Type2, encryptedData: expect.any(Uint8Array) },
151
+ {
152
+ type: interface_1.ThumbnailType.Type1,
153
+ encryptedData: expect.any(Uint8Array),
154
+ blockHash: new Uint8Array(32).fill(interface_1.ThumbnailType.Type1),
155
+ },
156
+ {
157
+ type: interface_1.ThumbnailType.Type2,
158
+ encryptedData: expect.any(Uint8Array),
159
+ blockHash: new Uint8Array(32).fill(interface_1.ThumbnailType.Type2),
160
+ },
160
161
  ]);
161
162
  expect(cryptoService.encryptBlock).toHaveBeenCalledTimes(1);
162
163
  expect(cryptoService.encryptThumbnail).toHaveBeenCalledTimes(2);
163
- expect(cryptoService.commitFile).toHaveBeenCalledWith(expect.anything(), MOCK_BLOCK_HASH, expect.any(String));
164
+ expect(cryptoService.commitFile).toHaveBeenCalledWith(expect.anything(), (0, utils_1.mergeUint8Arrays)([
165
+ new Uint8Array(32).fill(interface_1.ThumbnailType.Type1),
166
+ new Uint8Array(32).fill(interface_1.ThumbnailType.Type2),
167
+ MOCK_BLOCK_HASH,
168
+ ]), expect.any(String));
164
169
  });
165
170
  it('should pass encrypted block data matching stream content to crypto.encryptBlock', async () => {
166
171
  const uploader = createUploader();
167
172
  const content = [5, 6, 7, 8, 9];
168
173
  metadata.expectedSize = content.length;
169
174
  const stream = createStream(content);
170
- await uploader.uploadFromStream(stream, [], undefined);
171
- await uploader.controller.completion();
175
+ await uploader.upload(stream, [], undefined);
172
176
  expect(cryptoService.encryptBlock).toHaveBeenCalledWith(expect.any(Function), expect.anything(), new Uint8Array(content), 0);
173
177
  });
174
178
  it('should pass each thumbnail to crypto.encryptThumbnail with nodeKeys', async () => {
@@ -177,8 +181,7 @@ describe('SmallFileUploader', () => {
177
181
  { type: interface_1.ThumbnailType.Type1, thumbnail: new Uint8Array([1]) },
178
182
  ];
179
183
  const stream = createStream([1, 2, 3]);
180
- await uploader.uploadFromStream(stream, thumbnails, undefined);
181
- await uploader.controller.completion();
184
+ await uploader.upload(stream, thumbnails, undefined);
182
185
  expect(cryptoService.encryptThumbnail).toHaveBeenCalledWith(expect.objectContaining({
183
186
  key: mockNodeCrypto.nodeKeys.decrypted.key,
184
187
  contentKeyPacket: mockNodeCrypto.contentKey.encrypted.contentKeyPacket,
@@ -189,8 +192,7 @@ describe('SmallFileUploader', () => {
189
192
  it('should call commitFile with manifest and extended attributes', async () => {
190
193
  const uploader = createUploader();
191
194
  const stream = createStream([1, 2, 3]);
192
- await uploader.uploadFromStream(stream, [], undefined);
193
- await uploader.controller.completion();
195
+ await uploader.upload(stream, [], undefined);
194
196
  const [nodeKeys, manifest, extendedAttributes] = cryptoService.commitFile.mock.calls[0];
195
197
  expect(manifest).toEqual(MOCK_BLOCK_HASH);
196
198
  expect(extendedAttributes).toBeDefined();
@@ -202,9 +204,9 @@ describe('SmallFileUploader', () => {
202
204
  const uploader = createUploader();
203
205
  metadata.expectedSize = 5;
204
206
  const stream = createStream([1, 2, 3]); // only 3 bytes
205
- const controller = await uploader.uploadFromStream(stream, [], undefined);
206
- await expect(controller.completion()).rejects.toThrow(errors_1.IntegrityError);
207
- await expect(controller.completion()).rejects.toMatchObject({
207
+ const promise = uploader.upload(stream, [], undefined);
208
+ await expect(promise).rejects.toThrow(errors_1.IntegrityError);
209
+ await expect(promise).rejects.toMatchObject({
208
210
  debug: { actual: 3, expected: 5 },
209
211
  });
210
212
  });
@@ -212,9 +214,9 @@ describe('SmallFileUploader', () => {
212
214
  const uploader = createUploader();
213
215
  metadata.expectedSha1 = 'a'.repeat(40); // wrong sha1
214
216
  const stream = createStream([1, 2, 3]);
215
- const controller = await uploader.uploadFromStream(stream, [], undefined);
216
- await expect(controller.completion()).rejects.toThrow(errors_1.IntegrityError);
217
- await expect(controller.completion()).rejects.toMatchObject({
217
+ const promise = uploader.upload(stream, [], undefined);
218
+ await expect(promise).rejects.toThrow(errors_1.IntegrityError);
219
+ await expect(promise).rejects.toMatchObject({
218
220
  debug: expect.objectContaining({
219
221
  expectedSha1: 'a'.repeat(40),
220
222
  }),
@@ -227,8 +229,7 @@ describe('SmallFileUploader', () => {
227
229
  const uploader = createUploader();
228
230
  const stream = createStream([]);
229
231
  const onProgress = jest.fn();
230
- const controller = await uploader.uploadFromStream(stream, [], onProgress);
231
- const result = await controller.completion();
232
+ const result = await uploader.upload(stream, [], onProgress);
232
233
  expect(result).toEqual({ nodeUid: 'nodeUid', nodeRevisionUid: 'nodeRevisionUid' });
233
234
  expect(cryptoService.encryptBlock).not.toHaveBeenCalled();
234
235
  expect(uploadManager.uploadFile).toHaveBeenCalledWith(parentFolderUid, mockNodeCrypto, metadata, expect.objectContaining({
@@ -321,13 +322,12 @@ describe('SmallFileRevisionUploader', () => {
321
322
  abortController = new AbortController();
322
323
  });
323
324
  function createUploader() {
324
- return new smallFileUploader_1.SmallFileRevisionUploader(telemetry, apiService, cryptoService, uploadManager, metadata, onFinish, abortController.signal, nodeUid);
325
+ return new smallFileUploader_1.SmallFileRevisionUploader(telemetry, cryptoService, uploadManager, metadata, onFinish, abortController.signal, nodeUid);
325
326
  }
326
327
  it('should get node crypto, build payloads, and call uploadSmallRevision', async () => {
327
328
  const uploader = createUploader();
328
329
  const stream = createStream([1, 2, 3]);
329
- const controller = await uploader.uploadFromStream(stream, [], undefined);
330
- const result = await controller.completion();
330
+ const result = await uploader.upload(stream, [], undefined);
331
331
  expect(result).toEqual({ nodeUid: 'nodeUid', nodeRevisionUid: 'nodeRevisionUid' });
332
332
  expect(cryptoService.encryptBlock).toHaveBeenCalledWith(expect.any(Function), expect.anything(), Uint8Array.from([1, 2, 3]), 0);
333
333
  expect(uploadManager.getExistingFileNodeCrypto).toHaveBeenCalledWith(nodeUid);
@@ -344,8 +344,7 @@ describe('SmallFileRevisionUploader', () => {
344
344
  metadata.expectedSize = 0;
345
345
  const uploader = createUploader();
346
346
  const stream = createStream([]);
347
- const controller = await uploader.uploadFromStream(stream, [], undefined);
348
- const result = await controller.completion();
347
+ const result = await uploader.upload(stream, [], undefined);
349
348
  expect(result).toEqual({ nodeUid: 'nodeUid', nodeRevisionUid: 'nodeRevisionUid' });
350
349
  expect(cryptoService.encryptBlock).not.toHaveBeenCalled();
351
350
  expect(uploadManager.uploadSmallRevision).toHaveBeenCalledWith(nodeUid, mockNodeKeys, expect.objectContaining({