@protontech/drive-sdk 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/diagnostic/{sdkDiagnosticFull.d.ts → diagnostic.d.ts} +5 -4
- package/dist/diagnostic/{sdkDiagnosticFull.js → diagnostic.js} +13 -10
- package/dist/diagnostic/diagnostic.js.map +1 -0
- package/dist/diagnostic/index.js +2 -4
- package/dist/diagnostic/index.js.map +1 -1
- package/dist/diagnostic/interface.d.ts +22 -1
- package/dist/diagnostic/sdkDiagnostic.d.ts +3 -2
- package/dist/diagnostic/sdkDiagnostic.js +80 -8
- package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
- package/dist/interface/download.d.ts +4 -4
- package/dist/interface/index.d.ts +1 -1
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +9 -0
- package/dist/interface/telemetry.d.ts +4 -1
- package/dist/interface/telemetry.js.map +1 -1
- package/dist/interface/upload.d.ts +6 -3
- package/dist/internal/apiService/apiService.d.ts +3 -0
- package/dist/internal/apiService/apiService.js +25 -2
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/apiService.test.js +38 -0
- package/dist/internal/apiService/apiService.test.js.map +1 -1
- package/dist/internal/apiService/driveTypes.d.ts +2595 -2397
- package/dist/internal/apiService/errors.js +3 -0
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/apiService/errors.test.js +15 -7
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/asyncIteratorMap.d.ts +1 -1
- package/dist/internal/asyncIteratorMap.js +6 -1
- package/dist/internal/asyncIteratorMap.js.map +1 -1
- package/dist/internal/asyncIteratorMap.test.js +9 -0
- package/dist/internal/asyncIteratorMap.test.js.map +1 -1
- package/dist/internal/download/controller.d.ts +2 -0
- package/dist/internal/download/controller.js +15 -1
- package/dist/internal/download/controller.js.map +1 -1
- package/dist/internal/download/fileDownloader.d.ts +3 -3
- package/dist/internal/download/fileDownloader.js +11 -6
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js +8 -8
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/nodes/apiService.d.ts +6 -1
- package/dist/internal/nodes/apiService.js +71 -44
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +204 -15
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/debouncer.d.ts +24 -0
- package/dist/internal/nodes/debouncer.js +92 -0
- package/dist/internal/nodes/debouncer.js.map +1 -0
- package/dist/internal/nodes/debouncer.test.d.ts +1 -0
- package/dist/internal/nodes/debouncer.test.js +108 -0
- package/dist/internal/nodes/debouncer.test.js.map +1 -0
- package/dist/internal/nodes/extendedAttributes.js +2 -2
- package/dist/internal/nodes/extendedAttributes.js.map +1 -1
- package/dist/internal/nodes/index.js +1 -1
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.d.ts +6 -4
- package/dist/internal/nodes/nodesAccess.js +29 -9
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +19 -7
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +2 -2
- package/dist/internal/nodes/nodesManagement.js +5 -3
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +3 -1
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
- package/dist/internal/photos/apiService.js +9 -20
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/upload.d.ts +2 -1
- package/dist/internal/photos/upload.js +9 -3
- package/dist/internal/photos/upload.js.map +1 -1
- package/dist/internal/sharing/apiService.d.ts +1 -1
- package/dist/internal/sharing/apiService.js +2 -2
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +4 -1
- package/dist/internal/sharing/sharingManagement.js +7 -4
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharingPublic/apiService.d.ts +8 -10
- package/dist/internal/sharingPublic/apiService.js +9 -125
- package/dist/internal/sharingPublic/apiService.js.map +1 -1
- package/dist/internal/sharingPublic/cryptoReporter.d.ts +16 -0
- package/dist/internal/sharingPublic/{cryptoService.js → cryptoReporter.js} +3 -16
- package/dist/internal/sharingPublic/cryptoReporter.js.map +1 -0
- package/dist/internal/sharingPublic/index.d.ts +22 -4
- package/dist/internal/sharingPublic/index.js +37 -12
- package/dist/internal/sharingPublic/index.js.map +1 -1
- package/dist/internal/sharingPublic/nodes.d.ts +18 -0
- package/dist/internal/sharingPublic/nodes.js +46 -0
- package/dist/internal/sharingPublic/nodes.js.map +1 -0
- package/dist/internal/sharingPublic/session/apiService.d.ts +7 -5
- package/dist/internal/sharingPublic/session/apiService.js +25 -4
- package/dist/internal/sharingPublic/session/apiService.js.map +1 -1
- package/dist/internal/sharingPublic/session/interface.d.ts +17 -0
- package/dist/internal/sharingPublic/session/manager.d.ts +12 -4
- package/dist/internal/sharingPublic/session/manager.js +14 -4
- package/dist/internal/sharingPublic/session/manager.js.map +1 -1
- package/dist/internal/sharingPublic/session/session.d.ts +7 -4
- package/dist/internal/sharingPublic/session/session.js +7 -3
- package/dist/internal/sharingPublic/session/session.js.map +1 -1
- package/dist/internal/sharingPublic/session/url.test.js +3 -3
- package/dist/internal/sharingPublic/shares.d.ts +27 -0
- package/dist/internal/sharingPublic/shares.js +46 -0
- package/dist/internal/sharingPublic/shares.js.map +1 -0
- package/dist/internal/upload/apiService.js +10 -1
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/controller.d.ts +11 -3
- package/dist/internal/upload/controller.js +16 -2
- package/dist/internal/upload/controller.js.map +1 -1
- package/dist/internal/upload/fileUploader.d.ts +6 -3
- package/dist/internal/upload/fileUploader.js +4 -4
- package/dist/internal/upload/fileUploader.js.map +1 -1
- package/dist/internal/upload/fileUploader.test.js +23 -11
- package/dist/internal/upload/fileUploader.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +9 -4
- package/dist/internal/upload/streamUploader.js +67 -20
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +43 -13
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/protonDriveClient.d.ts +11 -6
- package/dist/protonDriveClient.js +11 -10
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +34 -6
- package/dist/protonDrivePublicLinkClient.js +52 -9
- package/dist/protonDrivePublicLinkClient.js.map +1 -1
- package/dist/tests/telemetry.d.ts +4 -2
- package/dist/tests/telemetry.js +3 -1
- package/dist/tests/telemetry.js.map +1 -1
- package/dist/transformers.d.ts +3 -2
- package/dist/transformers.js +6 -0
- package/dist/transformers.js.map +1 -1
- package/package.json +1 -1
- package/src/diagnostic/{sdkDiagnosticFull.ts → diagnostic.ts} +10 -6
- package/src/diagnostic/index.ts +3 -5
- package/src/diagnostic/interface.ts +39 -0
- package/src/diagnostic/sdkDiagnostic.ts +111 -10
- package/src/interface/download.ts +4 -4
- package/src/interface/index.ts +1 -0
- package/src/interface/nodes.ts +3 -0
- package/src/interface/telemetry.ts +5 -0
- package/src/interface/upload.ts +3 -3
- package/src/internal/apiService/apiService.test.ts +50 -0
- package/src/internal/apiService/apiService.ts +33 -2
- package/src/internal/apiService/driveTypes.ts +2713 -2561
- package/src/internal/apiService/errors.test.ts +10 -0
- package/src/internal/apiService/errors.ts +5 -1
- package/src/internal/asyncIteratorMap.test.ts +12 -0
- package/src/internal/asyncIteratorMap.ts +8 -0
- package/src/internal/download/controller.ts +13 -1
- package/src/internal/download/fileDownloader.test.ts +8 -8
- package/src/internal/download/fileDownloader.ts +13 -6
- package/src/internal/nodes/apiService.test.ts +261 -14
- package/src/internal/nodes/apiService.ts +99 -65
- package/src/internal/nodes/debouncer.test.ts +141 -0
- package/src/internal/nodes/debouncer.ts +109 -0
- package/src/internal/nodes/extendedAttributes.ts +2 -2
- package/src/internal/nodes/index.ts +1 -8
- package/src/internal/nodes/nodesAccess.test.ts +19 -7
- package/src/internal/nodes/nodesAccess.ts +44 -9
- package/src/internal/nodes/nodesManagement.test.ts +3 -1
- package/src/internal/nodes/nodesManagement.ts +11 -5
- package/src/internal/photos/apiService.ts +12 -29
- package/src/internal/photos/upload.ts +22 -1
- package/src/internal/sharing/apiService.ts +2 -2
- package/src/internal/sharing/sharingManagement.ts +7 -4
- package/src/internal/sharingPublic/apiService.ts +23 -160
- package/src/internal/sharingPublic/{cryptoService.ts → cryptoReporter.ts} +2 -27
- package/src/internal/sharingPublic/index.ts +76 -13
- package/src/internal/sharingPublic/nodes.ts +59 -0
- package/src/internal/sharingPublic/session/apiService.ts +32 -10
- package/src/internal/sharingPublic/session/interface.ts +20 -0
- package/src/internal/sharingPublic/session/manager.ts +31 -8
- package/src/internal/sharingPublic/session/session.ts +12 -7
- package/src/internal/sharingPublic/session/url.test.ts +3 -3
- package/src/internal/sharingPublic/shares.ts +50 -0
- package/src/internal/upload/apiService.ts +12 -1
- package/src/internal/upload/controller.ts +16 -4
- package/src/internal/upload/fileUploader.test.ts +25 -11
- package/src/internal/upload/fileUploader.ts +6 -5
- package/src/internal/upload/streamUploader.test.ts +56 -12
- package/src/internal/upload/streamUploader.ts +78 -20
- package/src/protonDriveClient.ts +29 -11
- package/src/protonDrivePublicLinkClient.ts +100 -16
- package/src/tests/telemetry.ts +6 -3
- package/src/transformers.ts +8 -0
- package/dist/diagnostic/sdkDiagnosticFull.js.map +0 -1
- package/dist/internal/sharingPublic/cryptoCache.d.ts +0 -19
- package/dist/internal/sharingPublic/cryptoCache.js +0 -72
- package/dist/internal/sharingPublic/cryptoCache.js.map +0 -1
- package/dist/internal/sharingPublic/cryptoService.d.ts +0 -9
- package/dist/internal/sharingPublic/cryptoService.js.map +0 -1
- package/dist/internal/sharingPublic/interface.d.ts +0 -6
- package/dist/internal/sharingPublic/interface.js +0 -3
- package/dist/internal/sharingPublic/interface.js.map +0 -1
- package/dist/internal/sharingPublic/manager.d.ts +0 -19
- package/dist/internal/sharingPublic/manager.js +0 -81
- package/dist/internal/sharingPublic/manager.js.map +0 -1
- package/src/internal/sharingPublic/cryptoCache.ts +0 -79
- package/src/internal/sharingPublic/interface.ts +0 -14
- package/src/internal/sharingPublic/manager.ts +0 -86
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { MaybeNode } from '../interface';
|
|
2
|
+
import { ProtonDriveClient } from '../protonDriveClient';
|
|
2
3
|
import { DiagnosticHTTPClient } from './httpClient';
|
|
3
|
-
import {
|
|
4
|
+
import { DiagnosticOptions, DiagnosticResult } from './interface';
|
|
4
5
|
import { DiagnosticTelemetry } from './telemetry';
|
|
5
6
|
/**
|
|
6
7
|
* Diagnostic tool that produces full diagnostic, including logs and metrics
|
|
7
8
|
* by reading the events from the telemetry and HTTP client.
|
|
8
9
|
*/
|
|
9
|
-
export declare class
|
|
10
|
-
private diagnostic;
|
|
10
|
+
export declare class Diagnostic {
|
|
11
11
|
private telemetry;
|
|
12
12
|
private httpClient;
|
|
13
|
-
|
|
13
|
+
private protonDriveClient;
|
|
14
|
+
constructor(telemetry: DiagnosticTelemetry, httpClient: DiagnosticHTTPClient, protonDriveClient: ProtonDriveClient);
|
|
14
15
|
verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
|
|
15
16
|
verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
|
|
16
17
|
private yieldEvents;
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Diagnostic = void 0;
|
|
4
|
+
const sdkDiagnostic_1 = require("./sdkDiagnostic");
|
|
4
5
|
const zipGenerators_1 = require("./zipGenerators");
|
|
5
6
|
/**
|
|
6
7
|
* Diagnostic tool that produces full diagnostic, including logs and metrics
|
|
7
8
|
* by reading the events from the telemetry and HTTP client.
|
|
8
9
|
*/
|
|
9
|
-
class
|
|
10
|
-
diagnostic;
|
|
10
|
+
class Diagnostic {
|
|
11
11
|
telemetry;
|
|
12
12
|
httpClient;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
protonDriveClient;
|
|
14
|
+
constructor(telemetry, httpClient, protonDriveClient) {
|
|
15
15
|
this.telemetry = telemetry;
|
|
16
16
|
this.httpClient = httpClient;
|
|
17
|
-
this.
|
|
17
|
+
this.protonDriveClient = protonDriveClient;
|
|
18
18
|
this.telemetry = telemetry;
|
|
19
19
|
this.httpClient = httpClient;
|
|
20
|
+
this.protonDriveClient = protonDriveClient;
|
|
20
21
|
}
|
|
21
22
|
async *verifyMyFiles(options) {
|
|
22
|
-
|
|
23
|
+
const diagnostic = new sdkDiagnostic_1.SDKDiagnostic(this.protonDriveClient);
|
|
24
|
+
yield* this.yieldEvents(diagnostic.verifyMyFiles(options));
|
|
23
25
|
}
|
|
24
26
|
async *verifyNodeTree(node, options) {
|
|
25
|
-
|
|
27
|
+
const diagnostic = new sdkDiagnostic_1.SDKDiagnostic(this.protonDriveClient);
|
|
28
|
+
yield* this.yieldEvents(diagnostic.verifyNodeTree(node, options));
|
|
26
29
|
}
|
|
27
30
|
async *yieldEvents(generator) {
|
|
28
31
|
yield* (0, zipGenerators_1.zipGenerators)(generator, this.internalGenerator(), { stopOnFirstDone: true });
|
|
@@ -31,5 +34,5 @@ class FullSDKDiagnostic {
|
|
|
31
34
|
yield* (0, zipGenerators_1.zipGenerators)(this.telemetry.iterateEvents(), this.httpClient.iterateEvents());
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
|
-
exports.
|
|
35
|
-
//# sourceMappingURL=
|
|
37
|
+
exports.Diagnostic = Diagnostic;
|
|
38
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/diagnostic/diagnostic.ts"],"names":[],"mappings":";;;AAIA,mDAAgD;AAEhD,mDAAgD;AAEhD;;;GAGG;AACH,MAAa,UAAU;IAEP;IACA;IACA;IAHZ,YACY,SAA8B,EAC9B,UAAgC,EAChC,iBAAoC;QAFpC,cAAS,GAAT,SAAS,CAAqB;QAC9B,eAAU,GAAV,UAAU,CAAsB;QAChC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAE5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAAC,OAA2B;QAC5C,MAAM,UAAU,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,CAAC,cAAc,CAAC,IAAe,EAAE,OAA2B;QAC9D,MAAM,UAAU,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAEO,KAAK,CAAC,CAAC,WAAW,CAAC,SAA2C;QAClE,KAAK,CAAC,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAEO,KAAK,CAAC,CAAC,iBAAiB;QAC5B,KAAK,CAAC,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1F,CAAC;CACJ;AA5BD,gCA4BC"}
|
package/dist/diagnostic/index.js
CHANGED
|
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.initDiagnostic = initDiagnostic;
|
|
4
4
|
const cache_1 = require("../cache");
|
|
5
5
|
const protonDriveClient_1 = require("../protonDriveClient");
|
|
6
|
+
const diagnostic_1 = require("./diagnostic");
|
|
6
7
|
const httpClient_1 = require("./httpClient");
|
|
7
|
-
const sdkDiagnostic_1 = require("./sdkDiagnostic");
|
|
8
|
-
const sdkDiagnosticFull_1 = require("./sdkDiagnosticFull");
|
|
9
8
|
const telemetry_1 = require("./telemetry");
|
|
10
9
|
/**
|
|
11
10
|
* Initializes the diagnostic tool. It creates the instance of
|
|
@@ -29,7 +28,6 @@ function initDiagnostic(options) {
|
|
|
29
28
|
// Special telemetry that observes the logs and metrics.
|
|
30
29
|
telemetry,
|
|
31
30
|
});
|
|
32
|
-
|
|
33
|
-
return new sdkDiagnosticFull_1.FullSDKDiagnostic(diagnostic, telemetry, httpClient);
|
|
31
|
+
return new diagnostic_1.Diagnostic(telemetry, httpClient, protonDriveClient);
|
|
34
32
|
}
|
|
35
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diagnostic/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diagnostic/index.ts"],"names":[],"mappings":";;AAgBA,wCAqBC;AArCD,oCAAkD;AAElD,4DAAyD;AACzD,6CAA6D;AAE7D,6CAAoD;AACpD,2CAAkD;AAIlD;;;;;GAKG;AACH,SAAgB,cAAc,CAC1B,OAAmG;IAEnG,MAAM,UAAU,GAAG,IAAI,iCAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,+BAAmB,EAAE,CAAC;IAE5C,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC;QAC5C,GAAG,OAAO;QACV,UAAU;QACV,6CAA6C;QAC7C,+DAA+D;QAC/D,oDAAoD;QACpD,aAAa,EAAE,IAAI,iBAAS,EAAE;QAC9B,iEAAiE;QACjE,iDAAiD;QACjD,WAAW,EAAE,IAAI,mBAAW,EAAE;QAC9B,wDAAwD;QACxD,SAAS;KACZ,CAAC,CAAC;IAEH,OAAO,IAAI,uBAAe,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -7,8 +7,15 @@ export interface Diagnostic {
|
|
|
7
7
|
export type DiagnosticOptions = {
|
|
8
8
|
verifyContent?: boolean;
|
|
9
9
|
verifyThumbnails?: boolean;
|
|
10
|
+
expectedStructure?: ExcpectedTreeNode;
|
|
10
11
|
};
|
|
11
|
-
export type
|
|
12
|
+
export type ExcpectedTreeNode = {
|
|
13
|
+
name: string;
|
|
14
|
+
expectedSha1?: string;
|
|
15
|
+
expectedSizeInBytes?: number;
|
|
16
|
+
children?: ExcpectedTreeNode[];
|
|
17
|
+
};
|
|
18
|
+
export type DiagnosticResult = FatalErrorResult | SdkErrorResult | HttpErrorResult | DegradedNodeResult | UnverifiedAuthorResult | ExtendedAttributesErrorResult | ExtendedAttributesMissingFieldResult | ContentFileMissingRevisionResult | ContentIntegrityErrorResult | ContentDownloadErrorResult | ThumbnailsErrorResult | ExpectedStructureMissingNode | ExpectedStructureUnexpectedNode | ExpectedStructureIntegrityError | LogErrorResult | LogWarningResult | MetricResult;
|
|
12
19
|
export type FatalErrorResult = {
|
|
13
20
|
type: 'fatal_error';
|
|
14
21
|
message: string;
|
|
@@ -70,6 +77,20 @@ export type ThumbnailsErrorResult = {
|
|
|
70
77
|
type: 'thumbnails_error';
|
|
71
78
|
error: unknown;
|
|
72
79
|
} & NodeDetails;
|
|
80
|
+
export type ExpectedStructureMissingNode = {
|
|
81
|
+
type: 'expected_structure_missing_node';
|
|
82
|
+
expectedNode: ExcpectedTreeNode;
|
|
83
|
+
parentNodeUid: string;
|
|
84
|
+
};
|
|
85
|
+
export type ExpectedStructureUnexpectedNode = {
|
|
86
|
+
type: 'expected_structure_unexpected_node';
|
|
87
|
+
} & NodeDetails;
|
|
88
|
+
export type ExpectedStructureIntegrityError = {
|
|
89
|
+
type: 'expected_structure_integrity_error';
|
|
90
|
+
expectedNode: ExcpectedTreeNode;
|
|
91
|
+
claimedSha1?: string;
|
|
92
|
+
claimedSizeInBytes?: number;
|
|
93
|
+
} & NodeDetails;
|
|
73
94
|
export type LogErrorResult = {
|
|
74
95
|
type: 'log_error';
|
|
75
96
|
log: LogRecord;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MaybeNode } from '../interface';
|
|
2
2
|
import { ProtonDriveClient } from '../protonDriveClient';
|
|
3
|
-
import {
|
|
3
|
+
import { DiagnosticOptions, DiagnosticResult } from './interface';
|
|
4
4
|
/**
|
|
5
5
|
* Diagnostic tool that uses SDK to traverse the node tree and verify
|
|
6
6
|
* the integrity of the node tree.
|
|
@@ -8,7 +8,7 @@ import { Diagnostic, DiagnosticOptions, DiagnosticResult } from './interface';
|
|
|
8
8
|
* It produces only events that can be read by direct SDK invocation.
|
|
9
9
|
* To get the full diagnostic, use {@link FullSDKDiagnostic}.
|
|
10
10
|
*/
|
|
11
|
-
export declare class SDKDiagnostic
|
|
11
|
+
export declare class SDKDiagnostic {
|
|
12
12
|
private protonDriveClient;
|
|
13
13
|
constructor(protonDriveClient: ProtonDriveClient);
|
|
14
14
|
verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
|
|
@@ -19,4 +19,5 @@ export declare class SDKDiagnostic implements Diagnostic {
|
|
|
19
19
|
private verifyContent;
|
|
20
20
|
private verifyThumbnails;
|
|
21
21
|
private verifyNodeChildren;
|
|
22
|
+
private verifyExpectedNodeChildren;
|
|
22
23
|
}
|
|
@@ -51,7 +51,7 @@ class SDKDiagnostic {
|
|
|
51
51
|
if (activeRevision) {
|
|
52
52
|
yield* this.verifyAuthor(activeRevision.contentAuthor, 'content', node);
|
|
53
53
|
}
|
|
54
|
-
yield* this.verifyFileExtendedAttributes(node);
|
|
54
|
+
yield* this.verifyFileExtendedAttributes(node, options);
|
|
55
55
|
if (options?.verifyContent) {
|
|
56
56
|
yield* this.verifyContent(node);
|
|
57
57
|
}
|
|
@@ -70,10 +70,11 @@ class SDKDiagnostic {
|
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
async *verifyFileExtendedAttributes(node) {
|
|
73
|
+
async *verifyFileExtendedAttributes(node, options) {
|
|
74
74
|
const activeRevision = getActiveRevision(node);
|
|
75
75
|
const expectedAttributes = getNodeType(node) === interface_1.NodeType.File;
|
|
76
76
|
const claimedSha1 = activeRevision?.claimedDigests?.sha1;
|
|
77
|
+
const claimedSizeInBytes = activeRevision?.claimedSize;
|
|
77
78
|
if (claimedSha1 && !/^[0-9a-f]{40}$/i.test(claimedSha1)) {
|
|
78
79
|
yield {
|
|
79
80
|
type: 'extended_attributes_error',
|
|
@@ -89,6 +90,21 @@ class SDKDiagnostic {
|
|
|
89
90
|
...getNodeDetails(node),
|
|
90
91
|
};
|
|
91
92
|
}
|
|
93
|
+
if (options?.expectedStructure) {
|
|
94
|
+
const expectedSha1 = options.expectedStructure.expectedSha1;
|
|
95
|
+
const expectedSizeInBytes = options.expectedStructure.expectedSizeInBytes;
|
|
96
|
+
const wrongSha1 = expectedSha1 !== undefined && claimedSha1 !== expectedSha1;
|
|
97
|
+
const wrongSizeInBytes = expectedSizeInBytes !== undefined && claimedSizeInBytes !== expectedSizeInBytes;
|
|
98
|
+
if (wrongSha1 || wrongSizeInBytes) {
|
|
99
|
+
yield {
|
|
100
|
+
type: 'expected_structure_integrity_error',
|
|
101
|
+
claimedSha1,
|
|
102
|
+
claimedSizeInBytes,
|
|
103
|
+
expectedNode: getExpectedTreeNodeDetails(options.expectedStructure),
|
|
104
|
+
...getNodeDetails(node),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
92
108
|
}
|
|
93
109
|
async *verifyContent(node) {
|
|
94
110
|
if (getNodeType(node) !== interface_1.NodeType.File) {
|
|
@@ -117,7 +133,7 @@ class SDKDiagnostic {
|
|
|
117
133
|
const claimedSha1 = activeRevision.claimedDigests?.sha1;
|
|
118
134
|
const claimedSizeInBytes = downloader.getClaimedSizeInBytes();
|
|
119
135
|
const integrityVerificationStream = new integrityVerificationStream_1.IntegrityVerificationStream();
|
|
120
|
-
const controller = downloader.
|
|
136
|
+
const controller = downloader.downloadToStream(integrityVerificationStream);
|
|
121
137
|
try {
|
|
122
138
|
await controller.completion();
|
|
123
139
|
const computedSha1 = integrityVerificationStream.computedSha1;
|
|
@@ -172,20 +188,58 @@ class SDKDiagnostic {
|
|
|
172
188
|
};
|
|
173
189
|
}
|
|
174
190
|
}
|
|
175
|
-
async *verifyNodeChildren(
|
|
176
|
-
const
|
|
191
|
+
async *verifyNodeChildren(parentNode, options) {
|
|
192
|
+
const parentNodeUid = parentNode.ok ? parentNode.value.uid : parentNode.error.uid;
|
|
193
|
+
const children = [];
|
|
177
194
|
try {
|
|
178
|
-
for await (const child of this.protonDriveClient.iterateFolderChildren(
|
|
179
|
-
|
|
195
|
+
for await (const child of this.protonDriveClient.iterateFolderChildren(parentNode)) {
|
|
196
|
+
if (options?.expectedStructure) {
|
|
197
|
+
children.push(child);
|
|
198
|
+
}
|
|
199
|
+
yield* this.verifyNodeTree(child, {
|
|
200
|
+
...options,
|
|
201
|
+
expectedStructure: options?.expectedStructure
|
|
202
|
+
? getTreeNodeChildByNodeName(options.expectedStructure, getNodeName(child))
|
|
203
|
+
: undefined,
|
|
204
|
+
});
|
|
180
205
|
}
|
|
181
206
|
}
|
|
182
207
|
catch (error) {
|
|
183
208
|
yield {
|
|
184
209
|
type: 'sdk_error',
|
|
185
|
-
call: `iterateFolderChildren(${
|
|
210
|
+
call: `iterateFolderChildren(${parentNodeUid})`,
|
|
186
211
|
error,
|
|
187
212
|
};
|
|
188
213
|
}
|
|
214
|
+
if (options?.expectedStructure) {
|
|
215
|
+
yield* this.verifyExpectedNodeChildren(parentNodeUid, children, options);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async *verifyExpectedNodeChildren(parentNodeUid, children, options) {
|
|
219
|
+
if (!options.expectedStructure) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const expectedNodes = options.expectedStructure.children ?? [];
|
|
223
|
+
const actualNodeNames = children.map((child) => getNodeName(child));
|
|
224
|
+
for (const expectedNode of expectedNodes) {
|
|
225
|
+
if (!actualNodeNames.includes(expectedNode.name)) {
|
|
226
|
+
yield {
|
|
227
|
+
type: 'expected_structure_missing_node',
|
|
228
|
+
expectedNode: getExpectedTreeNodeDetails(expectedNode),
|
|
229
|
+
parentNodeUid,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
for (const child of children) {
|
|
234
|
+
const childName = getNodeName(child);
|
|
235
|
+
const isExpected = expectedNodes.some((expectedNode) => expectedNode.name === childName);
|
|
236
|
+
if (!isExpected) {
|
|
237
|
+
yield {
|
|
238
|
+
type: 'expected_structure_unexpected_node',
|
|
239
|
+
...getNodeDetails(child),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
189
243
|
}
|
|
190
244
|
}
|
|
191
245
|
exports.SDKDiagnostic = SDKDiagnostic;
|
|
@@ -245,4 +299,22 @@ function getActiveRevision(node) {
|
|
|
245
299
|
}
|
|
246
300
|
return undefined;
|
|
247
301
|
}
|
|
302
|
+
function getNodeName(node) {
|
|
303
|
+
if (node.ok) {
|
|
304
|
+
return node.value.name;
|
|
305
|
+
}
|
|
306
|
+
if (node.error.name.ok) {
|
|
307
|
+
return node.error.name.value;
|
|
308
|
+
}
|
|
309
|
+
return 'N/A';
|
|
310
|
+
}
|
|
311
|
+
function getExpectedTreeNodeDetails(expectedNode) {
|
|
312
|
+
return {
|
|
313
|
+
...expectedNode,
|
|
314
|
+
children: undefined,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
function getTreeNodeChildByNodeName(expectedSubtree, nodeName) {
|
|
318
|
+
return expectedSubtree.children?.find((expectedNode) => expectedNode.name === nodeName);
|
|
319
|
+
}
|
|
248
320
|
//# sourceMappingURL=sdkDiagnostic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkDiagnostic.js","sourceRoot":"","sources":["../../src/diagnostic/sdkDiagnostic.ts"],"names":[],"mappings":";;;AAAA,4CAAoG;AAGpG,+EAA4E;AAE5E;;;;;;GAMG;AACH,MAAa,aAAa;IACF;IAApB,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAAC,OAA2B;QAC5C,IAAI,iBAA4B,CAAC;QAEjC,IAAI,CAAC;YACD,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,MAAM;gBACF,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,oCAAoC;gBAC7C,KAAK;aACR,CAAC;YACF,OAAO;QACX,CAAC;QAED,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,CAAC,cAAc,CAAC,IAAe,EAAE,OAA2B;QAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,oBAAQ,CAAC,MAAM,CAAC;QAEvD,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,QAAQ,EAAE,CAAC;YACX,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,CAAC,UAAU,CAAC,IAAe,EAAE,OAA2B;QAClE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,MAAM;gBACF,IAAI,EAAE,eAAe;gBACrB,GAAG,cAAc,CAAC,IAAI,CAAC;aAC1B,CAAC;QACN,CAAC;QAED,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAEhG,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,cAAc,EAAE,CAAC;YACjB,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;QAED,KAAK,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sdkDiagnostic.js","sourceRoot":"","sources":["../../src/diagnostic/sdkDiagnostic.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,13 +14,13 @@ export interface FileDownloader {
|
|
|
14
14
|
*
|
|
15
15
|
* @param onProgress - Callback that is called with the number of downloaded bytes
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
downloadToStream(streamFactory: WritableStream, onProgress?: (downloadedBytes: number) => void): DownloadController;
|
|
18
18
|
/**
|
|
19
|
-
* Same as `
|
|
19
|
+
* Same as `downloadToStream` but without verification checks.
|
|
20
20
|
*
|
|
21
21
|
* Use this only for debugging purposes.
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
unsafeDownloadToStream(streamFactory: WritableStream, onProgress?: (downloadedBytes: number) => void): DownloadController;
|
|
24
24
|
/**
|
|
25
25
|
* Get a seekable stream that can be used to download specific range of
|
|
26
26
|
* data from the file. This is useful for video players to download the
|
|
@@ -28,7 +28,7 @@ export interface FileDownloader {
|
|
|
28
28
|
* need to download the entire file.
|
|
29
29
|
*
|
|
30
30
|
* Stream doesn't verify data integrity. For the full integrity of
|
|
31
|
-
* the file, use `
|
|
31
|
+
* the file, use `downloadToStream` instead.
|
|
32
32
|
*
|
|
33
33
|
* The stream is not opportunitistically downloading the data ahead of
|
|
34
34
|
* the time. It will only download the data when it is requested. To
|
|
@@ -16,7 +16,7 @@ export type { FileDownloader, DownloadController, SeekableReadableStream } from
|
|
|
16
16
|
export type { DriveListener, LatestEventIdProvider, DriveEvent, NodeEvent, FastForwardEvent, TreeRefreshEvent, TreeRemovalEvent, SharedWithMeUpdated, } from './events';
|
|
17
17
|
export { DriveEventType, SDKEvent } from './events';
|
|
18
18
|
export type { ProtonDriveHTTPClient, ProtonDriveHTTPClientJsonRequest, ProtonDriveHTTPClientBlobRequest, } from './httpClient';
|
|
19
|
-
export type { MaybeNode, NodeEntity, DegradedNode, MaybeMissingNode, MissingNode, InvalidNameError, Revision, NodeOrUid, RevisionOrUid, NodeResult, Membership, } from './nodes';
|
|
19
|
+
export type { MaybeNode, NodeEntity, DegradedNode, MaybeMissingNode, MissingNode, InvalidNameError, Revision, NodeOrUid, RevisionOrUid, NodeResult, NodeResultWithNewUid, Membership, } from './nodes';
|
|
20
20
|
export { NodeType, MemberRole, RevisionState } from './nodes';
|
|
21
21
|
export type { ProtonInvitation, ProtonInvitationWithNode, NonProtonInvitation, Member, PublicLink, MaybeBookmark, Bookmark, DegradedBookmark, ProtonInvitationOrUid, NonProtonInvitationOrUid, BookmarkOrUid, ShareNodeSettings, UnshareNodeSettings, ShareMembersSettings, SharePublicLinkSettings, SharePublicLinkSettingsObject, ShareResult, } from './sharing';
|
|
22
22
|
export { NonProtonInvitationState } from './sharing';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":";;;AASA,mCAAiD;AAAxC,kGAAA,QAAQ,OAAA;AAAE,qGAAA,WAAW,OAAA;AAK9B,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAYnB,mCAAoD;AAA3C,wGAAA,cAAc,OAAA;AAAE,kGAAA,QAAQ,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":";;;AASA,mCAAiD;AAAxC,kGAAA,QAAQ,OAAA;AAAE,qGAAA,WAAW,OAAA;AAK9B,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAYnB,mCAAoD;AAA3C,wGAAA,cAAc,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAoBjC,iCAA8D;AAArD,iGAAA,QAAQ,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,sGAAA,aAAa,OAAA;AAoB5C,qCAAqD;AAA5C,mHAAA,wBAAwB,OAAA;AAiBjC,yCAA+C;AAAtC,6GAAA,gBAAgB,OAAA;AAGzB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA"}
|
|
@@ -8,12 +8,15 @@ export interface Logger {
|
|
|
8
8
|
warn(msg: string): void;
|
|
9
9
|
error(msg: string, error?: unknown): void;
|
|
10
10
|
}
|
|
11
|
-
export type MetricEvent = MetricAPIRetrySucceededEvent | MetricUploadEvent | MetricDownloadEvent | MetricDecryptionErrorEvent | MetricVerificationErrorEvent | MetricBlockVerificationErrorEvent | MetricVolumeEventsSubscriptionsChangedEvent;
|
|
11
|
+
export type MetricEvent = MetricAPIRetrySucceededEvent | MetricDebounceLongWaitEvent | MetricUploadEvent | MetricDownloadEvent | MetricDecryptionErrorEvent | MetricVerificationErrorEvent | MetricBlockVerificationErrorEvent | MetricVolumeEventsSubscriptionsChangedEvent;
|
|
12
12
|
export interface MetricAPIRetrySucceededEvent {
|
|
13
13
|
eventName: 'apiRetrySucceeded';
|
|
14
14
|
url: string;
|
|
15
15
|
failedAttempts: number;
|
|
16
16
|
}
|
|
17
|
+
export interface MetricDebounceLongWaitEvent {
|
|
18
|
+
eventName: 'debounceLongWait';
|
|
19
|
+
}
|
|
17
20
|
export interface MetricUploadEvent {
|
|
18
21
|
eventName: 'upload';
|
|
19
22
|
volumeType?: MetricVolumeType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/interface/telemetry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/interface/telemetry.ts"],"names":[],"mappings":";;;AAiHA,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,4CAAwB,CAAA;IACxB,qCAAiB,CAAA;IACjB,kDAA8B,CAAA;AAClC,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B"}
|
|
@@ -39,7 +39,7 @@ export interface FileRevisionUploader {
|
|
|
39
39
|
*
|
|
40
40
|
* The function will reject if the node with the given name already exists.
|
|
41
41
|
*/
|
|
42
|
-
|
|
42
|
+
uploadFromStream(stream: ReadableStream, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<UploadController>;
|
|
43
43
|
/**
|
|
44
44
|
* Uploads a file from a file object. It is convenient to use this method
|
|
45
45
|
* when the file is already in memory. The file object is used to get the
|
|
@@ -50,7 +50,7 @@ export interface FileRevisionUploader {
|
|
|
50
50
|
*
|
|
51
51
|
* The function will reject if the node with the given name already exists.
|
|
52
52
|
*/
|
|
53
|
-
|
|
53
|
+
uploadFromFile(fileObject: File, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<UploadController>;
|
|
54
54
|
}
|
|
55
55
|
export interface FileUploader extends FileRevisionUploader {
|
|
56
56
|
/**
|
|
@@ -66,5 +66,8 @@ export interface FileUploader extends FileRevisionUploader {
|
|
|
66
66
|
export interface UploadController {
|
|
67
67
|
pause(): void;
|
|
68
68
|
resume(): void;
|
|
69
|
-
completion(): Promise<
|
|
69
|
+
completion(): Promise<{
|
|
70
|
+
nodeRevisionUid: string;
|
|
71
|
+
nodeUid: string;
|
|
72
|
+
}>;
|
|
70
73
|
}
|
|
@@ -31,6 +31,7 @@ export declare class DriveAPIService {
|
|
|
31
31
|
private lastTooManyRequestsErrorAt?;
|
|
32
32
|
private subsequentServerErrorsCounter;
|
|
33
33
|
private lastServerErrorAt?;
|
|
34
|
+
private subsequentOfflineErrorsCounter;
|
|
34
35
|
private logger;
|
|
35
36
|
constructor(telemetry: ProtonDriveTelemetry, sdkEvents: SDKEvents, httpClient: ProtonDriveHTTPClient, baseUrl: string, language: string);
|
|
36
37
|
get<ResponsePayload>(url: string, signal?: AbortSignal): Promise<ResponsePayload>;
|
|
@@ -48,4 +49,6 @@ export declare class DriveAPIService {
|
|
|
48
49
|
private get hasReachedServerErrorLimit();
|
|
49
50
|
private serverErrorHappened;
|
|
50
51
|
private clearSubsequentServerErrors;
|
|
52
|
+
private offlineErrorHappened;
|
|
53
|
+
private clearSubsequentOfflineErrors;
|
|
51
54
|
}
|
|
@@ -33,6 +33,10 @@ const TOO_MANY_SUBSEQUENT_SERVER_ERRORS = 10;
|
|
|
33
33
|
* of subsequent 5xx errors.
|
|
34
34
|
*/
|
|
35
35
|
const TOO_MANY_SUBSEQUENT_SERVER_ERRORS_TIMEOUT_IN_SECONDS = 60;
|
|
36
|
+
/**
|
|
37
|
+
* How many subsequent offline errors are allowed before we consider the client offline.
|
|
38
|
+
*/
|
|
39
|
+
const TOO_MANY_SUBSEQUENT_OFFLINE_ERRORS = 10;
|
|
36
40
|
/**
|
|
37
41
|
* After how long to re-try after 5xx or timeout error.
|
|
38
42
|
*/
|
|
@@ -80,6 +84,7 @@ class DriveAPIService {
|
|
|
80
84
|
lastTooManyRequestsErrorAt;
|
|
81
85
|
subsequentServerErrorsCounter = 0;
|
|
82
86
|
lastServerErrorAt;
|
|
87
|
+
subsequentOfflineErrorsCounter = 0;
|
|
83
88
|
logger;
|
|
84
89
|
constructor(telemetry, sdkEvents, httpClient, baseUrl, language) {
|
|
85
90
|
this.telemetry = telemetry;
|
|
@@ -172,7 +177,7 @@ class DriveAPIService {
|
|
|
172
177
|
if (error instanceof errors_1.ProtonDriveError) {
|
|
173
178
|
throw error;
|
|
174
179
|
}
|
|
175
|
-
throw (0, errors_2.apiErrorFactory)({ response });
|
|
180
|
+
throw (0, errors_2.apiErrorFactory)({ response, error });
|
|
176
181
|
}
|
|
177
182
|
}
|
|
178
183
|
return response;
|
|
@@ -207,7 +212,12 @@ class DriveAPIService {
|
|
|
207
212
|
}
|
|
208
213
|
catch (error) {
|
|
209
214
|
if (error instanceof Error) {
|
|
215
|
+
if (error.name === 'AbortError') {
|
|
216
|
+
this.logger.debug(`${request.method} ${request.url}: Aborted`);
|
|
217
|
+
throw new errors_1.AbortError((0, ttag_1.c)('Error').t `Request aborted`);
|
|
218
|
+
}
|
|
210
219
|
if (error.name === 'OfflineError') {
|
|
220
|
+
this.offlineErrorHappened();
|
|
211
221
|
this.logger.info(`${request.method} ${request.url}: Offline error, retrying`);
|
|
212
222
|
await (0, wait_1.waitSeconds)(OFFLINE_RETRY_DELAY_SECONDS);
|
|
213
223
|
return this.fetch(request, callback, attempt + 1);
|
|
@@ -226,6 +236,7 @@ class DriveAPIService {
|
|
|
226
236
|
this.logger.error(`${request.method} ${request.url}: failed`, error);
|
|
227
237
|
throw error;
|
|
228
238
|
}
|
|
239
|
+
this.clearSubsequentOfflineErrors();
|
|
229
240
|
const end = Date.now();
|
|
230
241
|
const duration = end - start;
|
|
231
242
|
if (response.ok) {
|
|
@@ -280,7 +291,7 @@ class DriveAPIService {
|
|
|
280
291
|
// the client is very limited. This is generic event and it doesn't
|
|
281
292
|
// take into account that various endpoints can be rate limited
|
|
282
293
|
// independently.
|
|
283
|
-
if (this.subsequentTooManyRequestsCounter
|
|
294
|
+
if (this.subsequentTooManyRequestsCounter === TOO_MANY_SUBSEQUENT_429_ERRORS) {
|
|
284
295
|
this.sdkEvents.requestsThrottled();
|
|
285
296
|
}
|
|
286
297
|
}
|
|
@@ -304,6 +315,18 @@ class DriveAPIService {
|
|
|
304
315
|
this.subsequentServerErrorsCounter = 0;
|
|
305
316
|
this.lastServerErrorAt = undefined;
|
|
306
317
|
}
|
|
318
|
+
offlineErrorHappened() {
|
|
319
|
+
this.subsequentOfflineErrorsCounter++;
|
|
320
|
+
if (this.subsequentOfflineErrorsCounter === TOO_MANY_SUBSEQUENT_OFFLINE_ERRORS) {
|
|
321
|
+
this.sdkEvents.transfersPaused();
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
clearSubsequentOfflineErrors() {
|
|
325
|
+
if (this.subsequentOfflineErrorsCounter >= TOO_MANY_SUBSEQUENT_OFFLINE_ERRORS) {
|
|
326
|
+
this.sdkEvents.transfersResumed();
|
|
327
|
+
}
|
|
328
|
+
this.subsequentOfflineErrorsCounter = 0;
|
|
329
|
+
}
|
|
307
330
|
}
|
|
308
331
|
exports.DriveAPIService = DriveAPIService;
|
|
309
332
|
//# sourceMappingURL=apiService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/apiService/apiService.ts"],"names":[],"mappings":";;;AAAA,+BAAyB;AAEzB,2CAAwC;AAExC,yCAA2F;AAC3F,kCAAsC;AAEtC,6CAAsE;AACtE,qCAA2C;AAE3C;;GAEG;AACH,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC;;GAEG;AACH,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C;;;GAGG;AACH,MAAM,iDAAiD,GAAG,EAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAE7C;;;GAGG;AACH,MAAM,oDAAoD,GAAG,EAAE,CAAC;AAEhE;;GAEG;AACH,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAE3C;;GAEG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/apiService/apiService.ts"],"names":[],"mappings":"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"}
|