Files
scrap/node_modules/next/dist/esm/server/web/sandbox/resource-managers.js
2024-09-24 03:52:46 +00:00

40 lines
1.1 KiB
JavaScript

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