@iotize/tap
Version:
IoTize Device client for Javascript
34 lines • 2.39 kB
JavaScript
export class InterceptorChain {
constructor(target) {
this.target = target;
this.interceptors = [];
}
addInterceptor(interceptor) {
this.interceptors.push(typeof interceptor === 'function'
? {
intercept: interceptor,
}
: interceptor);
return this;
}
execute(context) {
const runner = {
index: 0,
run: (context) => {
if (runner.index < this.interceptors.length) {
runner.index++;
return this.interceptors[runner.index - 1].intercept(context, {
handle: (context) => {
return runner.run(context);
},
});
}
else {
return this.target(context);
}
},
};
return runner.run(context);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3ItY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9jbGllbnQvaW1wbC9zcmMvbGliL2ludGVyY2VwdG9ycy9pbnRlcmNlcHRvci1jaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQ1UsTUFBbUU7UUFBbkUsV0FBTSxHQUFOLE1BQU0sQ0FBNkQ7UUFFM0UsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFtQztRQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEIsT0FBTyxXQUFXLEtBQUssVUFBVTtZQUMvQixDQUFDLENBQUM7Z0JBQ0UsU0FBUyxFQUFFLFdBQVc7YUFDdkI7WUFDSCxDQUFDLENBQUMsV0FBVyxDQUNoQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFJLE9BQXlCO1FBQ2xDLE1BQU0sTUFBTSxHQUFHO1lBQ2IsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsQ0FBQyxPQUF5QixFQUFnQyxFQUFFO2dCQUMvRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7b0JBQzNDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO3dCQUM1RCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTs0QkFDbEIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUM3QixDQUFDO3FCQUNGLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzdCO1lBQ0gsQ0FBQztTQUNGLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=