@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.
- package/dist/crypto/driveCrypto.d.ts +15 -15
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/hmac.d.ts +3 -3
- package/dist/crypto/hmac.js.map +1 -1
- package/dist/crypto/interface.d.ts +45 -25
- package/dist/crypto/interface.js.map +1 -1
- package/dist/crypto/openPGPCrypto.d.ts +37 -37
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/crypto/utils.d.ts +1 -1
- package/dist/interface/index.d.ts +3 -3
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +8 -0
- package/dist/interface/photos.d.ts +18 -1
- package/dist/interface/sharing.d.ts +2 -0
- package/dist/interface/telemetry.d.ts +1 -0
- package/dist/interface/telemetry.js.map +1 -1
- package/dist/interface/thumbnail.d.ts +2 -2
- package/dist/internal/apiService/apiService.js +25 -12
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/apiService.test.js +33 -5
- package/dist/internal/apiService/apiService.test.js.map +1 -1
- package/dist/internal/apiService/driveTypes.d.ts +2942 -3187
- package/dist/internal/apiService/errors.test.js +17 -7
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/devices/manager.d.ts +1 -0
- package/dist/internal/devices/manager.js +11 -0
- package/dist/internal/devices/manager.js.map +1 -1
- package/dist/internal/download/apiService.d.ts +1 -1
- package/dist/internal/download/cryptoService.d.ts +4 -4
- package/dist/internal/download/cryptoService.js.map +1 -1
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.js.map +1 -1
- package/dist/internal/nodes/cryptoService.d.ts +4 -4
- package/dist/internal/nodes/cryptoService.js +5 -3
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +1 -1
- package/dist/internal/nodes/nodesManagement.js +0 -1
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/photos/addToAlbum.d.ts +46 -0
- package/dist/internal/photos/addToAlbum.js +257 -0
- package/dist/internal/photos/addToAlbum.js.map +1 -0
- package/dist/internal/photos/addToAlbum.test.d.ts +1 -0
- package/dist/internal/photos/addToAlbum.test.js +409 -0
- package/dist/internal/photos/addToAlbum.test.js.map +1 -0
- package/dist/internal/photos/albums.d.ts +7 -2
- package/dist/internal/photos/albums.js +24 -1
- package/dist/internal/photos/albums.js.map +1 -1
- package/dist/internal/photos/albums.test.js +26 -1
- package/dist/internal/photos/albums.test.js.map +1 -1
- package/dist/internal/photos/albumsCrypto.d.ts +20 -3
- package/dist/internal/photos/albumsCrypto.js +27 -0
- package/dist/internal/photos/albumsCrypto.js.map +1 -1
- package/dist/internal/photos/apiService.d.ts +20 -0
- package/dist/internal/photos/apiService.js +142 -0
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/apiService.test.d.ts +1 -0
- package/dist/internal/photos/apiService.test.js +199 -0
- package/dist/internal/photos/apiService.test.js.map +1 -0
- package/dist/internal/photos/errors.d.ts +4 -0
- package/dist/internal/photos/errors.js +17 -0
- package/dist/internal/photos/errors.js.map +1 -0
- package/dist/internal/photos/index.d.ts +1 -1
- package/dist/internal/photos/index.js +1 -1
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +36 -1
- package/dist/internal/photos/interface.js +14 -0
- package/dist/internal/photos/interface.js.map +1 -1
- package/dist/internal/photos/nodes.js +32 -2
- package/dist/internal/photos/nodes.js.map +1 -1
- package/dist/internal/photos/nodes.test.js +25 -5
- package/dist/internal/photos/nodes.test.js.map +1 -1
- package/dist/internal/photos/timeline.d.ts +2 -5
- package/dist/internal/photos/timeline.js.map +1 -1
- package/dist/internal/photos/upload.d.ts +2 -2
- package/dist/internal/photos/upload.js.map +1 -1
- package/dist/internal/shares/apiService.js +1 -0
- package/dist/internal/shares/apiService.js.map +1 -1
- package/dist/internal/shares/interface.d.ts +1 -0
- package/dist/internal/sharing/apiService.d.ts +8 -1
- package/dist/internal/sharing/apiService.js +23 -1
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.js +8 -4
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +1 -0
- package/dist/internal/sharing/sharingManagement.js +15 -2
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +30 -5
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/sharingPublic/nodes.d.ts +2 -2
- package/dist/internal/sharingPublic/nodes.js.map +1 -1
- package/dist/internal/upload/apiService.d.ts +5 -5
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/blockVerifier.d.ts +2 -2
- package/dist/internal/upload/blockVerifier.js.map +1 -1
- package/dist/internal/upload/chunkStreamReader.d.ts +2 -2
- package/dist/internal/upload/chunkStreamReader.js.map +1 -1
- package/dist/internal/upload/chunkStreamReader.test.js.map +1 -1
- package/dist/internal/upload/cryptoService.d.ts +7 -7
- package/dist/internal/upload/cryptoService.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +6 -6
- package/dist/internal/upload/manager.d.ts +1 -1
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +1 -1
- package/dist/internal/utils.d.ts +1 -1
- package/dist/protonDriveClient.d.ts +8 -0
- package/dist/protonDriveClient.js +11 -0
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.d.ts +42 -7
- package/dist/protonDrivePhotosClient.js +50 -2
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +9 -0
- package/dist/protonDrivePublicLinkClient.js +12 -0
- package/dist/protonDrivePublicLinkClient.js.map +1 -1
- package/dist/transformers.js +2 -0
- package/dist/transformers.js.map +1 -1
- package/package.json +4 -4
- package/src/crypto/driveCrypto.ts +15 -15
- package/src/crypto/hmac.ts +4 -4
- package/src/crypto/interface.ts +58 -27
- package/src/crypto/openPGPCrypto.ts +26 -26
- package/src/interface/index.ts +10 -2
- package/src/interface/nodes.ts +1 -0
- package/src/interface/photos.ts +19 -1
- package/src/interface/sharing.ts +2 -0
- package/src/interface/telemetry.ts +1 -0
- package/src/interface/thumbnail.ts +2 -2
- package/src/internal/apiService/apiService.test.ts +38 -6
- package/src/internal/apiService/apiService.ts +33 -12
- package/src/internal/apiService/driveTypes.ts +2942 -3187
- package/src/internal/devices/manager.ts +14 -0
- package/src/internal/download/apiService.ts +1 -1
- package/src/internal/download/cryptoService.ts +4 -4
- package/src/internal/download/fileDownloader.test.ts +4 -4
- package/src/internal/download/fileDownloader.ts +6 -6
- package/src/internal/download/thumbnailDownloader.ts +4 -4
- package/src/internal/nodes/cryptoService.test.ts +2 -2
- package/src/internal/nodes/cryptoService.ts +11 -8
- package/src/internal/nodes/interface.ts +1 -1
- package/src/internal/nodes/nodesManagement.ts +0 -1
- package/src/internal/photos/addToAlbum.test.ts +515 -0
- package/src/internal/photos/addToAlbum.ts +341 -0
- package/src/internal/photos/albums.test.ts +46 -22
- package/src/internal/photos/albums.ts +48 -2
- package/src/internal/photos/albumsCrypto.ts +54 -3
- package/src/internal/photos/apiService.test.ts +233 -0
- package/src/internal/photos/apiService.ts +234 -15
- package/src/internal/photos/errors.ts +11 -0
- package/src/internal/photos/index.ts +2 -2
- package/src/internal/photos/interface.ts +40 -1
- package/src/internal/photos/nodes.test.ts +27 -6
- package/src/internal/photos/nodes.ts +34 -2
- package/src/internal/photos/timeline.ts +2 -5
- package/src/internal/photos/upload.ts +2 -2
- package/src/internal/shares/apiService.ts +1 -0
- package/src/internal/shares/interface.ts +1 -0
- package/src/internal/sharing/apiService.ts +49 -5
- package/src/internal/sharing/cryptoService.ts +10 -4
- package/src/internal/sharing/sharingManagement.test.ts +33 -5
- package/src/internal/sharing/sharingManagement.ts +28 -6
- package/src/internal/sharingPublic/nodes.ts +1 -1
- package/src/internal/upload/apiService.ts +5 -5
- package/src/internal/upload/blockVerifier.ts +3 -3
- package/src/internal/upload/chunkStreamReader.test.ts +7 -7
- package/src/internal/upload/chunkStreamReader.ts +3 -3
- package/src/internal/upload/cryptoService.ts +9 -9
- package/src/internal/upload/interface.ts +6 -6
- package/src/internal/upload/manager.ts +2 -2
- package/src/internal/upload/streamUploader.ts +1 -1
- package/src/protonDriveClient.ts +15 -3
- package/src/protonDrivePhotosClient.ts +78 -22
- package/src/protonDrivePublicLinkClient.ts +13 -0
- package/src/transformers.ts +2 -0
package/dist/transformers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":";;AA2CA,wBAaC;AAED,0BAEC;AAED,kEAMC;AAED,gFAUC;AAED,gEAGC;AAED,kDAwCC;AAED,4EAMC;AAED,0FAUC;AAED,0EAKC;AAED,
|
|
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.
|
|
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.
|
|
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.
|
|
47
|
-
"typescript": "^5.
|
|
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
|
|
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) => {
|
package/src/crypto/hmac.ts
CHANGED
|
@@ -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
|
|
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
|
};
|
package/src/crypto/interface.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
) {
|
package/src/interface/index.ts
CHANGED
|
@@ -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 {
|
|
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;
|
package/src/interface/nodes.ts
CHANGED
|
@@ -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 };
|
package/src/interface/photos.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/interface/sharing.ts
CHANGED
|
@@ -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 = {
|