@sapphire/plugin-api
Version:
Plugin for @sapphire/framework to expose a REST API
45 lines (42 loc) • 1.78 kB
JavaScript
;
var pieces = require('@sapphire/pieces');
var Middleware_cjs = require('./Middleware.cjs');
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
var _MiddlewareStore = class _MiddlewareStore extends pieces.Store {
constructor() {
super(Middleware_cjs.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;
exports.MiddlewareStore = MiddlewareStore;
//# sourceMappingURL=MiddlewareStore.cjs.map
//# sourceMappingURL=MiddlewareStore.cjs.map