@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
JavaScript
;
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;