UNPKG

mirage-openapi

Version:

Mock OpenAPI responses in ember-cli-mirage

55 lines (39 loc) 1.69 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _values = require('babel-runtime/core-js/object/values'); var _values2 = _interopRequireDefault(_values); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); exports.default = function (_ref2) { var request = _ref2.request, routers = _ref2.routers; var raiseError = function raiseError() { var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'There is no handler available in your openAPI config for this route and HTTP method.'; throw new Error('MirageOpenAPI: There is no route defined which matches ' + request.url + '.\n' + message); }; var routerConfig = routers.find(matchingRouter(request.url)); if (!routerConfig) { raiseError('This url does not match any existing namespaces.'); } var router = routerConfig.router, namespace = routerConfig.namespace; var routeConfigs = router.recognize(request.url.replace(namespace, '')); if (!routeConfigs) { raiseError(); } var _Object$values$filter = (0, _values2.default)(routeConfigs).filter(function (routeConfig) { return !!routeConfig.handler; }), _Object$values$filter2 = (0, _slicedToArray3.default)(_Object$values$filter, 1), handler = _Object$values$filter2[0].handler; return handler[request.method.toLowerCase()]; }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function matchingRouter(url) { return function (_ref) { var namespace = _ref.namespace; return url.startsWith(namespace); }; }