msw-dynamic-http-middleware
Version:
Set API handlers for your mock server on runtime
3 lines (2 loc) • 2.21 kB
JavaScript
;function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("pino")),t=require("msw"),n=e(require("path")),o=e(require("express")).static(n.join(__dirname,"ui")),a=r({prettyPrint:{translateTime:!0,ignore:"pid,hostname"}}),i=function(e,r,t){return r(t.status(200))},s=function(e){if(e instanceof RegExp)throw new Error("Only strings as path are supported");return!0},u=function(e,r,t){var n=e[r];if(!n)throw new Error('Scenario "'+r+'" does not exist');var o=(Array.isArray(n)?n:[n]).map((function(e){var r=e.info,n=r.path,o=r.method,a=r.header;if(s(n))return n in t||(t[n]={}),t[n][o]=e.resolver,a}));a.info('Set scenario "'+r+'" with resolvers for endpoints: '+o.join(", "))};exports.createHandlers=function(e,r){var n={};return r&&u(e,r,n),[].concat(Object.values(e).flatMap((function(e){return(Array.isArray(e)?e:[e]).map((function(e){var r=e.info,o=r.method,u=r.path,c=r.header;return s(u),t.rest[o.toLowerCase()](u,(function(e,r,t){if(s(u)){var f,l=null==(f=n[u])?void 0:f[o];return l?a.info(c):(l=i,a.info(c+" (default resolver)")),l(e,r,t)}}))}))})),[t.rest.get("/scenario",(function(r,t,o){var a=Object.entries(e).reduce((function(e,r){var t=r[1],o=function(e,r){var t,o=r.header,a=r.method,i=r.path;return{isActive:(null==(t=n[i.toString()])?void 0:t[a])===e.resolver,header:o,method:a,path:i.toString()}};return e[r[0]]=Array.isArray(t)?t.map((function(e){return o(e,e.info)})):o(t,t.info),e}),{});return t(o.json({scenarios:a}))})),t.rest.put("/scenario",(function(r,t,o){var a,i=null==(a=r.body)?void 0:a.scenario;if(!i)return t(o.status(400),o.text('Please provide a scenario name in the request body. Example: { "scenario": "user success" }'));try{u(e,i,n)}catch(e){return t(o.status(400),o.text(e.message))}return t(o.status(205))})),t.rest.delete("/scenario",(function(t,o,i){n={};var s=t.url.searchParams.get("resetAll");return r&&"true"!==(null==s?void 0:s.toLowerCase())?(a.info("Reset server to default scenario"),u(e,r,n)):a.info("Reset all handlers to default resolver"),o(i.status(205))}))])},exports.middleware=o;
//# sourceMappingURL=msw-dynamic-http-middleware.cjs.production.min.js.map