str/src/util/lifecycle.ts

20 lines
370 B
TypeScript

import {Awaitable} from './types.js'
export type LifecycleCallback = () => Awaitable<unknown>
export type LifecycleAware = {
adoptLifecycle(lifecycle: Lifecycle): void;
}
export class Lifecycle {
private onCloses: LifecycleCallback[] = []
onClose(closure: LifecycleCallback): void {
this.onCloses.push(closure)
}
close() {
this.onCloses.map(x => x())
}
}