UNPKG

storybook-msw-addon

Version:

An MSW (Mock Service Worker) addon including a control panel that enables interaction and manipulation of mock requests within Storybook. MSW 2.3.3 + Storybook 8

55 lines (36 loc) 52.4 kB
'use strict'; var isNodeProcess = require('is-node-process'); var He=/(%?)(%([sdijo]))/g;function je(e,t){switch(t){case"s":return e;case"d":case"i":return Number(e);case"j":return JSON.stringify(e);case"o":{if(typeof e=="string")return e;let r=JSON.stringify(e);return r==="{}"||r==="[]"||/^\[object .+?\]$/.test(r)?e:r}}}function O(e,...t){if(t.length===0)return e;let r=0,s=e.replace(He,(n,i,o,l)=>{let a=t[r],c=je(a,l);return i?n:(r++,c)});return r<t.length&&(s+=` ${t.slice(r).join(" ")}`),s=s.replace(/%{2,2}/g,"%"),s}var De=2;function Be(e){if(!e.stack)return;let t=e.stack.split(` `);t.splice(1,De),e.stack=t.join(` `);}var Fe=class extends Error{constructor(e,...t){super(e),this.message=e,this.name="Invariant Violation",this.message=O(e,...t),Be(this);}},k=(e,t,...r)=>{if(!e)throw new Fe(t,...r)};k.as=(e,t,r,...s)=>{if(!t){let n=s.length===0?r:O(r,s),i;try{i=Reflect.construct(e,[n]);}catch{i=e(n);}throw i}};var $e="[MSW]";function U(e,...t){let r=O(e,...t);return `${$e} ${r}`}function Ge(e,...t){console.warn(U(e,...t));}function Ne(e,...t){console.error(U(e,...t));}var d={formatMessage:U,warn:Ge,error:Ne};var Xe=/[\/\\]msw[\/\\]src[\/\\](.+)/,Ke=/(node_modules)?[\/\\]lib[\/\\](core|browser|node|native|iife)[\/\\]|^[^\/\\]*$/;function Y(e){let t=e.stack;if(!t)return;let s=t.split(` `).slice(1).find(i=>!(Xe.test(i)||Ke.test(i)));return s?s.replace(/\s*at [^()]*\(([^)]+)\)/,"$1").replace(/^@/,""):void 0}function J(e){return e?typeof e[Symbol.iterator]=="function":!1}var M=class e{static cache=new WeakMap;info;isUsed;resolver;resolverGenerator;resolverGeneratorResult;options;constructor(t){this.resolver=t.resolver,this.options=t.options;let r=Y(new Error);this.info={...t.info,callFrame:r},this.isUsed=!1;}async parse(t){return {}}async test(t){let r=await this.parse({request:t.request,resolutionContext:t.resolutionContext});return this.predicate({request:t.request,parsedResult:r,resolutionContext:t.resolutionContext})}extendResolverArgs(t){return {}}cloneRequestOrGetFromCache(t){let r=e.cache.get(t);if(typeof r<"u")return r;let s=t.clone();return e.cache.set(t,s),s}async run(t){if(this.isUsed&&this.options?.once)return null;let r=this.cloneRequestOrGetFromCache(t.request),s=await this.parse({request:t.request,resolutionContext:t.resolutionContext});if(!this.predicate({request:t.request,parsedResult:s,resolutionContext:t.resolutionContext})||this.isUsed&&this.options?.once)return null;this.isUsed=!0;let i=this.wrapResolver(this.resolver),o=this.extendResolverArgs({request:t.request,parsedResult:s}),a=await i({...o,requestId:t.requestId,request:t.request}).catch(u=>{if(u instanceof Response)return u;throw u});return this.createExecutionResult({request:r,requestId:t.requestId,response:a,parsedResult:s})}wrapResolver(t){return async r=>{let s=this.resolverGenerator||await t(r);if(J(s)){this.isUsed=!1;let{value:n,done:i}=s[Symbol.iterator]().next(),o=await n;return i&&(this.isUsed=!0),!o&&i?(k(this.resolverGeneratorResult,"Failed to returned a previously stored generator response: the value is not a valid Response."),this.resolverGeneratorResult.clone()):(this.resolverGenerator||(this.resolverGenerator=s),o&&(this.resolverGeneratorResult=o?.clone()),o)}return s}}createExecutionResult(t){return {handler:this,request:t.request,requestId:t.requestId,response:t.response,parsedResult:t.parsedResult}}};var z=async e=>{try{return {error:null,data:await e().catch(r=>{throw r})}}catch(t){return {error:t,data:null}}};var Q=async({request:e,requestId:t,handlers:r,resolutionContext:s})=>{let n=null,i=null;for(let o of r)if(i=await o.run({request:e,requestId:t,resolutionContext:s}),i!==null&&(n=o),i?.response)break;return n?{handler:n,parsedResult:i?.parsedResult,response:i?.response}:null};function Z(e){if(typeof location>"u")return e.toString();let t=e instanceof URL?e:new URL(e);return t.origin===location.origin?t.pathname:t.origin+t.pathname}async function ee(e,t="warn"){let r=new URL(e.url),s=Z(r),n=`intercepted a request without a matching request handler: \u2022 ${e.method} ${s} If you still wish to intercept this unhandled request, please create a request handler for it. Read more: https://mswjs.io/docs/getting-started/mocks`;function i(o){switch(o){case"error":throw d.error("Error: %s",n),new Error(d.formatMessage('Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'));case"warn":{d.warn("Warning: %s",n);break}case"bypass":break;default:throw new Error(d.formatMessage('Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',o))}}if(typeof t=="function"){t(e,{warning:i.bind(null,"warn"),error:i.bind(null,"error")});return}r.protocol!=="file:"&&i(t);}var Ve=Object.create,ne=Object.defineProperty,Ye=Object.getOwnPropertyDescriptor,oe=Object.getOwnPropertyNames,Je=Object.getPrototypeOf,ze=Object.prototype.hasOwnProperty,Qe=(e,t)=>function(){return t||(0, e[oe(e)[0]])((t={exports:{}}).exports,t),t.exports},Ze=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of oe(t))!ze.call(e,n)&&n!==r&&ne(e,n,{get:()=>t[n],enumerable:!(s=Ye(t,n))||s.enumerable});return e},et=(e,t,r)=>(r=e!=null?Ve(Je(e)):{},Ze(t||!e||!e.__esModule?ne(r,"default",{value:e,enumerable:!0}):r,e)),tt=Qe({"node_modules/set-cookie-parser/lib/set-cookie.js"(e,t){var r={decodeValues:!0,map:!1,silent:!1};function s(a){return typeof a=="string"&&!!a.trim()}function n(a,c){var u=a.split(";").filter(s),p=u.shift(),h=i(p),g=h.name,f=h.value;c=c?Object.assign({},r,c):r;try{f=c.decodeValues?decodeURIComponent(f):f;}catch(b){console.error("set-cookie-parser encountered an error while decoding a cookie with value '"+f+"'. Set options.decodeValues to false to disable this feature.",b);}var m={name:g,value:f};return u.forEach(function(b){var _=b.split("="),R=_.shift().trimLeft().toLowerCase(),P=_.join("=");R==="expires"?m.expires=new Date(P):R==="max-age"?m.maxAge=parseInt(P,10):R==="secure"?m.secure=!0:R==="httponly"?m.httpOnly=!0:R==="samesite"?m.sameSite=P:m[R]=P;}),m}function i(a){var c="",u="",p=a.split("=");return p.length>1?(c=p.shift(),u=p.join("=")):u=a,{name:c,value:u}}function o(a,c){if(c=c?Object.assign({},r,c):r,!a)return c.map?{}:[];if(a.headers)if(typeof a.headers.getSetCookie=="function")a=a.headers.getSetCookie();else if(a.headers["set-cookie"])a=a.headers["set-cookie"];else {var u=a.headers[Object.keys(a.headers).find(function(h){return h.toLowerCase()==="set-cookie"})];!u&&a.headers.cookie&&!c.silent&&console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."),a=u;}if(Array.isArray(a)||(a=[a]),c=c?Object.assign({},r,c):r,c.map){var p={};return a.filter(s).reduce(function(h,g){var f=n(g,c);return h[f.name]=f,h},p)}else return a.filter(s).map(function(h){return n(h,c)})}function l(a){if(Array.isArray(a))return a;if(typeof a!="string")return [];var c=[],u=0,p,h,g,f,m;function b(){for(;u<a.length&&/\s/.test(a.charAt(u));)u+=1;return u<a.length}function _(){return h=a.charAt(u),h!=="="&&h!==";"&&h!==","}for(;u<a.length;){for(p=u,m=!1;b();)if(h=a.charAt(u),h===","){for(g=u,u+=1,b(),f=u;u<a.length&&_();)u+=1;u<a.length&&a.charAt(u)==="="?(m=!0,u=f,c.push(a.substring(p,g)),p=u):u=g+1;}else u+=1;(!m||u>=a.length)&&c.push(a.substring(p,a.length));}return c}t.exports=o,t.exports.parse=o,t.exports.parseString=n,t.exports.splitCookiesString=l;}}),te=et(tt()),E="MSW_COOKIE_STORE";function re(){try{if(localStorage==null)return !1;let e=E+"_test";return localStorage.setItem(e,"test"),localStorage.getItem(e),localStorage.removeItem(e),!0}catch{return !1}}function se(e,t){try{return e[t],!0}catch{return !1}}var rt=class{constructor(){this.store=new Map;}add(e,t){if(se(e,"credentials")&&e.credentials==="omit")return;let r=new URL(e.url),s=t.headers.get("set-cookie");if(!s)return;let n=Date.now(),i=(0, te.parse)(s).map(({maxAge:l,...a})=>({...a,expires:l===void 0?a.expires:new Date(n+l*1e3),maxAge:l})),o=this.store.get(r.origin)||new Map;i.forEach(l=>{this.store.set(r.origin,o.set(l.name,l));});}get(e){this.deleteExpiredCookies();let t=new URL(e.url),r=this.store.get(t.origin)||new Map;if(!se(e,"credentials"))return r;switch(e.credentials){case"include":return typeof document>"u"||(0, te.parse)(document.cookie).forEach(n=>{r.set(n.name,n);}),r;case"same-origin":return r;default:return new Map}}getAll(){return this.deleteExpiredCookies(),this.store}deleteAll(e){let t=new URL(e.url);this.store.delete(t.origin);}clear(){this.store.clear();}hydrate(){if(!re())return;let e=localStorage.getItem(E);if(e)try{JSON.parse(e).forEach(([r,s])=>{this.store.set(r,new Map(s.map(([n,{expires:i,...o}])=>[n,i===void 0?o:{...o,expires:new Date(i)}])));});}catch(t){console.warn(` [virtual-cookie] Failed to parse a stored cookie from the localStorage (key "${E}"). Stored value: ${localStorage.getItem(E)} Thrown exception: ${t} Invalid value has been removed from localStorage to prevent subsequent failed parsing attempts.`),localStorage.removeItem(E);}}persist(){if(!re())return;let e=Array.from(this.store.entries()).map(([t,r])=>[t,Array.from(r.entries())]);localStorage.setItem(E,JSON.stringify(e));}deleteExpiredCookies(){let e=Date.now();this.store.forEach((t,r)=>{t.forEach(({expires:s,name:n})=>{s!==void 0&&s.getTime()<=e&&t.delete(n);}),t.size===0&&this.store.delete(r);});}},H=new rt;function ie(e,t){H.add({...e,url:e.url.toString()},t),H.persist();}async function T(e,t,r,s,n,i){if(n.emit("request:start",{request:e,requestId:t}),e.headers.get("x-msw-intention")==="bypass"){n.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}let o=await z(()=>Q({request:e,requestId:t,handlers:r,resolutionContext:i?.resolutionContext}));if(o.error)throw n.emit("unhandledException",{error:o.error,request:e,requestId:t}),o.error;if(!o.data){await ee(e,s.onUnhandledRequest),n.emit("request:unhandled",{request:e,requestId:t}),n.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}let{response:l}=o.data;if(!l){n.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}if(l.status===302&&l.headers.get("x-msw-intention")==="passthrough"){n.emit("request:end",{request:e,requestId:t}),i?.onPassthroughResponse?.(e);return}ie(e,l),n.emit("request:match",{request:e,requestId:t});let a=o.data,c=i?.transformResponse?.(l)||l;return i?.onMockedResponse?.(c,a),n.emit("request:end",{request:e,requestId:t}),c}function ae(e){return {status:e.status,statusText:e.statusText,headers:Object.fromEntries(e.headers.entries())}}function j(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function D(e,t){return Object.entries(t).reduce((r,[s,n])=>{let i=r[s];return Array.isArray(i)&&Array.isArray(n)?(r[s]=i.concat(n),r):j(i)&&j(n)?(r[s]=D(i,n),r):(r[s]=n,r)},Object.assign({},e))}var st=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning";}},le=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=le.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1;}_emitInternalEvent(e,t,r){this.emit(e,t,r);}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){let r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){let r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){let r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t);}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);let r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;let s=new st(this,e,this.listenerCount(e));console.warn(s);}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){let r=this._getListeners(e);if(r.length>0){let s=[t].concat(r);this.events.set(e,s);}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){let r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},C=le;C.defaultMaxListeners=10;function ce(e,t){let r=e.emit;if(r._isPiped)return;let s=function(i,...o){return t.emit(i,...o),r.call(this,i,...o)};s._isPiped=!0,e.emit=s;}function ue(e){let t=[...e];return Object.freeze(t),t}var I=class{subscriptions=[];async dispose(){await Promise.all(this.subscriptions.map(t=>t()));}};var B=class{constructor(t){this.initialHandlers=t,this.handlers=[...t];}handlers;prepend(t){this.handlers.unshift(...t);}reset(t){this.handlers=t.length>0?[...t]:[...this.initialHandlers];}currentHandlers(){return this.handlers}},A=class extends I{handlersController;emitter;publicEmitter;events;constructor(...t){super(),k(this.validateHandlers(t),d.formatMessage("Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?")),this.handlersController=new B(t),this.emitter=new C,this.publicEmitter=new C,ce(this.emitter,this.publicEmitter),this.events=this.createLifeCycleEvents(),this.subscriptions.push(()=>{this.emitter.removeAllListeners(),this.publicEmitter.removeAllListeners();});}validateHandlers(t){return t.every(r=>!Array.isArray(r))}use(...t){k(this.validateHandlers(t),d.formatMessage('Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?')),this.handlersController.prepend(t);}restoreHandlers(){this.handlersController.currentHandlers().forEach(t=>{t.isUsed=!1;});}resetHandlers(...t){this.handlersController.reset(t);}listHandlers(){return ue(this.handlersController.currentHandlers())}createLifeCycleEvents(){return {on:(...t)=>this.publicEmitter.on(...t),removeListener:(...t)=>this.publicEmitter.removeListener(...t),removeAllListeners:(...t)=>this.publicEmitter.removeAllListeners(...t)}}};var nt=/(%?)(%([sdijo]))/g;function ot(e,t){switch(t){case"s":return e;case"d":case"i":return Number(e);case"j":return JSON.stringify(e);case"o":{if(typeof e=="string")return e;let r=JSON.stringify(e);return r==="{}"||r==="[]"||/^\[object .+?\]$/.test(r)?e:r}}}function x(e,...t){if(t.length===0)return e;let r=0,s=e.replace(nt,(n,i,o,l)=>{let a=t[r],c=ot(a,l);return i?n:(r++,c)});return r<t.length&&(s+=` ${t.slice(r).join(" ")}`),s=s.replace(/%{2,2}/g,"%"),s}var it=2;function at(e){if(!e.stack)return;let t=e.stack.split(` `);t.splice(1,it),e.stack=t.join(` `);}var lt=class extends Error{constructor(e,...t){super(e),this.message=e,this.name="Invariant Violation",this.message=x(e,...t),at(this);}},w=(e,t,...r)=>{if(!e)throw new lt(t,...r)};w.as=(e,t,r,...s)=>{if(!t){let n=s.length===0?r:x(r,s),i;try{i=Reflect.construct(e,[n]);}catch{i=e(n);}throw i}};function X(){if(typeof navigator<"u"&&navigator.product==="ReactNative")return !0;if(typeof process<"u"){let e=process.type;return e==="renderer"||e==="worker"?!1:!!(process.versions&&process.versions.node)}return !1}var K=async e=>{try{return {error:null,data:await e().catch(r=>{throw r})}}catch(t){return {error:t,data:null}}};function ct(e){return new URL(e,location.href).href}function F(e,t,r){return [e.active,e.installing,e.waiting].filter(o=>o!=null).find(o=>r(o.scriptURL,t))||null}var ut=async(e,t={},r)=>{let s=ct(e),n=await navigator.serviceWorker.getRegistrations().then(l=>l.filter(a=>F(a,s,r)));!navigator.serviceWorker.controller&&n.length>0&&location.reload();let[i]=n;if(i)return i.update().then(()=>[F(i,s,r),i]);let o=await K(async()=>{let l=await navigator.serviceWorker.register(e,t);return [F(l,s,r),l]});if(o.error){if(o.error.message.includes("(404)")){let a=new URL(t?.scope||"/",location.href);throw new Error(d.formatMessage(`Failed to register a Service Worker for scope ('${a.href}') with script ('${s}'): Service Worker script does not exist at the given path. Did you forget to run "npx msw init <PUBLIC_DIR>"? Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/init`))}throw new Error(d.formatMessage(`Failed to register the Service Worker: %s`,o.error.message))}return o.data};function ye(e={}){if(e.quiet)return;let t=e.message||"Mocking enabled.";console.groupCollapsed(`%c${d.formatMessage(t)}`,"color:orangered;font-weight:bold;"),console.log("%cDocumentation: %chttps://mswjs.io/docs","font-weight:bold","font-weight:normal"),console.log("Found an issue? https://github.com/mswjs/msw/issues"),e.workerUrl&&console.log("Worker script URL:",e.workerUrl),e.workerScope&&console.log("Worker scope:",e.workerScope),console.groupEnd();}async function ht(e,t){if(e.workerChannel.send("MOCK_ACTIVATE"),await e.events.once("MOCKING_ENABLED"),e.isMockingEnabled){d.warn('Found a redundant "worker.start()" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this "worker.start()" call.');return}e.isMockingEnabled=!0,ye({quiet:t.quiet,workerScope:e.registration?.scope,workerUrl:e.worker?.scriptURL});}var dt=class{constructor(e){this.port=e;}postMessage(e,...t){let[r,s]=t;this.port.postMessage({type:e,data:r},{transfer:s});}};function pt(e){if(!["HEAD","GET"].includes(e.method))return e.body}function ft(e){return new Request(e.url,{...e,body:pt(e)})}var gt=(e,t)=>async(r,s)=>{let n=new dt(r.ports[0]),i=s.payload.id,o=ft(s.payload),l=o.clone(),a=o.clone();M.cache.set(o,a),e.requests.set(i,a);try{await T(o,i,e.getRequestHandlers(),t,e.emitter,{onPassthroughResponse(){n.postMessage("PASSTHROUGH");},async onMockedResponse(c,{handler:u,parsedResult:p}){let h=c.clone(),g=c.clone(),f=ae(c);if(e.supports.readableStreamTransfer){let m=c.body;n.postMessage("MOCK_RESPONSE",{...f,body:m},m?[m]:void 0);}else {let m=c.body===null?null:await h.arrayBuffer();n.postMessage("MOCK_RESPONSE",{...f,body:m});}t.quiet||e.emitter.once("response:mocked",()=>{u.log({request:l,response:g,parsedResult:p});});}});}catch(c){c instanceof Error&&(d.error(`Uncaught exception in the request handler for "%s %s": %s This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/recipes/mocking-error-responses`,o.method,o.url,c.stack??c),n.postMessage("MOCK_RESPONSE",{status:500,statusText:"Request Handler Error",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.name,message:c.message,stack:c.stack})}));}};async function mt(e){e.workerChannel.send("INTEGRITY_CHECK_REQUEST");let{payload:t}=await e.events.once("INTEGRITY_CHECK_RESPONSE");t.checksum!=="26357c79639bfa20d64c0efca2a87423"&&d.warn(`The currently registered Service Worker has been generated by a different version of MSW (${t.packageVersion}) and may not be fully compatible with the installed version. It's recommended you update your worker script by running this command: \u2022 npx msw init <PUBLIC_DIR> You can also automate this process and make the worker script update automatically upon the library installations. Read more: https://mswjs.io/docs/cli/init.`);}var vt=new TextEncoder;function yt(e){return vt.encode(e)}function wt(e,t){return new TextDecoder(t).decode(e)}function bt(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var Rt=new Set([101,103,204,205,304]);function we(e){return Rt.has(e)}var q=Symbol("isPatchedModule"),kt=Object.defineProperty,Et=(e,t)=>{for(var r in t)kt(e,r,{get:t[r],enumerable:!0});},$={};Et($,{blue:()=>qt,gray:()=>G,green:()=>xt,red:()=>St,yellow:()=>Lt});function Lt(e){return `\x1B[33m${e}\x1B[0m`}function qt(e){return `\x1B[34m${e}\x1B[0m`}function G(e){return `\x1B[90m${e}\x1B[0m`}function St(e){return `\x1B[31m${e}\x1B[0m`}function xt(e){return `\x1B[32m${e}\x1B[0m`}var W=X(),be=class{constructor(e){this.name=e,this.prefix=`[${this.name}]`;let t=he("DEBUG"),r=he("LOG_LEVEL");t==="1"||t==="true"||typeof t<"u"&&this.name.startsWith(t)?(this.debug=S(r,"debug")?v:this.debug,this.info=S(r,"info")?v:this.info,this.success=S(r,"success")?v:this.success,this.warning=S(r,"warning")?v:this.warning,this.error=S(r,"error")?v:this.error):(this.info=v,this.success=v,this.warning=v,this.error=v,this.only=v);}prefix;extend(e){return new be(`${this.name}:${e}`)}debug(e,...t){this.logEntry({level:"debug",message:G(e),positionals:t,prefix:this.prefix,colors:{prefix:"gray"}});}info(e,...t){this.logEntry({level:"info",message:e,positionals:t,prefix:this.prefix,colors:{prefix:"blue"}});let r=new _t;return (s,...n)=>{r.measure(),this.logEntry({level:"info",message:`${s} ${G(`${r.deltaTime}ms`)}`,positionals:n,prefix:this.prefix,colors:{prefix:"blue"}});}}success(e,...t){this.logEntry({level:"info",message:e,positionals:t,prefix:`\u2714 ${this.prefix}`,colors:{timestamp:"green",prefix:"green"}});}warning(e,...t){this.logEntry({level:"warning",message:e,positionals:t,prefix:`\u26A0 ${this.prefix}`,colors:{timestamp:"yellow",prefix:"yellow"}});}error(e,...t){this.logEntry({level:"error",message:e,positionals:t,prefix:`\u2716 ${this.prefix}`,colors:{timestamp:"red",prefix:"red"}});}only(e){e();}createEntry(e,t){return {timestamp:new Date,level:e,message:t}}logEntry(e){let{level:t,message:r,prefix:s,colors:n,positionals:i=[]}=e,o=this.createEntry(t,r),l=n?.timestamp||"gray",a=n?.prefix||"gray",c={timestamp:$[l],prefix:$[a]};this.getWriter(t)([c.timestamp(this.formatTimestamp(o.timestamp))].concat(s!=null?c.prefix(s):[]).concat(de(r)).join(" "),...i.map(de));}formatTimestamp(e){return `${e.toLocaleTimeString("en-GB")}:${e.getMilliseconds()}`}getWriter(e){switch(e){case"debug":case"success":case"info":return Pt;case"warning":return Ot;case"error":return Mt}}},_t=class{startTime;endTime;deltaTime;constructor(){this.startTime=performance.now();}measure(){this.endTime=performance.now();let e=this.endTime-this.startTime;this.deltaTime=e.toFixed(2);}},v=()=>{};function Pt(e,...t){if(W){process.stdout.write(x(e,...t)+` `);return}console.log(e,...t);}function Ot(e,...t){if(W){process.stderr.write(x(e,...t)+` `);return}console.warn(e,...t);}function Mt(e,...t){if(W){process.stderr.write(x(e,...t)+` `);return}console.error(e,...t);}function he(e){return W?process.env[e]:globalThis[e]?.toString()}function S(e,t){return e!==void 0&&e!==t}function de(e){return typeof e>"u"?"undefined":e===null?"null":typeof e=="string"?e:typeof e=="object"?JSON.stringify(e):e.toString()}var Tt=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning";}},Re=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=Re.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1;}_emitInternalEvent(e,t,r){this.emit(e,t,r);}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){let r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){let r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){let r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t);}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);let r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;let s=new Tt(this,e,this.listenerCount(e));console.warn(s);}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){let r=this._getListeners(e);if(r.length>0){let s=[t].concat(r);this.events.set(e,s);}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){let r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},ke=Re;ke.defaultMaxListeners=10;var Ct="x-interceptors-internal-request-id";function pe(e){return globalThis[e]||void 0}function It(e,t){globalThis[e]=t;}function At(e){delete globalThis[e];}var V=class{constructor(e){this.symbol=e,this.readyState="INACTIVE",this.emitter=new ke,this.subscriptions=[],this.logger=new be(e.description),this.emitter.setMaxListeners(0),this.logger.info("constructing the interceptor...");}checkEnvironment(){return !0}apply(){let e=this.logger.extend("apply");if(e.info("applying the interceptor..."),this.readyState==="APPLIED"){e.info("intercepted already applied!");return}if(!this.checkEnvironment()){e.info("the interceptor cannot be applied in this environment!");return}this.readyState="APPLYING";let r=this.getInstance();if(r){e.info("found a running instance, reusing..."),this.on=(s,n)=>(e.info('proxying the "%s" listener',s),r.emitter.addListener(s,n),this.subscriptions.push(()=>{r.emitter.removeListener(s,n),e.info('removed proxied "%s" listener!',s);}),this),this.readyState="APPLIED";return}e.info("no running instance found, setting up a new instance..."),this.setup(),this.setInstance(),this.readyState="APPLIED";}setup(){}on(e,t){let r=this.logger.extend("on");return this.readyState==="DISPOSING"||this.readyState==="DISPOSED"?(r.info("cannot listen to events, already disposed!"),this):(r.info('adding "%s" event listener:',e,t),this.emitter.on(e,t),this)}once(e,t){return this.emitter.once(e,t),this}off(e,t){return this.emitter.off(e,t),this}removeAllListeners(e){return this.emitter.removeAllListeners(e),this}dispose(){let e=this.logger.extend("dispose");if(this.readyState==="DISPOSED"){e.info("cannot dispose, already disposed!");return}if(e.info("disposing the interceptor..."),this.readyState="DISPOSING",!this.getInstance()){e.info("no interceptors running, skipping dispose...");return}if(this.clearInstance(),e.info("global symbol deleted:",pe(this.symbol)),this.subscriptions.length>0){e.info("disposing of %d subscriptions...",this.subscriptions.length);for(let t of this.subscriptions)t();this.subscriptions=[],e.info("disposed of all subscriptions!",this.subscriptions.length);}this.emitter.removeAllListeners(),e.info("destroyed the listener!"),this.readyState="DISPOSED";}getInstance(){var e;let t=pe(this.symbol);return this.logger.info("retrieved global instance:",(e=t?.constructor)==null?void 0:e.name),t}setInstance(){It(this.symbol,this),this.logger.info("set global instance!",this.symbol.description);}clearInstance(){At(this.symbol),this.logger.info("cleared global instance!",this.symbol.description);}};function Ee(){return Math.random().toString(16).slice(2)}var N=class extends V{constructor(e){N.symbol=Symbol(e.name),super(N.symbol),this.interceptors=e.interceptors;}setup(){let e=this.logger.extend("setup");e.info("applying all %d interceptors...",this.interceptors.length);for(let t of this.interceptors)e.info('applying "%s" interceptor...',t.constructor.name),t.apply(),e.info("adding interceptor dispose subscription"),this.subscriptions.push(()=>t.dispose());}on(e,t){for(let r of this.interceptors)r.on(e,t);return this}once(e,t){for(let r of this.interceptors)r.once(e,t);return this}off(e,t){for(let r of this.interceptors)r.off(e,t);return this}removeAllListeners(e){for(let t of this.interceptors)t.removeAllListeners(e);return this}};function Wt(e){return (t,r)=>{let{payload:s}=r,{requestId:n}=s,i=e.requests.get(n);if(e.requests.delete(n),s.type?.includes("opaque"))return;let o=s.status===0?Response.error():new Response(we(s.status)?null:s.body,s);o.url||Object.defineProperty(o,"url",{value:i.url,enumerable:!0,writable:!1}),e.emitter.emit(s.isMockedResponse?"response:mocked":"response:bypass",{response:o,request:i,requestId:s.requestId});}}function Ut(e,t){!t?.quiet&&!location.href.startsWith(e.scope)&&d.warn(`Cannot intercept requests on this page because it's outside of the worker's scope ("${e.scope}"). If you wish to mock API requests on this page, you must resolve this scope issue. - (Recommended) Register the worker at the root level ("/") of your application. - Set the "Service-Worker-Allowed" response header to allow out-of-scope workers.`);}var Ht=e=>function(r,s){return (async()=>{e.events.removeAllListeners(),e.workerChannel.on("REQUEST",gt(e,r)),e.workerChannel.on("RESPONSE",Wt(e));let o=await ut(r.serviceWorker.url,r.serviceWorker.options,r.findWorker),[l,a]=o;if(!l){let c=s?.findWorker?d.formatMessage(`Failed to locate the Service Worker registration using a custom "findWorker" predicate. Please ensure that the custom predicate properly locates the Service Worker registration at "%s". More details: https://mswjs.io/docs/api/setup-worker/start#findworker `,r.serviceWorker.url):d.formatMessage(`Failed to locate the Service Worker registration. This most likely means that the worker script URL "%s" cannot resolve against the actual public hostname (%s). This may happen if your application runs behind a proxy, or has a dynamic hostname. Please consider using a custom "serviceWorker.url" option to point to the actual worker script location, or a custom "findWorker" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`,r.serviceWorker.url,location.host);throw new Error(c)}return e.worker=l,e.registration=a,e.events.addListener(window,"beforeunload",()=>{l.state!=="redundant"&&e.workerChannel.send("CLIENT_CLOSED"),window.clearInterval(e.keepAliveInterval);}),await mt(e).catch(c=>{d.error("Error while checking the worker script integrity. Please report this on GitHub (https://github.com/mswjs/msw/issues), including the original error below."),console.error(c);}),e.keepAliveInterval=window.setInterval(()=>e.workerChannel.send("KEEPALIVE_REQUEST"),5e3),Ut(a,e.startOptions),a})().then(async o=>{let l=o.installing||o.waiting;return l&&await new Promise(a=>{l.addEventListener("statechange",()=>{if(l.state==="activated")return a()});}),await ht(e,r).catch(a=>{throw new Error(`Failed to enable mocking: ${a?.message}`)}),o})};function Le(e={}){e.quiet||console.log(`%c${d.formatMessage("Mocking disabled.")}`,"color:orangered;font-weight:bold;");}var jt=e=>function(){if(!e.isMockingEnabled){d.warn('Found a redundant "worker.stop()" call. Note that stopping the worker while mocking already stopped has no effect. Consider removing this "worker.stop()" call.');return}e.workerChannel.send("MOCK_DEACTIVATE"),e.isMockingEnabled=!1,window.clearInterval(e.keepAliveInterval),Le({quiet:e.startOptions?.quiet});},Dt={serviceWorker:{url:"/mockServiceWorker.js",options:null},quiet:!1,waitUntilReady:!0,onUnhandledRequest:"warn",findWorker(e,t){return e===t}};function Bt(){let e=(t,r)=>{e.state="pending",e.resolve=s=>{if(e.state!=="pending")return;e.result=s;let n=i=>(e.state="fulfilled",i);return t(s instanceof Promise?s:Promise.resolve(s).then(n))},e.reject=s=>{if(e.state==="pending")return queueMicrotask(()=>{e.state="rejected";}),r(e.rejectionReason=s)};};return e}var qe=class extends Promise{#e;resolve;reject;constructor(e=null){let t=Bt();super((r,s)=>{t(r,s),e?.(t.resolve,t.reject);}),this.#e=t,this.resolve=this.#e.resolve,this.reject=this.#e.reject;}get state(){return this.#e.state}get rejectionReason(){return this.#e.rejectionReason}then(e,t){return this.#t(super.then(e,t))}catch(e){return this.#t(super.catch(e))}finally(e){return this.#t(super.finally(e))}#t(e){return Object.defineProperties(e,{resolve:{configurable:!0,value:this.resolve},reject:{configurable:!0,value:this.reject}})}},Ft=class{constructor(e){this.request=e,this.responsePromise=new qe;}respondWith(e){w(this.responsePromise.state==="pending",'Failed to respond to "%s %s" request: the "request" event has already been responded to.',this.request.method,this.request.url),this.responsePromise.resolve(e);}};function Se(e){let t=new Ft(e);return Reflect.set(e,"respondWith",t.respondWith.bind(t)),{interactiveRequest:e,requestController:t}}async function xe(e,t,...r){let s=e.listeners(t);if(s.length!==0)for(let n of s)await n.apply(e,r);}function $t(e,t){try{return e[t],!0}catch{return !1}}function Gt(e){try{return new URL(e),!0}catch{return !1}}var _e=class extends V{constructor(){super(_e.symbol);}checkEnvironment(){return typeof globalThis<"u"&&typeof globalThis.fetch<"u"}async setup(){let e=globalThis.fetch;w(!e[q],'Failed to patch the "fetch" module: already patched.'),globalThis.fetch=async(t,r)=>{var s;let n=Ee(),i=typeof t=="string"&&typeof location<"u"&&!Gt(t)?new URL(t,location.origin):t,o=new Request(i,r);this.logger.info("[%s] %s",o.method,o.url);let{interactiveRequest:l,requestController:a}=Se(o);this.logger.info('emitting the "request" event for %d listener(s)...',this.emitter.listenerCount("request")),this.emitter.once("request",({requestId:g})=>{g===n&&a.responsePromise.state==="pending"&&a.responsePromise.resolve(void 0);}),this.logger.info("awaiting for the mocked response...");let c=l.signal,u=new qe;c&&c.addEventListener("abort",()=>{u.reject(c.reason);},{once:!0});let p=await K(async()=>{let g=xe(this.emitter,"request",{request:l,requestId:n});await Promise.race([u,g,a.responsePromise]),this.logger.info("all request listeners have been resolved!");let f=await a.responsePromise;return this.logger.info("event.respondWith called with:",f),f});if(u.state==="rejected")return Promise.reject(u.rejectionReason);if(p.error)return Promise.reject(fe(p.error));let h=p.data;if(h&&!((s=o.signal)!=null&&s.aborted)){if(this.logger.info("received mocked response:",h),$t(h,"type")&&h.type==="error")return this.logger.info("received a network error response, rejecting the request promise..."),Promise.reject(fe(h));let g=h.clone();return this.emitter.emit("response",{response:g,isMockedResponse:!0,request:l,requestId:n}),Object.defineProperty(h,"url",{writable:!1,enumerable:!0,configurable:!1,value:o.url}),h}return this.logger.info("no mocked response received!"),e(o).then(g=>{let f=g.clone();return this.logger.info("original fetch performed",f),this.emitter.emit("response",{response:f,isMockedResponse:!1,request:l,requestId:n}),g})},Object.defineProperty(globalThis.fetch,q,{enumerable:!0,configurable:!0,value:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis.fetch,q,{value:void 0}),globalThis.fetch=e,this.logger.info('restored native "globalThis.fetch"!',globalThis.fetch.name);});}},Pe=_e;Pe.symbol=Symbol("fetch");function fe(e){return Object.assign(new TypeError("Failed to fetch"),{cause:e})}function Nt(e,t){let r=new Uint8Array(e.byteLength+t.byteLength);return r.set(e,0),r.set(t,e.byteLength),r}var Oe=class{constructor(e,t){this.AT_TARGET=0,this.BUBBLING_PHASE=0,this.CAPTURING_PHASE=0,this.NONE=0,this.type="",this.srcElement=null,this.currentTarget=null,this.eventPhase=0,this.isTrusted=!0,this.composed=!1,this.cancelable=!0,this.defaultPrevented=!1,this.bubbles=!0,this.lengthComputable=!0,this.loaded=0,this.total=0,this.cancelBubble=!1,this.returnValue=!0,this.type=e,this.target=t?.target||null,this.currentTarget=t?.currentTarget||null,this.timeStamp=Date.now();}composedPath(){return []}initEvent(e,t,r){this.type=e,this.bubbles=!!t,this.cancelable=!!r;}preventDefault(){this.defaultPrevented=!0;}stopPropagation(){}stopImmediatePropagation(){}},Xt=class extends Oe{constructor(e,t){super(e),this.lengthComputable=t?.lengthComputable||!1,this.composed=t?.composed||!1,this.loaded=t?.loaded||0,this.total=t?.total||0;}},Kt=typeof ProgressEvent<"u";function Vt(e,t,r){let s=["error","progress","loadstart","loadend","load","timeout","abort"],n=Kt?ProgressEvent:Xt;return s.includes(t)?new n(t,{lengthComputable:!0,loaded:r?.loaded||0,total:r?.total||0}):new Oe(t,{target:e,currentTarget:e})}function Me(e,t){if(!(t in e))return null;if(Object.prototype.hasOwnProperty.call(e,t))return e;let s=Reflect.getPrototypeOf(e);return s?Me(s,t):null}function ge(e,t){return new Proxy(e,Yt(t))}function Yt(e){let{constructorCall:t,methodCall:r,getProperty:s,setProperty:n}=e,i={};return typeof t<"u"&&(i.construct=function(o,l,a){let c=Reflect.construct.bind(null,o,l,a);return t.call(a,l,c)}),i.set=function(o,l,a){let c=()=>{let u=Me(o,l)||o,p=Reflect.getOwnPropertyDescriptor(u,l);return typeof p?.set<"u"?(p.set.apply(o,[a]),!0):Reflect.defineProperty(u,l,{writable:!0,enumerable:!0,configurable:!0,value:a})};return typeof n<"u"?n.call(o,[l,a],c):c()},i.get=function(o,l,a){let c=()=>o[l],u=typeof s<"u"?s.call(o,[l,a],c):c();return typeof u=="function"?(...p)=>{let h=u.bind(o,...p);return typeof r<"u"?r.call(o,[l,p],h):h()}:u},i}function Jt(e){return ["application/xhtml+xml","application/xml","image/svg+xml","text/html","text/xml"].some(r=>e.startsWith(r))}function zt(e){try{return JSON.parse(e)}catch{return null}}function Qt(e,t){let r=we(e.status)?null:t;return new Response(r,{status:e.status,statusText:e.statusText,headers:Zt(e.getAllResponseHeaders())})}function Zt(e){let t=new Headers,r=e.split(/[\r\n]+/);for(let s of r){if(s.trim()==="")continue;let[n,...i]=s.split(": "),o=i.join(": ");t.append(n,o);}return t}var me=Symbol("isMockedResponse"),er=X(),tr=class{constructor(e,t){this.initialRequest=e,this.logger=t,this.method="GET",this.url=null,this.events=new Map,this.requestId=Ee(),this.requestHeaders=new Headers,this.responseBuffer=new Uint8Array,this.request=ge(e,{setProperty:([r,s],n)=>{switch(r){case"ontimeout":{let i=r.slice(2);return this.request.addEventListener(i,s),n()}default:return n()}},methodCall:([r,s],n)=>{var i;switch(r){case"open":{let[o,l]=s;return typeof l>"u"?(this.method="GET",this.url=ve(o)):(this.method=o,this.url=ve(l)),this.logger=this.logger.extend(`${this.method} ${this.url.href}`),this.logger.info("open",this.method,this.url.href),n()}case"addEventListener":{let[o,l]=s;return this.registerEvent(o,l),this.logger.info("addEventListener",o,l),n()}case"setRequestHeader":{let[o,l]=s;return this.requestHeaders.set(o,l),this.logger.info("setRequestHeader",o,l),n()}case"send":{let[o]=s;o!=null&&(this.requestBody=typeof o=="string"?yt(o):o),this.request.addEventListener("load",()=>{if(typeof this.onResponse<"u"){let c=Qt(this.request,this.request.response);this.onResponse.call(this,{response:c,isMockedResponse:me in this.request,request:l,requestId:this.requestId});}});let l=this.toFetchApiRequest();(((i=this.onRequest)==null?void 0:i.call(this,{request:l,requestId:this.requestId}))||Promise.resolve()).finally(()=>{if(this.request.readyState<this.request.LOADING)return this.logger.info("request callback settled but request has not been handled (readystate %d), performing as-is...",this.request.readyState),er&&this.request.setRequestHeader(Ct,this.requestId),n()});break}default:return n()}}});}registerEvent(e,t){let s=(this.events.get(e)||[]).concat(t);this.events.set(e,s),this.logger.info('registered event "%s"',e,t);}respondWith(e){this.logger.info("responding with a mocked response: %d %s",e.status,e.statusText),L(this.request,me,!0),L(this.request,"status",e.status),L(this.request,"statusText",e.statusText),L(this.request,"responseURL",this.url.href),this.request.getResponseHeader=new Proxy(this.request.getResponseHeader,{apply:(s,n,i)=>{if(this.logger.info("getResponseHeader",i[0]),this.request.readyState<this.request.HEADERS_RECEIVED)return this.logger.info("headers not received yet, returning null"),null;let o=e.headers.get(i[0]);return this.logger.info('resolved response header "%s" to',i[0],o),o}}),this.request.getAllResponseHeaders=new Proxy(this.request.getAllResponseHeaders,{apply:()=>{if(this.logger.info("getAllResponseHeaders"),this.request.readyState<this.request.HEADERS_RECEIVED)return this.logger.info("headers not received yet, returning empty string"),"";let n=Array.from(e.headers.entries()).map(([i,o])=>`${i}: ${o}`).join(`\r `);return this.logger.info("resolved all response headers to",n),n}}),Object.defineProperties(this.request,{response:{enumerable:!0,configurable:!1,get:()=>this.response},responseText:{enumerable:!0,configurable:!1,get:()=>this.responseText},responseXML:{enumerable:!0,configurable:!1,get:()=>this.responseXML}});let t=e.headers.has("Content-Length")?Number(e.headers.get("Content-Length")):void 0;this.logger.info("calculated response body length",t),this.trigger("loadstart",{loaded:0,total:t}),this.setReadyState(this.request.HEADERS_RECEIVED),this.setReadyState(this.request.LOADING);let r=()=>{this.logger.info("finalizing the mocked response..."),this.setReadyState(this.request.DONE),this.trigger("load",{loaded:this.responseBuffer.byteLength,total:t}),this.trigger("loadend",{loaded:this.responseBuffer.byteLength,total:t});};if(e.body){this.logger.info("mocked response has body, streaming...");let s=e.body.getReader(),n=async()=>{let{value:i,done:o}=await s.read();if(o){this.logger.info("response body stream done!"),r();return}i&&(this.logger.info("read response body chunk:",i),this.responseBuffer=Nt(this.responseBuffer,i),this.trigger("progress",{loaded:this.responseBuffer.byteLength,total:t})),n();};n();}else r();}responseBufferToText(){return wt(this.responseBuffer)}get response(){if(this.logger.info("getResponse (responseType: %s)",this.request.responseType),this.request.readyState!==this.request.DONE)return null;switch(this.request.responseType){case"json":{let e=zt(this.responseBufferToText());return this.logger.info("resolved response JSON",e),e}case"arraybuffer":{let e=bt(this.responseBuffer);return this.logger.info("resolved response ArrayBuffer",e),e}case"blob":{let e=this.request.getResponseHeader("Content-Type")||"text/plain",t=new Blob([this.responseBufferToText()],{type:e});return this.logger.info("resolved response Blob (mime type: %s)",t,e),t}default:{let e=this.responseBufferToText();return this.logger.info('resolving "%s" response type as text',this.request.responseType,e),e}}}get responseText(){if(w(this.request.responseType===""||this.request.responseType==="text","InvalidStateError: The object is in invalid state."),this.request.readyState!==this.request.LOADING&&this.request.readyState!==this.request.DONE)return "";let e=this.responseBufferToText();return this.logger.info('getResponseText: "%s"',e),e}get responseXML(){if(w(this.request.responseType===""||this.request.responseType==="document","InvalidStateError: The object is in invalid state."),this.request.readyState!==this.request.DONE)return null;let e=this.request.getResponseHeader("Content-Type")||"";return typeof DOMParser>"u"?(console.warn("Cannot retrieve XMLHttpRequest response body as XML: DOMParser is not defined. You are likely using an environment that is not browser or does not polyfill browser globals correctly."),null):Jt(e)?new DOMParser().parseFromString(this.responseBufferToText(),e):null}errorWith(e){this.logger.info("responding with an error"),this.setReadyState(this.request.DONE),this.trigger("error"),this.trigger("loadend");}setReadyState(e){if(this.logger.info("setReadyState: %d -> %d",this.request.readyState,e),this.request.readyState===e){this.logger.info("ready state identical, skipping transition...");return}L(this.request,"readyState",e),this.logger.info("set readyState to: %d",e),e!==this.request.UNSENT&&(this.logger.info('triggerring "readystatechange" event...'),this.trigger("readystatechange"));}trigger(e,t){let r=this.request[`on${e}`],s=Vt(this.request,e,t);this.logger.info('trigger "%s"',e,t||""),typeof r=="function"&&(this.logger.info('found a direct "%s" callback, calling...',e),r.call(this.request,s));for(let[n,i]of this.events)n===e&&(this.logger.info('found %d listener(s) for "%s" event, calling...',i.length,e),i.forEach(o=>o.call(this.request,s)));}toFetchApiRequest(){this.logger.info("converting request to a Fetch API Request...");let e=new Request(this.url.href,{method:this.method,headers:this.requestHeaders,credentials:this.request.withCredentials?"include":"same-origin",body:["GET","HEAD"].includes(this.method)?null:this.requestBody}),t=ge(e.headers,{methodCall:([r,s],n)=>{switch(r){case"append":case"set":{let[i,o]=s;this.request.setRequestHeader(i,o);break}case"delete":{let[i]=s;console.warn(`XMLHttpRequest: Cannot remove a "${i}" header from the Fetch API representation of the "${e.method} ${e.url}" request. XMLHttpRequest headers cannot be removed.`);break}}return n()}});return L(e,"headers",t),this.logger.info("converted request to a Fetch API Request!",e),e}};function ve(e){return typeof location>"u"?new URL(e):new URL(e.toString(),location.href)}function L(e,t,r){Reflect.defineProperty(e,t,{writable:!0,enumerable:!0,value:r});}function rr({emitter:e,logger:t}){return new Proxy(globalThis.XMLHttpRequest,{construct(s,n,i){t.info("constructed new XMLHttpRequest");let o=Reflect.construct(s,n,i),l=Object.getOwnPropertyDescriptors(s.prototype);for(let c in l)Reflect.defineProperty(o,c,l[c]);let a=new tr(o,t);return a.onRequest=async function({request:c,requestId:u}){let{interactiveRequest:p,requestController:h}=Se(c);this.logger.info("awaiting mocked response..."),e.once("request",({requestId:m})=>{m===u&&h.responsePromise.state==="pending"&&h.respondWith(void 0);});let g=await K(async()=>{this.logger.info('emitting the "request" event for %s listener(s)...',e.listenerCount("request")),await xe(e,"request",{request:p,requestId:u}),this.logger.info('all "request" listeners settled!');let m=await h.responsePromise;return this.logger.info("event.respondWith called with:",m),m});if(g.error){this.logger.info("request listener threw an exception, aborting request...",g.error),a.errorWith(g.error);return}let f=g.data;if(typeof f<"u"){if(this.logger.info("received mocked response: %d %s",f.status,f.statusText),f.type==="error"){this.logger.info("received a network error response, rejecting the request promise..."),a.errorWith(new TypeError("Network error"));return}return a.respondWith(f)}this.logger.info("no mocked response received, performing request as-is...");},a.onResponse=async function({response:c,isMockedResponse:u,request:p,requestId:h}){this.logger.info('emitting the "response" event for %s listener(s)...',e.listenerCount("response")),e.emit("response",{response:c,isMockedResponse:u,request:p,requestId:h});},a.request}})}var Te=class extends V{constructor(){super(Te.interceptorSymbol);}checkEnvironment(){return typeof globalThis.XMLHttpRequest<"u"}setup(){let e=this.logger.extend("setup");e.info('patching "XMLHttpRequest" module...');let t=globalThis.XMLHttpRequest;w(!t[q],'Failed to patch the "XMLHttpRequest" module: already patched.'),globalThis.XMLHttpRequest=rr({emitter:this.emitter,logger:this.logger}),e.info('native "XMLHttpRequest" module patched!',globalThis.XMLHttpRequest.name),Object.defineProperty(globalThis.XMLHttpRequest,q,{enumerable:!0,configurable:!0,value:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis.XMLHttpRequest,q,{value:void 0}),globalThis.XMLHttpRequest=t,e.info('native "XMLHttpRequest" module restored!',globalThis.XMLHttpRequest.name);});}},Ce=Te;Ce.interceptorSymbol=Symbol("xhr");function sr(e,t){let r=new N({name:"fallback",interceptors:[new Pe,new Ce]});return r.on("request",async({request:s,requestId:n})=>{let i=s.clone(),o=await T(s,n,e.getRequestHandlers(),t,e.emitter,{onMockedResponse(l,{handler:a,parsedResult:c}){t.quiet||e.emitter.once("response:mocked",({response:u})=>{a.log({request:i,response:u,parsedResult:c});});}});o&&s.respondWith(o);}),r.on("response",({response:s,isMockedResponse:n,request:i,requestId:o})=>{e.emitter.emit(n?"response:mocked":"response:bypass",{response:s,request:i,requestId:o});}),r.apply(),r}function nr(e){return async function(r){e.fallbackInterceptor=sr(e,r),ye({message:"Mocking enabled (fallback mode).",quiet:r.quiet});}}function or(e){return function(){e.fallbackInterceptor?.dispose(),Le({quiet:e.startOptions?.quiet});}}function ir(){try{let e=new ReadableStream({start:r=>r.close()});return new MessageChannel().port1.postMessage(e,[e]),!0}catch{return !1}}var ar=class extends A{context;startHandler=null;stopHandler=null;listeners;constructor(...e){super(...e),w(!X(),d.formatMessage("Failed to execute `setupWorker` in a non-browser environment. Consider using `setupServer` for Node.js environment instead.")),this.listeners=[],this.context=this.createWorkerContext();}createWorkerContext(){let e={isMockingEnabled:!1,startOptions:null,worker:null,getRequestHandlers:()=>this.handlersController.currentHandlers(),registration:null,requests:new Map,emitter:this.emitter,workerChannel:{on:(t,r)=>{this.context.events.addListener(navigator.serviceWorker,"message",s=>{if(s.source