First concept

This commit is contained in:
will
2026-04-02 19:13:46 +01:00
commit 1da5da43e1
9785 changed files with 2077949 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
class ResourceManager {
add(resourceArgs) {
const resource = this.create(resourceArgs);
this.resources.push(resource);
return resource;
}
remove(resource) {
this.resources = this.resources.filter((r)=>r !== resource);
this.destroy(resource);
}
removeAll() {
this.resources.forEach(this.destroy);
this.resources = [];
}
constructor(){
this.resources = [];
}
}
class IntervalsManager extends ResourceManager {
create(args) {
// TODO: use the edge runtime provided `setInterval` instead
return setInterval(...args)[Symbol.toPrimitive]();
}
destroy(interval) {
clearInterval(interval);
}
}
class TimeoutsManager extends ResourceManager {
create(args) {
// TODO: use the edge runtime provided `setTimeout` instead
return setTimeout(...args)[Symbol.toPrimitive]();
}
destroy(timeout) {
clearTimeout(timeout);
}
}
export const intervalsManager = new IntervalsManager();
export const timeoutsManager = new TimeoutsManager();
//# sourceMappingURL=resource-managers.js.map