sdg
Version:
pomelo ts
68 lines • 4.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tools_1 = require("../../util/tools");
class FilterService {
constructor() {
this.before = [];
this.after = [];
this.name = 'filter';
}
addBefore(before) {
this.before.push(before);
}
addAfter(after) {
this.after.unshift(after);
}
replaceFilter(filter) {
this.replaceBefore(filter);
this.replaceAfter(filter);
}
replaceBefore(before) {
this.removeBefore(before);
this.addBefore(before);
}
replaceAfter(after) {
this.removeAfter(after);
this.addAfter(after);
}
removeBefore(filter) {
let index = this.before.findIndex(v => tools_1.getClassName(v) === tools_1.getClassName(filter));
if (index >= 0) {
this.before.splice(index);
}
}
removeAfter(filter) {
let index = this.after.findIndex(v => tools_1.getClassName(v) === tools_1.getClassName(filter));
if (index >= 0) {
this.after.splice(index);
}
}
async beforeFilter(routeRecord, msg, session) {
for (const handler of this.before) {
if (typeof handler === 'function') {
await handler(routeRecord, msg, session);
}
else if (typeof handler.before === 'function') {
await handler.before(routeRecord, msg, session);
}
else {
throw 'invalid before filter';
}
}
}
async afterFilter(routeRecord, msg, session) {
for (const handler of this.after) {
if (typeof handler === 'function') {
await handler(routeRecord, msg, session);
}
else if (typeof handler.after === 'function') {
await handler.after(routeRecord, msg, session);
}
else {
throw 'invalid after filter';
}
}
}
}
exports.default = FilterService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vc2VydmljZS9maWx0ZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsNENBQWdEO0FBRWhELE1BQXFCLGFBQWE7SUFNaEM7UUFMTyxXQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUNwQyxVQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUVsQyxTQUFJLEdBQUcsUUFBUSxDQUFDO0lBRVIsQ0FBQztJQUVULFNBQVMsQ0FBQyxNQUE0QjtRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ00sUUFBUSxDQUFDLEtBQTBCO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBc0I7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDTSxhQUFhLENBQUMsTUFBNEI7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDTSxZQUFZLENBQUMsS0FBMEI7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBNEI7UUFDOUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLG9CQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFDTSxXQUFXLENBQUMsTUFBMkI7UUFDNUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLG9CQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQXlCLEVBQUcsR0FBZ0IsRUFBRSxPQUFrQztRQUN4RyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDakMsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUU7Z0JBQ2pDLE1BQU0sT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDMUM7aUJBQU0sSUFBSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO2dCQUMvQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNqRDtpQkFBTTtnQkFDTCxNQUFNLHVCQUF1QixDQUFDO2FBQy9CO1NBQ0Y7SUFDSCxDQUFDO0lBQ00sS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUF5QixFQUFHLEdBQWdCLEVBQUUsT0FBa0M7UUFDdkcsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2hDLElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUNqQyxNQUFNLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO2lCQUFNLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtnQkFDOUMsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0wsTUFBTSxzQkFBc0IsQ0FBQzthQUM5QjtTQUNGO0lBQ0gsQ0FBQztDQUNGO0FBL0RELGdDQStEQyJ9