src/util.ts (15 lines of code) (raw):
export function delay<T>(ms: number, then: () => Promise<T>) {
let interval: NodeJS.Timeout | undefined;
const promise = new Promise(resolve => interval = setTimeout(resolve, ms)).then(then);
return {
cancel() { clearTimeout(interval); },
promise
};
}
export function notEmpty<TValue>(value: TValue | null | undefined): value is TValue {
return value !== null && value !== undefined;
}
export function numberOrZero(s: string | null | undefined): number {
const num = Number(s);
return num > 0 ? num : 0
}