UNPKG

@n1k1t/mock-server

Version:

The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations

68 lines 3.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpTransport = exports.buildHttpListener = void 0; const models_1 = require("../../models"); const context_1 = require("./context"); const executor_1 = require("./executor"); const meta_1 = require("../../../meta"); const logger_1 = require("../../../logger"); __exportStar(require("./executor"), exports); __exportStar(require("./context"), exports); const logger = logger_1.Logger.build('Transports.Http'); const buildHttpListener = (router) => async (request, response) => { for (const { provider, transport } of router.match('http', request.url ?? '')) { const context = await transport .compileContext(provider, request, response) .catch((error) => logger.error('Got error while context compilation', error?.stack ?? error)); if (!context) { return response.destroy(); } if (!context.is(['registered', 'handling'])) { return null; } const expectation = await meta_1.metaStorage .wrap(context.meta, () => transport.executor.match(context)) .catch((error) => logger.error('Got error while expectation matching', error?.stack ?? error)); if (!context.is(['registered', 'handling'])) { return null; } if (!expectation) { context.cancel(); continue; } return meta_1.metaStorage .wrap(context.meta, () => transport.executor.exec(context.handle(), { expectation })) .catch((error) => logger.error('Got error while execution', error?.stack ?? error)); } const { transport, provider } = router.default('http'); const context = await transport.compileContext(provider, request, response); await meta_1.metaStorage .wrap(context.meta, () => transport.executor.exec(context.handle())) .catch((error) => logger.error('Got error while execution', error?.stack ?? error)); }; exports.buildHttpListener = buildHttpListener; class HttpTransport extends models_1.Transport { constructor() { super(...arguments); this.executor = new executor_1.HttpExecutor(); } compileContext(provider, request, response) { return context_1.HttpRequestContext.build(provider, request, response); } } exports.HttpTransport = HttpTransport; //# sourceMappingURL=index.js.map