filemail-sdk 9.4.4 → 9.4.5

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.
@@ -2,7 +2,7 @@ import DownloadEventArgs from "../../downloader/eventArgs/downloadEventArgs.js";
2
2
  import HealthMonitorHealthyEventArgs from "./events/eventArgs/healthMonitorHealthyEventArgs.js";
3
3
  import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
4
4
  export default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase<DownloadEventArgs> {
5
- protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
5
+ protected getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
6
6
  protected getFileServerKnownEventName(): string;
7
7
  protected getTransferProgressedEventName(): string;
8
8
  protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: DownloadEventArgs): number;
@@ -1 +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"}
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,+CAA+C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IASrF,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"}
@@ -1,7 +1,7 @@
1
1
  import TransferDownloadEvent from "../../downloader/dtos/downloadEvent.js";
2
2
  import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
3
3
  export default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase {
4
- getFileServerUrlFromFileServerKnowEventArgs(eventArgs) {
4
+ getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs) {
5
5
  const fileServerUrl = eventArgs.fileServerUrl;
6
6
  if (!fileServerUrl)
7
7
  throw new Error(`Event args are not of DownloadMetadataDeterminedEventArgs type`);
@@ -1 +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\";\nimport DownloadEventArgs from \"../../downloader/eventArgs/downloadEventArgs.js\";\nimport DownloadMetadataDeterminedEventArgs from \"../../downloader/eventArgs/downloadMetadataDeterminedEventArgs.js\";\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\nimport TransferHealthMonitorBase from \"./transferHealthMonitorBase.js\";\n\nexport default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase<DownloadEventArgs> {\n protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string {\n const fileServerUrl = (eventArgs as DownloadMetadataDeterminedEventArgs).fileServerUrl;\n\n if (!fileServerUrl)\n throw new Error(`Event args are not of DownloadMetadataDeterminedEventArgs type`);\n\n return fileServerUrl;\n }\n\n protected getFileServerKnownEventName(): string {\n return TransferDownloadEvent.TransferMetadataDetermined;\n }\n\n protected getTransferProgressedEventName(): string {\n return TransferDownloadEvent.DownloadProgressed;\n }\n\n protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: DownloadEventArgs): number {\n return currentHistoryLastProgressEvent?.downloadedBytes ?? 0;\n }\n\n protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs {\n return {\n transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.downloadedBytes,\n averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondAverage,\n currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondCurrent,\n progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressPercent,\n remainingSeconds: this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds === null ? undefined : this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds,\n };\n }\n}"]}
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,+CAA+C,CAAC,SAAkB;QACxE,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\";\nimport DownloadEventArgs from \"../../downloader/eventArgs/downloadEventArgs.js\";\nimport DownloadMetadataDeterminedEventArgs from \"../../downloader/eventArgs/downloadMetadataDeterminedEventArgs.js\";\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\nimport TransferHealthMonitorBase from \"./transferHealthMonitorBase.js\";\n\nexport default class TransferDownloaderHealthMonitor extends TransferHealthMonitorBase<DownloadEventArgs> {\n protected getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs: unknown): string {\n const fileServerUrl = (eventArgs as DownloadMetadataDeterminedEventArgs).fileServerUrl;\n\n if (!fileServerUrl)\n throw new Error(`Event args are not of DownloadMetadataDeterminedEventArgs type`);\n\n return fileServerUrl;\n }\n\n protected getFileServerKnownEventName(): string {\n return TransferDownloadEvent.TransferMetadataDetermined;\n }\n\n protected getTransferProgressedEventName(): string {\n return TransferDownloadEvent.DownloadProgressed;\n }\n\n protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: DownloadEventArgs): number {\n return currentHistoryLastProgressEvent?.downloadedBytes ?? 0;\n }\n\n protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs {\n return {\n transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.downloadedBytes,\n averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondAverage,\n currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.bytesPerSecondCurrent,\n progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressPercent,\n remainingSeconds: this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds === null ? undefined : this.lastProgressEventFromPreviousPeriod?.estimatedRemainingTimeSeconds,\n };\n }\n}"]}
@@ -15,7 +15,7 @@ export default abstract class TransferHealthMonitorBase<T> {
15
15
  protected abstract getFileServerKnownEventName(): string;
16
16
  protected abstract getTransferProgressedEventName(): string;
17
17
  private fileServerKnownEventHandler;
18
- protected abstract getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
18
+ protected abstract getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
19
19
  private transferProgressedEventHandler;
20
20
  private restartHealthCheck;
21
21
  private checkHealth;
@@ -1 +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;gBAMjD,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,mBAAmB,SAAS;IAY1G,KAAK;IAeL,OAAO,CAAC,UAAU;IAOlB,IAAI;IAYJ,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,CAKjC;IAEF,SAAS,CAAC,QAAQ,CAAC,2CAA2C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAE1F,OAAO,CAAC,8BAA8B,CAgBpC;IAEF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,WAAW,CA0BjB;IAEF,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,iCAAiC;IAIzC,OAAO,CAAC,kBAAkB;IAS1B,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,EAAE,CAAC,GAAG,MAAM;YAE/E,yCAAyC;IAoCvD,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
+ {"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;gBAMjD,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,mBAAmB,SAAS;IAY1G,KAAK;IAeL,OAAO,CAAC,UAAU;IAOlB,IAAI;IAYJ,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,CAKjC;IAEF,SAAS,CAAC,QAAQ,CAAC,+CAA+C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAE9F,OAAO,CAAC,8BAA8B,CAgBpC;IAEF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,WAAW,CA0BjB;IAEF,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,iCAAiC;IAIzC,OAAO,CAAC,kBAAkB;IAS1B,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,EAAE,CAAC,GAAG,MAAM;YAE/E,yCAAyC;IAoCvD,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"}
@@ -52,7 +52,7 @@ export default class TransferHealthMonitorBase {
52
52
  fileServerKnownEventHandler = (eventArgs) => {
53
53
  if (!this.#isRunning)
54
54
  return;
55
- this.#fileServerUrl = this.getFileServerUrlFromFileServerKnowEventArgs(eventArgs);
55
+ this.#fileServerUrl = this.getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs);
56
56
  };
57
57
  transferProgressedEventHandler = (eventArgs) => {
58
58
  if (!this.#isRunning)
@@ -1 +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\";\nimport TransferHealthMonitorEvent from \"./events/transferHealthMonitorEvent.js\";\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\nimport HealthMonitorUnhealthyEventArgs from \"./events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\nimport OnlineChecker, { OnlineCheckerResult } from \"./onlineChecker/onlineChecker.js\";\n\nexport default abstract class TransferHealthMonitorBase<T> {\n readonly #onlineChecker: OnlineChecker;\n readonly #transferEventsEngine: EventsEngine;\n\n #healthCheckInterval: number;\n\n #timeout: ReturnType<typeof setTimeout> | undefined;\n\n #fileServerUrl: string | undefined;\n\n #currentPeriodProgressHistory: { time: number, eventArgs: T }[] = [];\n\n protected lastProgressEventFromPreviousPeriod: T | undefined;\n\n #isCurrentlyHealthy = true;\n #isRunning = false;\n #runningToken = 0;\n\n constructor(onlineChecker: OnlineChecker, transferEventsEngine: EventsEngine, healthCheckInterval = 15_000) {\n if (!onlineChecker)\n throw new Error(`Online checker can't be empty`);\n if (!transferEventsEngine)\n throw new Error(`Events engine can't be empty`);\n\n this.#onlineChecker = onlineChecker;\n this.#transferEventsEngine = transferEventsEngine;\n\n this.#healthCheckInterval = healthCheckInterval;\n }\n\n start() {\n if (this.#isRunning)\n throw new Error(`Health Monitor is already running`);\n\n this.#isRunning = true;\n\n this.resetState();\n\n this.subscribeToTransferRunningEvents();\n\n this.createNextRunningToken();\n\n this.scheduleHealthCheck(this.#runningToken);\n }\n\n private resetState() {\n this.#currentPeriodProgressHistory = [];\n this.lastProgressEventFromPreviousPeriod = undefined;\n this.#timeout = undefined;\n this.#isCurrentlyHealthy = true;\n }\n\n stop() {\n this.#isRunning = false;\n\n this.createNextRunningToken();\n\n clearTimeout(this.#timeout);\n\n this.#timeout = undefined;\n\n this.unsubscribeFromTransferRunningEvents();\n }\n\n private subscribeToTransferRunningEvents() {\n this.#transferEventsEngine.addEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);\n this.#transferEventsEngine.addEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);\n }\n\n private unsubscribeFromTransferRunningEvents() {\n this.#transferEventsEngine.removeEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);\n this.#transferEventsEngine.removeEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);\n }\n\n protected abstract getFileServerKnownEventName(): string;\n protected abstract getTransferProgressedEventName(): string;\n\n private fileServerKnownEventHandler = (eventArgs: unknown) => {\n if (!this.#isRunning)\n return;\n\n this.#fileServerUrl = this.getFileServerUrlFromFileServerKnowEventArgs(eventArgs);\n };\n\n protected abstract getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;\n\n private transferProgressedEventHandler = (eventArgs: T) => {\n if (!this.#isRunning)\n return;\n\n this.#currentPeriodProgressHistory.push({ time: Date.now(), eventArgs });\n\n if (this.#isCurrentlyHealthy)\n return;\n\n const isHealthy = this.determineIsHealthy(eventArgs);\n\n if (!isHealthy)\n return;\n\n this.notifyHealthy();\n this.restartHealthCheck(eventArgs);\n };\n\n private restartHealthCheck(currentProgressEvent: T) {\n this.#currentPeriodProgressHistory = [];\n this.lastProgressEventFromPreviousPeriod = currentProgressEvent;\n\n this.#isCurrentlyHealthy = true;\n\n this.scheduleHealthCheck(this.#runningToken);\n }\n\n private checkHealth = async (runningToken: number): Promise<void> => {\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n const history = this.#currentPeriodProgressHistory;\n const currentPeriodLastProgressEvent = history.length > 0 ? history[history.length - 1].eventArgs : undefined;\n\n const isHealthy = this.determineIsHealthy(currentPeriodLastProgressEvent);\n\n this.lastProgressEventFromPreviousPeriod = currentPeriodLastProgressEvent || this.lastProgressEventFromPreviousPeriod;\n\n if (isHealthy) {\n this.#isCurrentlyHealthy = true;\n this.notifyHealthy();\n }\n else {\n this.#isCurrentlyHealthy = false;\n await this.figureOutUnhealthyReasonWithNotifications(runningToken);\n }\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n this.clearCurrentPeriodProgressHistory();\n\n this.scheduleHealthCheck(runningToken);\n };\n\n private scheduleHealthCheck(runningToken: number): void {\n clearTimeout(this.#timeout);\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n this.#timeout = setTimeout(() => this.checkHealth(runningToken), this.#healthCheckInterval);\n }\n\n private isCurrentRunActive(runningToken: number): boolean {\n return this.#isRunning && this.#runningToken === runningToken;\n }\n\n private createNextRunningToken() {\n this.#runningToken += 1;\n }\n\n private clearCurrentPeriodProgressHistory() {\n this.#currentPeriodProgressHistory = [];\n }\n\n private determineIsHealthy(currentHistoryLastProgressEvent: T | undefined) {\n const currentTransferredBytesTotalCount = this.getTransferredBytesTotalCount(currentHistoryLastProgressEvent);\n const previousPeriodTransferredBytesTotalCount = this.getTransferredBytesTotalCount(this.lastProgressEventFromPreviousPeriod);\n\n const bytesSentThisPeriod = currentTransferredBytesTotalCount - previousPeriodTransferredBytesTotalCount;\n\n return bytesSentThisPeriod > 0;\n }\n\n protected abstract getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: T): number;\n\n private async figureOutUnhealthyReasonWithNotifications(runningToken: number): Promise<void> {\n this.notifyStartedCheckingUnhealthyReason();\n\n const { isOnline: isInternetOnline, error: internetOnlineError } = await this.#onlineChecker.isInternetOnline();\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n if (isInternetOnline)\n this.notifyUnhealthyInternetOkRestCheckingReason();\n else {\n this.notifyUnhealthyNoInternetReason(internetOnlineError);\n return;\n }\n\n const isApiOnlinePromise = this.#onlineChecker.isApiReachable();\n\n const isFileServerOnlinePromise = this.#fileServerUrl\n ? this.#onlineChecker.isFileServerReachable(this.#fileServerUrl)\n : Promise.resolve(undefined);\n\n const { isOnline: isApiOnline, error: apiOnlineError } = await isApiOnlinePromise;\n const isFileServerOnlineResult = await isFileServerOnlinePromise;\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n if (isApiOnline && isFileServerOnlineResult?.isOnline === true)\n this.notifyUnhealthyAllOkReason();\n else {\n const fileServerStatus = this.isOnlineResultToStatus(isFileServerOnlineResult);\n\n this.notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus, isFileServerOnlineResult?.error, apiOnlineError);\n }\n }\n\n private isOnlineResultToStatus(isFileServerOnlineResult: OnlineCheckerResult | undefined): `Ok` | `Error` | `Unknown` {\n if (!isFileServerOnlineResult)\n return `Unknown`;\n\n return isFileServerOnlineResult.isOnline ? `Ok` : `Error`;\n }\n\n private notifyHealthy() {\n const eventArgs = this.getHealthyEventArgs();\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Healthy, eventArgs);\n }\n\n protected abstract getHealthyEventArgs(): HealthMonitorHealthyEventArgs;\n\n private notifyStartedCheckingUnhealthyReason() {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Checking` },\n api: { status: `Checking` },\n fileServer: { status: `Checking` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyInternetOkRestCheckingReason() {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Ok` },\n api: { status: `Checking` },\n fileServer: { status: `Checking` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyNoInternetReason(error?: Error) {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Error`, error },\n api: { status: `Unknown` },\n fileServer: { status: `Unknown` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus: `Ok` | `Error` | `Unknown`, fileServerError: Error | undefined, apiError: Error | undefined) {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Ok` },\n api: apiError ? { status: `Error`, error: apiError } : { status: `Ok` },\n fileServer: fileServerError ? { status: `Error`, error: fileServerError } : { status: fileServerStatus },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyAllOkReason() {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Ok` },\n api: { status: `Ok` },\n fileServer: { status: `Ok` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n addEventListener(eventName: TransferHealthMonitorEvent.Healthy, handler: (event: HealthMonitorHealthyEventArgs) => void): void\n addEventListener(eventName: TransferHealthMonitorEvent.Unhealthy, handler: (event: HealthMonitorUnhealthyEventArgs) => void): void\n addEventListener(eventName: string, handler: (arg?: any) => void): void {\n this.#transferEventsEngine.addEventListener(eventName, handler);\n }\n}"]}
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\";\nimport TransferHealthMonitorEvent from \"./events/transferHealthMonitorEvent.js\";\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\nimport HealthMonitorUnhealthyEventArgs from \"./events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\nimport OnlineChecker, { OnlineCheckerResult } from \"./onlineChecker/onlineChecker.js\";\n\nexport default abstract class TransferHealthMonitorBase<T> {\n readonly #onlineChecker: OnlineChecker;\n readonly #transferEventsEngine: EventsEngine;\n\n #healthCheckInterval: number;\n\n #timeout: ReturnType<typeof setTimeout> | undefined;\n\n #fileServerUrl: string | undefined;\n\n #currentPeriodProgressHistory: { time: number, eventArgs: T }[] = [];\n\n protected lastProgressEventFromPreviousPeriod: T | undefined;\n\n #isCurrentlyHealthy = true;\n #isRunning = false;\n #runningToken = 0;\n\n constructor(onlineChecker: OnlineChecker, transferEventsEngine: EventsEngine, healthCheckInterval = 15_000) {\n if (!onlineChecker)\n throw new Error(`Online checker can't be empty`);\n if (!transferEventsEngine)\n throw new Error(`Events engine can't be empty`);\n\n this.#onlineChecker = onlineChecker;\n this.#transferEventsEngine = transferEventsEngine;\n\n this.#healthCheckInterval = healthCheckInterval;\n }\n\n start() {\n if (this.#isRunning)\n throw new Error(`Health Monitor is already running`);\n\n this.#isRunning = true;\n\n this.resetState();\n\n this.subscribeToTransferRunningEvents();\n\n this.createNextRunningToken();\n\n this.scheduleHealthCheck(this.#runningToken);\n }\n\n private resetState() {\n this.#currentPeriodProgressHistory = [];\n this.lastProgressEventFromPreviousPeriod = undefined;\n this.#timeout = undefined;\n this.#isCurrentlyHealthy = true;\n }\n\n stop() {\n this.#isRunning = false;\n\n this.createNextRunningToken();\n\n clearTimeout(this.#timeout);\n\n this.#timeout = undefined;\n\n this.unsubscribeFromTransferRunningEvents();\n }\n\n private subscribeToTransferRunningEvents() {\n this.#transferEventsEngine.addEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);\n this.#transferEventsEngine.addEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);\n }\n\n private unsubscribeFromTransferRunningEvents() {\n this.#transferEventsEngine.removeEventListener(this.getFileServerKnownEventName(), this.fileServerKnownEventHandler);\n this.#transferEventsEngine.removeEventListener(this.getTransferProgressedEventName(), this.transferProgressedEventHandler);\n }\n\n protected abstract getFileServerKnownEventName(): string;\n protected abstract getTransferProgressedEventName(): string;\n\n private fileServerKnownEventHandler = (eventArgs: unknown) => {\n if (!this.#isRunning)\n return;\n\n this.#fileServerUrl = this.getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs);\n };\n\n protected abstract getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;\n\n private transferProgressedEventHandler = (eventArgs: T) => {\n if (!this.#isRunning)\n return;\n\n this.#currentPeriodProgressHistory.push({ time: Date.now(), eventArgs });\n\n if (this.#isCurrentlyHealthy)\n return;\n\n const isHealthy = this.determineIsHealthy(eventArgs);\n\n if (!isHealthy)\n return;\n\n this.notifyHealthy();\n this.restartHealthCheck(eventArgs);\n };\n\n private restartHealthCheck(currentProgressEvent: T) {\n this.#currentPeriodProgressHistory = [];\n this.lastProgressEventFromPreviousPeriod = currentProgressEvent;\n\n this.#isCurrentlyHealthy = true;\n\n this.scheduleHealthCheck(this.#runningToken);\n }\n\n private checkHealth = async (runningToken: number): Promise<void> => {\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n const history = this.#currentPeriodProgressHistory;\n const currentPeriodLastProgressEvent = history.length > 0 ? history[history.length - 1].eventArgs : undefined;\n\n const isHealthy = this.determineIsHealthy(currentPeriodLastProgressEvent);\n\n this.lastProgressEventFromPreviousPeriod = currentPeriodLastProgressEvent || this.lastProgressEventFromPreviousPeriod;\n\n if (isHealthy) {\n this.#isCurrentlyHealthy = true;\n this.notifyHealthy();\n }\n else {\n this.#isCurrentlyHealthy = false;\n await this.figureOutUnhealthyReasonWithNotifications(runningToken);\n }\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n this.clearCurrentPeriodProgressHistory();\n\n this.scheduleHealthCheck(runningToken);\n };\n\n private scheduleHealthCheck(runningToken: number): void {\n clearTimeout(this.#timeout);\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n this.#timeout = setTimeout(() => this.checkHealth(runningToken), this.#healthCheckInterval);\n }\n\n private isCurrentRunActive(runningToken: number): boolean {\n return this.#isRunning && this.#runningToken === runningToken;\n }\n\n private createNextRunningToken() {\n this.#runningToken += 1;\n }\n\n private clearCurrentPeriodProgressHistory() {\n this.#currentPeriodProgressHistory = [];\n }\n\n private determineIsHealthy(currentHistoryLastProgressEvent: T | undefined) {\n const currentTransferredBytesTotalCount = this.getTransferredBytesTotalCount(currentHistoryLastProgressEvent);\n const previousPeriodTransferredBytesTotalCount = this.getTransferredBytesTotalCount(this.lastProgressEventFromPreviousPeriod);\n\n const bytesSentThisPeriod = currentTransferredBytesTotalCount - previousPeriodTransferredBytesTotalCount;\n\n return bytesSentThisPeriod > 0;\n }\n\n protected abstract getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: T): number;\n\n private async figureOutUnhealthyReasonWithNotifications(runningToken: number): Promise<void> {\n this.notifyStartedCheckingUnhealthyReason();\n\n const { isOnline: isInternetOnline, error: internetOnlineError } = await this.#onlineChecker.isInternetOnline();\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n if (isInternetOnline)\n this.notifyUnhealthyInternetOkRestCheckingReason();\n else {\n this.notifyUnhealthyNoInternetReason(internetOnlineError);\n return;\n }\n\n const isApiOnlinePromise = this.#onlineChecker.isApiReachable();\n\n const isFileServerOnlinePromise = this.#fileServerUrl\n ? this.#onlineChecker.isFileServerReachable(this.#fileServerUrl)\n : Promise.resolve(undefined);\n\n const { isOnline: isApiOnline, error: apiOnlineError } = await isApiOnlinePromise;\n const isFileServerOnlineResult = await isFileServerOnlinePromise;\n\n if (!this.isCurrentRunActive(runningToken))\n return;\n\n if (isApiOnline && isFileServerOnlineResult?.isOnline === true)\n this.notifyUnhealthyAllOkReason();\n else {\n const fileServerStatus = this.isOnlineResultToStatus(isFileServerOnlineResult);\n\n this.notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus, isFileServerOnlineResult?.error, apiOnlineError);\n }\n }\n\n private isOnlineResultToStatus(isFileServerOnlineResult: OnlineCheckerResult | undefined): `Ok` | `Error` | `Unknown` {\n if (!isFileServerOnlineResult)\n return `Unknown`;\n\n return isFileServerOnlineResult.isOnline ? `Ok` : `Error`;\n }\n\n private notifyHealthy() {\n const eventArgs = this.getHealthyEventArgs();\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Healthy, eventArgs);\n }\n\n protected abstract getHealthyEventArgs(): HealthMonitorHealthyEventArgs;\n\n private notifyStartedCheckingUnhealthyReason() {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Checking` },\n api: { status: `Checking` },\n fileServer: { status: `Checking` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyInternetOkRestCheckingReason() {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Ok` },\n api: { status: `Checking` },\n fileServer: { status: `Checking` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyNoInternetReason(error?: Error) {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Error`, error },\n api: { status: `Unknown` },\n fileServer: { status: `Unknown` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyApiOrFileServerErrorReason(fileServerStatus: `Ok` | `Error` | `Unknown`, fileServerError: Error | undefined, apiError: Error | undefined) {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Ok` },\n api: apiError ? { status: `Error`, error: apiError } : { status: `Ok` },\n fileServer: fileServerError ? { status: `Error`, error: fileServerError } : { status: fileServerStatus },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n private notifyUnhealthyAllOkReason() {\n const eventArgs: HealthMonitorUnhealthyEventArgs = {\n reason: {\n internet: { status: `Ok` },\n api: { status: `Ok` },\n fileServer: { status: `Ok` },\n },\n ...this.lastProgressEventFromPreviousPeriod,\n };\n\n this.#transferEventsEngine.emit(TransferHealthMonitorEvent.Unhealthy, eventArgs);\n }\n\n addEventListener(eventName: TransferHealthMonitorEvent.Healthy, handler: (event: HealthMonitorHealthyEventArgs) => void): void\n addEventListener(eventName: TransferHealthMonitorEvent.Unhealthy, handler: (event: HealthMonitorUnhealthyEventArgs) => void): void\n addEventListener(eventName: string, handler: (arg?: any) => void): void {\n this.#transferEventsEngine.addEventListener(eventName, handler);\n }\n}"]}
@@ -2,7 +2,7 @@ import TransferUploadProgressedEventArgs from "../../uploader/eventArgs/transfer
2
2
  import HealthMonitorHealthyEventArgs from "./events/eventArgs/healthMonitorHealthyEventArgs.js";
3
3
  import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
4
4
  export default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase<TransferUploadProgressedEventArgs> {
5
- protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
5
+ protected getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs: unknown): string;
6
6
  protected getFileServerKnownEventName(): string;
7
7
  protected getTransferProgressedEventName(): string;
8
8
  protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: TransferUploadProgressedEventArgs): number;
@@ -1 +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"}
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,+CAA+C,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAUrF,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"}
@@ -1,11 +1,12 @@
1
1
  import TransferUploadEvent from "../../uploader/transferUploadEvent.js";
2
2
  import TransferHealthMonitorBase from "./transferHealthMonitorBase.js";
3
3
  export default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase {
4
- getFileServerUrlFromFileServerKnowEventArgs(eventArgs) {
4
+ getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs) {
5
5
  const fileServerUrl = eventArgs.fileServerUrl;
6
6
  if (!fileServerUrl)
7
7
  throw new Error(`Event args are not of TransferMetadataDeterminedEventArgs type`);
8
- return fileServerUrl;
8
+ const fileServerBaseUrl = new URL(fileServerUrl).origin;
9
+ return fileServerBaseUrl;
9
10
  }
10
11
  getFileServerKnownEventName() {
11
12
  return TransferUploadEvent.TransferMetadataDetermined;
@@ -1 +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\";\nimport TransferUploadProgressedEventArgs from \"../../uploader/eventArgs/transferUploadProgressedEventArgs.js\";\nimport TransferUploadEvent from \"../../uploader/transferUploadEvent.js\";\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\nimport TransferHealthMonitorBase from \"./transferHealthMonitorBase.js\";\n\nexport default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase<TransferUploadProgressedEventArgs> {\n protected getFileServerUrlFromFileServerKnowEventArgs(eventArgs: unknown): string {\n const fileServerUrl = (eventArgs as TransferMetadataDeterminedEventArgs).fileServerUrl;\n\n if (!fileServerUrl)\n throw new Error(`Event args are not of TransferMetadataDeterminedEventArgs type`);\n\n return fileServerUrl;\n }\n\n protected getFileServerKnownEventName(): string {\n return TransferUploadEvent.TransferMetadataDetermined;\n }\n\n protected getTransferProgressedEventName(): string {\n return TransferUploadEvent.TransferProgressed;\n }\n\n protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: TransferUploadProgressedEventArgs): number {\n return currentHistoryLastProgressEvent?.uploadedBytesTotalCount ?? 0;\n }\n\n protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs {\n return {\n transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.uploadedBytesTotalCount,\n averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.averageSpeedInBytesPerSecond,\n currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.currentSpeedInBytesPerSecond,\n progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressInPercentage,\n remainingSeconds: this.lastProgressEventFromPreviousPeriod?.remainingSeconds,\n };\n }\n}"]}
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,+CAA+C,CAAC,SAAkB;QACxE,MAAM,aAAa,GAAI,SAAiD,CAAC,aAAa,CAAC;QACvF,IAAI,CAAC,aAAa;YACd,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAEtF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAExD,OAAO,iBAAiB,CAAC;IAC7B,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\";\nimport TransferUploadProgressedEventArgs from \"../../uploader/eventArgs/transferUploadProgressedEventArgs.js\";\nimport TransferUploadEvent from \"../../uploader/transferUploadEvent.js\";\nimport HealthMonitorHealthyEventArgs from \"./events/eventArgs/healthMonitorHealthyEventArgs.js\";\nimport TransferHealthMonitorBase from \"./transferHealthMonitorBase.js\";\n\nexport default class TransferUploaderHealthMonitor extends TransferHealthMonitorBase<TransferUploadProgressedEventArgs> {\n protected getFileServerBaseUrlFromFileServerKnowEventArgs(eventArgs: unknown): string {\n const fileServerUrl = (eventArgs as TransferMetadataDeterminedEventArgs).fileServerUrl;\n if (!fileServerUrl)\n throw new Error(`Event args are not of TransferMetadataDeterminedEventArgs type`);\n\n const fileServerBaseUrl = new URL(fileServerUrl).origin;\n\n return fileServerBaseUrl;\n }\n\n protected getFileServerKnownEventName(): string {\n return TransferUploadEvent.TransferMetadataDetermined;\n }\n\n protected getTransferProgressedEventName(): string {\n return TransferUploadEvent.TransferProgressed;\n }\n\n protected getTransferredBytesTotalCount(currentHistoryLastProgressEvent?: TransferUploadProgressedEventArgs): number {\n return currentHistoryLastProgressEvent?.uploadedBytesTotalCount ?? 0;\n }\n\n protected getHealthyEventArgs(): HealthMonitorHealthyEventArgs {\n return {\n transferredBytesTotalCount: this.lastProgressEventFromPreviousPeriod?.uploadedBytesTotalCount,\n averageSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.averageSpeedInBytesPerSecond,\n currentSpeedInBytesPerSecond: this.lastProgressEventFromPreviousPeriod?.currentSpeedInBytesPerSecond,\n progressInPercentage: this.lastProgressEventFromPreviousPeriod?.progressInPercentage,\n remainingSeconds: this.lastProgressEventFromPreviousPeriod?.remainingSeconds,\n };\n }\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "filemail-sdk",
3
- "version": "9.4.4",
3
+ "version": "9.4.5",
4
4
  "description": "Library for transferring files to and from Filemail.com",
5
5
  "author": "Filemail AS",
6
6
  "license": "BSD-3-Clause",