filemail-sdk 9.1.0 → 9.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.d.ts +9 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.d.ts.map +1 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js +2 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js.map +1 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.d.ts +19 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.d.ts.map +1 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js +2 -0
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js.map +1 -0
- package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.d.ts +6 -0
- package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.d.ts.map +1 -0
- package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js +7 -0
- package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js.map +1 -0
- package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/nodeOnlineChecker.d.ts +1 -0
- package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.d.ts.map +1 -0
- package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/nodeOnlineChecker.js +3 -0
- package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +1 -0
- package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/onlineChecker.d.ts +0 -1
- package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.d.ts.map +1 -0
- package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/onlineChecker.js +0 -3
- package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.js.map +1 -0
- package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.d.ts.map +1 -0
- package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/webOnlineChecker.js +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.js.map +1 -0
- package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.d.ts +11 -0
- package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.d.ts.map +1 -0
- package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js +29 -0
- package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js.map +1 -0
- package/dist/src/client/healthMonitor/transferHealthMonitorBase.d.ts +37 -0
- package/dist/src/client/healthMonitor/transferHealthMonitorBase.d.ts.map +1 -0
- package/dist/src/client/{uploader/healthMonitor/transferUploadHealthMonitor.js → healthMonitor/transferHealthMonitorBase.js} +29 -32
- package/dist/src/client/healthMonitor/transferHealthMonitorBase.js.map +1 -0
- package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.d.ts +11 -0
- package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.d.ts.map +1 -0
- package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js +29 -0
- package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js.map +1 -0
- package/dist/src/client/uploader/node/nodeTransferUploader.js +3 -3
- package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
- package/dist/src/client/uploader/transferUploaderBase.d.ts +7 -3
- package/dist/src/client/uploader/transferUploaderBase.d.ts.map +1 -1
- package/dist/src/client/uploader/transferUploaderBase.js +51 -0
- package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploader.js +3 -3
- package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadState.d.ts +1 -1
- package/dist/src/downloader/downloadStatus/downloadState.d.ts.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadState.js +2 -2
- package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.d.ts +2 -1
- package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.d.ts.map +1 -1
- package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.js.map +1 -1
- package/dist/src/downloader/filesDownloader.js +2 -2
- package/dist/src/downloader/filesDownloader.js.map +1 -1
- package/dist/src/index.d.ts +9 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -5
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.d.ts +0 -9
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.js +0 -2
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.js.map +0 -1
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.d.ts +0 -19
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.js +0 -2
- package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.js.map +0 -1
- package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.d.ts +0 -6
- package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.js +0 -7
- package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.js.map +0 -1
- package/dist/src/client/uploader/healthMonitor/onlineChecker/nodeOnlineChecker.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +0 -1
- package/dist/src/client/uploader/healthMonitor/onlineChecker/onlineChecker.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/onlineChecker/onlineChecker.js.map +0 -1
- package/dist/src/client/uploader/healthMonitor/onlineChecker/webOnlineChecker.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/onlineChecker/webOnlineChecker.js.map +0 -1
- package/dist/src/client/uploader/healthMonitor/transferUploadHealthMonitor.d.ts +0 -31
- package/dist/src/client/uploader/healthMonitor/transferUploadHealthMonitor.d.ts.map +0 -1
- package/dist/src/client/uploader/healthMonitor/transferUploadHealthMonitor.js.map +0 -1
- /package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/webOnlineChecker.d.ts +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface HealthMonitorHealthyEventArgs {
|
|
2
|
+
transferredBytesTotalCount: number | undefined;
|
|
3
|
+
progressInPercentage: number | undefined;
|
|
4
|
+
remainingSeconds: number | undefined;
|
|
5
|
+
averageSpeedInBytesPerSecond: number | undefined;
|
|
6
|
+
currentSpeedInBytesPerSecond: number | undefined;
|
|
7
|
+
}
|
|
8
|
+
export default HealthMonitorHealthyEventArgs;
|
|
9
|
+
//# sourceMappingURL=healthMonitorHealthyEventArgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthMonitorHealthyEventArgs.d.ts","sourceRoot":"","sources":["../../../../../../src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.ts"],"names":[],"mappings":"AAAA,UAAU,6BAA6B;IACnC,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,4BAA4B,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,4BAA4B,EAAE,MAAM,GAAG,SAAS,CAAC;CACpD;AAED,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthMonitorHealthyEventArgs.js","sourceRoot":"","sources":["../../../../../../src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface HealthMonitorHealthyEventArgs {\r\n transferredBytesTotalCount: number | undefined;\r\n progressInPercentage: number | undefined;\r\n remainingSeconds: number | undefined;\r\n averageSpeedInBytesPerSecond: number | undefined;\r\n currentSpeedInBytesPerSecond: number | undefined;\r\n}\r\n\r\nexport default HealthMonitorHealthyEventArgs;"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface HealthMonitorUnhealthyEventArgs {
|
|
2
|
+
reason: HealthMonitorUnhealthyEventArgsReason;
|
|
3
|
+
transferredBytesTotalCount?: number;
|
|
4
|
+
progressInPercentage?: number;
|
|
5
|
+
remainingSeconds?: number;
|
|
6
|
+
averageSpeedInBytesPerSecond?: number;
|
|
7
|
+
currentSpeedInBytesPerSecond?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface HealthMonitorUnhealthyEventArgsReason {
|
|
10
|
+
internet: HealthMonitorUnhealthyEventArgsReasonValue;
|
|
11
|
+
api: HealthMonitorUnhealthyEventArgsReasonValue;
|
|
12
|
+
fileServer: HealthMonitorUnhealthyEventArgsReasonValue;
|
|
13
|
+
}
|
|
14
|
+
export interface HealthMonitorUnhealthyEventArgsReasonValue {
|
|
15
|
+
status: `Checking` | `Ok` | `Error` | `Unknown`;
|
|
16
|
+
error?: Error;
|
|
17
|
+
}
|
|
18
|
+
export default HealthMonitorUnhealthyEventArgs;
|
|
19
|
+
//# sourceMappingURL=healthMonitorUnhealthyEventArgs.d.ts.map
|
package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthMonitorUnhealthyEventArgs.d.ts","sourceRoot":"","sources":["../../../../../../src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.ts"],"names":[],"mappings":"AAAA,UAAU,+BAA+B;IACrC,MAAM,EAAE,qCAAqC,CAAC;IAC9C,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,qCAAqC;IAClD,QAAQ,EAAE,0CAA0C,CAAC;IACrD,GAAG,EAAE,0CAA0C,CAAC;IAChD,UAAU,EAAE,0CAA0C,CAAC;CAC1D;AAED,MAAM,WAAW,0CAA0C;IACvD,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,eAAe,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthMonitorUnhealthyEventArgs.js","sourceRoot":"","sources":["../../../../../../src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface HealthMonitorUnhealthyEventArgs {\r\n reason: HealthMonitorUnhealthyEventArgsReason,\r\n transferredBytesTotalCount?: number;\r\n progressInPercentage?: number;\r\n remainingSeconds?: number;\r\n averageSpeedInBytesPerSecond?: number;\r\n currentSpeedInBytesPerSecond?: number;\r\n}\r\n\r\nexport interface HealthMonitorUnhealthyEventArgsReason {\r\n internet: HealthMonitorUnhealthyEventArgsReasonValue,\r\n api: HealthMonitorUnhealthyEventArgsReasonValue,\r\n fileServer: HealthMonitorUnhealthyEventArgsReasonValue,\r\n}\r\n\r\nexport interface HealthMonitorUnhealthyEventArgsReasonValue {\r\n status: `Checking` | `Ok` | `Error` | `Unknown`\r\n error?: Error,\r\n}\r\n\r\nexport default HealthMonitorUnhealthyEventArgs;"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferHealthMonitorEvent.d.ts","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/events/transferHealthMonitorEvent.ts"],"names":[],"mappings":"AAAA,aAAK,0BAA0B;IAC3B,OAAO,0BAA0B;IACjC,SAAS,4BAA4B;CACxC;AAED,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
var TransferHealthMonitorEvent;
|
|
2
|
+
(function (TransferHealthMonitorEvent) {
|
|
3
|
+
TransferHealthMonitorEvent["Healthy"] = "HealthMonitor_Healthy";
|
|
4
|
+
TransferHealthMonitorEvent["Unhealthy"] = "HealthMonitor_Unhealthy";
|
|
5
|
+
})(TransferHealthMonitorEvent || (TransferHealthMonitorEvent = {}));
|
|
6
|
+
export default TransferHealthMonitorEvent;
|
|
7
|
+
//# sourceMappingURL=transferHealthMonitorEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferHealthMonitorEvent.js","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/events/transferHealthMonitorEvent.ts"],"names":[],"mappings":"AAAA,IAAK,0BAGJ;AAHD,WAAK,0BAA0B;IAC3B,+DAAiC,CAAA;IACjC,mEAAqC,CAAA;AACzC,CAAC,EAHI,0BAA0B,KAA1B,0BAA0B,QAG9B;AAED,eAAe,0BAA0B,CAAC","sourcesContent":["enum TransferHealthMonitorEvent {\r\n Healthy = `HealthMonitor_Healthy`,\r\n Unhealthy = `HealthMonitor_Unhealthy`,\r\n}\r\n\r\nexport default TransferHealthMonitorEvent;"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import OnlineChecker, { OnlineCheckerResult } from "./onlineChecker.js";
|
|
2
2
|
export default class NodeOnlineChecker extends OnlineChecker {
|
|
3
3
|
isInternetOnline(): Promise<OnlineCheckerResult>;
|
|
4
|
+
private isGoogleReachable;
|
|
4
5
|
}
|
|
5
6
|
//# sourceMappingURL=nodeOnlineChecker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeOnlineChecker.d.ts","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/onlineChecker/nodeOnlineChecker.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,EAAE,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC3C,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;YAI/C,iBAAiB;CAGlC"}
|
package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/nodeOnlineChecker.js
RENAMED
|
@@ -3,5 +3,8 @@ export default class NodeOnlineChecker extends OnlineChecker {
|
|
|
3
3
|
async isInternetOnline() {
|
|
4
4
|
return await this.isGoogleReachable();
|
|
5
5
|
}
|
|
6
|
+
async isGoogleReachable() {
|
|
7
|
+
return await this.probe(`https://www.gstatic.com/generate_204?d=${Date.now()}`);
|
|
8
|
+
}
|
|
6
9
|
}
|
|
7
10
|
//# sourceMappingURL=nodeOnlineChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeOnlineChecker.js","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/onlineChecker/nodeOnlineChecker.ts"],"names":[],"mappings":"AAAA,OAAO,aAAsC,MAAM,oBAAoB,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IACjD,KAAK,CAAC,gBAAgB;QACzB,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;CACJ","sourcesContent":["import OnlineChecker, { OnlineCheckerResult } from \"./onlineChecker.js\";\r\n\r\nexport default class NodeOnlineChecker extends OnlineChecker {\r\n public async isInternetOnline(): Promise<OnlineCheckerResult> {\r\n return await this.isGoogleReachable();\r\n }\r\n\r\n private async isGoogleReachable(): Promise<OnlineCheckerResult> {\r\n return await this.probe(`https://www.gstatic.com/generate_204?d=${Date.now()}`);\r\n }\r\n}"]}
|
package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/onlineChecker.d.ts
RENAMED
|
@@ -2,7 +2,6 @@ export default abstract class OnlineChecker {
|
|
|
2
2
|
protected apiBaseUrl: string;
|
|
3
3
|
constructor(apiBaseUrl: string);
|
|
4
4
|
abstract isInternetOnline(): Promise<OnlineCheckerResult>;
|
|
5
|
-
protected isGoogleReachable(): Promise<OnlineCheckerResult>;
|
|
6
5
|
isApiReachable(): Promise<OnlineCheckerResult>;
|
|
7
6
|
isFileServerReachable(fileServerBaseUrl: string): Promise<OnlineCheckerResult>;
|
|
8
7
|
protected probe(url: string, timeoutInMs?: number): Promise<OnlineCheckerResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onlineChecker.d.ts","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/onlineChecker/onlineChecker.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IACvC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEjB,UAAU,EAAE,MAAM;aAOd,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAEnD,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI9C,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;cAI3E,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAevF;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB"}
|
package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/onlineChecker.js
RENAMED
|
@@ -5,9 +5,6 @@ export default class OnlineChecker {
|
|
|
5
5
|
throw new Error(`Api Base URL is required`);
|
|
6
6
|
this.apiBaseUrl = apiBaseUrl;
|
|
7
7
|
}
|
|
8
|
-
async isGoogleReachable() {
|
|
9
|
-
return await this.probe(`https://www.gstatic.com/generate_204?d=${Date.now()}`);
|
|
10
|
-
}
|
|
11
8
|
async isApiReachable() {
|
|
12
9
|
return await this.probe(`${this.apiBaseUrl}/heartbeat?d=${Date.now()}`);
|
|
13
10
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onlineChecker.js","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/onlineChecker/onlineChecker.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAgB,aAAa;IAC7B,UAAU,CAAS;IAE7B,YAAY,UAAkB;QAC1B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEhD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAIM,KAAK,CAAC,cAAc;QACvB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,iBAAyB;QACxD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,iBAAiB,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAES,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,WAAW,GAAG,IAAI;QACjD,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAE9G,IAAI,CAAC,MAAM,CAAC,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YAEjE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;QACtD,CAAC;IACL,CAAC;CACJ","sourcesContent":["export default abstract class OnlineChecker {\r\n protected apiBaseUrl: string;\r\n\r\n constructor(apiBaseUrl: string) {\r\n if (!apiBaseUrl || apiBaseUrl.length === 0)\r\n throw new Error(`Api Base URL is required`);\r\n\r\n this.apiBaseUrl = apiBaseUrl;\r\n }\r\n\r\n public abstract isInternetOnline(): Promise<OnlineCheckerResult>;\r\n\r\n public async isApiReachable(): Promise<OnlineCheckerResult> {\r\n return await this.probe(`${this.apiBaseUrl}/heartbeat?d=${Date.now()}`);\r\n }\r\n\r\n public async isFileServerReachable(fileServerBaseUrl: string): Promise<OnlineCheckerResult> {\r\n return await this.probe(`${fileServerBaseUrl}/up?d=${Date.now()}`);\r\n }\r\n\r\n protected async probe(url: string, timeoutInMs = 4000): Promise<OnlineCheckerResult> {\r\n try {\r\n const timeoutSignal = AbortSignal.timeout(timeoutInMs);\r\n\r\n const result = await fetch(url, { method: `GET`, mode: `no-cors`, cache: `no-store`, signal: timeoutSignal });\r\n\r\n if (!result.ok)\r\n throw new Error(`Response returned ${result.status} status`);\r\n\r\n return { isOnline: true };\r\n }\r\n catch (error) {\r\n return { isOnline: false, error: error as Error };\r\n }\r\n }\r\n}\r\n\r\nexport interface OnlineCheckerResult {\r\n isOnline: boolean,\r\n error?: Error,\r\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webOnlineChecker.d.ts","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/onlineChecker/webOnlineChecker.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,EAAE,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAa;IAC1C,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAMhE"}
|
package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/webOnlineChecker.js
RENAMED
|
@@ -3,7 +3,7 @@ export default class WebOnlineChecker extends OnlineChecker {
|
|
|
3
3
|
async isInternetOnline() {
|
|
4
4
|
if (navigator?.onLine === false)
|
|
5
5
|
return { isOnline: false, error: new Error(`Offline mode detected by browser`) };
|
|
6
|
-
return
|
|
6
|
+
return { isOnline: true };
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=webOnlineChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webOnlineChecker.js","sourceRoot":"","sources":["../../../../../src/client/healthMonitor/onlineChecker/webOnlineChecker.ts"],"names":[],"mappings":"AAAA,OAAO,aAAsC,MAAM,oBAAoB,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAa;IAChD,KAAK,CAAC,gBAAgB;QACzB,IAAI,SAAS,EAAE,MAAM,KAAK,KAAK;YAC3B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC;QAErF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;CACJ","sourcesContent":["import OnlineChecker, { OnlineCheckerResult } from \"./onlineChecker.js\";\r\n\r\nexport default class WebOnlineChecker extends OnlineChecker {\r\n public async isInternetOnline(): Promise<OnlineCheckerResult> {\r\n if (navigator?.onLine === false)\r\n return { isOnline: false, error: new Error(`Offline mode detected by browser`) };\r\n\r\n return { isOnline: true };\r\n }\r\n}"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import DownloadEventArgs from "../../downloader/eventArgs/downloadEventArgs.js";
|
|
2
|
+
import HealthMonitorHealthyEventArgs from "./events/eventArgs/healthMonitorHealthyEventArgs.js";
|
|
3
|
+
import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
|
|
4
|
+
export default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase<DownloadEventArgs> {
|
|
5
|
+
protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
|
|
6
|
+
protected getFileServerKnownEventName(): string;
|
|
7
|
+
protected getTransferProgressedEventName(): string;
|
|
8
|
+
protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: DownloadEventArgs): number;
|
|
9
|
+
protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=transferDownloaderHealthMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferDownloaderHealthMonitor.d.ts","sourceRoot":"","sources":["../../../../src/client/healthMonitor/transferDownloaderHealthMonitor.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,iDAAiD,CAAC;AAEhF,OAAO,6BAA6B,MAAM,qDAAqD,CAAC;AAChG,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,yBAAyB,CAAC,iBAAiB,CAAC;IACrG,SAAS,CAAC,2CAA2C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IASjF,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAI/C,SAAS,CAAC,8BAA8B,IAAI,MAAM;IAIlD,SAAS,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAIpG,SAAS,CAAC,mBAAmB,IAAI,6BAA6B;CASjE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import TransferDownloadEvent from "../../downloader/dtos/downloadEvent.js";
|
|
2
|
+
import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
|
|
3
|
+
export default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase {
|
|
4
|
+
getFileServerUrlFromFileServerKnowEventArgs(eventArgs) {
|
|
5
|
+
const fileServerUrl = eventArgs.fileServerUrl;
|
|
6
|
+
if (!fileServerUrl)
|
|
7
|
+
throw new Error(`Event args are not of DownloadMetadataDeterminedEventArgs type`);
|
|
8
|
+
return fileServerUrl;
|
|
9
|
+
}
|
|
10
|
+
getFileServerKnownEventName() {
|
|
11
|
+
return TransferDownloadEvent.TransferMetadataDetermined;
|
|
12
|
+
}
|
|
13
|
+
getTransferProgressedEventName() {
|
|
14
|
+
return TransferDownloadEvent.DownloadProgressed;
|
|
15
|
+
}
|
|
16
|
+
getTransferredBytesTotalCount(currentHistoryLastProgressEvent) {
|
|
17
|
+
return currentHistoryLastProgressEvent?.downloadedBytes ?? 0;
|
|
18
|
+
}
|
|
19
|
+
getHealthyEventArgs() {
|
|
20
|
+
return {
|
|
21
|
+
transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.downloadedBytes,
|
|
22
|
+
averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondAverage,
|
|
23
|
+
currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondCurrent,
|
|
24
|
+
progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressPercent,
|
|
25
|
+
remainingSeconds: this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds === null ? undefined : this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transferDownloaderHealthMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferDownloaderHealthMonitor.js","sourceRoot":"","sources":["../../../../src/client/healthMonitor/transferDownloaderHealthMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,wCAAwC,CAAC;AAI3E,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,yBAA4C;IAC3F,2CAA2C,CAAC,SAAkB;QACpE,MAAM,aAAa,GAAI,SAAiD,CAAC,aAAa,CAAC;QAEvF,IAAI,CAAC,aAAa;YACd,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAEtF,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,2BAA2B;QACjC,OAAO,qBAAqB,CAAC,0BAA0B,CAAC;IAC5D,CAAC;IAES,8BAA8B;QACpC,OAAO,qBAAqB,CAAC,kBAAkB,CAAC;IACpD,CAAC;IAES,6BAA6B,CAAC,+BAAmD;QACvF,OAAO,+BAA+B,EAAE,eAAe,IAAI,CAAC,CAAC;IACjE,CAAC;IAES,mBAAmB;QACzB,OAAO;YACH,0BAA0B,EAAE,IAAI,CAAC,mCAAmC,EAAE,eAAe;YACrF,4BAA4B,EAAE,IAAI,CAAC,mCAAmC,EAAE,qBAAqB;YAC7F,4BAA4B,EAAE,IAAI,CAAC,mCAAmC,EAAE,qBAAqB;YAC7F,oBAAoB,EAAE,IAAI,CAAC,mCAAmC,EAAE,eAAe;YAC/E,gBAAgB,EAAE,IAAI,CAAC,mCAAmC,EAAE,6BAA6B,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,EAAE,6BAA6B;SAC3L,CAAC;IACN,CAAC;CACJ","sourcesContent":["import TransferDownloadEvent from \"../../downloader/dtos/downloadEvent.js\";\r\nimport DownloadEventArgs from \"../../downloader/eventArgs/downloadEventArgs.js\";\r\nimport DownloadMetadataDeterminedEventArgs from \"../../downloader/eventArgs/downloadMetadataDeterminedEventArgs.js\";\r\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\r\nimport TransferHealthMonitorBase from \"./transferHealthMonitorBase.js\";\r\n\r\nexport default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase<DownloadEventArgs> {\r\n protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string {\r\n const fileServerUrl = (eventArgs as DownloadMetadataDeterminedEventArgs).fileServerUrl;\r\n\r\n if (!fileServerUrl)\r\n throw new Error(`Event args are not of DownloadMetadataDeterminedEventArgs type`);\r\n\r\n return fileServerUrl;\r\n }\r\n\r\n protected getFileServerKnownEventName(): string {\r\n return TransferDownloadEvent.TransferMetadataDetermined;\r\n }\r\n\r\n protected getTransferProgressedEventName(): string {\r\n return TransferDownloadEvent.DownloadProgressed;\r\n }\r\n\r\n protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: DownloadEventArgs): number {\r\n return currentHistoryLastProgressEvent?.downloadedBytes ?? 0;\r\n }\r\n\r\n protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs {\r\n return {\r\n transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.downloadedBytes,\r\n averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondAverage,\r\n currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondCurrent,\r\n progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressPercent,\r\n remainingSeconds: this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds === null ? undefined : this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds,\r\n };\r\n }\r\n}"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type EventsEngine from "../../utils/events/eventsEngine.js";
|
|
2
|
+
import TransferHealthMonitorEvent from "./events/transferHealthMonitorEvent.js";
|
|
3
|
+
import HealthMonitorHealthyEventArgs from "./events/eventArgs/healthMonitorHealthyEventArgs.js";
|
|
4
|
+
import HealthMonitorUnhealthyEventArgs from "./events/eventArgs/healthMonitorUnhealthyEventArgs.js";
|
|
5
|
+
import OnlineChecker from "./onlineChecker/onlineChecker.js";
|
|
6
|
+
export default abstract class TransferHealthMonitorBase<T> {
|
|
7
|
+
#private;
|
|
8
|
+
protected lastProgressEventFromPreviousPeriod: T | undefined;
|
|
9
|
+
constructor(onlineChecker: OnlineChecker, transferEventsEngine: EventsEngine, healthCheckInterval?: number);
|
|
10
|
+
start(): void;
|
|
11
|
+
private resetState;
|
|
12
|
+
stop(): void;
|
|
13
|
+
private subscribeToTransferRunningEvents;
|
|
14
|
+
private unsubscribeFromTransferRunningEvents;
|
|
15
|
+
protected abstract getFileServerKnownEventName(): string;
|
|
16
|
+
protected abstract getTransferProgressedEventName(): string;
|
|
17
|
+
private fileServerKnownEventHandler;
|
|
18
|
+
protected abstract getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
|
|
19
|
+
private transferProgressedEventHandler;
|
|
20
|
+
private restartHealthCheck;
|
|
21
|
+
private checkHealth;
|
|
22
|
+
private clearCurrentPeriodProgressHistory;
|
|
23
|
+
private determineIsHealthy;
|
|
24
|
+
protected abstract getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: T): number;
|
|
25
|
+
private figureOutUnhealthyReasonWithNotifications;
|
|
26
|
+
private isOnlineResultToStatus;
|
|
27
|
+
private notifyHealthy;
|
|
28
|
+
protected abstract getHealthyEventArgs(): HealthMonitorHealthyEventArgs;
|
|
29
|
+
private notifyStartedCheckingUnhealthyReason;
|
|
30
|
+
private notifyUnhealthyInternetOkRestCheckingReason;
|
|
31
|
+
private notifyUnhealthyNoInternetReason;
|
|
32
|
+
private notifyUnhealthyApiOrFileServerErrorReason;
|
|
33
|
+
private notifyUnhealthyAllOkReason;
|
|
34
|
+
addEventListener(eventName: TransferHealthMonitorEvent.Healthy, handler: (event: HealthMonitorHealthyEventArgs) => void): void;
|
|
35
|
+
addEventListener(eventName: TransferHealthMonitorEvent.Unhealthy, handler: (event: HealthMonitorUnhealthyEventArgs) => void): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=transferHealthMonitorBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferHealthMonitorBase.d.ts","sourceRoot":"","sources":["../../../../src/client/healthMonitor/transferHealthMonitorBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAChF,OAAO,6BAA6B,MAAM,qDAAqD,CAAC;AAChG,OAAO,+BAA+B,MAAM,uDAAuD,CAAC;AACpG,OAAO,aAAsC,MAAM,kCAAkC,CAAC;AAEtF,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,yBAAyB,CAAC,CAAC;;IAYrD,SAAS,CAAC,mCAAmC,EAAE,CAAC,GAAG,SAAS,CAAC;gBAIjD,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,mBAAmB,SAAS;IAY1G,KAAK;IAWL,OAAO,CAAC,UAAU;IAOlB,IAAI;IAQJ,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,oCAAoC;IAK5C,SAAS,CAAC,QAAQ,CAAC,2BAA2B,IAAI,MAAM;IACxD,SAAS,CAAC,QAAQ,CAAC,8BAA8B,IAAI,MAAM;IAE3D,OAAO,CAAC,2BAA2B,CAEjC;IAEF,SAAS,CAAC,QAAQ,CAAC,2CAA2C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAE1F,OAAO,CAAC,8BAA8B,CAapC;IAEF,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,WAAW,CAmBjB;IAEF,OAAO,CAAC,iCAAiC;IAIzC,OAAO,CAAC,kBAAkB;IAS1B,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,EAAE,CAAC,GAAG,MAAM;YAE/E,yCAAyC;IA8BvD,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,aAAa;IAKrB,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,6BAA6B;IAEvE,OAAO,CAAC,oCAAoC;IAa5C,OAAO,CAAC,2CAA2C;IAanD,OAAO,CAAC,+BAA+B;IAavC,OAAO,CAAC,yCAAyC;IAajD,OAAO,CAAC,0BAA0B;IAalC,gBAAgB,CAAC,SAAS,EAAE,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GAAG,IAAI;IAC9H,gBAAgB,CAAC,SAAS,EAAE,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,+BAA+B,KAAK,IAAI,GAAG,IAAI;CAIrI"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export default class TransferUploadHealthMonitor {
|
|
1
|
+
import TransferHealthMonitorEvent from "./events/transferHealthMonitorEvent.js";
|
|
2
|
+
export default class TransferHealthMonitorBase {
|
|
4
3
|
#onlineChecker;
|
|
5
4
|
#transferEventsEngine;
|
|
6
5
|
#healthCheckInterval;
|
|
7
6
|
#timeout;
|
|
8
7
|
#fileServerUrl;
|
|
9
8
|
#currentPeriodProgressHistory = [];
|
|
10
|
-
|
|
9
|
+
lastProgressEventFromPreviousPeriod;
|
|
11
10
|
#isCurrentlyHealthy = true;
|
|
12
11
|
constructor(onlineChecker, transferEventsEngine, healthCheckInterval = 15_000) {
|
|
13
12
|
if (!onlineChecker)
|
|
@@ -27,7 +26,7 @@ export default class TransferUploadHealthMonitor {
|
|
|
27
26
|
}
|
|
28
27
|
resetState() {
|
|
29
28
|
this.#currentPeriodProgressHistory = [];
|
|
30
|
-
this
|
|
29
|
+
this.lastProgressEventFromPreviousPeriod = undefined;
|
|
31
30
|
this.#timeout = undefined;
|
|
32
31
|
this.#isCurrentlyHealthy = true;
|
|
33
32
|
}
|
|
@@ -37,17 +36,17 @@ export default class TransferUploadHealthMonitor {
|
|
|
37
36
|
this.unsubscribeFromTransferRunningEvents();
|
|
38
37
|
}
|
|
39
38
|
subscribeToTransferRunningEvents() {
|
|
40
|
-
this.#transferEventsEngine.addEventListener(
|
|
41
|
-
this.#transferEventsEngine.addEventListener(
|
|
39
|
+
this.#transferEventsEngine.addEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);
|
|
40
|
+
this.#transferEventsEngine.addEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);
|
|
42
41
|
}
|
|
43
42
|
unsubscribeFromTransferRunningEvents() {
|
|
44
|
-
this.#transferEventsEngine.removeEventListener(
|
|
45
|
-
this.#transferEventsEngine.removeEventListener(
|
|
43
|
+
this.#transferEventsEngine.removeEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);
|
|
44
|
+
this.#transferEventsEngine.removeEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);
|
|
46
45
|
}
|
|
47
|
-
|
|
48
|
-
this.#fileServerUrl = eventArgs
|
|
46
|
+
fileServerKnownEventHandler = (eventArgs) => {
|
|
47
|
+
this.#fileServerUrl = this.getFileServerUrlFromFileServerKnowEventArgs(eventArgs);
|
|
49
48
|
};
|
|
50
|
-
|
|
49
|
+
transferProgressedEventHandler = (eventArgs) => {
|
|
51
50
|
this.#currentPeriodProgressHistory.push({ time: Date.now(), eventArgs });
|
|
52
51
|
if (this.#isCurrentlyHealthy)
|
|
53
52
|
return;
|
|
@@ -59,7 +58,7 @@ export default class TransferUploadHealthMonitor {
|
|
|
59
58
|
};
|
|
60
59
|
restartHealthCheck(currentProgressEvent) {
|
|
61
60
|
this.#currentPeriodProgressHistory = [];
|
|
62
|
-
this
|
|
61
|
+
this.lastProgressEventFromPreviousPeriod = currentProgressEvent;
|
|
63
62
|
this.#isCurrentlyHealthy = true;
|
|
64
63
|
clearTimeout(this.#timeout);
|
|
65
64
|
this.#timeout = setTimeout(() => this.checkHealth(), this.#healthCheckInterval);
|
|
@@ -67,7 +66,7 @@ export default class TransferUploadHealthMonitor {
|
|
|
67
66
|
checkHealth = async () => {
|
|
68
67
|
const currentPeriodLastProgressEvent = this.#currentPeriodProgressHistory.at(-1)?.eventArgs;
|
|
69
68
|
const isHealthy = this.determineIsHealthy(currentPeriodLastProgressEvent);
|
|
70
|
-
this
|
|
69
|
+
this.lastProgressEventFromPreviousPeriod = currentPeriodLastProgressEvent || this.lastProgressEventFromPreviousPeriod;
|
|
71
70
|
if (isHealthy) {
|
|
72
71
|
this.#isCurrentlyHealthy = true;
|
|
73
72
|
this.notifyHealthy();
|
|
@@ -83,9 +82,9 @@ export default class TransferUploadHealthMonitor {
|
|
|
83
82
|
this.#currentPeriodProgressHistory = [];
|
|
84
83
|
}
|
|
85
84
|
determineIsHealthy(currentHistoryLastProgressEvent) {
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
const bytesSentThisPeriod =
|
|
85
|
+
const currentTransferredBytesTotalCount = this.getTransferredBytesTotalCount(currentHistoryLastProgressEvent);
|
|
86
|
+
const previousPeriodTransferredBytesTotalCount = this.getTransferredBytesTotalCount(this.lastProgressEventFromPreviousPeriod);
|
|
87
|
+
const bytesSentThisPeriod = currentTransferredBytesTotalCount - previousPeriodTransferredBytesTotalCount;
|
|
89
88
|
return bytesSentThisPeriod > 0;
|
|
90
89
|
}
|
|
91
90
|
async figureOutUnhealthyReasonWithNotifications() {
|
|
@@ -116,10 +115,8 @@ export default class TransferUploadHealthMonitor {
|
|
|
116
115
|
return isFileServerOnlineResult.isOnline ? `Ok` : `Error`;
|
|
117
116
|
}
|
|
118
117
|
notifyHealthy() {
|
|
119
|
-
const eventArgs =
|
|
120
|
-
|
|
121
|
-
};
|
|
122
|
-
this.#transferEventsEngine.emit(TransferUploadHealthMonitorEvent.Healthy, eventArgs);
|
|
118
|
+
const eventArgs = this.getHealthyEventArgs();
|
|
119
|
+
this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Healthy, eventArgs);
|
|
123
120
|
}
|
|
124
121
|
notifyStartedCheckingUnhealthyReason() {
|
|
125
122
|
const eventArgs = {
|
|
@@ -128,9 +125,9 @@ export default class TransferUploadHealthMonitor {
|
|
|
128
125
|
api: { status: `Checking` },
|
|
129
126
|
fileServer: { status: `Checking` },
|
|
130
127
|
},
|
|
131
|
-
...this
|
|
128
|
+
...this.lastProgressEventFromPreviousPeriod,
|
|
132
129
|
};
|
|
133
|
-
this.#transferEventsEngine.emit(
|
|
130
|
+
this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);
|
|
134
131
|
}
|
|
135
132
|
notifyUnhealthyInternetOkRestCheckingReason() {
|
|
136
133
|
const eventArgs = {
|
|
@@ -139,9 +136,9 @@ export default class TransferUploadHealthMonitor {
|
|
|
139
136
|
api: { status: `Checking` },
|
|
140
137
|
fileServer: { status: `Checking` },
|
|
141
138
|
},
|
|
142
|
-
...this
|
|
139
|
+
...this.lastProgressEventFromPreviousPeriod,
|
|
143
140
|
};
|
|
144
|
-
this.#transferEventsEngine.emit(
|
|
141
|
+
this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);
|
|
145
142
|
}
|
|
146
143
|
notifyUnhealthyNoInternetReason(error) {
|
|
147
144
|
const eventArgs = {
|
|
@@ -150,9 +147,9 @@ export default class TransferUploadHealthMonitor {
|
|
|
150
147
|
api: { status: `Unknown` },
|
|
151
148
|
fileServer: { status: `Unknown` },
|
|
152
149
|
},
|
|
153
|
-
...this
|
|
150
|
+
...this.lastProgressEventFromPreviousPeriod,
|
|
154
151
|
};
|
|
155
|
-
this.#transferEventsEngine.emit(
|
|
152
|
+
this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);
|
|
156
153
|
}
|
|
157
154
|
notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus, fileServerError, apiError) {
|
|
158
155
|
const eventArgs = {
|
|
@@ -161,9 +158,9 @@ export default class TransferUploadHealthMonitor {
|
|
|
161
158
|
api: apiError ? { status: `Error`, error: apiError } : { status: `Ok` },
|
|
162
159
|
fileServer: fileServerError ? { status: `Error`, error: fileServerError } : { status: fileServerStatus },
|
|
163
160
|
},
|
|
164
|
-
...this
|
|
161
|
+
...this.lastProgressEventFromPreviousPeriod,
|
|
165
162
|
};
|
|
166
|
-
this.#transferEventsEngine.emit(
|
|
163
|
+
this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);
|
|
167
164
|
}
|
|
168
165
|
notifyUnhealthyAllOkReason() {
|
|
169
166
|
const eventArgs = {
|
|
@@ -172,12 +169,12 @@ export default class TransferUploadHealthMonitor {
|
|
|
172
169
|
api: { status: `Ok` },
|
|
173
170
|
fileServer: { status: `Ok` },
|
|
174
171
|
},
|
|
175
|
-
...this
|
|
172
|
+
...this.lastProgressEventFromPreviousPeriod,
|
|
176
173
|
};
|
|
177
|
-
this.#transferEventsEngine.emit(
|
|
174
|
+
this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);
|
|
178
175
|
}
|
|
179
176
|
addEventListener(eventName, handler) {
|
|
180
177
|
this.#transferEventsEngine.addEventListener(eventName, handler);
|
|
181
178
|
}
|
|
182
179
|
}
|
|
183
|
-
//# sourceMappingURL=
|
|
180
|
+
//# sourceMappingURL=transferHealthMonitorBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferHealthMonitorBase.js","sourceRoot":"","sources":["../../../../src/client/healthMonitor/transferHealthMonitorBase.ts"],"names":[],"mappings":"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","sourcesContent":["import type EventsEngine from \"../../utils/events/eventsEngine.js\";\r\nimport TransferHealthMonitorEvent from \"./events/transferHealthMonitorEvent.js\";\r\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\r\nimport HealthMonitorUnhealthyEventArgs from \"./events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\r\nimport OnlineChecker, { OnlineCheckerResult } from \"./onlineChecker/onlineChecker.js\";\r\n\r\nexport default abstract class TransferHealthMonitorBase<T> {\r\n readonly #onlineChecker: OnlineChecker;\r\n readonly #transferEventsEngine: EventsEngine;\r\n\r\n #healthCheckInterval: number;\r\n\r\n #timeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n #fileServerUrl: string | undefined;\r\n\r\n #currentPeriodProgressHistory: { time: number, eventArgs: T }[] = [];\r\n\r\n protected lastProgressEventFromPreviousPeriod: T | undefined;\r\n\r\n #isCurrentlyHealthy = true;\r\n\r\n constructor(onlineChecker: OnlineChecker, transferEventsEngine: EventsEngine, healthCheckInterval = 15_000) {\r\n if (!onlineChecker)\r\n throw new Error(`Online checker can't be empty`);\r\n if (!transferEventsEngine)\r\n throw new Error(`Events engine can't be empty`);\r\n\r\n this.#onlineChecker = onlineChecker;\r\n this.#transferEventsEngine = transferEventsEngine;\r\n\r\n this.#healthCheckInterval = healthCheckInterval;\r\n }\r\n\r\n start() {\r\n if (this.#timeout)\r\n throw new Error(`Health Monitor is already running`);\r\n\r\n this.resetState();\r\n\r\n this.subscribeToTransferRunningEvents();\r\n\r\n this.#timeout = setTimeout(() => this.checkHealth(), this.#healthCheckInterval);\r\n }\r\n\r\n private resetState() {\r\n this.#currentPeriodProgressHistory = [];\r\n this.lastProgressEventFromPreviousPeriod = undefined;\r\n this.#timeout = undefined;\r\n this.#isCurrentlyHealthy = true;\r\n }\r\n\r\n stop() {\r\n clearTimeout(this.#timeout);\r\n\r\n this.#timeout = undefined;\r\n\r\n this.unsubscribeFromTransferRunningEvents();\r\n }\r\n\r\n private subscribeToTransferRunningEvents() {\r\n this.#transferEventsEngine.addEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);\r\n this.#transferEventsEngine.addEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);\r\n }\r\n\r\n private unsubscribeFromTransferRunningEvents() {\r\n this.#transferEventsEngine.removeEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);\r\n this.#transferEventsEngine.removeEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);\r\n }\r\n\r\n protected abstract getFileServerKnownEventName(): string;\r\n protected abstract getTransferProgressedEventName(): string;\r\n\r\n private fileServerKnownEventHandler = (eventArgs: unknown) => {\r\n this.#fileServerUrl = this.getFileServerUrlFromFileServerKnowEventArgs(eventArgs);\r\n };\r\n\r\n protected abstract getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;\r\n\r\n private transferProgressedEventHandler = (eventArgs: T) => {\r\n this.#currentPeriodProgressHistory.push({ time: Date.now(), eventArgs });\r\n\r\n if (this.#isCurrentlyHealthy)\r\n return;\r\n\r\n const isHealthy = this.determineIsHealthy(eventArgs);\r\n\r\n if (!isHealthy)\r\n return;\r\n\r\n this.notifyHealthy();\r\n this.restartHealthCheck(eventArgs);\r\n };\r\n\r\n private restartHealthCheck(currentProgressEvent: T) {\r\n this.#currentPeriodProgressHistory = [];\r\n this.lastProgressEventFromPreviousPeriod = currentProgressEvent;\r\n\r\n this.#isCurrentlyHealthy = true;\r\n\r\n clearTimeout(this.#timeout);\r\n this.#timeout = setTimeout(() => this.checkHealth(), this.#healthCheckInterval);\r\n }\r\n\r\n private checkHealth = async (): Promise<void> => {\r\n const currentPeriodLastProgressEvent = this.#currentPeriodProgressHistory.at(-1)?.eventArgs;\r\n\r\n const isHealthy = this.determineIsHealthy(currentPeriodLastProgressEvent);\r\n\r\n this.lastProgressEventFromPreviousPeriod = currentPeriodLastProgressEvent || this.lastProgressEventFromPreviousPeriod;\r\n\r\n if (isHealthy) {\r\n this.#isCurrentlyHealthy = true;\r\n this.notifyHealthy();\r\n }\r\n else {\r\n this.#isCurrentlyHealthy = false;\r\n await this.figureOutUnhealthyReasonWithNotifications();\r\n }\r\n\r\n this.clearCurrentPeriodProgressHistory();\r\n\r\n this.#timeout = setTimeout(() => this.checkHealth(), this.#healthCheckInterval);\r\n };\r\n\r\n private clearCurrentPeriodProgressHistory() {\r\n this.#currentPeriodProgressHistory = [];\r\n }\r\n\r\n private determineIsHealthy(currentHistoryLastProgressEvent: T | undefined) {\r\n const currentTransferredBytesTotalCount = this.getTransferredBytesTotalCount(currentHistoryLastProgressEvent);\r\n const previousPeriodTransferredBytesTotalCount = this.getTransferredBytesTotalCount(this.lastProgressEventFromPreviousPeriod);\r\n\r\n const bytesSentThisPeriod = currentTransferredBytesTotalCount - previousPeriodTransferredBytesTotalCount;\r\n\r\n return bytesSentThisPeriod > 0;\r\n }\r\n\r\n protected abstract getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: T): number;\r\n\r\n private async figureOutUnhealthyReasonWithNotifications(): Promise<void> {\r\n this.notifyStartedCheckingUnhealthyReason();\r\n\r\n const { isOnline: isInternetOnline, error: internetOnlineError } = await this.#onlineChecker.isInternetOnline();\r\n\r\n if (isInternetOnline)\r\n this.notifyUnhealthyInternetOkRestCheckingReason();\r\n else {\r\n this.notifyUnhealthyNoInternetReason(internetOnlineError);\r\n return;\r\n }\r\n\r\n const isApiOnlinePromise = this.#onlineChecker.isApiReachable();\r\n\r\n const isFileServerOnlinePromise = this.#fileServerUrl\r\n ? this.#onlineChecker.isFileServerReachable(this.#fileServerUrl)\r\n : Promise.resolve(undefined);\r\n\r\n const { isOnline: isApiOnline, error: apiOnlineError } = await isApiOnlinePromise;\r\n const isFileServerOnlineResult = await isFileServerOnlinePromise;\r\n\r\n if (isApiOnline && isFileServerOnlineResult?.isOnline === true)\r\n this.notifyUnhealthyAllOkReason();\r\n else {\r\n const fileServerStatus = this.isOnlineResultToStatus(isFileServerOnlineResult);\r\n\r\n this.notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus, isFileServerOnlineResult?.error, apiOnlineError);\r\n }\r\n }\r\n\r\n private isOnlineResultToStatus(isFileServerOnlineResult: OnlineCheckerResult | undefined): `Ok` | `Error` | `Unknown` {\r\n if (!isFileServerOnlineResult)\r\n return `Unknown`;\r\n\r\n return isFileServerOnlineResult.isOnline ? `Ok` : `Error`;\r\n }\r\n\r\n private notifyHealthy() {\r\n const eventArgs = this.getHealthyEventArgs();\r\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Healthy, eventArgs);\r\n }\r\n\r\n protected abstract getHealthyEventArgs(): HealthMonitorHealthyEventArgs;\r\n\r\n private notifyStartedCheckingUnhealthyReason() {\r\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\r\n reason: {\r\n internet: { status: `Checking` },\r\n api: { status: `Checking` },\r\n fileServer: { status: `Checking` },\r\n },\r\n ...this.lastProgressEventFromPreviousPeriod,\r\n };\r\n\r\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\r\n }\r\n\r\n private notifyUnhealthyInternetOkRestCheckingReason() {\r\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\r\n reason: {\r\n internet: { status: `Ok` },\r\n api: { status: `Checking` },\r\n fileServer: { status: `Checking` },\r\n },\r\n ...this.lastProgressEventFromPreviousPeriod,\r\n };\r\n\r\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\r\n }\r\n\r\n private notifyUnhealthyNoInternetReason(error?: Error) {\r\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\r\n reason: {\r\n internet: { status: `Error`, error },\r\n api: { status: `Unknown` },\r\n fileServer: { status: `Unknown` },\r\n },\r\n ...this.lastProgressEventFromPreviousPeriod,\r\n };\r\n\r\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\r\n }\r\n\r\n private notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus: `Ok` | `Error` | `Unknown`, fileServerError: Error | undefined, apiError: Error | undefined) {\r\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\r\n reason: {\r\n internet: { status: `Ok` },\r\n api: apiError ? { status: `Error`, error: apiError } : { status: `Ok` },\r\n fileServer: fileServerError ? { status: `Error`, error: fileServerError } : { status: fileServerStatus },\r\n },\r\n ...this.lastProgressEventFromPreviousPeriod,\r\n };\r\n\r\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\r\n }\r\n\r\n private notifyUnhealthyAllOkReason() {\r\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\r\n reason: {\r\n internet: { status: `Ok` },\r\n api: { status: `Ok` },\r\n fileServer: { status: `Ok` },\r\n },\r\n ...this.lastProgressEventFromPreviousPeriod,\r\n };\r\n\r\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\r\n }\r\n\r\n addEventListener(eventName: TransferHealthMonitorEvent.Healthy, handler: (event: HealthMonitorHealthyEventArgs) => void): void\r\n addEventListener(eventName: TransferHealthMonitorEvent.Unhealthy, handler: (event: HealthMonitorUnhealthyEventArgs) => void): void\r\n addEventListener(eventName: string, handler: (arg?: any) => void): void {\r\n this.#transferEventsEngine.addEventListener(eventName, handler);\r\n }\r\n}"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import TransferUploadProgressedEventArgs from "../../uploader/eventArgs/transferUploadProgressedEventArgs.js";
|
|
2
|
+
import HealthMonitorHealthyEventArgs from "./events/eventArgs/healthMonitorHealthyEventArgs.js";
|
|
3
|
+
import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
|
|
4
|
+
export default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase<TransferUploadProgressedEventArgs> {
|
|
5
|
+
protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
|
|
6
|
+
protected getFileServerKnownEventName(): string;
|
|
7
|
+
protected getTransferProgressedEventName(): string;
|
|
8
|
+
protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: TransferUploadProgressedEventArgs): number;
|
|
9
|
+
protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=transferUploaderHealthMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferUploaderHealthMonitor.d.ts","sourceRoot":"","sources":["../../../../src/client/healthMonitor/transferUploaderHealthMonitor.ts"],"names":[],"mappings":"AACA,OAAO,iCAAiC,MAAM,+DAA+D,CAAC;AAE9G,OAAO,6BAA6B,MAAM,qDAAqD,CAAC;AAChG,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,yBAAyB,CAAC,iCAAiC,CAAC;IACnH,SAAS,CAAC,2CAA2C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IASjF,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAI/C,SAAS,CAAC,8BAA8B,IAAI,MAAM;IAIlD,SAAS,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,EAAE,iCAAiC,GAAG,MAAM;IAIpH,SAAS,CAAC,mBAAmB,IAAI,6BAA6B;CASjE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import TransferUploadEvent from "../../uploader/transferUploadEvent.js";
|
|
2
|
+
import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
|
|
3
|
+
export default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase {
|
|
4
|
+
getFileServerUrlFromFileServerKnowEventArgs(eventArgs) {
|
|
5
|
+
const fileServerUrl = eventArgs.fileServerUrl;
|
|
6
|
+
if (!fileServerUrl)
|
|
7
|
+
throw new Error(`Event args are not of TransferMetadataDeterminedEventArgs type`);
|
|
8
|
+
return fileServerUrl;
|
|
9
|
+
}
|
|
10
|
+
getFileServerKnownEventName() {
|
|
11
|
+
return TransferUploadEvent.TransferMetadataDetermined;
|
|
12
|
+
}
|
|
13
|
+
getTransferProgressedEventName() {
|
|
14
|
+
return TransferUploadEvent.TransferProgressed;
|
|
15
|
+
}
|
|
16
|
+
getTransferredBytesTotalCount(currentHistoryLastProgressEvent) {
|
|
17
|
+
return currentHistoryLastProgressEvent?.uploadedBytesTotalCount ?? 0;
|
|
18
|
+
}
|
|
19
|
+
getHealthyEventArgs() {
|
|
20
|
+
return {
|
|
21
|
+
transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.uploadedBytesTotalCount,
|
|
22
|
+
averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.averageSpeedInBytesPerSecond,
|
|
23
|
+
currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.currentSpeedInBytesPerSecond,
|
|
24
|
+
progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressInPercentage,
|
|
25
|
+
remainingSeconds: this.lastProgressEventFromPreviousPeriod?.remainingSeconds,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transferUploaderHealthMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferUploaderHealthMonitor.js","sourceRoot":"","sources":["../../../../src/client/healthMonitor/transferUploaderHealthMonitor.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,uCAAuC,CAAC;AAExE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,yBAA4D;IACzG,2CAA2C,CAAC,SAAkB;QACpE,MAAM,aAAa,GAAI,SAAiD,CAAC,aAAa,CAAC;QAEvF,IAAI,CAAC,aAAa;YACd,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAEtF,OAAO,aAAa,CAAC;IACzB,CAAC;IAES,2BAA2B;QACjC,OAAO,mBAAmB,CAAC,0BAA0B,CAAC;IAC1D,CAAC;IAES,8BAA8B;QACpC,OAAO,mBAAmB,CAAC,kBAAkB,CAAC;IAClD,CAAC;IAES,6BAA6B,CAAC,+BAAmE;QACvG,OAAO,+BAA+B,EAAE,uBAAuB,IAAI,CAAC,CAAC;IACzE,CAAC;IAES,mBAAmB;QACzB,OAAO;YACH,0BAA0B,EAAE,IAAI,CAAC,mCAAmC,EAAE,uBAAuB;YAC7F,4BAA4B,EAAE,IAAI,CAAC,mCAAmC,EAAE,4BAA4B;YACpG,4BAA4B,EAAE,IAAI,CAAC,mCAAmC,EAAE,4BAA4B;YACpG,oBAAoB,EAAE,IAAI,CAAC,mCAAmC,EAAE,oBAAoB;YACpF,gBAAgB,EAAE,IAAI,CAAC,mCAAmC,EAAE,gBAAgB;SAC/E,CAAC;IACN,CAAC;CACJ","sourcesContent":["import { TransferMetadataDeterminedEventArgs } from \"../../index.node.js\";\r\nimport TransferUploadProgressedEventArgs from \"../../uploader/eventArgs/transferUploadProgressedEventArgs.js\";\r\nimport TransferUploadEvent from \"../../uploader/transferUploadEvent.js\";\r\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\r\nimport TransferHealthMonitorBase from \"./transferHealthMonitorBase.js\";\r\n\r\nexport default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase<TransferUploadProgressedEventArgs> {\r\n protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string {\r\n const fileServerUrl = (eventArgs as TransferMetadataDeterminedEventArgs).fileServerUrl;\r\n\r\n if (!fileServerUrl)\r\n throw new Error(`Event args are not of TransferMetadataDeterminedEventArgs type`);\r\n\r\n return fileServerUrl;\r\n }\r\n\r\n protected getFileServerKnownEventName(): string {\r\n return TransferUploadEvent.TransferMetadataDetermined;\r\n }\r\n\r\n protected getTransferProgressedEventName(): string {\r\n return TransferUploadEvent.TransferProgressed;\r\n }\r\n\r\n protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: TransferUploadProgressedEventArgs): number {\r\n return currentHistoryLastProgressEvent?.uploadedBytesTotalCount ?? 0;\r\n }\r\n\r\n protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs {\r\n return {\r\n transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.uploadedBytesTotalCount,\r\n averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.averageSpeedInBytesPerSecond,\r\n currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.currentSpeedInBytesPerSecond,\r\n progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressInPercentage,\r\n remainingSeconds: this.lastProgressEventFromPreviousPeriod?.remainingSeconds,\r\n };\r\n }\r\n}"]}
|
|
@@ -9,8 +9,8 @@ import UdpConcurrencyBasedOptimizationStrategy from "../../../uploader/optimizer
|
|
|
9
9
|
import NodeCryptographyProvider from "../../../utils/crypto/node/nodeCryptographyProvider.js";
|
|
10
10
|
import TransferUploaderBase from "../transferUploaderBase.js";
|
|
11
11
|
import { buildUploadConfig, isTransferInfo, fixTransferInfo } from "../utils/uploaderUtils.js";
|
|
12
|
-
import
|
|
13
|
-
import NodeOnlineChecker from '
|
|
12
|
+
import TransferUploaderHealthMonitor from '../../healthMonitor/transferUploaderHealthMonitor.js';
|
|
13
|
+
import NodeOnlineChecker from '../../healthMonitor/onlineChecker/nodeOnlineChecker.js';
|
|
14
14
|
export default class NodeTransferUploader extends TransferUploaderBase {
|
|
15
15
|
constructor(transferInfoOrExportData, config, envValues, logger) {
|
|
16
16
|
const trackingId = config.trackingId || guid();
|
|
@@ -20,7 +20,7 @@ export default class NodeTransferUploader extends TransferUploaderBase {
|
|
|
20
20
|
const fileServerClientFactory = new NodeFileServerClientFactory(envValues.source, envValues.sourceDetails, config.uploadIdleTimeoutInMs, config.chunkUploadRetryLimit);
|
|
21
21
|
const cryptography = new NodeCryptographyProvider();
|
|
22
22
|
const uploadConfig = buildUploadConfig(config);
|
|
23
|
-
const healthMonitor = new
|
|
23
|
+
const healthMonitor = new TransferUploaderHealthMonitor(new NodeOnlineChecker(envValues.apiBaseUrl), eventsEngine);
|
|
24
24
|
const apiClient = new NodeApiClient(envValues.apiBaseUrl, envValues.source, envValues.sourceDetails, config.apiRequestTotalTimeoutInMs, config.apiRetryLimit);
|
|
25
25
|
if (config.logintoken)
|
|
26
26
|
apiClient.setLoginToken(config.logintoken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeTransferUploader.js","sourceRoot":"","sources":["../../../../../src/client/uploader/node/nodeTransferUploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,gBAAgB,MAAM,gDAAgD,CAAC;AAC9E,OAAO,2BAA2B,MAAM,wDAAwD,CAAC;AACjG,OAAO,iDAAiD,MAAM,mGAAmG,CAAC;AAClK,OAAO,uBAAuB,MAAM,wDAAwD,CAAC;AAC7F,OAAO,uCAAuC,MAAM,mFAAmF,CAAC;AACxI,OAAO,wBAAwB,MAAM,wDAAwD,CAAC;AAC9F,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"nodeTransferUploader.js","sourceRoot":"","sources":["../../../../../src/client/uploader/node/nodeTransferUploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,gBAAgB,MAAM,gDAAgD,CAAC;AAC9E,OAAO,2BAA2B,MAAM,wDAAwD,CAAC;AACjG,OAAO,iDAAiD,MAAM,mGAAmG,CAAC;AAClK,OAAO,uBAAuB,MAAM,wDAAwD,CAAC;AAC7F,OAAO,uCAAuC,MAAM,mFAAmF,CAAC;AACxI,OAAO,wBAAwB,MAAM,wDAAwD,CAAC;AAC9F,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,6BAA6B,MAAM,sDAAsD,CAAC;AACjG,OAAO,iBAAiB,MAAM,wDAAwD,CAAC;AAUvF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,oBAAqC;IAGnF,YAAY,wBAAuJ,EAAE,MAA8B,EAAE,SAA+B,EAAE,MAAc;QAChP,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAE/C,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,0BAA0B,GAAG,IAAI,iDAAiD,EAAE,CAAC;QAC3F,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,yBAAyB,EAAE,YAAY,EAAE,IAAI,uCAAuC,EAAE,CAAC,CAAC;QACzK,MAAM,uBAAuB,GAAG,IAAI,2BAA2B,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvK,MAAM,YAAY,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QAEnH,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAE9J,IAAI,MAAM,CAAC,UAAU;YACjB,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,WAA0C,CAAC;QAC/C,IAAI,QAAyC,CAAC;QAE9C,IAAI,cAAc,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC3C,eAAe,CAAC,wBAAwB,CAAC,CAAC;YAE1C,WAAW,GAAG,wBAAwB,CAAC,KAAK,CAAC;YAE7C,QAAQ,GAAG,IAAI,cAAc,CAAC,0BAA0B,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,wBAAwB,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACjL,CAAC;aACI,CAAC;YACF,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;YAElD,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,wBAAwB,EAAE,YAAY,EAAE,0BAA0B,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtL,CAAC;QAED,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IACvF,CAAC;CACJ","sourcesContent":["import { v4 as guid } from 'uuid';\r\n\r\nimport TransferUpload from \"../../../uploader/transferUpload.js\";\r\nimport NodeApiClient from \"../../../utils/api/node/nodeApiClient.js\";\r\nimport NodeEventsEngine from \"../../../utils/events/node/nodeEventsEngine.js\";\r\nimport NodeFileServerClientFactory from \"../../../utils/api/node/nodeFileServerClientFactory.js\";\r\nimport NodeFileDetailsUploaderChunkStreamProviderFactory from \"../../../uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js\";\r\nimport TransferUploadOptimizer from \"../../../uploader/optimizer/transferUploadOptimizer.js\";\r\nimport UdpConcurrencyBasedOptimizationStrategy from \"../../../uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js\";\r\nimport NodeCryptographyProvider from \"../../../utils/crypto/node/nodeCryptographyProvider.js\";\r\nimport TransferUploaderBase from \"../transferUploaderBase.js\";\r\nimport { buildUploadConfig, isTransferInfo, fixTransferInfo } from \"../utils/uploaderUtils.js\";\r\nimport TransferUploaderHealthMonitor from '../../healthMonitor/transferUploaderHealthMonitor.js';\r\nimport NodeOnlineChecker from '../../healthMonitor/onlineChecker/nodeOnlineChecker.js';\r\n\r\nimport type NodeFileDetails from \"../../../utils/fileSystem/node/nodeFileDetails.js\";\r\nimport type Logger from \"../../loggers/logger.js\";\r\nimport type EnvironmentVariables from \"../../environmentVariables.js\";\r\nimport type TransferUploadInfo from \"../../../uploader/options/transferUploadInfo.js\";\r\nimport type { TransferUploadExportData } from \"../../../uploader/export/transferUploadExportData.js\";\r\nimport type { TransferUploadAppendInfo } from \"../../../uploader/options/transferUploadAppendInfo.js\";\r\nimport type TransferUploaderConfig from \"../transferUploaderConfig.js\";\r\n\r\nexport default class NodeTransferUploader extends TransferUploaderBase<NodeFileDetails> {\r\n constructor(transferInfo: TransferUploadInfo<NodeFileDetails> | TransferUploadAppendInfo<NodeFileDetails>, config: TransferUploaderConfig, envValues: EnvironmentVariables, logger: Logger)\r\n constructor(exportData: TransferUploadExportData<NodeFileDetails>, config: TransferUploaderConfig, envValues: EnvironmentVariables, logger: Logger)\r\n constructor(transferInfoOrExportData: (TransferUploadInfo<NodeFileDetails> | TransferUploadAppendInfo<NodeFileDetails>) | TransferUploadExportData<NodeFileDetails>, config: TransferUploaderConfig, envValues: EnvironmentVariables, logger: Logger) {\r\n const trackingId = config.trackingId || guid();\r\n\r\n const eventsEngine = new NodeEventsEngine();\r\n const chunkStreamProviderFactory = new NodeFileDetailsUploaderChunkStreamProviderFactory();\r\n const optimizer = new TransferUploadOptimizer(config.tcpChunkSizeInBytes, config.tcpChunksUploadInParallel, eventsEngine, new UdpConcurrencyBasedOptimizationStrategy());\r\n const fileServerClientFactory = new NodeFileServerClientFactory(envValues.source, envValues.sourceDetails, config.uploadIdleTimeoutInMs, config.chunkUploadRetryLimit);\r\n const cryptography = new NodeCryptographyProvider();\r\n const uploadConfig = buildUploadConfig(config);\r\n const healthMonitor = new TransferUploaderHealthMonitor(new NodeOnlineChecker(envValues.apiBaseUrl), eventsEngine);\r\n\r\n const apiClient = new NodeApiClient(envValues.apiBaseUrl, envValues.source, envValues.sourceDetails, config.apiRequestTotalTimeoutInMs, config.apiRetryLimit);\r\n\r\n if (config.logintoken)\r\n apiClient.setLoginToken(config.logintoken);\r\n\r\n let fileDetails: NodeFileDetails[] | undefined;\r\n let transfer: TransferUpload<NodeFileDetails>;\r\n\r\n if (isTransferInfo(transferInfoOrExportData)) {\r\n fixTransferInfo(transferInfoOrExportData);\r\n\r\n fileDetails = transferInfoOrExportData.files;\r\n\r\n transfer = new TransferUpload(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferInfoOrExportData, uploadConfig, optimizer, cryptography);\r\n }\r\n else {\r\n fileDetails = transferInfoOrExportData.info.files;\r\n\r\n transfer = TransferUpload.recreate(transferInfoOrExportData, uploadConfig, chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, optimizer, cryptography);\r\n }\r\n\r\n super(transfer, fileDetails, config, envValues, logger, healthMonitor, trackingId);\r\n }\r\n}"]}
|