{"version":3,"sources":["../node_modules/koa-compose/index.js"],"sourcesContent":["'use strict'\n\n/**\n * Expose compositor.\n */\n\nmodule.exports = compose\n\n/**\n * Compose `middleware` returning\n * a fully valid middleware comprised\n * of all those which are passed.\n *\n * @param {Array} middleware\n * @return {Function}\n * @api public\n */\n\nfunction compose (middleware) {\n  if (!Array.isArray(middleware)) throw new TypeError('Middleware stack must be an array!')\n  for (const fn of middleware) {\n    if (typeof fn !== 'function') throw new TypeError('Middleware must be composed of functions!')\n  }\n\n  /**\n   * @param {Object} context\n   * @return {Promise}\n   * @api public\n   */\n\n  return function (context, next) {\n    // last called middleware #\n    let index = -1\n    return dispatch(0)\n    function dispatch (i) {\n      if (i <= index) return Promise.reject(new Error('next() called multiple times'))\n      index = i\n      let fn = middleware[i]\n      if (i === middleware.length) fn = next\n      if (!fn) return Promise.resolve()\n      try {\n        return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));\n      } catch (err) {\n        return Promise.reject(err)\n      }\n    }\n  }\n}\n"],"mappings":";;;;;AAAA;AAAA;AAMA,WAAO,UAAU;AAYjB,aAAS,QAAS,YAAY;AAC5B,UAAI,CAAC,MAAM,QAAQ,UAAU,EAAG,OAAM,IAAI,UAAU,oCAAoC;AACxF,iBAAW,MAAM,YAAY;AAC3B,YAAI,OAAO,OAAO,WAAY,OAAM,IAAI,UAAU,2CAA2C;AAAA,MAC/F;AAQA,aAAO,SAAU,SAAS,MAAM;AAE9B,YAAI,QAAQ;AACZ,eAAO,SAAS,CAAC;AACjB,iBAAS,SAAU,GAAG;AACpB,cAAI,KAAK,MAAO,QAAO,QAAQ,OAAO,IAAI,MAAM,8BAA8B,CAAC;AAC/E,kBAAQ;AACR,cAAI,KAAK,WAAW,CAAC;AACrB,cAAI,MAAM,WAAW,OAAQ,MAAK;AAClC,cAAI,CAAC,GAAI,QAAO,QAAQ,QAAQ;AAChC,cAAI;AACF,mBAAO,QAAQ,QAAQ,GAAG,SAAS,SAAS,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC;AAAA,UAChE,SAAS,KAAK;AACZ,mBAAO,QAAQ,OAAO,GAAG;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;","names":[]}