{"version":3,"sources":["jsdelivr-header.js","/npm/jsonscript-express@0.5.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,IAAI,WAAa,QAAQ,iBACrB,EAAI,QAAQ,UACZ,eAAiB,QAAQ,aAE7B,OAAO,QAAU,kBAGjB,IAAI,QAAU,CAAC,MAAO,OAAQ,MAAO,UACrC,SAAS,kBAAkB,EAAK,EAAS,GAQvC,IAAI,EAAkB,oBAPtB,EAAU,EAAE,SAAS,EAAS,CAC5B,eAAgB,SAChB,SAAU,GACV,WAAY,CAAE,QAAQ,GACtB,QAA6B,oBAAZ,SAA4B,WAS/C,OALA,EAAK,GAAM,IAAI,WAAW,EAAQ,YAmDhC,QAAQ,SAAQ,SAAU,GACxB,EAAW,GAAU,SAAS,GAM5B,OALI,EAAK,QAAU,EAAK,QAAU,GAChC,QAAQ,KAAK,6BAA+B,EAAK,OACnC,+CAAiD,EAAS,WAAa,GAEvF,EAAK,OAAS,EACP,EAAW,EACpB,CACF,IA1DF,EAAG,YAAY,EAAQ,eAAgB,GACvC,EAAU,GAAK,EAER,EAGP,SAAS,EAAU,EAAK,GACtB,IAAI,EAAS,EAAI,KAAK,OAClB,EAAO,EAAI,KAAK,KACR,EAAG,SAAS,GAEtB,EAAG,SAAS,EAAQ,GACnB,MAAK,SAAU,GACd,EAAI,KAAK,EACX,IAAG,SAAU,GACX,EAAI,OAAO,EAAI,OAAS,IAAM,EAAI,YAAc,KAC/C,KAAK,CACJ,MAAO,EAAI,QACX,OAAQ,EAAI,QAEhB,IAEA,EAAI,OAAO,KACV,KAAK,CACJ,MAAO,oBACP,OAAQ,EAAG,SAAS,QAG1B,CAGA,SAAS,EAAW,GAClB,IAAI,EAAU,eAAe,GAAK,EAAK,QAAQ,EAAQ,SAAW,EAAK,MACtE,IAAI,SAAU,oBAKf,OAHI,EAAK,SAAS,EAAQ,IAAI,EAAK,SAC/B,EAAK,MAAM,EAAQ,KAAK,EAAK,MAE1B,IAAI,EAAQ,SAAQ,SAAU,EAAS,GAC5C,EAAQ,KAAI,SAAU,EAAK,GACzB,GAAI,EAAK,OAAO,EAAO,GACvB,IAAM,EAAQ,EAAgB,EAAM,GAAQ,CAC5C,MAAM,GAAK,EAAO,EAAI,CACxB,GACF,GACF,CAeF,CAGA,SAAS,oBAAoB,GAC3B,MAAkC,QAA3B,EAAQ,gBACL,oBACkC,mBAA3B,EAAQ,gBACb,EAAQ,gBACR,sBACd,CAGA,SAAS,oBAAoB,GAC3B,GAAI,EAAK,WAAa,IAAK,OAAO,EAAK,KACvC,MAAM,IAAI,UAAU,EACtB,CAGA,SAAS,uBAAuB,EAAM,GAGpC,OAFA,EAAO,EAAE,KAAK,EAAM,aAAc,UAAW,SACxC,QAAU,EACR,CACT,CAGA,SAAS,UAAU,GACjB,KAAK,QAAU,EAAK,KAAO,KAAK,UAAU,EAAK,MAAQ,QACvD,KAAK,WAAa,EAAK,UACzB,CAEA,UAAU,UAAY,OAAO,OAAO,MAAM,WAC1C,UAAU,UAAU,YAAc","file":"/npm/jsonscript-express@0.5.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/jsonscript-express@0.5.0/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","'use strict';\n\nvar JSONScript = require('jsonscript-js');\nvar _ = require('lodash');\nvar processRequest = require('supertest');\n\nmodule.exports = jsonscriptExpress;\n\n\nvar METHODS = ['get', 'post', 'put', 'delete'];\nfunction jsonscriptExpress(app, options, js) {\n  options = _.defaults(options, {\n    routerExecutor: 'router',\n    basePath: '',\n    jsonscript: { strict: true },\n    Promise: (typeof Promise !== 'undefined') && Promise\n  });\n\n  var processResponse = processResponseFunc(options);\n  js = js || new JSONScript(options.jsonscript);\n  addExecutorMethods();\n  js.addExecutor(options.routerExecutor, execRouter);\n  evaluator.js = js;\n\n  return evaluator;\n\n\n  function evaluator(req, res) {\n    var script = req.body.script;\n    var data = req.body.data;\n    var valid = js.validate(script);\n    if (valid) {\n      js.evaluate(script, data)\n      .then(function (value) {\n        res.json(value);\n      }, function (err) {\n        res.status(err.errors ? 400 : err.statusCode || 500)\n        .send({\n          error: err.message,\n          errors: err.errors\n        });\n      });\n    } else {\n      res.status(400)\n      .send({\n        error: 'script is invalid',\n        errors: js.validate.errors\n      });\n    }\n  }\n\n\n  function execRouter(args) {\n    var request = processRequest(app)[args.method](options.basePath + args.path)\n    .set('Accept', 'application/json');\n\n    if (args.headers) request.set(args.headers);\n    if (args.body) request.send(args.body);\n\n    return new options.Promise(function (resolve, reject) {\n      request.end(function (err, resp) {\n        if (err) return reject(err);\n        try { resolve(processResponse(resp, args)); }\n        catch(e) { reject(e); }\n      });\n    });\n  }\n\n\n  function addExecutorMethods() {\n    METHODS.forEach(function (method) {\n      execRouter[method] = function(args) {\n        if (args.method && args.method != method) {\n          console.warn('method specified in args (' + args.method +\n                        ') is different from $method in instruction (' + method + '), used ' + method);\n        }\n        args.method = method;\n        return execRouter(args);\n      };\n    });\n  }\n}\n\n\nfunction processResponseFunc(options) {\n  return options.processResponse == 'body'\n          ? bodyProcessResponse\n          : typeof options.processResponse == 'function'\n            ? options.processResponse\n            : defaultProcessResponse;\n}\n\n\nfunction bodyProcessResponse(resp) {\n  if (resp.statusCode < 300) return resp.body;\n  throw new HttpError(resp);\n}\n\n\nfunction defaultProcessResponse(resp, args) {\n  resp = _.pick(resp, 'statusCode', 'headers', 'body');\n  resp.request = args;\n  return resp;\n}\n\n\nfunction HttpError(resp) {\n  this.message = resp.body ? JSON.stringify(resp.body) : 'Error';\n  this.statusCode = resp.statusCode;\n}\n\nHttpError.prototype = Object.create(Error.prototype);\nHttpError.prototype.constructor = HttpError;\n"]}