UNPKG

@dbs-portal/tool-mock

Version:

API mocking toolkit using MSW for DBS Portal development workflows

188 lines (181 loc) 4.79 kB
import { g as E } from "../environment-DlK8CH_m.js"; function m(t = {}) { const { enabled: r = !0, mode: s = "development", // publicDir = 'public', // Unused for now serviceWorkerFilename: p = "mockServiceWorker.js", // handlers = [], // Unused for now autoSetup: g = !0, verbose: d = !1, config: v = {} } = t; let l = r, c = !1; return { name: "msw-plugin", configResolved(e) { c = e.command === "serve", !r && !c && (l = !1), d && console.log(`MSW Plugin: ${l ? "enabled" : "disabled"} (mode: ${s})`); }, configureServer(e) { !l || !c || (e.middlewares.use(`/${p}`, (n, o, f) => { if (n.method === "GET") { o.setHeader("Content-Type", "application/javascript"), o.setHeader("Service-Worker-Allowed", "/"); const a = S(); o.end(a); } else f(); }), e.middlewares.use((n, o, f) => { if (n.url === "/" || n.url === "/index.html") { const a = o.end; o.end = function(i, u, k) { if (typeof i == "string" && i.includes("<head>")) { const w = b(v, g); i = i.replace("<head>", `<head>${w}`); } return typeof u == "function" ? a.call(this, i, u) : u !== void 0 ? a.call(this, i, u, k) : a.call(this, i); }; } f(); }), d && console.log("MSW Plugin: Development server configured")); }, generateBundle(e, n) { if (l && e.format === "es") { const o = S(); this.emitFile({ type: "asset", fileName: p, source: o }), d && console.log("MSW Plugin: Service worker added to bundle"); } }, transformIndexHtml: { enforce: "pre", transform(e, n) { if (!l) return e; if (n.bundle) { const o = b(v, g); return e.replace("<head>", `<head>${o}`); } return e; } }, handleHotUpdate(e) { return !l || !c ? [] : e.file.includes("mock") || e.file.includes("handler") ? (d && console.log("MSW Plugin: Mock file changed, reloading handlers"), e.server.ws.send({ type: "full-reload" }), []) : []; } }; } function S() { return ` /** * Mock Service Worker * Generated by @dbs-portal/tool-mock */ importScripts('https://unpkg.com/msw@2.6.4/lib/mockServiceWorker.js'); self.addEventListener('message', async function (event) { const { type, payload } = event.data; switch (type) { case 'MOCK_ACTIVATE': { self.registration.addEventListener('activate', () => { event.ports[0].postMessage({ type: 'MOCK_ACTIVATED' }); }); break; } case 'MOCK_DEACTIVATE': { await self.registration.unregister(); event.ports[0].postMessage({ type: 'MOCK_DEACTIVATED' }); break; } default: { // Forward other messages to MSW break; } } }); `; } function b(t, r) { return ` <script> // MSW Setup Script // Generated by @dbs-portal/tool-mock window.__MSW_CONFIG__ = ${JSON.stringify(t)}; window.__MSW_AUTO_SETUP__ = ${r}; // Environment detection const isDevelopment = import.meta.env.DEV; const enableMocking = import.meta.env.VITE_ENABLE_MOCKING === 'true' || isDevelopment; if (enableMocking && window.__MSW_AUTO_SETUP__) { // Auto-setup will be handled by the application console.log('MSW: Auto-setup enabled'); } <\/script> `; } function _(t = {}) { const r = E(), s = { enabled: r.shouldMock, mode: r.mode === "disabled" ? "development" : r.mode, publicDir: "public", serviceWorkerFilename: "mockServiceWorker.js", autoSetup: !0, verbose: r.mode === "development", config: { delay: r.mode === "development" ? [100, 300] : 0, logging: r.mode === "development", errorSimulation: { networkErrorRate: r.mode === "development" ? 0.01 : 0, serverErrorRate: r.mode === "development" ? 5e-3 : 0 } } }; return m({ ...s, ...t, config: { ...s.config, ...t.config } }); } function W(t = {}) { return m({ enabled: !0, mode: "storybook", autoSetup: !0, verbose: !1, config: { delay: [50, 150], logging: !1, errorSimulation: { networkErrorRate: 0, serverErrorRate: 0 } }, ...t }); } function y(t = {}) { return m({ enabled: !0, mode: "testing", autoSetup: !0, verbose: !1, config: { delay: 0, logging: !1, errorSimulation: { networkErrorRate: 0, serverErrorRate: 0 } }, ...t }); } export { _ as createDBSPortalMSWPlugin, m as mswPlugin, W as mswStorybookPlugin, y as mswTestingPlugin }; //# sourceMappingURL=vite-plugin.js.map