20 lines
370 B
TypeScript
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())
|
|
}
|
|
}
|