aspida-mock
Version:
TypeScript friendly RESTful API mock for aspida
38 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasMockHandler = void 0;
const utils_1 = require("./utils");
const findHandler = (path, method, routes) => routes.find(route => (0, utils_1.createPathRegExp)(route.path).test(path) &&
route.methods[method.toLowerCase()]);
const hasMockHandler = (path, method, routes) => { var _a; return !!((_a = findHandler(path, method, routes)) === null || _a === void 0 ? void 0 : _a.methods[method.toLowerCase()]); };
exports.hasMockHandler = hasMockHandler;
exports.default = async (config, routes, middleware) => {
const route = findHandler(config.path, config.method, routes);
const controller = route === null || route === void 0 ? void 0 : route.methods[config.method.toLowerCase()];
if (!route || !controller)
return;
let params = {
...config,
values: (0, utils_1.createValues)(route.path, config.path),
};
if (middleware) {
for (let i = 0; i < middleware.length; i += 1) {
const { isNext, response, config } = await new Promise(resolve => {
middleware[i](params, res => {
resolve({ isNext: false, response: res });
}, req => {
resolve({ isNext: true, config: req });
});
});
if (isNext) {
params = config || params;
}
else {
return (0, utils_1.copyData)((response instanceof Promise ? await response : response));
}
}
}
const res = controller(params);
return (0, utils_1.copyData)((res instanceof Promise ? await res : res));
};
//# sourceMappingURL=callMockHandler.js.map