server-status-check
Version:
query the server periodically to check whether it is up
72 lines • 2.73 kB
TypeScript
import { CheckStatusFunc, InitializedStatus, MaybeUninitializedStatus, WrappedStatus, WrappedStatusE } from "../requestor";
declare type GetRequestor = (uri: string) => Promise<string>;
declare type NotifyMessage = {
subject: string;
text: string;
};
declare type NotifyAll = (conf: {
sms: NotifyMessage;
email: NotifyMessage;
}) => Promise<[void, any]>;
declare type NotificationMessage = {
subject: string;
text: string;
};
declare type NotificationMessageFor = {
up: NotificationMessage;
down: NotificationMessage;
};
declare type NotificationMessages = {
email: NotificationMessageFor;
sms: NotificationMessageFor;
};
declare type NotificationMessagesConfig = {
all: NotificationMessageFor;
} & NotificationMessages;
declare type StatusName = 'up' | 'down' | 'unknown';
declare type StatusStats = {
friendlyFullSentence: string;
friendlyStatusPhrase: string;
checkIntervalInMinutes: number;
dateLastChecked: string;
checksSpreeCount: number;
aliveForYMDHMS: string;
statusName: StatusName;
errors: Error[];
};
interface StatusCheckServiceConstructorPropsInterface {
checkStatus: CheckStatusFunc;
checkInterval: number;
getRequestor: GetRequestor;
notifyAll: NotifyAll;
onFailNotifyHoursInterval: number;
serverUri: string;
notificationMessages: NotificationMessagesConfig;
}
export default class StatusCheckService {
checkInterval: number;
userProvidedCheckStatus: CheckStatusFunc;
lastChecked: number | null;
lastEmailSentTime: number | null;
notifyAll: NotifyAll;
notificationMessages: NotificationMessages;
onFailNotifyHoursInterval: number;
wrappedStatus: WrappedStatusE<MaybeUninitializedStatus>;
statusChecksCount: number;
serverUri: string;
constructor({ notifyAll, serverUri, checkStatus, checkInterval, onFailNotifyHoursInterval, notificationMessages }: StatusCheckServiceConstructorPropsInterface);
run(): Promise<void>;
statusChanged(status: InitializedStatus): boolean;
changedStatusOrDownStatusForMoreThanOneHour(status: InitializedStatus): boolean;
shouldNotifyCurrentStatus(status: InitializedStatus): boolean;
getStatusFriendlyPhrase(status: MaybeUninitializedStatus): string;
notifyServiceStatus({ status }: WrappedStatus<InitializedStatus>): Promise<void>;
handleNewStatus(w: WrappedStatus<InitializedStatus>): Promise<void>;
checkStatus(): Promise<WrappedStatus<InitializedStatus>>;
handleFailedRequest(err: Error): void;
getCheckIntervalInMinutes(): number;
getStatusStats(): StatusStats;
getStatusName(status: MaybeUninitializedStatus): StatusName;
}
export {};
//# sourceMappingURL=StatusCheckService.d.ts.map