@idan-loo/middleware
Version:
Create your own middlewares to divide a large logic into serveral wares
2 lines (1 loc) • 942 B
JavaScript
;function __awaiter(e,t,n,o){return new(n||(n=Promise))(function(i,r){function c(e){try{d(o.next(e))}catch(e){r(e)}}function a(e){try{d(o.throw(e))}catch(e){r(e)}}function d(e){e.done?i(e.value):new n(function(t){t(e.value)}).then(c,a)}d((o=o.apply(e,t||[])).next())})}Object.defineProperty(exports,"__esModule",{value:!0});const ErrCalledMoreThanOnce=new Error("A middleware is called more than once!"),emptyLambda=()=>__awaiter(void 0,void 0,void 0,function*(){});function compose(...e){return(t,n=emptyLambda)=>__awaiter(this,void 0,void 0,function*(){yield exec(t,[...e]),yield n()})}function exec(e,t){return __awaiter(this,void 0,void 0,function*(){0!==t.length&&(yield getNext(e,t)())})}function getNext(e,t){if(0===t.length)return emptyLambda;let n=!1;const o=t[0];return()=>__awaiter(this,void 0,void 0,function*(){if(n)throw ErrCalledMoreThanOnce;return n=!0,t.shift(),yield o(e,getNext(e,t))})}exports.compose=compose;