/** * Converts a function type returning a `Promise` to a function type returning `void`. */ export type NoAwait Promise> = (...args: Parameters) => void; /** * Signals that the argument returns a `Promise` that is intentionally not being awaited. */ export function noAwait Promise>(f: F): NoAwait { return f as NoAwait; } /** * Utility class that allows a promise to be passed to a * service to be resolved. */ export class Ready { onError: (value?: unknown) => void; onReady: (value?: unknown) => void; ready: Promise; constructor(private errorHandler = console.error) { this.ready = new Promise((resolve, reject) => { this.onReady = resolve; this.onError = reject; }).catch(this.errorHandler); } }