UNPKG

@clawject/di

Version:

<p align="center"> <a href="https://clawject.com/" target="_blank"><img src="https://clawject.com/img/logo.svg" align="center" alt="Clawject Logo" width="120" height="120" /></a> </p>

40 lines (39 loc) 1.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Dirty = void 0; class Dirty { constructor(delay = 5, onClean) { this.delay = delay; this.onClean = onClean; this.dirty = true; } markDirty() { this.dirty = true; } waitClean() { return new Promise((resolve) => { const checkDirty = () => { if (this.dirty) { this.dirty = false; setTimeout(checkDirty, this.delay); } else { if (!this.onClean) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error resolve(); } const result = this.onClean?.(); if (result instanceof Promise) { result.then(resolve); } else { resolve(result); } } }; checkDirty(); }); } } exports.Dirty = Dirty;