@protontech/drive-sdk 0.9.8 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/crypto/driveCrypto.d.ts +15 -15
  2. package/dist/crypto/driveCrypto.js.map +1 -1
  3. package/dist/crypto/hmac.d.ts +3 -3
  4. package/dist/crypto/hmac.js.map +1 -1
  5. package/dist/crypto/interface.d.ts +45 -25
  6. package/dist/crypto/interface.js.map +1 -1
  7. package/dist/crypto/openPGPCrypto.d.ts +37 -37
  8. package/dist/crypto/openPGPCrypto.js.map +1 -1
  9. package/dist/crypto/utils.d.ts +1 -1
  10. package/dist/interface/index.d.ts +3 -3
  11. package/dist/interface/index.js.map +1 -1
  12. package/dist/interface/nodes.d.ts +8 -0
  13. package/dist/interface/photos.d.ts +18 -1
  14. package/dist/interface/sharing.d.ts +2 -0
  15. package/dist/interface/telemetry.d.ts +1 -0
  16. package/dist/interface/telemetry.js.map +1 -1
  17. package/dist/interface/thumbnail.d.ts +2 -2
  18. package/dist/internal/apiService/apiService.js +25 -12
  19. package/dist/internal/apiService/apiService.js.map +1 -1
  20. package/dist/internal/apiService/apiService.test.js +33 -5
  21. package/dist/internal/apiService/apiService.test.js.map +1 -1
  22. package/dist/internal/apiService/driveTypes.d.ts +2942 -3187
  23. package/dist/internal/apiService/errors.test.js +17 -7
  24. package/dist/internal/apiService/errors.test.js.map +1 -1
  25. package/dist/internal/devices/manager.d.ts +1 -0
  26. package/dist/internal/devices/manager.js +11 -0
  27. package/dist/internal/devices/manager.js.map +1 -1
  28. package/dist/internal/download/apiService.d.ts +1 -1
  29. package/dist/internal/download/cryptoService.d.ts +4 -4
  30. package/dist/internal/download/cryptoService.js.map +1 -1
  31. package/dist/internal/download/fileDownloader.js.map +1 -1
  32. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  33. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  34. package/dist/internal/nodes/cryptoService.d.ts +4 -4
  35. package/dist/internal/nodes/cryptoService.js +5 -3
  36. package/dist/internal/nodes/cryptoService.js.map +1 -1
  37. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  38. package/dist/internal/nodes/interface.d.ts +1 -1
  39. package/dist/internal/nodes/nodesManagement.js +0 -1
  40. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  41. package/dist/internal/photos/addToAlbum.d.ts +46 -0
  42. package/dist/internal/photos/addToAlbum.js +257 -0
  43. package/dist/internal/photos/addToAlbum.js.map +1 -0
  44. package/dist/internal/photos/addToAlbum.test.d.ts +1 -0
  45. package/dist/internal/photos/addToAlbum.test.js +409 -0
  46. package/dist/internal/photos/addToAlbum.test.js.map +1 -0
  47. package/dist/internal/photos/albums.d.ts +7 -2
  48. package/dist/internal/photos/albums.js +24 -1
  49. package/dist/internal/photos/albums.js.map +1 -1
  50. package/dist/internal/photos/albums.test.js +26 -1
  51. package/dist/internal/photos/albums.test.js.map +1 -1
  52. package/dist/internal/photos/albumsCrypto.d.ts +20 -3
  53. package/dist/internal/photos/albumsCrypto.js +27 -0
  54. package/dist/internal/photos/albumsCrypto.js.map +1 -1
  55. package/dist/internal/photos/apiService.d.ts +20 -0
  56. package/dist/internal/photos/apiService.js +142 -0
  57. package/dist/internal/photos/apiService.js.map +1 -1
  58. package/dist/internal/photos/apiService.test.d.ts +1 -0
  59. package/dist/internal/photos/apiService.test.js +199 -0
  60. package/dist/internal/photos/apiService.test.js.map +1 -0
  61. package/dist/internal/photos/errors.d.ts +4 -0
  62. package/dist/internal/photos/errors.js +17 -0
  63. package/dist/internal/photos/errors.js.map +1 -0
  64. package/dist/internal/photos/index.d.ts +1 -1
  65. package/dist/internal/photos/index.js +1 -1
  66. package/dist/internal/photos/index.js.map +1 -1
  67. package/dist/internal/photos/interface.d.ts +36 -1
  68. package/dist/internal/photos/interface.js +14 -0
  69. package/dist/internal/photos/interface.js.map +1 -1
  70. package/dist/internal/photos/nodes.js +32 -2
  71. package/dist/internal/photos/nodes.js.map +1 -1
  72. package/dist/internal/photos/nodes.test.js +25 -5
  73. package/dist/internal/photos/nodes.test.js.map +1 -1
  74. package/dist/internal/photos/timeline.d.ts +2 -5
  75. package/dist/internal/photos/timeline.js.map +1 -1
  76. package/dist/internal/photos/upload.d.ts +2 -2
  77. package/dist/internal/photos/upload.js.map +1 -1
  78. package/dist/internal/shares/apiService.js +1 -0
  79. package/dist/internal/shares/apiService.js.map +1 -1
  80. package/dist/internal/shares/interface.d.ts +1 -0
  81. package/dist/internal/sharing/apiService.d.ts +8 -1
  82. package/dist/internal/sharing/apiService.js +23 -1
  83. package/dist/internal/sharing/apiService.js.map +1 -1
  84. package/dist/internal/sharing/cryptoService.js +8 -4
  85. package/dist/internal/sharing/cryptoService.js.map +1 -1
  86. package/dist/internal/sharing/sharingManagement.d.ts +1 -0
  87. package/dist/internal/sharing/sharingManagement.js +15 -2
  88. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  89. package/dist/internal/sharing/sharingManagement.test.js +30 -5
  90. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  91. package/dist/internal/sharingPublic/nodes.d.ts +2 -2
  92. package/dist/internal/sharingPublic/nodes.js.map +1 -1
  93. package/dist/internal/upload/apiService.d.ts +5 -5
  94. package/dist/internal/upload/apiService.js.map +1 -1
  95. package/dist/internal/upload/blockVerifier.d.ts +2 -2
  96. package/dist/internal/upload/blockVerifier.js.map +1 -1
  97. package/dist/internal/upload/chunkStreamReader.d.ts +2 -2
  98. package/dist/internal/upload/chunkStreamReader.js.map +1 -1
  99. package/dist/internal/upload/chunkStreamReader.test.js.map +1 -1
  100. package/dist/internal/upload/cryptoService.d.ts +7 -7
  101. package/dist/internal/upload/cryptoService.js.map +1 -1
  102. package/dist/internal/upload/interface.d.ts +6 -6
  103. package/dist/internal/upload/manager.d.ts +1 -1
  104. package/dist/internal/upload/manager.js.map +1 -1
  105. package/dist/internal/upload/streamUploader.d.ts +1 -1
  106. package/dist/internal/utils.d.ts +1 -1
  107. package/dist/protonDriveClient.d.ts +8 -0
  108. package/dist/protonDriveClient.js +11 -0
  109. package/dist/protonDriveClient.js.map +1 -1
  110. package/dist/protonDrivePhotosClient.d.ts +42 -7
  111. package/dist/protonDrivePhotosClient.js +50 -2
  112. package/dist/protonDrivePhotosClient.js.map +1 -1
  113. package/dist/protonDrivePublicLinkClient.d.ts +9 -0
  114. package/dist/protonDrivePublicLinkClient.js +12 -0
  115. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  116. package/dist/transformers.js +2 -0
  117. package/dist/transformers.js.map +1 -1
  118. package/package.json +4 -4
  119. package/src/crypto/driveCrypto.ts +15 -15
  120. package/src/crypto/hmac.ts +4 -4
  121. package/src/crypto/interface.ts +58 -27
  122. package/src/crypto/openPGPCrypto.ts +26 -26
  123. package/src/interface/index.ts +10 -2
  124. package/src/interface/nodes.ts +1 -0
  125. package/src/interface/photos.ts +19 -1
  126. package/src/interface/sharing.ts +2 -0
  127. package/src/interface/telemetry.ts +1 -0
  128. package/src/interface/thumbnail.ts +2 -2
  129. package/src/internal/apiService/apiService.test.ts +38 -6
  130. package/src/internal/apiService/apiService.ts +33 -12
  131. package/src/internal/apiService/driveTypes.ts +2942 -3187
  132. package/src/internal/devices/manager.ts +14 -0
  133. package/src/internal/download/apiService.ts +1 -1
  134. package/src/internal/download/cryptoService.ts +4 -4
  135. package/src/internal/download/fileDownloader.test.ts +4 -4
  136. package/src/internal/download/fileDownloader.ts +6 -6
  137. package/src/internal/download/thumbnailDownloader.ts +4 -4
  138. package/src/internal/nodes/cryptoService.test.ts +2 -2
  139. package/src/internal/nodes/cryptoService.ts +11 -8
  140. package/src/internal/nodes/interface.ts +1 -1
  141. package/src/internal/nodes/nodesManagement.ts +0 -1
  142. package/src/internal/photos/addToAlbum.test.ts +515 -0
  143. package/src/internal/photos/addToAlbum.ts +341 -0
  144. package/src/internal/photos/albums.test.ts +46 -22
  145. package/src/internal/photos/albums.ts +48 -2
  146. package/src/internal/photos/albumsCrypto.ts +54 -3
  147. package/src/internal/photos/apiService.test.ts +233 -0
  148. package/src/internal/photos/apiService.ts +234 -15
  149. package/src/internal/photos/errors.ts +11 -0
  150. package/src/internal/photos/index.ts +2 -2
  151. package/src/internal/photos/interface.ts +40 -1
  152. package/src/internal/photos/nodes.test.ts +27 -6
  153. package/src/internal/photos/nodes.ts +34 -2
  154. package/src/internal/photos/timeline.ts +2 -5
  155. package/src/internal/photos/upload.ts +2 -2
  156. package/src/internal/shares/apiService.ts +1 -0
  157. package/src/internal/shares/interface.ts +1 -0
  158. package/src/internal/sharing/apiService.ts +49 -5
  159. package/src/internal/sharing/cryptoService.ts +10 -4
  160. package/src/internal/sharing/sharingManagement.test.ts +33 -5
  161. package/src/internal/sharing/sharingManagement.ts +28 -6
  162. package/src/internal/sharingPublic/nodes.ts +1 -1
  163. package/src/internal/upload/apiService.ts +5 -5
  164. package/src/internal/upload/blockVerifier.ts +3 -3
  165. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  166. package/src/internal/upload/chunkStreamReader.ts +3 -3
  167. package/src/internal/upload/cryptoService.ts +9 -9
  168. package/src/internal/upload/interface.ts +6 -6
  169. package/src/internal/upload/manager.ts +2 -2
  170. package/src/internal/upload/streamUploader.ts +1 -1
  171. package/src/protonDriveClient.ts +15 -3
  172. package/src/protonDrivePhotosClient.ts +78 -22
  173. package/src/protonDrivePublicLinkClient.ts +13 -0
  174. package/src/transformers.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protontech/drive-sdk",
3
- "version": "0.9.8",
3
+ "version": "0.10.0",
4
4
  "description": "Proton Drive SDK",
5
5
  "license": "GPL-3.0",
6
6
  "main": "dist/index.js",
@@ -34,7 +34,7 @@
34
34
  "@swc/jest": "^0.2.38",
35
35
  "@types/jest": "^29.5.14",
36
36
  "@types/mocha": "^10.0.10",
37
- "@typescript-eslint/eslint-plugin": "^8.19.1",
37
+ "@typescript-eslint/eslint-plugin": "^8.53.1",
38
38
  "@web/dev-server-esbuild": "^1.0.3",
39
39
  "eslint": "^8.57.1",
40
40
  "eslint-plugin-tsdoc": "^0.3.0",
@@ -43,7 +43,7 @@
43
43
  "openapi-typescript": "^7.4.1",
44
44
  "prettier": "^3.6.2",
45
45
  "ttag-cli": "^1.10.18",
46
- "typedoc": "^0.26.11",
47
- "typescript": "^5.6.3"
46
+ "typedoc": "^0.28.16",
47
+ "typescript": "^5.9.3"
48
48
  }
49
49
  }
@@ -343,7 +343,7 @@ export class DriveCrypto {
343
343
  * It encrypts and armors signature with provided session and encryption keys.
344
344
  */
345
345
  async encryptSignature(
346
- signature: Uint8Array,
346
+ signature: Uint8Array<ArrayBuffer>,
347
347
  encryptionKey: PrivateKey,
348
348
  sessionKey: SessionKey,
349
349
  ): Promise<{
@@ -365,7 +365,7 @@ export class DriveCrypto {
365
365
  */
366
366
  async generateHashKey(encryptionAndSigningKey: PrivateKey): Promise<{
367
367
  armoredHashKey: string;
368
- hashKey: Uint8Array;
368
+ hashKey: Uint8Array<ArrayBuffer>;
369
369
  }> {
370
370
  // Once all clients can use non-ascii bytes, switch to simple
371
371
  // generating of random bytes without encoding it into base64:
@@ -385,7 +385,7 @@ export class DriveCrypto {
385
385
  };
386
386
  }
387
387
 
388
- async generateLookupHash(newName: string, parentHashKey: Uint8Array): Promise<string> {
388
+ async generateLookupHash(newName: string, parentHashKey: Uint8Array<ArrayBuffer>): Promise<string> {
389
389
  const key = await importHmacKey(parentHashKey);
390
390
 
391
391
  const signature = await computeHmacSignature(key, new TextEncoder().encode(newName));
@@ -461,7 +461,7 @@ export class DriveCrypto {
461
461
  decryptionAndVerificationKey: PrivateKey,
462
462
  extraVerificationKeys: PublicKey[],
463
463
  ): Promise<{
464
- hashKey: Uint8Array;
464
+ hashKey: Uint8Array<ArrayBuffer>;
465
465
  verified: VERIFICATION_STATUS;
466
466
  verificationErrors?: Error[];
467
467
  }> {
@@ -611,11 +611,11 @@ export class DriveCrypto {
611
611
  }
612
612
 
613
613
  async encryptThumbnailBlock(
614
- thumbnailData: Uint8Array,
614
+ thumbnailData: Uint8Array<ArrayBuffer>,
615
615
  sessionKey: SessionKey,
616
616
  signingKey: PrivateKey,
617
617
  ): Promise<{
618
- encryptedData: Uint8Array;
618
+ encryptedData: Uint8Array<ArrayBuffer>;
619
619
  }> {
620
620
  const { encryptedData } = await this.openPGPCrypto.encryptAndSign(
621
621
  thumbnailData,
@@ -630,11 +630,11 @@ export class DriveCrypto {
630
630
  }
631
631
 
632
632
  async decryptThumbnailBlock(
633
- encryptedThumbnail: Uint8Array,
633
+ encryptedThumbnail: Uint8Array<ArrayBuffer>,
634
634
  sessionKey: SessionKey,
635
635
  verificationKeys: PublicKey[],
636
636
  ): Promise<{
637
- decryptedThumbnail: Uint8Array;
637
+ decryptedThumbnail: Uint8Array<ArrayBuffer>;
638
638
  verified: VERIFICATION_STATUS;
639
639
  verificationErrors?: Error[];
640
640
  }> {
@@ -651,12 +651,12 @@ export class DriveCrypto {
651
651
  }
652
652
 
653
653
  async encryptBlock(
654
- blockData: Uint8Array,
654
+ blockData: Uint8Array<ArrayBuffer>,
655
655
  encryptionKey: PrivateKey,
656
656
  sessionKey: SessionKey,
657
657
  signingKey: PrivateKey,
658
658
  ): Promise<{
659
- encryptedData: Uint8Array;
659
+ encryptedData: Uint8Array<ArrayBuffer>;
660
660
  armoredSignature: string;
661
661
  }> {
662
662
  const { encryptedData, signature } = await this.openPGPCrypto.encryptAndSignDetached(
@@ -674,14 +674,14 @@ export class DriveCrypto {
674
674
  };
675
675
  }
676
676
 
677
- async decryptBlock(encryptedBlock: Uint8Array, sessionKey: SessionKey): Promise<Uint8Array> {
677
+ async decryptBlock(encryptedBlock: Uint8Array<ArrayBuffer>, sessionKey: SessionKey): Promise<Uint8Array<ArrayBuffer>> {
678
678
  const { data: decryptedBlock } = await this.openPGPCrypto.decryptAndVerify(encryptedBlock, sessionKey, []);
679
679
 
680
680
  return decryptedBlock;
681
681
  }
682
682
 
683
683
  async signManifest(
684
- manifest: Uint8Array,
684
+ manifest: Uint8Array<ArrayBuffer>,
685
685
  signingKey: PrivateKey,
686
686
  ): Promise<{
687
687
  armoredManifestSignature: string;
@@ -693,7 +693,7 @@ export class DriveCrypto {
693
693
  }
694
694
 
695
695
  async verifyManifest(
696
- manifest: Uint8Array,
696
+ manifest: Uint8Array<ArrayBuffer>,
697
697
  armoredSignature: string,
698
698
  verificationKeys: PublicKey | PublicKey[],
699
699
  ): Promise<{
@@ -727,7 +727,7 @@ export class DriveCrypto {
727
727
  }
728
728
  }
729
729
 
730
- export function uint8ArrayToUtf8(input: Uint8Array): string {
730
+ export function uint8ArrayToUtf8(input: Uint8Array<ArrayBuffer>): string {
731
731
  return new TextDecoder('utf-8', { fatal: true }).decode(input);
732
732
  }
733
733
 
@@ -736,7 +736,7 @@ export function uint8ArrayToUtf8(input: Uint8Array): string {
736
736
  * @param bytes - Array of 8-bit integers to convert
737
737
  * @returns Hexadecimal representation of the array
738
738
  */
739
- export const arrayToHexString = (bytes: Uint8Array) => {
739
+ export const arrayToHexString = (bytes: Uint8Array<ArrayBuffer>) => {
740
740
  const hexAlphabet = '0123456789abcdef';
741
741
  let s = '';
742
742
  bytes.forEach((v) => {
@@ -8,7 +8,7 @@ type HmacKeyUsage = 'sign' | 'verify';
8
8
  * Import an HMAC-SHA256 key in order to use it with `signData` and `verifyData`.
9
9
  */
10
10
  export const importHmacKey = async (
11
- key: Uint8Array,
11
+ key: Uint8Array<ArrayBuffer>,
12
12
  keyUsage: HmacKeyUsage[] = ['sign', 'verify'],
13
13
  ): Promise<HmacCryptoKey> => {
14
14
  // From https://datatracker.ietf.org/doc/html/rfc2104:
@@ -29,9 +29,9 @@ export const importHmacKey = async (
29
29
  * @param data - data to sign
30
30
  * @param additionalData - additional data to authenticate
31
31
  */
32
- export const computeHmacSignature = async (key: HmacCryptoKey, data: Uint8Array) => {
32
+ export const computeHmacSignature = async (key: HmacCryptoKey, data: Uint8Array<ArrayBuffer>) => {
33
33
  const signatureBuffer = await crypto.subtle.sign({ name: 'HMAC', hash: HASH_ALGORITHM }, key, data);
34
- return new Uint8Array(signatureBuffer);
34
+ return new Uint8Array<ArrayBuffer>(signatureBuffer);
35
35
  };
36
36
 
37
37
  /**
@@ -41,6 +41,6 @@ export const computeHmacSignature = async (key: HmacCryptoKey, data: Uint8Array)
41
41
  * @param data - data to verify
42
42
  * @param additionalData - additional data to authenticate
43
43
  */
44
- export const verifyData = async (key: HmacCryptoKey, signature: Uint8Array, data: Uint8Array) => {
44
+ export const verifyData = async (key: HmacCryptoKey, signature: Uint8Array<ArrayBuffer>, data: Uint8Array<ArrayBuffer>) => {
45
45
  return crypto.subtle.verify({ name: 'HMAC', hash: HASH_ALGORITHM }, key, signature, data);
46
46
  };
@@ -2,6 +2,35 @@
2
2
  export interface PublicKey {
3
3
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
4
  readonly _idx: any;
5
+ readonly _keyContentHash: [string, string];
6
+
7
+ getVersion(): number;
8
+ getFingerprint(): string;
9
+ getSHA256Fingerprints(): string[];
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ getKeyID(): any;
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ getKeyIDs(): any[];
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ getAlgorithmInfo(): any;
16
+ getCreationTime(): Date;
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ isPrivate: any;
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ isPrivateKeyV4: any;
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ isPrivateKeyV6: any;
23
+ getExpirationTime(): Date | number | null;
24
+ getUserIDs(): string[];
25
+ isWeak(): boolean;
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ equals(otherKey: any, ignoreOtherCerts?: boolean): boolean;
28
+ subkeys: {
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ getAlgorithmInfo(): any;
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ getKeyID(): any;
33
+ }[];
5
34
  }
6
35
 
7
36
  export interface PrivateKey extends PublicKey {
@@ -9,7 +38,9 @@ export interface PrivateKey extends PublicKey {
9
38
  }
10
39
 
11
40
  export interface SessionKey {
12
- data: Uint8Array;
41
+ data: Uint8Array<ArrayBuffer>;
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ algorithm: any;
13
44
  }
14
45
 
15
46
  export enum VERIFICATION_STATUS {
@@ -66,14 +97,14 @@ export interface OpenPGPCrypto {
66
97
  sessionKey: SessionKey,
67
98
  encryptionKeys: PublicKey | PublicKey[],
68
99
  ) => Promise<{
69
- keyPacket: Uint8Array;
100
+ keyPacket: Uint8Array<ArrayBuffer>;
70
101
  }>;
71
102
 
72
103
  encryptSessionKeyWithPassword: (
73
104
  sessionKey: SessionKey,
74
105
  password: string,
75
106
  ) => Promise<{
76
- keyPacket: Uint8Array;
107
+ keyPacket: Uint8Array<ArrayBuffer>;
77
108
  }>;
78
109
 
79
110
  /**
@@ -87,7 +118,7 @@ export interface OpenPGPCrypto {
87
118
  }>;
88
119
 
89
120
  encryptArmored: (
90
- data: Uint8Array,
121
+ data: Uint8Array<ArrayBuffer>,
91
122
  encryptionKeys: PublicKey[],
92
123
  sessionKey?: SessionKey,
93
124
  ) => Promise<{
@@ -95,16 +126,16 @@ export interface OpenPGPCrypto {
95
126
  }>;
96
127
 
97
128
  encryptAndSign: (
98
- data: Uint8Array,
129
+ data: Uint8Array<ArrayBuffer>,
99
130
  sessionKey: SessionKey,
100
131
  encryptionKeys: PublicKey[],
101
132
  signingKey: PrivateKey,
102
133
  ) => Promise<{
103
- encryptedData: Uint8Array;
134
+ encryptedData: Uint8Array<ArrayBuffer>;
104
135
  }>;
105
136
 
106
137
  encryptAndSignArmored: (
107
- data: Uint8Array,
138
+ data: Uint8Array<ArrayBuffer>,
108
139
  sessionKey: SessionKey | undefined,
109
140
  encryptionKeys: PublicKey[],
110
141
  signingKey: PrivateKey,
@@ -114,17 +145,17 @@ export interface OpenPGPCrypto {
114
145
  }>;
115
146
 
116
147
  encryptAndSignDetached: (
117
- data: Uint8Array,
148
+ data: Uint8Array<ArrayBuffer>,
118
149
  sessionKey: SessionKey,
119
150
  encryptionKeys: PublicKey[],
120
151
  signingKey: PrivateKey,
121
152
  ) => Promise<{
122
- encryptedData: Uint8Array;
123
- signature: Uint8Array;
153
+ encryptedData: Uint8Array<ArrayBuffer>;
154
+ signature: Uint8Array<ArrayBuffer>;
124
155
  }>;
125
156
 
126
157
  encryptAndSignDetachedArmored: (
127
- data: Uint8Array,
158
+ data: Uint8Array<ArrayBuffer>,
128
159
  sessionKey: SessionKey,
129
160
  encryptionKeys: PublicKey[],
130
161
  signingKey: PrivateKey,
@@ -134,23 +165,23 @@ export interface OpenPGPCrypto {
134
165
  }>;
135
166
 
136
167
  sign: (
137
- data: Uint8Array,
168
+ data: Uint8Array<ArrayBuffer>,
138
169
  signingKey: PrivateKey,
139
170
  signatureContext: string,
140
171
  ) => Promise<{
141
- signature: Uint8Array;
172
+ signature: Uint8Array<ArrayBuffer>;
142
173
  }>;
143
174
 
144
175
  signArmored: (
145
- data: Uint8Array,
176
+ data: Uint8Array<ArrayBuffer>,
146
177
  signingKey: PrivateKey | PrivateKey[],
147
178
  ) => Promise<{
148
179
  signature: string;
149
180
  }>;
150
181
 
151
182
  verify: (
152
- data: Uint8Array,
153
- signature: Uint8Array,
183
+ data: Uint8Array<ArrayBuffer>,
184
+ signature: Uint8Array<ArrayBuffer>,
154
185
  verificationKeys: PublicKey | PublicKey[],
155
186
  ) => Promise<{
156
187
  verified: VERIFICATION_STATUS;
@@ -158,7 +189,7 @@ export interface OpenPGPCrypto {
158
189
  }>;
159
190
 
160
191
  verifyArmored: (
161
- data: Uint8Array,
192
+ data: Uint8Array<ArrayBuffer>,
162
193
  armoredSignature: string,
163
194
  verificationKeys: PublicKey | PublicKey[],
164
195
  signatureContext?: string,
@@ -167,41 +198,41 @@ export interface OpenPGPCrypto {
167
198
  verificationErrors?: Error[];
168
199
  }>;
169
200
 
170
- decryptSessionKey: (data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
201
+ decryptSessionKey: (data: Uint8Array<ArrayBuffer>, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
171
202
 
172
203
  decryptArmoredSessionKey: (armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
173
204
 
174
205
  decryptKey: (armoredKey: string, passphrase: string) => Promise<PrivateKey>;
175
206
 
176
207
  decryptAndVerify(
177
- data: Uint8Array,
208
+ data: Uint8Array<ArrayBuffer>,
178
209
  sessionKey: SessionKey,
179
210
  verificationKeys: PublicKey | PublicKey[],
180
211
  ): Promise<{
181
- data: Uint8Array;
212
+ data: Uint8Array<ArrayBuffer>;
182
213
  verified: VERIFICATION_STATUS;
183
214
  verificationErrors?: Error[];
184
215
  }>;
185
216
 
186
217
  decryptAndVerifyDetached(
187
- data: Uint8Array,
188
- signature: Uint8Array | undefined,
218
+ data: Uint8Array<ArrayBuffer>,
219
+ signature: Uint8Array<ArrayBuffer> | undefined,
189
220
  sessionKey: SessionKey,
190
221
  verificationKeys?: PublicKey | PublicKey[],
191
222
  ): Promise<{
192
- data: Uint8Array;
223
+ data: Uint8Array<ArrayBuffer>;
193
224
  verified: VERIFICATION_STATUS;
194
225
  verificationErrors?: Error[];
195
226
  }>;
196
227
 
197
- decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<Uint8Array>;
228
+ decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<Uint8Array<ArrayBuffer>>;
198
229
 
199
230
  decryptArmoredAndVerify: (
200
231
  armoredData: string,
201
232
  decryptionKeys: PrivateKey | PrivateKey[],
202
233
  verificationKeys: PublicKey | PublicKey[],
203
234
  ) => Promise<{
204
- data: Uint8Array;
235
+ data: Uint8Array<ArrayBuffer>;
205
236
  verified: VERIFICATION_STATUS;
206
237
  verificationErrors?: Error[];
207
238
  }>;
@@ -212,10 +243,10 @@ export interface OpenPGPCrypto {
212
243
  sessionKey: SessionKey,
213
244
  verificationKeys: PublicKey | PublicKey[],
214
245
  ) => Promise<{
215
- data: Uint8Array;
246
+ data: Uint8Array<ArrayBuffer>;
216
247
  verified: VERIFICATION_STATUS;
217
248
  verificationErrors?: Error[];
218
249
  }>;
219
250
 
220
- decryptArmoredWithPassword(armoredData: string, password: string): Promise<Uint8Array>;
251
+ decryptArmoredWithPassword(armoredData: string, password: string): Promise<Uint8Array<ArrayBuffer>>;
221
252
  }
@@ -18,15 +18,15 @@ export interface OpenPGPCryptoProxy {
18
18
  encryptionKeys?: PublicKey | PublicKey[];
19
19
  passwords?: string[];
20
20
  },
21
- ) => Promise<Uint8Array>;
21
+ ) => Promise<Uint8Array<ArrayBuffer>>;
22
22
  decryptSessionKey: (options: {
23
23
  armoredMessage?: string;
24
- binaryMessage?: Uint8Array;
24
+ binaryMessage?: Uint8Array<ArrayBuffer>;
25
25
  decryptionKeys: PrivateKey | PrivateKey[];
26
26
  }) => Promise<SessionKey | undefined>;
27
27
  encryptMessage: <Format extends 'armored' | 'binary' = 'armored', Detached extends boolean = false>(options: {
28
28
  format?: Format;
29
- binaryData: Uint8Array;
29
+ binaryData: Uint8Array<ArrayBuffer>;
30
30
  sessionKey?: SessionKey;
31
31
  encryptionKeys: PublicKey[];
32
32
  signingKeys?: PrivateKey;
@@ -35,39 +35,39 @@ export interface OpenPGPCryptoProxy {
35
35
  }) => Promise<
36
36
  Detached extends true
37
37
  ? {
38
- message: Format extends 'binary' ? Uint8Array : string;
39
- signature: Format extends 'binary' ? Uint8Array : string;
38
+ message: Format extends 'binary' ? Uint8Array<ArrayBuffer> : string;
39
+ signature: Format extends 'binary' ? Uint8Array<ArrayBuffer> : string;
40
40
  }
41
41
  : {
42
- message: Format extends 'binary' ? Uint8Array : string;
42
+ message: Format extends 'binary' ? Uint8Array<ArrayBuffer> : string;
43
43
  }
44
44
  >;
45
45
  decryptMessage: <Format extends 'utf8' | 'binary' = 'utf8'>(options: {
46
46
  format: Format;
47
47
  armoredMessage?: string;
48
- binaryMessage?: Uint8Array;
48
+ binaryMessage?: Uint8Array<ArrayBuffer>;
49
49
  armoredSignature?: string;
50
- binarySignature?: Uint8Array;
50
+ binarySignature?: Uint8Array<ArrayBuffer>;
51
51
  sessionKeys?: SessionKey;
52
52
  passwords?: string[];
53
53
  decryptionKeys?: PrivateKey | PrivateKey[];
54
54
  verificationKeys?: PublicKey | PublicKey[];
55
55
  }) => Promise<{
56
- data: Format extends 'binary' ? Uint8Array : string;
56
+ data: Format extends 'binary' ? Uint8Array<ArrayBuffer> : string;
57
57
  verificationStatus: VERIFICATION_STATUS;
58
58
  verificationErrors?: Error[];
59
59
  }>;
60
60
  signMessage: <Format extends 'binary' | 'armored' = 'armored'>(options: {
61
61
  format: Format;
62
- binaryData: Uint8Array;
62
+ binaryData: Uint8Array<ArrayBuffer>;
63
63
  signingKeys: PrivateKey | PrivateKey[];
64
64
  detached: boolean;
65
65
  signatureContext?: { critical: boolean; value: string };
66
- }) => Promise<Format extends 'binary' ? Uint8Array : string>;
66
+ }) => Promise<Format extends 'binary' ? Uint8Array<ArrayBuffer> : string>;
67
67
  verifyMessage: (options: {
68
- binaryData: Uint8Array;
68
+ binaryData: Uint8Array<ArrayBuffer>;
69
69
  armoredSignature?: string;
70
- binarySignature?: Uint8Array;
70
+ binarySignature?: Uint8Array<ArrayBuffer>;
71
71
  verificationKeys: PublicKey | PublicKey[];
72
72
  signatureContext?: { critical: boolean; value: string };
73
73
  }) => Promise<{
@@ -137,7 +137,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
137
137
  };
138
138
  }
139
139
 
140
- async encryptArmored(data: Uint8Array, encryptionKeys: PublicKey[], sessionKey?: SessionKey) {
140
+ async encryptArmored(data: Uint8Array<ArrayBuffer>, encryptionKeys: PublicKey[], sessionKey?: SessionKey) {
141
141
  const { message: armoredData } = await this.cryptoProxy.encryptMessage({
142
142
  binaryData: data,
143
143
  sessionKey,
@@ -149,7 +149,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
149
149
  }
150
150
 
151
151
  async encryptAndSign(
152
- data: Uint8Array,
152
+ data: Uint8Array<ArrayBuffer>,
153
153
  sessionKey: SessionKey,
154
154
  encryptionKeys: PublicKey[],
155
155
  signingKey: PrivateKey,
@@ -168,7 +168,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
168
168
  }
169
169
 
170
170
  async encryptAndSignArmored(
171
- data: Uint8Array,
171
+ data: Uint8Array<ArrayBuffer>,
172
172
  sessionKey: SessionKey | undefined,
173
173
  encryptionKeys: PublicKey[],
174
174
  signingKey: PrivateKey,
@@ -188,7 +188,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
188
188
  }
189
189
 
190
190
  async encryptAndSignDetached(
191
- data: Uint8Array,
191
+ data: Uint8Array<ArrayBuffer>,
192
192
  sessionKey: SessionKey,
193
193
  encryptionKeys: PublicKey[],
194
194
  signingKey: PrivateKey,
@@ -208,7 +208,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
208
208
  }
209
209
 
210
210
  async encryptAndSignDetachedArmored(
211
- data: Uint8Array,
211
+ data: Uint8Array<ArrayBuffer>,
212
212
  sessionKey: SessionKey,
213
213
  encryptionKeys: PublicKey[],
214
214
  signingKey: PrivateKey,
@@ -226,7 +226,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
226
226
  };
227
227
  }
228
228
 
229
- async sign(data: Uint8Array, signingKeys: PrivateKey | PrivateKey[], signatureContext: string) {
229
+ async sign(data: Uint8Array<ArrayBuffer>, signingKeys: PrivateKey | PrivateKey[], signatureContext: string) {
230
230
  const signature = await this.cryptoProxy.signMessage({
231
231
  binaryData: data,
232
232
  signingKeys,
@@ -239,7 +239,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
239
239
  };
240
240
  }
241
241
 
242
- async signArmored(data: Uint8Array, signingKeys: PrivateKey | PrivateKey[]) {
242
+ async signArmored(data: Uint8Array<ArrayBuffer>, signingKeys: PrivateKey | PrivateKey[]) {
243
243
  const signature = await this.cryptoProxy.signMessage({
244
244
  binaryData: data,
245
245
  signingKeys,
@@ -251,7 +251,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
251
251
  };
252
252
  }
253
253
 
254
- async verify(data: Uint8Array, signature: Uint8Array, verificationKeys: PublicKey | PublicKey[]) {
254
+ async verify(data: Uint8Array<ArrayBuffer>, signature: Uint8Array<ArrayBuffer>, verificationKeys: PublicKey | PublicKey[]) {
255
255
  const { verificationStatus, errors } = await this.cryptoProxy.verifyMessage({
256
256
  binaryData: data,
257
257
  binarySignature: signature,
@@ -264,7 +264,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
264
264
  }
265
265
 
266
266
  async verifyArmored(
267
- data: Uint8Array,
267
+ data: Uint8Array<ArrayBuffer>,
268
268
  armoredSignature: string,
269
269
  verificationKeys: PublicKey | PublicKey[],
270
270
  signatureContext?: string,
@@ -282,7 +282,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
282
282
  };
283
283
  }
284
284
 
285
- async decryptSessionKey(data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) {
285
+ async decryptSessionKey(data: Uint8Array<ArrayBuffer>, decryptionKeys: PrivateKey | PrivateKey[]) {
286
286
  const sessionKey = await this.cryptoProxy.decryptSessionKey({
287
287
  binaryMessage: data,
288
288
  decryptionKeys,
@@ -316,7 +316,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
316
316
  return key;
317
317
  }
318
318
 
319
- async decryptAndVerify(data: Uint8Array, sessionKey: SessionKey, verificationKeys: PublicKey[]) {
319
+ async decryptAndVerify(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, verificationKeys: PublicKey[]) {
320
320
  const {
321
321
  data: decryptedData,
322
322
  verificationStatus,
@@ -336,8 +336,8 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
336
336
  }
337
337
 
338
338
  async decryptAndVerifyDetached(
339
- data: Uint8Array,
340
- signature: Uint8Array | undefined,
339
+ data: Uint8Array<ArrayBuffer>,
340
+ signature: Uint8Array<ArrayBuffer> | undefined,
341
341
  sessionKey: SessionKey,
342
342
  verificationKeys?: PublicKey[],
343
343
  ) {
@@ -43,11 +43,19 @@ export type {
43
43
  NodeOrUid,
44
44
  RevisionOrUid,
45
45
  NodeResult,
46
+ NodeResultWithError,
46
47
  NodeResultWithNewUid,
47
48
  Membership,
48
49
  } from './nodes';
49
50
  export { NodeType, MemberRole, RevisionState } from './nodes';
50
- export type { MaybePhotoNode, MaybeMissingPhotoNode, PhotoNode, DegradedPhotoNode, PhotoAttributes } from './photos';
51
+ export type {
52
+ MaybePhotoNode,
53
+ MaybeMissingPhotoNode,
54
+ PhotoNode,
55
+ DegradedPhotoNode,
56
+ PhotoAttributes,
57
+ AlbumAttributes,
58
+ } from './photos';
51
59
  export type {
52
60
  ProtonInvitation,
53
61
  ProtonInvitationWithNode,
@@ -100,7 +108,7 @@ export type CachedCryptoMaterial = {
100
108
  key: PrivateKey;
101
109
  passphraseSessionKey: SessionKey;
102
110
  contentKeyPacketSessionKey?: SessionKey;
103
- hashKey?: Uint8Array;
111
+ hashKey?: Uint8Array<ArrayBuffer>;
104
112
  };
105
113
  shareKey?: {
106
114
  key: PrivateKey;
@@ -229,4 +229,5 @@ export type RevisionOrUid = Revision | string;
229
229
 
230
230
  // TODO: Remove string from the result and use Error instead to be compatible with the NodeResultWithNewUid.
231
231
  export type NodeResult = { uid: string; ok: true } | { uid: string; ok: false; error: string };
232
+ export type NodeResultWithError = { uid: string; ok: true } | { uid: string; ok: false; error: Error };
232
233
  export type NodeResultWithNewUid = { uid: string; newUid: string; ok: true } | { uid: string; ok: false; error: Error };
@@ -21,8 +21,9 @@ export type MaybeMissingPhotoNode = Result<PhotoNode, DegradedPhotoNode | Missin
21
21
  * See `NodeEntity` for more information.
22
22
  */
23
23
  export type PhotoNode = NodeEntity & {
24
- type: NodeType.Photo;
24
+ type: NodeType.Photo | NodeType.Album;
25
25
  photo?: PhotoAttributes;
26
+ album?: AlbumAttributes;
26
27
  };
27
28
 
28
29
  /**
@@ -32,6 +33,7 @@ export type PhotoNode = NodeEntity & {
32
33
  */
33
34
  export type DegradedPhotoNode = DegradedNode & {
34
35
  photo?: PhotoAttributes;
36
+ album?: AlbumAttributes;
35
37
  };
36
38
 
37
39
  /**
@@ -65,3 +67,19 @@ export type PhotoAttributes = {
65
67
  */
66
68
  tags: number[]; // TODO: enum
67
69
  }
70
+
71
+ /**
72
+ * Attributes of an album.
73
+ *
74
+ * Only nodes of type `NodeType.Album` have property of this type.
75
+ */
76
+ export type AlbumAttributes = {
77
+ /**
78
+ * Number of photos in the album.
79
+ */
80
+ photoCount: number;
81
+ /**
82
+ * UID of the cover photo node of the album.
83
+ */
84
+ coverPhotoNodeUid?: string;
85
+ }
@@ -85,6 +85,7 @@ export type ShareNodeSettings = {
85
85
  message?: string;
86
86
  includeNodeName?: boolean;
87
87
  };
88
+ editorsCanShare?: boolean;
88
89
  };
89
90
 
90
91
  export type ShareMembersSettings =
@@ -107,6 +108,7 @@ export type ShareResult = {
107
108
  nonProtonInvitations: NonProtonInvitation[];
108
109
  members: Member[];
109
110
  publicLink?: PublicLink;
111
+ editorsCanShare: boolean;
110
112
  };
111
113
 
112
114
  export type UnshareNodeSettings = {