@protontech/drive-sdk 0.9.7 → 0.9.9

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 (59) hide show
  1. package/dist/interface/upload.d.ts +10 -0
  2. package/dist/internal/nodes/mediaTypes.d.ts +2 -0
  3. package/dist/internal/nodes/mediaTypes.js +3 -0
  4. package/dist/internal/nodes/mediaTypes.js.map +1 -1
  5. package/dist/internal/nodes/nodesManagement.js +2 -1
  6. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  7. package/dist/internal/photos/albums.d.ts +15 -1
  8. package/dist/internal/photos/albums.js +91 -1
  9. package/dist/internal/photos/albums.js.map +1 -1
  10. package/dist/internal/photos/albums.test.d.ts +1 -0
  11. package/dist/internal/photos/albums.test.js +217 -0
  12. package/dist/internal/photos/albums.test.js.map +1 -0
  13. package/dist/internal/photos/albumsCrypto.d.ts +35 -0
  14. package/dist/internal/photos/albumsCrypto.js +66 -0
  15. package/dist/internal/photos/albumsCrypto.js.map +1 -0
  16. package/dist/internal/photos/albumsCrypto.test.d.ts +1 -0
  17. package/dist/internal/photos/albumsCrypto.test.js +134 -0
  18. package/dist/internal/photos/albumsCrypto.test.js.map +1 -0
  19. package/dist/internal/photos/apiService.d.ts +22 -0
  20. package/dist/internal/photos/apiService.js +91 -0
  21. package/dist/internal/photos/apiService.js.map +1 -1
  22. package/dist/internal/photos/index.d.ts +4 -4
  23. package/dist/internal/photos/index.js +5 -3
  24. package/dist/internal/photos/index.js.map +1 -1
  25. package/dist/internal/photos/interface.d.ts +21 -0
  26. package/dist/internal/photos/interface.js +14 -0
  27. package/dist/internal/photos/interface.js.map +1 -1
  28. package/dist/internal/photos/timeline.d.ts +2 -5
  29. package/dist/internal/photos/timeline.js.map +1 -1
  30. package/dist/internal/photos/upload.js +3 -2
  31. package/dist/internal/photos/upload.js.map +1 -1
  32. package/dist/internal/upload/streamUploader.d.ts +3 -1
  33. package/dist/internal/upload/streamUploader.js +10 -3
  34. package/dist/internal/upload/streamUploader.js.map +1 -1
  35. package/dist/internal/upload/streamUploader.test.js +10 -0
  36. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  37. package/dist/protonDrivePhotosClient.d.ts +64 -6
  38. package/dist/protonDrivePhotosClient.js +75 -1
  39. package/dist/protonDrivePhotosClient.js.map +1 -1
  40. package/dist/protonDrivePublicLinkClient.d.ts +15 -0
  41. package/dist/protonDrivePublicLinkClient.js +20 -0
  42. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/interface/upload.ts +10 -0
  45. package/src/internal/nodes/mediaTypes.ts +3 -0
  46. package/src/internal/nodes/nodesManagement.ts +2 -1
  47. package/src/internal/photos/albums.test.ts +268 -0
  48. package/src/internal/photos/albums.ts +136 -0
  49. package/src/internal/photos/albumsCrypto.test.ts +181 -0
  50. package/src/internal/photos/albumsCrypto.ts +100 -0
  51. package/src/internal/photos/apiService.ts +168 -2
  52. package/src/internal/photos/index.ts +7 -5
  53. package/src/internal/photos/interface.ts +24 -0
  54. package/src/internal/photos/timeline.ts +2 -5
  55. package/src/internal/photos/upload.ts +3 -2
  56. package/src/internal/upload/streamUploader.test.ts +38 -0
  57. package/src/internal/upload/streamUploader.ts +10 -3
  58. package/src/protonDrivePhotosClient.ts +104 -9
  59. package/src/protonDrivePublicLinkClient.ts +27 -0
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const albumsCrypto_1 = require("./albumsCrypto");
4
+ describe('AlbumsCryptoService', () => {
5
+ let driveCrypto;
6
+ let albumsCryptoService;
7
+ beforeEach(() => {
8
+ jest.clearAllMocks();
9
+ // @ts-expect-error No need to implement all methods for mocking
10
+ driveCrypto = {};
11
+ albumsCryptoService = new albumsCrypto_1.AlbumsCryptoService(driveCrypto);
12
+ });
13
+ describe('createAlbum', () => {
14
+ let parentKeys;
15
+ beforeEach(() => {
16
+ parentKeys = {
17
+ key: 'parentKey',
18
+ hashKey: new Uint8Array([1, 2, 3]),
19
+ };
20
+ driveCrypto.generateKey = jest.fn().mockResolvedValue({
21
+ encrypted: {
22
+ armoredKey: 'encryptedNodeKey',
23
+ armoredPassphrase: 'encryptedPassphrase',
24
+ armoredPassphraseSignature: 'passphraseSignature',
25
+ },
26
+ decrypted: {
27
+ key: 'nodeKey',
28
+ passphrase: 'nodePassphrase',
29
+ passphraseSessionKey: 'passphraseSessionKey',
30
+ },
31
+ });
32
+ driveCrypto.encryptNodeName = jest.fn().mockResolvedValue({
33
+ armoredNodeName: 'encryptedNodeName',
34
+ });
35
+ driveCrypto.generateLookupHash = jest.fn().mockResolvedValue('lookupHash');
36
+ driveCrypto.generateHashKey = jest.fn().mockResolvedValue({
37
+ armoredHashKey: 'encryptedHashKey',
38
+ hashKey: new Uint8Array([4, 5, 6]),
39
+ });
40
+ });
41
+ it('should encrypt new album with user address key', async () => {
42
+ const signingKeys = {
43
+ type: 'userAddress',
44
+ email: 'test@example.com',
45
+ addressId: 'addressId',
46
+ key: 'addressKey',
47
+ };
48
+ const result = await albumsCryptoService.createAlbum(parentKeys, signingKeys, 'My Album');
49
+ expect(result).toEqual({
50
+ encryptedCrypto: {
51
+ encryptedName: 'encryptedNodeName',
52
+ hash: 'lookupHash',
53
+ armoredKey: 'encryptedNodeKey',
54
+ armoredNodePassphrase: 'encryptedPassphrase',
55
+ armoredNodePassphraseSignature: 'passphraseSignature',
56
+ signatureEmail: 'test@example.com',
57
+ armoredHashKey: 'encryptedHashKey',
58
+ },
59
+ keys: {
60
+ passphrase: 'nodePassphrase',
61
+ key: 'nodeKey',
62
+ passphraseSessionKey: 'passphraseSessionKey',
63
+ hashKey: new Uint8Array([4, 5, 6]),
64
+ },
65
+ });
66
+ expect(driveCrypto.generateKey).toHaveBeenCalledWith([parentKeys.key], signingKeys.key);
67
+ expect(driveCrypto.encryptNodeName).toHaveBeenCalledWith('My Album', undefined, parentKeys.key, signingKeys.key);
68
+ expect(driveCrypto.generateLookupHash).toHaveBeenCalledWith('My Album', parentKeys.hashKey);
69
+ expect(driveCrypto.generateHashKey).toHaveBeenCalledWith('nodeKey');
70
+ });
71
+ it('should throw error when creating album by anonymous user', async () => {
72
+ const signingKeys = {
73
+ type: 'nodeKey',
74
+ nodeKey: 'nodeSigningKey',
75
+ parentNodeKey: 'parentNodeKey',
76
+ };
77
+ await expect(albumsCryptoService.createAlbum(parentKeys, signingKeys, 'My Album')).rejects.toThrow('Creating album by anonymous user is not supported');
78
+ });
79
+ });
80
+ describe('renameAlbum', () => {
81
+ let parentKeys;
82
+ let nodeNameSessionKey;
83
+ beforeEach(() => {
84
+ parentKeys = {
85
+ key: 'parentKey',
86
+ hashKey: new Uint8Array([1, 2, 3]),
87
+ };
88
+ nodeNameSessionKey = 'nameSessionKey';
89
+ driveCrypto.decryptSessionKey = jest.fn().mockResolvedValue(nodeNameSessionKey);
90
+ driveCrypto.encryptNodeName = jest.fn().mockResolvedValue({
91
+ armoredNodeName: 'encryptedNewNodeName',
92
+ });
93
+ driveCrypto.generateLookupHash = jest.fn().mockResolvedValue('newHash');
94
+ });
95
+ it('should encrypt new album name with user address key', async () => {
96
+ const signingKeys = {
97
+ type: 'userAddress',
98
+ email: 'test@example.com',
99
+ addressId: 'addressId',
100
+ key: 'addressKey',
101
+ };
102
+ const result = await albumsCryptoService.renameAlbum(parentKeys, 'oldEncryptedName', signingKeys, 'Renamed Album');
103
+ expect(result).toEqual({
104
+ signatureEmail: 'test@example.com',
105
+ armoredNodeName: 'encryptedNewNodeName',
106
+ hash: 'newHash',
107
+ });
108
+ expect(driveCrypto.decryptSessionKey).toHaveBeenCalledWith('oldEncryptedName', parentKeys.key);
109
+ expect(driveCrypto.encryptNodeName).toHaveBeenCalledWith('Renamed Album', nodeNameSessionKey, parentKeys.key, signingKeys.key);
110
+ expect(driveCrypto.generateLookupHash).toHaveBeenCalledWith('Renamed Album', parentKeys.hashKey);
111
+ });
112
+ it('should throw error when renaming album by anonymous user', async () => {
113
+ const signingKeys = {
114
+ type: 'nodeKey',
115
+ nodeKey: 'nodeSigningKey',
116
+ parentNodeKey: 'parentNodeKey',
117
+ };
118
+ await expect(albumsCryptoService.renameAlbum(parentKeys, 'oldEncryptedName', signingKeys, 'Renamed Album')).rejects.toThrow('Renaming album by anonymous user is not supported');
119
+ });
120
+ it('should throw error when parent hash key is not available', async () => {
121
+ const parentKeysWithoutHashKey = {
122
+ key: 'parentKey',
123
+ };
124
+ const signingKeys = {
125
+ type: 'userAddress',
126
+ email: 'test@example.com',
127
+ addressId: 'addressId',
128
+ key: 'addressKey',
129
+ };
130
+ await expect(albumsCryptoService.renameAlbum(parentKeysWithoutHashKey, 'oldEncryptedName', signingKeys, 'Renamed Album')).rejects.toThrow('Cannot rename album: parent folder hash key not available');
131
+ });
132
+ });
133
+ });
134
+ //# sourceMappingURL=albumsCrypto.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"albumsCrypto.test.js","sourceRoot":"","sources":["../../../src/internal/photos/albumsCrypto.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import { NodeResult } from '../../interface';
1
2
  import { DriveAPIService } from '../apiService';
2
3
  import { EncryptedRootShare, EncryptedShareCrypto } from '../shares/interface';
4
+ import { AlbumItem } from './interface';
3
5
  /**
4
6
  * Provides API communication for fetching and manipulating photos and albums
5
7
  * metadata.
@@ -36,10 +38,30 @@ export declare class PhotosAPIService {
36
38
  photoCount: number;
37
39
  lastActivityTime: Date;
38
40
  }>;
41
+ iterateAlbumChildren(albumNodeUid: string, signal?: AbortSignal): AsyncGenerator<AlbumItem>;
39
42
  checkPhotoDuplicates(volumeId: string, nameHashes: string[], signal?: AbortSignal): Promise<{
40
43
  nameHash: string;
41
44
  contentHash: string;
42
45
  nodeUid: string;
43
46
  clientUid?: string;
44
47
  }[]>;
48
+ createAlbum(parentNodeUid: string, album: {
49
+ encryptedName: string;
50
+ hash: string;
51
+ armoredKey: string;
52
+ armoredNodePassphrase: string;
53
+ armoredNodePassphraseSignature: string;
54
+ signatureEmail: string;
55
+ armoredHashKey: string;
56
+ }): Promise<string>;
57
+ updateAlbum(albumNodeUid: string, coverPhotoNodeUid?: string, updatedName?: {
58
+ encryptedName: string;
59
+ hash: string;
60
+ originalHash: string;
61
+ nameSignatureEmail: string;
62
+ }): Promise<void>;
63
+ deleteAlbum(albumNodeUid: string, options?: {
64
+ force?: boolean;
65
+ }): Promise<void>;
66
+ removePhotosFromAlbum(albumNodeUid: string, photoNodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult>;
45
67
  }
@@ -1,8 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PhotosAPIService = void 0;
4
+ const ttag_1 = require("ttag");
5
+ const errors_1 = require("../../errors");
6
+ const apiService_1 = require("../apiService");
7
+ const batch_1 = require("../batch");
4
8
  const interface_1 = require("../shares/interface");
5
9
  const uids_1 = require("../uids");
10
+ const ALBUM_CONTAINS_PHOTOS_NOT_IN_TIMELINE_ERROR_CODE = 200302;
6
11
  /**
7
12
  * Provides API communication for fetching and manipulating photos and albums
8
13
  * metadata.
@@ -92,6 +97,23 @@ class PhotosAPIService {
92
97
  anchor = response.AnchorID;
93
98
  }
94
99
  }
100
+ async *iterateAlbumChildren(albumNodeUid, signal) {
101
+ const { volumeId, nodeId: linkId } = (0, uids_1.splitNodeUid)(albumNodeUid);
102
+ let anchor = '';
103
+ while (true) {
104
+ const response = await this.apiService.get(`drive/photos/volumes/${volumeId}/albums/${linkId}/children?Sort=Captured&Desc=1${anchor ? `&AnchorID=${anchor}` : ''}`, signal);
105
+ for (const photo of response.Photos) {
106
+ yield {
107
+ nodeUid: (0, uids_1.makeNodeUid)(volumeId, photo.LinkID),
108
+ captureTime: new Date(photo.CaptureTime * 1000),
109
+ };
110
+ }
111
+ if (!response.More || !response.AnchorID) {
112
+ break;
113
+ }
114
+ anchor = response.AnchorID;
115
+ }
116
+ }
95
117
  async checkPhotoDuplicates(volumeId, nameHashes, signal) {
96
118
  const response = await this.apiService.post(`drive/volumes/${volumeId}/photos/duplicates`, {
97
119
  NameHashes: nameHashes,
@@ -108,6 +130,75 @@ class PhotosAPIService {
108
130
  };
109
131
  }).filter((duplicate) => duplicate !== undefined);
110
132
  }
133
+ async createAlbum(parentNodeUid, album) {
134
+ const { volumeId } = (0, uids_1.splitNodeUid)(parentNodeUid);
135
+ const response = await this.apiService.post(`drive/photos/volumes/${volumeId}/albums`, {
136
+ Locked: false,
137
+ Link: {
138
+ Name: album.encryptedName,
139
+ Hash: album.hash,
140
+ NodeKey: album.armoredKey,
141
+ NodePassphrase: album.armoredNodePassphrase,
142
+ NodePassphraseSignature: album.armoredNodePassphraseSignature,
143
+ SignatureEmail: album.signatureEmail,
144
+ NodeHashKey: album.armoredHashKey,
145
+ XAttr: null,
146
+ },
147
+ });
148
+ return (0, uids_1.makeNodeUid)(volumeId, response.Album.Link.LinkID);
149
+ }
150
+ async updateAlbum(albumNodeUid, coverPhotoNodeUid, updatedName) {
151
+ const { volumeId, nodeId: linkId } = (0, uids_1.splitNodeUid)(albumNodeUid);
152
+ const coverLinkId = coverPhotoNodeUid ? (0, uids_1.splitNodeUid)(coverPhotoNodeUid).nodeId : undefined;
153
+ await this.apiService.put(`drive/photos/volumes/${volumeId}/albums/${linkId}`, {
154
+ CoverLinkID: coverLinkId,
155
+ Link: updatedName
156
+ ? {
157
+ Name: updatedName.encryptedName,
158
+ Hash: updatedName.hash,
159
+ OriginalHash: updatedName.originalHash,
160
+ NameSignatureEmail: updatedName.nameSignatureEmail,
161
+ }
162
+ : null,
163
+ });
164
+ }
165
+ async deleteAlbum(albumNodeUid, options = {}) {
166
+ const { volumeId, nodeId: linkId } = (0, uids_1.splitNodeUid)(albumNodeUid);
167
+ try {
168
+ await this.apiService.delete(`drive/photos/volumes/${volumeId}/albums/${linkId}?DeleteAlbumPhotos=${options.force ? 1 : 0}`);
169
+ }
170
+ catch (error) {
171
+ if (error instanceof apiService_1.APICodeError && error.code === ALBUM_CONTAINS_PHOTOS_NOT_IN_TIMELINE_ERROR_CODE) {
172
+ throw new errors_1.ValidationError((0, ttag_1.c)('Error').t `Album contains photos not in timeline`);
173
+ }
174
+ throw error;
175
+ }
176
+ }
177
+ async *removePhotosFromAlbum(albumNodeUid, photoNodeUids, signal) {
178
+ const { volumeId, nodeId: albumLinkId } = (0, uids_1.splitNodeUid)(albumNodeUid);
179
+ const batchSize = 50;
180
+ for (const photoNodeUidsBatch of (0, batch_1.batch)(photoNodeUids, batchSize)) {
181
+ const linkIds = photoNodeUidsBatch.map((nodeUid) => (0, uids_1.splitNodeUid)(nodeUid).nodeId);
182
+ let errorMessage;
183
+ try {
184
+ await this.apiService.post(`drive/photos/volumes/${volumeId}/albums/${albumLinkId}/remove-multiple`, {
185
+ LinkIDs: linkIds,
186
+ }, signal);
187
+ }
188
+ catch (error) {
189
+ errorMessage = error instanceof Error ? error.message : (0, ttag_1.c)('Error').t `Unknown error`;
190
+ }
191
+ // The API does not return individual results for each photo.
192
+ for (const uid of photoNodeUidsBatch) {
193
+ if (errorMessage) {
194
+ yield { uid, ok: false, error: errorMessage };
195
+ }
196
+ else {
197
+ yield { uid, ok: true };
198
+ }
199
+ }
200
+ }
201
+ }
111
202
  }
112
203
  exports.PhotosAPIService = PhotosAPIService;
113
204
  //# sourceMappingURL=apiService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/photos/apiService.ts"],"names":[],"mappings":";;;AACA,mDAA0F;AAC1F,kCAAsC;AAyBtC;;;;;;GAMG;AACH,MAAa,gBAAgB;IACL;IAApB,YAAoB,UAA2B;QAA3B,eAAU,GAAV,UAAU,CAAiB;QAC3C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAwB,wBAAwB,CAAC,CAAC;QAE5F,OAAO;YACH,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;YAClC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;YAC/B,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YACrC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;YACzC,eAAe,EAAE;gBACb,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG;gBAC9B,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;gBAC5C,0BAA0B,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB;aACjE;YACD,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;YACnC,IAAI,EAAE,qBAAS,CAAC,KAAK;SACxB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,KAGwB,EACxB,IAMC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACvC,sBAAsB,EACtB;YACI,KAAK,EAAE;gBACH,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,UAAU,EAAE,KAAK,CAAC,iBAAiB;gBACnC,mBAAmB,EAAE,KAAK,CAAC,0BAA0B;aACxD;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,IAAI,CAAC,aAAa;gBACxB,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,cAAc,EAAE,IAAI,CAAC,iBAAiB;gBACtC,uBAAuB,EAAE,IAAI,CAAC,0BAA0B;gBACxD,WAAW,EAAE,IAAI,CAAC,cAAc;aACnC;SACJ,CACJ,CAAC;QACF,OAAO;YACH,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;YAClC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;YACtC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;SAC3C,CAAC;IACN,CAAC;IAED,KAAK,CAAC,CAAC,eAAe,CAClB,QAAgB,EAChB,MAAoB;QAMpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACtC,iBAAiB,QAAQ,WAAW,MAAM,CAAC,CAAC,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACtF,MAAM,CACT,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,IAAA,kBAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpD,MAAM;oBACF,OAAO;oBACP,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC/C,IAAI,EAAE,KAAK,CAAC,IAAI;iBACnB,CAAC;YACN,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM;YACV,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAChB,QAAgB,EAChB,MAAoB;QAOpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACtC,wBAAwB,QAAQ,WAAW,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/E,MAAM,CACT,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM;oBACF,QAAQ;oBACR,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;oBACtF,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,gBAAgB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;iBAC5D,CAAC;YACN,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACvC,MAAM;YACV,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACtB,QAAgB,EAChB,UAAoB,EACpB,MAAoB;QASpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACvC,iBAAiB,QAAQ,oBAAoB,EAC7C;YACI,UAAU,EAAE,UAAU;SACzB,EACD,MAAM,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,SAAS,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;gBACtF,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO;gBACH,QAAQ,EAAE,SAAS,CAAC,IAAI;gBACxB,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,OAAO,EAAE,IAAA,kBAAW,EAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC;gBAChD,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,SAAS;aAC9C,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACtD,CAAC;CACJ;AA5JD,4CA4JC"}
1
+ {"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/photos/apiService.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- import { DriveAPIService } from '../apiService';
2
1
  import { DriveCrypto } from '../../crypto';
3
2
  import { ProtonDriveAccount, ProtonDriveCryptoCache, ProtonDriveEntitiesCache, ProtonDriveTelemetry } from '../../interface';
3
+ import { DriveAPIService } from '../apiService';
4
+ import { NodesEventsHandler } from '../nodes/events';
5
+ import { NodesRevisons } from '../nodes/nodesRevisions';
4
6
  import { ShareTargetType } from '../shares';
5
7
  import { NodesService as UploadNodesService } from '../upload/interface';
6
8
  import { Albums } from './albums';
@@ -9,9 +11,7 @@ import { PhotosNodesAccess, PhotosNodesManagement } from './nodes';
9
11
  import { PhotoSharesManager } from './shares';
10
12
  import { PhotosTimeline } from './timeline';
11
13
  import { PhotoFileUploader, PhotoUploadMetadata } from './upload';
12
- import { NodesRevisons } from '../nodes/nodesRevisions';
13
- import { NodesEventsHandler } from '../nodes/events';
14
- export type { DecryptedPhotoNode } from './interface';
14
+ export type { DecryptedPhotoNode, TimelineItem, AlbumItem, PhotoTag } from './interface';
15
15
  export declare const PHOTOS_SHARE_TARGET_TYPES: ShareTargetType[];
16
16
  /**
17
17
  * Provides facade for the whole photos module.
@@ -8,6 +8,8 @@ exports.initPhotoUploadModule = initPhotoUploadModule;
8
8
  const cryptoService_1 = require("../nodes/cryptoService");
9
9
  const cryptoReporter_1 = require("../nodes/cryptoReporter");
10
10
  const cryptoCache_1 = require("../nodes/cryptoCache");
11
+ const events_1 = require("../nodes/events");
12
+ const nodesRevisions_1 = require("../nodes/nodesRevisions");
11
13
  const shares_1 = require("../shares");
12
14
  const cache_1 = require("../shares/cache");
13
15
  const cryptoCache_2 = require("../shares/cryptoCache");
@@ -15,13 +17,12 @@ const cryptoService_2 = require("../shares/cryptoService");
15
17
  const telemetry_1 = require("../upload/telemetry");
16
18
  const queue_1 = require("../upload/queue");
17
19
  const albums_1 = require("./albums");
20
+ const albumsCrypto_1 = require("./albumsCrypto");
18
21
  const apiService_1 = require("./apiService");
19
22
  const nodes_1 = require("./nodes");
20
23
  const shares_2 = require("./shares");
21
24
  const timeline_1 = require("./timeline");
22
25
  const upload_1 = require("./upload");
23
- const nodesRevisions_1 = require("../nodes/nodesRevisions");
24
- const events_1 = require("../nodes/events");
25
26
  // Only photos and albums can be shared in photos volume.
26
27
  exports.PHOTOS_SHARE_TARGET_TYPES = [shares_1.ShareTargetType.Photo, shares_1.ShareTargetType.Album];
27
28
  /**
@@ -32,8 +33,9 @@ exports.PHOTOS_SHARE_TARGET_TYPES = [shares_1.ShareTargetType.Photo, shares_1.Sh
32
33
  */
33
34
  function initPhotosModule(telemetry, apiService, driveCrypto, photoShares, nodesService) {
34
35
  const api = new apiService_1.PhotosAPIService(apiService);
36
+ const albumsCryptoService = new albumsCrypto_1.AlbumsCryptoService(driveCrypto);
35
37
  const timeline = new timeline_1.PhotosTimeline(telemetry.getLogger('photos-timeline'), api, driveCrypto, photoShares, nodesService);
36
- const albums = new albums_1.Albums(api, photoShares, nodesService);
38
+ const albums = new albums_1.Albums(api, albumsCryptoService, photoShares, nodesService);
37
39
  return {
38
40
  timeline,
39
41
  albums,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/photos/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/photos/index.ts"],"names":[],"mappings":"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"}
@@ -40,3 +40,24 @@ export type EcnryptedPhotoAttributes = Omit<PhotoAttributes, 'albums'> & {
40
40
  contentHash?: string;
41
41
  })[];
42
42
  };
43
+ export type TimelineItem = {
44
+ nodeUid: string;
45
+ captureTime: Date;
46
+ tags: PhotoTag[];
47
+ };
48
+ export type AlbumItem = {
49
+ nodeUid: string;
50
+ captureTime: Date;
51
+ };
52
+ export declare enum PhotoTag {
53
+ Favorites = 0,
54
+ Screenshots = 1,
55
+ Videos = 2,
56
+ LivePhotos = 3,
57
+ MotionPhotos = 4,
58
+ Selfies = 5,
59
+ Portraits = 6,
60
+ Bursts = 7,
61
+ Panoramas = 8,
62
+ Raw = 9
63
+ }
@@ -1,3 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhotoTag = void 0;
4
+ var PhotoTag;
5
+ (function (PhotoTag) {
6
+ PhotoTag[PhotoTag["Favorites"] = 0] = "Favorites";
7
+ PhotoTag[PhotoTag["Screenshots"] = 1] = "Screenshots";
8
+ PhotoTag[PhotoTag["Videos"] = 2] = "Videos";
9
+ PhotoTag[PhotoTag["LivePhotos"] = 3] = "LivePhotos";
10
+ PhotoTag[PhotoTag["MotionPhotos"] = 4] = "MotionPhotos";
11
+ PhotoTag[PhotoTag["Selfies"] = 5] = "Selfies";
12
+ PhotoTag[PhotoTag["Portraits"] = 6] = "Portraits";
13
+ PhotoTag[PhotoTag["Bursts"] = 7] = "Bursts";
14
+ PhotoTag[PhotoTag["Panoramas"] = 8] = "Panoramas";
15
+ PhotoTag[PhotoTag["Raw"] = 9] = "Raw";
16
+ })(PhotoTag || (exports.PhotoTag = PhotoTag = {}));
3
17
  //# sourceMappingURL=interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/internal/photos/interface.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/internal/photos/interface.ts"],"names":[],"mappings":";;;AAwDA,IAAY,QAWX;AAXD,WAAY,QAAQ;IAChB,iDAAa,CAAA;IACb,qDAAe,CAAA;IACf,2CAAU,CAAA;IACV,mDAAc,CAAA;IACd,uDAAgB,CAAA;IAChB,6CAAW,CAAA;IACX,iDAAa,CAAA;IACb,2CAAU,CAAA;IACV,iDAAa,CAAA;IACb,qCAAO,CAAA;AACX,CAAC,EAXW,QAAQ,wBAAR,QAAQ,QAWnB"}
@@ -1,6 +1,7 @@
1
1
  import { DriveCrypto } from '../../crypto';
2
2
  import { Logger } from '../../interface';
3
3
  import { PhotosAPIService } from './apiService';
4
+ import { TimelineItem } from './interface';
4
5
  import { PhotosNodesAccess } from './nodes';
5
6
  import { PhotoSharesManager } from './shares';
6
7
  /**
@@ -13,10 +14,6 @@ export declare class PhotosTimeline {
13
14
  private photoShares;
14
15
  private nodesService;
15
16
  constructor(logger: Logger, apiService: PhotosAPIService, driveCrypto: DriveCrypto, photoShares: PhotoSharesManager, nodesService: PhotosNodesAccess);
16
- iterateTimeline(signal?: AbortSignal): AsyncGenerator<{
17
- nodeUid: string;
18
- captureTime: Date;
19
- tags: number[];
20
- }>;
17
+ iterateTimeline(signal?: AbortSignal): AsyncGenerator<TimelineItem>;
21
18
  findPhotoDuplicates(name: string, generateSha1: () => Promise<string>, signal?: AbortSignal): Promise<string[]>;
22
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/internal/photos/timeline.ts"],"names":[],"mappings":";;;AAEA,kCAAsC;AAKtC;;GAEG;AACH,MAAa,cAAc;IAEX;IACA;IACA;IACA;IACA;IALZ,YACY,MAAc,EACd,UAA4B,EAC5B,WAAwB,EACxB,WAA+B,EAC/B,YAA+B;QAJ/B,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAkB;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAoB;QAC/B,iBAAY,GAAZ,YAAY,CAAmB;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,CAAC,eAAe,CAAC,MAAoB;QAKvC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACzD,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY,EAAE,YAAmC,EAAE,MAAoB;QAC7F,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACrE,MAAM,WAAW,GAAG,IAAA,kBAAW,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7E,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,CAC1F,CAAC;QAEF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,qCAAqC,QAAQ,mBAAmB,WAAW,gBAAgB,QAAQ,EAAE,CACxG,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AA1DD,wCA0DC"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/internal/photos/timeline.ts"],"names":[],"mappings":";;;AAEA,kCAAsC;AAMtC;;GAEG;AACH,MAAa,cAAc;IAEX;IACA;IACA;IACA;IACA;IALZ,YACY,MAAc,EACd,UAA4B,EAC5B,WAAwB,EACxB,WAA+B,EAC/B,YAA+B;QAJ/B,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAkB;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAoB;QAC/B,iBAAY,GAAZ,YAAY,CAAmB;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,CAAC,eAAe,CAAC,MAAoB;QACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACzD,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY,EAAE,YAAmC,EAAE,MAAoB;QAC7F,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACrE,MAAM,WAAW,GAAG,IAAA,kBAAW,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7E,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,CAC1F,CAAC;QAEF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,qCAAqC,QAAQ,mBAAmB,WAAW,gBAAgB,QAAQ,EAAE,CACxG,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAtDD,wCAsDC"}
@@ -38,12 +38,13 @@ class PhotoStreamUploader extends streamUploader_1.StreamUploader {
38
38
  this.photoMetadata = metadata;
39
39
  }
40
40
  async commitFile(thumbnails) {
41
- this.verifyIntegrity(thumbnails);
41
+ const digests = this.digests.digests();
42
+ this.verifyIntegrity(thumbnails, digests);
42
43
  const extendedAttributes = {
43
44
  modificationTime: this.metadata.modificationTime,
44
45
  size: this.metadata.expectedSize,
45
46
  blockSizes: this.uploadedBlockSizes,
46
- digests: this.digests.digests(),
47
+ digests,
47
48
  };
48
49
  await this.photoUploadManager.commitDraftPhoto(this.revisionDraft, this.manifest, extendedAttributes, this.photoMetadata);
49
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/internal/photos/upload.ts"],"names":[],"mappings":";;;AAGA,oCAA0D;AAC1D,kCAA+C;AAC/C,qDAAwD;AAGxD,2DAA8D;AAC9D,yDAAsD;AAEtD,+CAAkD;AAClD,6DAA0D;AAiB1D,MAAa,iBAAkB,SAAQ,2BAAY;IACvC,eAAe,CAAwB;IACvC,YAAY,CAAqB;IACjC,aAAa,CAAsB;IAE3C,YACI,SAA0B,EAC1B,UAAiC,EACjC,aAAkC,EAClC,OAA2B,EAC3B,eAAuB,EACvB,IAAY,EACZ,QAA6B,EAC7B,QAAoB,EACpB,MAAoB;QAEpB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxG,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,iBAAiB,CAC7B,aAA4B,EAC5B,aAAgC,EAChC,QAA6C;QAE7C,OAAO,IAAI,mBAAmB,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,aAAa,EACb,aAAa,EACb,IAAI,CAAC,aAAa,EAClB,QAAQ,EACR,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,CACd,CAAC;IACN,CAAC;CACJ;AAxCD,8CAwCC;AAED,MAAa,mBAAoB,SAAQ,+BAAc;IAC3C,kBAAkB,CAAqB;IACvC,aAAa,CAAsB;IAE3C,YACI,SAA0B,EAC1B,UAAiC,EACjC,aAAkC,EAClC,aAAiC,EACjC,aAA4B,EAC5B,aAAgC,EAChC,QAA6B,EAC7B,QAA6C,EAC7C,UAA4B,EAC5B,MAAoB;QAEpB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACP,CAAC;QAED,KAAK,CACD,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,CAClB,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAuB;QACpC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEjC,MAAM,kBAAkB,GAAG;YACvB,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;YAChD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YAChC,UAAU,EAAE,IAAI,CAAC,kBAAkB;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;SAClC,CAAC;QAEF,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9H,CAAC;CACJ;AAnDD,kDAmDC;AAED,MAAa,kBAAmB,SAAQ,uBAAa;IACzC,eAAe,CAAwB;IACvC,kBAAkB,CAA2B;IAErD,YACI,SAA+B,EAC/B,UAAiC,EACjC,aAAuC,EACvC,YAA0B,EAC1B,SAA6B;QAE7B,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,iBAAoC,EACpC,QAAoB,EACpB,kBAOC,EACD,cAAmC;QAEnC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACtE,CAAC;QAED,4FAA4F;QAC5F,MAAM,2BAA2B,GAAG,IAAA,sCAA8B,EAAC,kBAAkB,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC1H,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CACxD,iBAAiB,CAAC,QAAQ,EAC1B,QAAQ,EACR,2BAA2B,CAC9B,CAAC;QAEF,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACvH,MAAM,KAAK,GAAG;YACV,WAAW;YACX,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,kBAAkB,CAAC,gBAAgB;YAC9E,eAAe,EAAE,cAAc,CAAC,eAAe;YAC/C,IAAI,EAAE,cAAc,CAAC,IAAI;SAC5B,CAAA;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxG,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC;CACJ;AApDD,gDAoDC;AAED,MAAa,wBAAyB,SAAQ,mCAAmB;IAC7D,YACI,WAAwB,EACxB,YAA0B;QAE1B,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY,EAAE,aAAyB;QAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;CACJ;AAXD,4DAWC;AAED,MAAa,qBAAsB,SAAQ,6BAAgB;IACvD,YAAY,UAA2B,EAAE,SAA6B;QAClE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,oBAA4B,EAC5B,OAIC,EACD,KAMC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,2BAAoB,EAAC,oBAAoB,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAIvB,oBAAoB,QAAQ,UAAU,MAAM,cAAc,UAAU,EAAE,EAAE;YACtE,iBAAiB,EAAE,OAAO,CAAC,wBAAwB;YACnD,gBAAgB,EAAE,OAAO,CAAC,cAAc;YACxC,KAAK,EAAE,OAAO,CAAC,yBAAyB,IAAI,IAAI;YAChD,KAAK,EAAE;gBACH,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpF,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;gBAC9C,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACtB,IAAI,EAAE,IAAI,EAAE,8BAA8B;aAC7C;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AAtCD,sDAsCC"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/internal/photos/upload.ts"],"names":[],"mappings":"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"}
@@ -63,7 +63,9 @@ export declare class StreamUploader {
63
63
  private limitUploadCapacity;
64
64
  private waitForBufferCapacity;
65
65
  private waitForUploadCapacityAndBufferedBlocks;
66
- protected verifyIntegrity(thumbnails: Thumbnail[]): void;
66
+ protected verifyIntegrity(thumbnails: Thumbnail[], digests: {
67
+ sha1: string;
68
+ }): void;
67
69
  /**
68
70
  * Check if the encryption is fully finished.
69
71
  * This means that all blocks and thumbnails have been encrypted and
@@ -174,12 +174,13 @@ class StreamUploader {
174
174
  await Promise.all(this.ongoingUploads.values().map(({ uploadPromise }) => uploadPromise));
175
175
  }
176
176
  async commitFile(thumbnails) {
177
- this.verifyIntegrity(thumbnails);
177
+ const digests = this.digests.digests();
178
+ this.verifyIntegrity(thumbnails, digests);
178
179
  const extendedAttributes = {
179
180
  modificationTime: this.metadata.modificationTime,
180
181
  size: this.metadata.expectedSize,
181
182
  blockSizes: this.uploadedBlockSizes,
182
- digests: this.digests.digests(),
183
+ digests,
183
184
  };
184
185
  await this.uploadManager.commitDraft(this.revisionDraft, this.manifest, extendedAttributes, this.metadata.additionalMetadata);
185
186
  }
@@ -466,7 +467,7 @@ class StreamUploader {
466
467
  throw error;
467
468
  }
468
469
  }
469
- verifyIntegrity(thumbnails) {
470
+ verifyIntegrity(thumbnails, digests) {
470
471
  const expectedBlockCount = Math.ceil(this.metadata.expectedSize / exports.FILE_CHUNK_SIZE) + (thumbnails ? thumbnails?.length : 0);
471
472
  if (this.uploadedBlockCount !== expectedBlockCount) {
472
473
  throw new errors_1.IntegrityError((0, ttag_1.c)('Error').t `Some file parts failed to upload`, {
@@ -480,6 +481,12 @@ class StreamUploader {
480
481
  expectedFileSize: this.metadata.expectedSize,
481
482
  });
482
483
  }
484
+ if (this.metadata.expectedSha1 && digests.sha1 !== this.metadata.expectedSha1) {
485
+ throw new errors_1.IntegrityError((0, ttag_1.c)('Error').t `File hash does not match expected hash`, {
486
+ uploadedSha1: digests.sha1,
487
+ expectedSha1: this.metadata.expectedSha1,
488
+ });
489
+ }
483
490
  }
484
491
  /**
485
492
  * Check if the encryption is fully finished.