@sapphire/plugin-api
Version:
Plugin for @sapphire/framework to expose a REST API
40 lines (38 loc) • 1.42 kB
JavaScript
import { __name, __publicField } from '../../chunk-S573YWRP.mjs';
import { Store } from '@sapphire/pieces';
import { Middleware } from './Middleware.mjs';
var _MiddlewareStore = class _MiddlewareStore extends Store {
constructor() {
super(Middleware, { name: "middlewares" });
/**
* The sorted middlewares, in ascending order of see {@link Middleware.position}.
*/
__publicField(this, "sortedMiddlewares", []);
}
async run(request, response) {
for (const middleware of this.sortedMiddlewares) {
if (response.writableEnded) return;
if (middleware.enabled) await middleware.run(request, response);
}
}
set(key, value) {
const index = this.sortedMiddlewares.findIndex((middleware) => middleware.position >= value.position);
if (index === -1) this.sortedMiddlewares.push(value);
else this.sortedMiddlewares.splice(index, 0, value);
return super.set(key, value);
}
delete(key) {
const index = this.sortedMiddlewares.findIndex((middleware) => middleware.name === key);
if (index !== -1) this.sortedMiddlewares.splice(index, 1);
return super.delete(key);
}
clear() {
this.sortedMiddlewares.length = 0;
return super.clear();
}
};
__name(_MiddlewareStore, "MiddlewareStore");
var MiddlewareStore = _MiddlewareStore;
export { MiddlewareStore };
//# sourceMappingURL=MiddlewareStore.mjs.map
//# sourceMappingURL=MiddlewareStore.mjs.map