{"version":3,"sources":["jsdelivr-header.js","/npm/jigawatt@0.2.1/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,MAAM,MAAc,QAAQ,QAAR,CAAiB,aAC/B,QAAE,SAAY,QAAQ,QAEtB,EAAY,QAAQ,SACpB,SAAY,QAAQ,YACpB,UAAY,QAAQ,mBACpB,SAAY,QAAQ,kBAEpB,YAAc,EAAE,OAAO,EAAE,QAAQ,SAAS,QAAS,EAAE,KAAK,UAG1D,cAAgB,EAAE,OAAM,CAAC,EAAK,IAAS,UAAU,EAAK,KAGtD,QAAU,EAAE,OAAM,CAAC,EAAS,IAAQ,EAAE,QAC1C,EAAE,OAAO,EAAE,GAAG,UAAW,cAAc,GAAM,aAC7C,EAAE,KAAK,aAFiC,CAGxC,KAGI,MAAQ,EAAE,QAAO,CAAC,EAAK,IAAS,GAAM,MAGtC,aAAe,EAAE,QAAO,CAAC,EAAK,IAAS,GAAM,aAG7C,iBAAoB,GAAQ,EAAE,QAAQ,EAAE,MAAM,GAAM,EAAE,MAAM,SAG5D,YAAc,CAAC,EAAY,IAAQ,EAAE,QACzC,SAAS,MACT,EAAE,MAAM,EAAE,OAAO,CAAC,EAAG,OAAQ,IAC7B,MAAM,GAAY,KAAK,EAAY,IAI/B,cAAiB,GAAgB,EAAE,QAAO,CAAC,EAAK,KACpD,EAAI,KAAO,EAAE,MAAM,EAAI,KAAM,EAAE,MACxB,IACN,GAGG,UAAY,EAAE,OAAM,CAAC,EAAS,IAAQ,EAAE,SAC5C,iBAAiB,GACjB,aAAa,GAAS,KAAK,EAAS,GACpC,YAAY,EAAS,GACrB,QAAQ,EAAS,GAJyB,CAK1C,KAGI,YAAc,EAAE,OAAM,CAAC,EAAS,IAAQ,EAAE,SAC9C,cAAc,GACd,EAAE,QAAQ,SAAS,IAAK,EAAE,KAAK,GAAM,UAAU,EAAG,MAFN,CAG5C,KAGI,aAAgB,IAAQ,MAAM,CAAC,EAG/B,IAAM,EAAE,OAAM,EAAE,KAAY,GAAO,IAAQ,EAAE,UAChD,GAAQ,EAAE,OAAO,GAAQ,IAAI,EAAM,GAAO,EAAI,MAC/C,EAAE,OACA,EAAE,OAAO,MAAM,QAAQ,IACvB,YAAY,GACZ,UAAU,IALmC,CAM9C,GAAK,MAAM,gBAGR,WAAa,IAAI,KACrB,SAAS,eAAe,GAEjB,CAAC,EAAK,EAAK,IAChB,IAAI,EAAY,GAEf,KAAM,EAAI,KAAK,KAAK,IAEpB,MAAM,IAKX,WAAW,IAAM,IAAI,KACnB,SAAS,eAAe,GAEjB,CAAC,EAAK,EAAK,IAChB,IAAI,EAAY,GAEf,MAAM,IAEL,EAAI,IAAI,CACN,eAAwB,kBACxB,sBAAwB,mCACxB,OAAwB,aAG1B,EAAI,KAAK,EAAG,IAIb,MAAM,IAKX,WAAW,MAAS,IAAU,CAC5B,UAAW,CAAC,EAAK,KACf,MAAM,EAAiB,QAAQ,GAG/B,OAFA,MAAM,GAAG,MAAU,KAEZ,CAAI,IAKf,WAAW,IAAO,IAAO,CACvB,UAAW,CAAC,EAAK,IAAS,SAAS,QAAQ,EAAG,EAAK,IAAO,OAAO,KAInE,WAAW,OAAS,CAAC,EAAW,EAAQ,KAAc,CACpD,UAAW,CAAC,EAAK,IACf,SAAS,QAAQ,EAAU,EAAK,IAE/B,MAAM,GAAW,IAAI,CAAE,EAAS,EAAS,GAAa,OAK3D,WAAW,UAAY,IAAI,IAAgB,GAAQ,IAAI,EAAY,GAGnE,WAAW,KAAO,IAAI,KAAe,CACnC,UAAY,GAAQ,IAAI,EAAY,KAItC,WAAW,KAAQ,IAAS,CAC1B,UAAW,CAAC,EAAK,IAAS,SAAS,QAAS,EAAE,KAAK,EAAM,MAG3D,OAAO,QAAU","file":"/npm/jigawatt@0.2.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/jigawatt@0.2.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\nconst debug       = require('debug')('jigawatt');\nconst { inspect } = require('util');\n\nconst _         = require('ramda');\nconst Bluebird  = require('bluebird');\nconst awesomize = require('./lib/awesomize');\nconst Validate  = require('./lib/validate');\n\nconst defaultSpec = _.always(_.compose(Bluebird.resolve, _.prop('data')))\n\n\nconst awesomizeSpec = _.curry((req, spec) => awesomize(req, spec))\n\n\nconst getSpec = _.curry((current, req) => _.compose(\n  _.ifElse(_.is(Function), awesomizeSpec(req), defaultSpec)\n, _.prop('awesomize')\n)(current));\n\n\nconst getIO = _.propOr((req, data) => data, 'io');\n\n\nconst getTransform = _.propOr((req, data) => data, 'transform');\n\n\nconst mergeDataIntoReq = (req) => _.compose(_.merge(req), _.objOf('data'));\n\n\nconst mergeIOData = (middleware, req) => _.compose(\n  Bluebird.props\n, _.merge(_.propOr({}, 'data', req))\n, getIO(middleware).bind(middleware, req)\n);\n\n\nconst mergeReqArray = (initial_req) => _.reduce((acc, x) => {\n  acc.data = _.merge(acc.data, x.data)\n  return acc;\n}, initial_req);\n\n\nconst runSingle = _.curry((current, req) => _.composeP(\n  mergeDataIntoReq(req)\n, getTransform(current).bind(current, req)\n, mergeIOData(current, req)\n, getSpec(current, req)\n)(req));\n\n\nconst runParallel = _.curry((current, req) => _.composeP(\n  mergeReqArray(req)\n, _.compose(Bluebird.all, _.map((x) => runSingle(x, req)))\n)(current));\n\n\nconst rethrowError = (e) => { throw e; };\n\n\nconst run = _.curry(([current, ...rest], req) => _.composeP(\n  (res) => _.length(rest) ? run(rest, res) : res.data\n, _.ifElse(\n    _.always(Array.isArray(current))\n  , runParallel(current)\n  , runSingle(current)\n))(req).catch(rethrowError));\n\n\nconst Middleware = (...middleware) => {\n  Validate.testMiddleware(middleware)\n\n  return (req, res, next) =>\n    run(middleware, req)\n\n    .then( res.json.bind(res) )\n    \n    .catch(next);\n\n};\n\n\nMiddleware.csv = (...middleware) => {\n  Validate.testMiddleware(middleware)\n\n  return (req, res, next) =>\n    run(middleware, req)\n\n    .then((csv) => {\n\n      res.set({\n        'Content-Type'        : 'application/csv'\n      , 'Content-Disposition' : 'attachment; filename=vetting.csv'\n      , 'Pragma'              : 'no-cache'\n      })\n\n      res.send(csv)\n\n    })\n\n    .catch(next)\n\n};\n\n\nMiddleware.debug = (label) => ({\n  transform: (req, data) => {\n    const data_as_string = inspect(data);\n    debug(`${label}: ${data_as_string}`);\n\n    return data;\n  }\n});\n\n\nMiddleware.tap = (fn) => ({\n  transform: (req, data) => Bluebird.resolve(fn(req, data)).return(data)\n});\n\n\nMiddleware.branch = (predicate, ifTrue, otherwise) => ({\n  transform: (req, data) =>\n    Bluebird.resolve(predicate(req, data))\n\n    .then((branch) => run([ branch ? ifTrue : otherwise ], req))\n\n});\n\n\nMiddleware.promisify = (...middleware) => (req) => run(middleware, req)\n\n\nMiddleware.pipe = (...middleware) => ({\n  transform: (req) => run(middleware, req)\n})\n\n\nMiddleware.pick = (keys) => ({ \n  transform: (req, data) => Bluebird.resolve( _.pick(keys, data)) \n}); \n\nmodule.exports = Middleware;\n"]}