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.
Files changed (79) hide show
  1. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.d.ts +9 -0
  2. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.d.ts.map +1 -0
  3. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js +2 -0
  4. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js.map +1 -0
  5. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.d.ts +19 -0
  6. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.d.ts.map +1 -0
  7. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js +2 -0
  8. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js.map +1 -0
  9. package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.d.ts +6 -0
  10. package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.d.ts.map +1 -0
  11. package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js +7 -0
  12. package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js.map +1 -0
  13. package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/nodeOnlineChecker.d.ts +1 -0
  14. package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.d.ts.map +1 -0
  15. package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/nodeOnlineChecker.js +3 -0
  16. package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +1 -0
  17. package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/onlineChecker.d.ts +0 -1
  18. package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.d.ts.map +1 -0
  19. package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/onlineChecker.js +0 -3
  20. package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.js.map +1 -0
  21. package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.d.ts.map +1 -0
  22. package/dist/src/client/{uploader/healthMonitor → healthMonitor}/onlineChecker/webOnlineChecker.js +1 -1
  23. package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.js.map +1 -0
  24. package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.d.ts +11 -0
  25. package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.d.ts.map +1 -0
  26. package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js +29 -0
  27. package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js.map +1 -0
  28. package/dist/src/client/healthMonitor/transferHealthMonitorBase.d.ts +37 -0
  29. package/dist/src/client/healthMonitor/transferHealthMonitorBase.d.ts.map +1 -0
  30. package/dist/src/client/{uploader/healthMonitor/transferUploadHealthMonitor.js → healthMonitor/transferHealthMonitorBase.js} +29 -32
  31. package/dist/src/client/healthMonitor/transferHealthMonitorBase.js.map +1 -0
  32. package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.d.ts +11 -0
  33. package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.d.ts.map +1 -0
  34. package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js +29 -0
  35. package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js.map +1 -0
  36. package/dist/src/client/uploader/node/nodeTransferUploader.js +3 -3
  37. package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
  38. package/dist/src/client/uploader/transferUploaderBase.d.ts +7 -3
  39. package/dist/src/client/uploader/transferUploaderBase.d.ts.map +1 -1
  40. package/dist/src/client/uploader/transferUploaderBase.js +51 -0
  41. package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
  42. package/dist/src/client/uploader/web/webTransferUploader.js +3 -3
  43. package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
  44. package/dist/src/downloader/downloadStatus/downloadState.d.ts +1 -1
  45. package/dist/src/downloader/downloadStatus/downloadState.d.ts.map +1 -1
  46. package/dist/src/downloader/downloadStatus/downloadState.js +2 -2
  47. package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
  48. package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.d.ts +2 -1
  49. package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.d.ts.map +1 -1
  50. package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.js.map +1 -1
  51. package/dist/src/downloader/filesDownloader.js +2 -2
  52. package/dist/src/downloader/filesDownloader.js.map +1 -1
  53. package/dist/src/index.d.ts +9 -7
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +7 -5
  56. package/dist/src/index.js.map +1 -1
  57. package/package.json +1 -1
  58. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.d.ts +0 -9
  59. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.d.ts.map +0 -1
  60. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.js +0 -2
  61. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorHealthyEventArgs.js.map +0 -1
  62. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.d.ts +0 -19
  63. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.d.ts.map +0 -1
  64. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.js +0 -2
  65. package/dist/src/client/uploader/healthMonitor/events/eventArgs/uploadHealthMonitorUnhealthyEventArgs.js.map +0 -1
  66. package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.d.ts +0 -6
  67. package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.d.ts.map +0 -1
  68. package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.js +0 -7
  69. package/dist/src/client/uploader/healthMonitor/events/transferUploadHealthMonitorEvent.js.map +0 -1
  70. package/dist/src/client/uploader/healthMonitor/onlineChecker/nodeOnlineChecker.d.ts.map +0 -1
  71. package/dist/src/client/uploader/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +0 -1
  72. package/dist/src/client/uploader/healthMonitor/onlineChecker/onlineChecker.d.ts.map +0 -1
  73. package/dist/src/client/uploader/healthMonitor/onlineChecker/onlineChecker.js.map +0 -1
  74. package/dist/src/client/uploader/healthMonitor/onlineChecker/webOnlineChecker.d.ts.map +0 -1
  75. package/dist/src/client/uploader/healthMonitor/onlineChecker/webOnlineChecker.js.map +0 -1
  76. package/dist/src/client/uploader/healthMonitor/transferUploadHealthMonitor.d.ts +0 -31
  77. package/dist/src/client/uploader/healthMonitor/transferUploadHealthMonitor.d.ts.map +0 -1
  78. package/dist/src/client/uploader/healthMonitor/transferUploadHealthMonitor.js.map +0 -1
  79. /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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=healthMonitorHealthyEventArgs.js.map
@@ -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
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=healthMonitorUnhealthyEventArgs.js.map
@@ -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,6 @@
1
+ declare enum TransferHealthMonitorEvent {
2
+ Healthy = "HealthMonitor_Healthy",
3
+ Unhealthy = "HealthMonitor_Unhealthy"
4
+ }
5
+ export default TransferHealthMonitorEvent;
6
+ //# sourceMappingURL=transferHealthMonitorEvent.d.ts.map
@@ -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"}
@@ -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}"]}
@@ -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"}
@@ -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"}
@@ -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 await this.isGoogleReachable();
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 TransferUploadEvent from "../../../uploader/transferUploadEvent.js";
2
- import TransferUploadHealthMonitorEvent from "./events/transferUploadHealthMonitorEvent.js";
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
- #lastProgressEventFromPreviousPeriod;
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.#lastProgressEventFromPreviousPeriod = undefined;
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(TransferUploadEvent.TransferMetadataDetermined, this.transferMetadataDetermined);
41
- this.#transferEventsEngine.addEventListener(TransferUploadEvent.TransferProgressed, this.transferProgressed);
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(TransferUploadEvent.TransferMetadataDetermined, this.transferMetadataDetermined);
45
- this.#transferEventsEngine.removeEventListener(TransferUploadEvent.TransferProgressed, this.transferProgressed);
43
+ this.#transferEventsEngine.removeEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);
44
+ this.#transferEventsEngine.removeEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);
46
45
  }
47
- transferMetadataDetermined = (eventArgs) => {
48
- this.#fileServerUrl = eventArgs.fileServerUrl;
46
+ fileServerKnownEventHandler = (eventArgs) => {
47
+ this.#fileServerUrl = this.getFileServerUrlFromFileServerKnowEventArgs(eventArgs);
49
48
  };
50
- transferProgressed = (eventArgs) => {
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.#lastProgressEventFromPreviousPeriod = currentProgressEvent;
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.#lastProgressEventFromPreviousPeriod = currentPeriodLastProgressEvent || this.#lastProgressEventFromPreviousPeriod;
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 currentUploadedBytesTotalCount = currentHistoryLastProgressEvent?.uploadedBytesTotalCount ?? 0;
87
- const previousPeriodUploadedBytesTotalCount = this.#lastProgressEventFromPreviousPeriod?.uploadedBytesTotalCount ?? 0;
88
- const bytesSentThisPeriod = currentUploadedBytesTotalCount - previousPeriodUploadedBytesTotalCount;
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
- ...this.#lastProgressEventFromPreviousPeriod,
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.#lastProgressEventFromPreviousPeriod,
128
+ ...this.lastProgressEventFromPreviousPeriod,
132
129
  };
133
- this.#transferEventsEngine.emit(TransferUploadHealthMonitorEvent.Unhealthy, eventArgs);
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.#lastProgressEventFromPreviousPeriod,
139
+ ...this.lastProgressEventFromPreviousPeriod,
143
140
  };
144
- this.#transferEventsEngine.emit(TransferUploadHealthMonitorEvent.Unhealthy, eventArgs);
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.#lastProgressEventFromPreviousPeriod,
150
+ ...this.lastProgressEventFromPreviousPeriod,
154
151
  };
155
- this.#transferEventsEngine.emit(TransferUploadHealthMonitorEvent.Unhealthy, eventArgs);
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.#lastProgressEventFromPreviousPeriod,
161
+ ...this.lastProgressEventFromPreviousPeriod,
165
162
  };
166
- this.#transferEventsEngine.emit(TransferUploadHealthMonitorEvent.Unhealthy, eventArgs);
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.#lastProgressEventFromPreviousPeriod,
172
+ ...this.lastProgressEventFromPreviousPeriod,
176
173
  };
177
- this.#transferEventsEngine.emit(TransferUploadHealthMonitorEvent.Unhealthy, eventArgs);
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=transferUploadHealthMonitor.js.map
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 TransferUploadHealthMonitor from '../healthMonitor/transferUploadHealthMonitor.js';
13
- import NodeOnlineChecker from '../healthMonitor/onlineChecker/nodeOnlineChecker.js';
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 TransferUploadHealthMonitor(new NodeOnlineChecker(envValues.apiBaseUrl), eventsEngine);
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,2BAA2B,MAAM,iDAAiD,CAAC;AAC1F,OAAO,iBAAiB,MAAM,qDAAqD,CAAC;AAUpF,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,2BAA2B,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QAEjH,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 TransferUploadHealthMonitor from '../healthMonitor/transferUploadHealthMonitor.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 TransferUploadHealthMonitor(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}"]}
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}"]}