vite-plugin-mock-dev-server 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -155,7 +155,7 @@ export default defineConfig({
155
155
 
156
156
  Configure the matching rules for WebSocket service. Any request path starting with the value of `wsPrefix` and using the `ws/wss` protocol will be proxied to the corresponding target.
157
157
 
158
- If the value of `wsPrefix` starts with `^`, it will be recognized as a RegExp.
158
+ If the value of `wsPrefix` starts with `^`, it will be recognized as a RegExp.
159
159
 
160
160
  > Different from using `viteConfig.server.proxy` by default for http mock, `websocket mock` does not use the ws-related configuration in `viteConfig.server.proxy`. Also, rules configured in `wsPrefix` cannot be configured simultaneously in `viteConfig.server.proxy`, as it will cause conflicts when starting the vite server because multiple instances of WebSocketServer cannot be implemented for the same request.
161
161
  > This conflict is neither a problem with Vite nor with the plugin; it belongs to a reasonable error type. When switching between WebSocket Mock and WebSocket Proxy, please pay attention to avoid duplicate configurations that may cause conflicts.
@@ -405,11 +405,20 @@ export default defineMock({
405
405
  /**
406
406
  * Configure the WebSocketServer
407
407
  * @see https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocketserver
408
+ * If there are some additional automatically executed tasks or loop
409
+ * tasks in the setup function,a callback needs to be passed in
410
+ * `onCleanup()` to clear these tasks.
411
+ * This is because when the plugin is hot updated,
412
+ * it needs to re-execute setup and clear previous tasks; otherwise,
413
+ * duplicate tasks may cause conflicts.
414
+ * `onCleanup()` can be called multiple times within setup.
415
+ * @type `(wss: WebSocketServer, context: SetupContext) => void`
408
416
  */
409
- setup(wss) {
417
+ setup(wss, { onCleanup }) {
410
418
  wss.on('connection', (ws, request) => {
411
419
  ws.on('message', (rawData) => {})
412
- ws.send('data')
420
+ const timer = setInterval(() => ws.send('data'), 1000)
421
+ onCleanup(() => clearInterval(timer))
413
422
  })
414
423
  }
415
424
  })
@@ -716,7 +725,7 @@ fetch('/api/graphql', {
716
725
  export default defineMock({
717
726
  url: '/socket.io',
718
727
  ws: true,
719
- setup(wss) {
728
+ setup(wss, { onCleanup }) {
720
729
  const wsMap = new Map()
721
730
  wss.on('connection', (ws, req) => {
722
731
  const token = req.getCookie('token')
@@ -734,9 +743,7 @@ export default defineMock({
734
743
  wss.on('error', (err) => {
735
744
  console.error(err)
736
745
  })
737
- return () => {
738
- wsMap.clear()
739
- }
746
+ onCleanup(() => wsMap.clear())
740
747
  }
741
748
  })
742
749
  ```
@@ -746,7 +753,7 @@ const ws = new WebSocket('ws://localhost:5173/socket.io')
746
753
  ws.addEventListener('open', () => {
747
754
  setInterval(() => {
748
755
  // heartbeat
749
- ws.send({ type: 'ping' })
756
+ ws.send(JSON.stringify({ type: 'ping' }))
750
757
  }, 1000)
751
758
  }, { once: true })
752
759
  ws.addEventListener('message', (raw) => {
package/README.zh-CN.md CHANGED
@@ -399,11 +399,17 @@ export default defineMock({
399
399
  /**
400
400
  * 配置 WebSocketServer
401
401
  * @see https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocketserver
402
+ * 如果在 setup 函数中有一些 额外的 自动执行任务或循环任务,
403
+ * 那么需要在 `onCleanup()` 传入一个回调,用于清除这些任务,
404
+ * 这是由于插件在热更新时,需要重新执行 setup,需要清除之前的任务,否则可能会导致重复任务产生冲突。
405
+ * `onCleanup()`可以在 setup 内部多次调用
406
+ * @type `(wss: WebSocketServer, context: SetupContext) => void`
402
407
  */
403
- setup(wss) {
408
+ setup(wss, { onCleanup }) {
404
409
  wss.on('connection', (ws, request) => {
405
410
  ws.on('message', (rawData) => {})
406
- ws.send('data')
411
+ const timer = setInterval(() => ws.send('data'), 1000)
412
+ onCleanup(() => clearInterval(timer))
407
413
  })
408
414
  }
409
415
  })
@@ -709,7 +715,7 @@ fetch('/api/graphql', {
709
715
  export default defineMock({
710
716
  url: '/socket.io',
711
717
  ws: true,
712
- setup(wss) {
718
+ setup(wss, { onCleanup }) {
713
719
  const wsMap = new Map()
714
720
  wss.on('connection', (ws, req) => {
715
721
  const token = req.getCookie('token')
@@ -727,9 +733,7 @@ export default defineMock({
727
733
  wss.on('error', (err) => {
728
734
  console.error(err)
729
735
  })
730
- return () => {
731
- wsMap.clear()
732
- }
736
+ onCleanup(() => wsMap.clear())
733
737
  }
734
738
  })
735
739
  ```
@@ -739,7 +743,7 @@ const ws = new WebSocket('ws://localhost:5173/socket.io')
739
743
  ws.addEventListener('open', () => {
740
744
  setInterval(() => {
741
745
  // heartbeat
742
- ws.send({ type: 'ping' })
746
+ ws.send(JSON.stringify({ type: 'ping' }))
743
747
  }, 1000)
744
748
  }, { once: true })
745
749
  ws.addEventListener('message', (raw) => {
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var Ve=Object.create;var q=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var et=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty;var ot=(e,o)=>{for(var t in o)q(e,t,{get:o[t],enumerable:!0})},ye=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of Ze(o))!tt.call(e,s)&&s!==t&&q(e,s,{get:()=>o[s],enumerable:!(r=Ye(o,s))||r.enumerable});return e};var u=(e,o,t)=>(t=e!=null?Ve(et(e)):{},ye(o||!e||!e.__esModule?q(t,"default",{value:e,enumerable:!0}):t,e)),rt=e=>ye(q({},"__esModule",{value:!0}),e);var jt={};ot(jt,{baseMiddleware:()=>ae,createDefineMock:()=>wt,default:()=>Ot,defineMock:()=>xt,mockDevServerPlugin:()=>ge,mockWebSocket:()=>fe,transformMockData:()=>pe});module.exports=rt(jt);var st=()=>typeof document>"u"?new URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href,x=st();var Ce=u(require("fs"),1),_=u(require("fs/promises"),1),E=u(require("path"),1),Ee=require("esbuild"),We=u(require("fast-glob"),1),Ie=u(require("is-core-module"),1),V=require("vite");var ve="vite-plugin-mock-dev-server",Me="1.1.6";var oe=u(require("fs/promises"),1),be=u(require("path"),1),xe=u(require("json5"),1),A={name:"externalize-deps",setup(e){e.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!be.default.isAbsolute(o))return{external:!0}})}},B={name:"json5-loader",setup(e){e.onLoad({filter:/\.json5$/},async({path:o})=>{let t=await oe.default.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(xe.default.parse(t))}`,loader:"js"}})}},J={name:"json-loader",setup(e){e.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await oe.default.readFile(o,"utf-8")}`,loader:"js"}))}},z=e=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:t})=>{let r=e.find(({find:c})=>nt(c,t));if(!r)return null;let{find:s,replacement:n}=r;return{path:(await o.resolve(t.replace(s,n),{kind:"import-statement",resolveDir:n,namespace:"file"})).path,external:!1}})}});function nt(e,o){return e instanceof RegExp?e.test(o):o.length<e.length?!1:o===e?!0:o.startsWith(`${e}/`)}var G=u(require("fs"),1),Q=u(require("path"),1),we=require("url"),Oe=u(require("debug"),1),je=require("path-to-regexp"),re=u(require("picocolors"),1),j=e=>Array.isArray(e),R=e=>typeof e=="function",it=e=>Object.prototype.toString.call(e)==="[object Object]",Pe=e=>it(e)&&Object.keys(e).length===0,ct=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function",Se=e=>ct(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";function Re(e){return new Promise(o=>setTimeout(o,e))}function De(e){return Q.default.dirname((0,we.fileURLToPath)(e))}var D=(0,Oe.default)("vite:plugin-mock-dev-server"),P=e=>j(e)?e:e==null?[]:[e],T={info(...e){console.info(re.default.cyan("mock-dev-server: "),...e)},error(...e){console.error(`
1
+ "use strict";var Ye=Object.create;var A=Object.defineProperty;var Ze=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var rt=(e,o)=>{for(var t in o)A(e,t,{get:o[t],enumerable:!0})},ye=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of et(o))!ot.call(e,n)&&n!==t&&A(e,n,{get:()=>o[n],enumerable:!(r=Ze(o,n))||r.enumerable});return e};var l=(e,o,t)=>(t=e!=null?Ye(tt(e)):{},ye(o||!e||!e.__esModule?A(t,"default",{value:e,enumerable:!0}):t,e)),nt=e=>ye(A({},"__esModule",{value:!0}),e);var jt={};rt(jt,{baseMiddleware:()=>ae,createDefineMock:()=>Ot,default:()=>St,defineMock:()=>wt,mockDevServerPlugin:()=>ge,mockWebSocket:()=>fe,transformMockData:()=>pe});module.exports=nt(jt);var st=()=>typeof document>"u"?new URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href,x=st();var De=l(require("fs"),1),U=l(require("fs/promises"),1),I=l(require("path"),1),We=require("esbuild"),Ie=l(require("fast-glob"),1),Ee=l(require("is-core-module"),1),Y=require("vite");var ve="vite-plugin-mock-dev-server",Me="1.1.7";var oe=l(require("fs/promises"),1),be=l(require("path"),1),xe=l(require("json5"),1),B={name:"externalize-deps",setup(e){e.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!be.default.isAbsolute(o))return{external:!0}})}},J={name:"json5-loader",setup(e){e.onLoad({filter:/\.json5$/},async({path:o})=>{let t=await oe.default.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(xe.default.parse(t))}`,loader:"js"}})}},z={name:"json-loader",setup(e){e.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await oe.default.readFile(o,"utf-8")}`,loader:"js"}))}},G=e=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:t})=>{let r=e.find(({find:c})=>it(c,t));if(!r)return null;let{find:n,replacement:s}=r;return{path:(await o.resolve(t.replace(n,s),{kind:"import-statement",resolveDir:s,namespace:"file"})).path,external:!1}})}});function it(e,o){return e instanceof RegExp?e.test(o):o.length<e.length?!1:o===e?!0:o.startsWith(`${e}/`)}var Q=l(require("fs"),1),X=l(require("path"),1),we=require("url"),Oe=l(require("debug"),1),Se=require("path-to-regexp"),re=l(require("picocolors"),1),S=e=>Array.isArray(e),C=e=>typeof e=="function",ct=e=>Object.prototype.toString.call(e)==="[object Object]",je=e=>ct(e)&&Object.keys(e).length===0,at=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function",Pe=e=>at(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";function Re(e){return new Promise(o=>setTimeout(o,e))}function Ce(e){return X.default.dirname((0,we.fileURLToPath)(e))}var D=(0,Oe.default)("vite:plugin-mock-dev-server"),j=e=>S(e)?e:e==null?[]:[e],T={info(...e){console.info(re.default.cyan("mock-dev-server: "),...e)},error(...e){console.error(`
2
2
  `,re.default.cyan("mock-dev-server: "),...e,`
3
- `)}};function $(e,o,t){for(let s of o){let n=Q.default.join(e,s);if(G.default.existsSync(n)&&G.default.statSync(n).isFile()){let i=t!=null&&t.pathOnly?n:G.default.readFileSync(n,"utf-8");if(!(t!=null&&t.predicate)||t.predicate(i))return i}}let r=Q.default.dirname(e);if(r!==e&&(!(t!=null&&t.rootDir)||r.startsWith(t==null?void 0:t.rootDir)))return $(r,o,t)}var X=(e={})=>{let o=[],t=[];return Object.keys(e).forEach(r=>{var n,i;let s=e[r];typeof s=="string"||!s.ws&&!((n=s.target)!=null&&n.toString().startsWith("ws:"))&&!((i=s.target)!=null&&i.toString().startsWith("wss:"))?o.push(r):t.push(r)}),{httpProxies:o,wsProxies:t}};function K(e,o){return e[0]==="^"&&new RegExp(e).test(o)||o.startsWith(e)}function H(e,o){return((0,je.match)(e,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}async function Te(e,o,t){let r=P(t.include),s=P(t.exclude),n={};if(o.define)for(let f in o.define){let d=o.define[f];n[f]=typeof d=="string"?d:JSON.stringify(d)}let{httpProxies:i}=X(o.server.proxy||{});i.push(...P(t.prefix));let c=P(t.wsPrefix),a={};try{let f=$(o.root,["package.json"]);f&&(a=JSON.parse(f))}catch{}let p=t.build.dist,m=await ut(process.cwd(),r,s),l=E.default.join(o.root,`mock-data-${Date.now()}.js`);await _.default.writeFile(l,m,"utf-8");let{code:M,deps:b}=await mt(l,n,o.resolve.alias),h=at(b);await _.default.unlink(l);let g=[{filename:E.default.join(p,"mock-data.js"),source:M},{filename:E.default.join(p,"index.js"),source:lt(i,c,t.cookiesOptions,t.build.serverPort)},{filename:E.default.join(p,"package.json"),source:pt(a,h)}];try{if(E.default.isAbsolute(p)){await _.default.rm(p,{recursive:!0}),Ce.default.mkdirSync(p,{recursive:!0});for(let{filename:f,source:d}of g)await _.default.writeFile(f,d,"utf-8")}else for(let{filename:f,source:d}of g)e.emitFile({type:"asset",fileName:f,source:d})}catch{}}function at(e){let o=new Set,t=[ve,"connect","cors"];return Object.keys(e).forEach(r=>{e[r].imports.filter(n=>n.external).map(n=>n.path).forEach(n=>{!t.includes(n)&&!(0,Ie.default)(n)&&o.add(n)})}),Array.from(o)}function pt(e,o){let{dependencies:t={},devDependencies:r={}}=e,s={...t,...r},n={name:"mock-server",type:"module",scripts:{start:"node index.js"},dependencies:{connect:"^3.7.0","vite-plugin-mock-dev-server":`^${Me}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{n.dependencies[i]=s[i]||"latest"}),JSON.stringify(n,null,2)}function lt(e,o,t={},r=8080){return`import { createServer } from 'node:http';
3
+ `)}};function H(e,o,t){for(let n of o){let s=X.default.join(e,n);if(Q.default.existsSync(s)&&Q.default.statSync(s).isFile()){let i=t!=null&&t.pathOnly?s:Q.default.readFileSync(s,"utf-8");if(!(t!=null&&t.predicate)||t.predicate(i))return i}}let r=X.default.dirname(e);if(r!==e&&(!(t!=null&&t.rootDir)||r.startsWith(t==null?void 0:t.rootDir)))return H(r,o,t)}var K=(e={})=>{let o=[],t=[];return Object.keys(e).forEach(r=>{var s,i;let n=e[r];typeof n=="string"||!n.ws&&!((s=n.target)!=null&&s.toString().startsWith("ws:"))&&!((i=n.target)!=null&&i.toString().startsWith("wss:"))?o.push(r):t.push(r)}),{httpProxies:o,wsProxies:t}};function V(e,o){return e[0]==="^"&&new RegExp(e).test(o)||o.startsWith(e)}function _(e,o){return((0,Se.match)(e,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}async function Le(e,o,t){let r=j(t.include),n=j(t.exclude),s={};if(o.define)for(let k in o.define){let m=o.define[k];s[k]=typeof m=="string"?m:JSON.stringify(m)}let{httpProxies:i}=K(o.server.proxy||{});i.push(...j(t.prefix));let c=j(t.wsPrefix),a={};try{let k=H(o.root,["package.json"]);k&&(a=JSON.parse(k))}catch{}let p=t.build.dist,d=await mt(process.cwd(),r,n),u=I.default.join(o.root,`mock-data-${Date.now()}.js`);await U.default.writeFile(u,d,"utf-8");let{code:w,deps:v}=await dt(u,s,o.resolve.alias),g=pt(v);await U.default.unlink(u);let y=[{filename:I.default.join(p,"mock-data.js"),source:w},{filename:I.default.join(p,"index.js"),source:lt(i,c,t.cookiesOptions,t.build.serverPort)},{filename:I.default.join(p,"package.json"),source:ut(a,g)}];try{if(I.default.isAbsolute(p)){await U.default.rm(p,{recursive:!0}),De.default.mkdirSync(p,{recursive:!0});for(let{filename:k,source:m}of y)await U.default.writeFile(k,m,"utf-8")}else for(let{filename:k,source:m}of y)e.emitFile({type:"asset",fileName:k,source:m})}catch{}}function pt(e){let o=new Set,t=[ve,"connect","cors"];return Object.keys(e).forEach(r=>{e[r].imports.filter(s=>s.external).map(s=>s.path).forEach(s=>{!t.includes(s)&&!(0,Ee.default)(s)&&o.add(s)})}),Array.from(o)}function ut(e,o){let{dependencies:t={},devDependencies:r={}}=e,n={...t,...r},s={name:"mock-server",type:"module",scripts:{start:"node index.js"},dependencies:{connect:"^3.7.0","vite-plugin-mock-dev-server":`^${Me}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{s.dependencies[i]=n[i]||"latest"}),JSON.stringify(s,null,2)}function lt(e,o,t={},r=8080){return`import { createServer } from 'node:http';
4
4
  import connect from 'connect';
5
5
  import corsMiddleware from 'cors';
6
6
  import { baseMiddleware, mockWebSocket } from 'vite-plugin-mock-dev-server';
@@ -24,7 +24,7 @@ app.use(baseMiddleware({ mockData }, {
24
24
  server.listen(${r});
25
25
 
26
26
  console.log('listen: http://localhost:${r}');
27
- `}async function ut(e,o,t){let r=await(0,We.default)(o,{cwd:e}),s=(0,V.createFilter)(o,t,{resolve:!1}),n=r.filter(s),i="",c="";return n.forEach((a,p)=>{let m=(0,V.normalizePath)(E.default.join(e,a));i+=`import * as m${p} from '${m}';
27
+ `}async function mt(e,o,t){let r=await(0,Ie.default)(o,{cwd:e}),n=(0,Y.createFilter)(o,t,{resolve:!1}),s=r.filter(n),i="",c="";return s.forEach((a,p)=>{let d=(0,Y.normalizePath)(I.default.join(e,a));i+=`import * as m${p} from '${d}';
28
28
  `,c+=`m${p}, `}),`import { transformMockData } from 'vite-plugin-mock-dev-server';
29
29
  ${i}
30
30
  const exporters = [${c}];
@@ -33,9 +33,9 @@ const mockList = exporters.map((raw) => raw && raw.default
33
33
  : Object.keys(raw || {}).map((key) => raw[key])
34
34
  )
35
35
  export default transformMockData(mockList);
36
- `}async function mt(e,o,t){var r;try{let s=await(0,Ee.build)({entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[z(t),A,B,J]});return{code:s.outputFiles[0].text,deps:((r=s.metafile)==null?void 0:r.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}var ne=require("buffer"),ie=require("url"),_e=u(require("cookies"),1),Ue=u(require("http-status"),1),U=u(require("mime-types"),1),ce=require("path-to-regexp"),F=u(require("picocolors"),1);var Y=u(require("co-body"),1),Fe=u(require("formidable"),1);async function Le(e,o){var s;let t=e.method.toUpperCase();if(["GET","DELETE","HEAD"].includes(t))return;let r=((s=e.headers["content-type"])==null?void 0:s.toLocaleLowerCase())||"";try{if(r.startsWith("application/json"))return await Y.default.json(e);if(r.startsWith("application/x-www-form-urlencoded"))return await Y.default.form(e);if(r.startsWith("text/plain"))return await Y.default.text(e);if(r.startsWith("multipart/form-data"))return await dt(e,o)}catch(n){console.error(n)}}async function dt(e,o){let t=(0,Fe.default)(o);return new Promise((r,s)=>{t.parse(e,(n,i,c)=>{if(n){s(n);return}r({...i,...c})})})}function $e(e,o){return W(e.headers,o.headers)&&W(e.body,o.body)&&W(e.params,o.params)&&W(e.query,o.query)&&W(e.refererQuery,o.refererQuery)}function W(e,o){if(!o)return!0;for(let t in o)if(o[t]!==e[t])return!1;return!0}function ae(e,{formidableOptions:o={},proxies:t,cookiesOptions:r}){return async function(s,n,i){let c=Date.now(),{query:a,pathname:p}=(0,ie.parse)(s.url,!0);if(!p||t.length===0||!t.some(S=>K(S,s.url)))return i();let m=e.mockData,l=Object.keys(m).find(S=>(0,ce.pathToRegexp)(S).test(p));if(!l)return i();let{query:M}=(0,ie.parse)(s.headers.referer||"",!0),b=await Le(s,o),h=new _e.default(s,n,r),g=h.get.bind(h),f=s.method.toUpperCase(),d=ft(m[l],{pathname:p,method:f,request:{query:a,refererQuery:M,body:b,headers:s.headers,getCookie:g}});if(!d)return i();D("middleware: ",f,s.url);let v=s,y=n;v.body=b,v.query=a,v.refererQuery=M,v.params=H(d.url,p),v.getCookie=g,y.setCookie=h.set.bind(h);let{body:w,delay:k,type:O="json",response:L,status:te=200,statusText:Ke}=d;if(se(y,te,Ke),await kt(v,y,d),await gt(v,y,d),w){try{let S=R(w)?await w(v):w;await He(c,k),yt(y,S,O)}catch(S){T.error(`${F.default.red("[body error]")} ${s.url}
37
- `,S),se(y,500),n.end("")}return}if(L){try{await He(c,k),await L(v,y,i)}catch(S){T.error(`${F.default.red("[response error]")} ${s.url}
38
- `,S),se(y,500),n.end("")}return}n.end("")}}function ft(e,{pathname:o,method:t,request:r}){return e.find(s=>{if(!o||!s||!s.url||s.ws===!0||!(s.method?j(s.method)?s.method:[s.method]:["GET","POST"]).includes(t))return!1;let i=(0,ce.pathToRegexp)(s.url).test(o);if(i&&s.validator){let c=H(s.url,o);if(R(s.validator))return s.validator({params:c,...r});try{return $e({params:c,...r},s.validator)}catch(a){return T.error(`${F.default.red("[validator error]")} ${o}
39
- `,a),!1}}return i})}function se(e,o=200,t){e.statusCode=o,e.statusMessage=t||ht(o)}async function kt(e,o,{headers:t,type:r="json"}){let s=U.contentType(r)||U.contentType(U.lookup(r)||"");if(s&&o.setHeader("Content-Type",s),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock","generate by vite:plugin-mock-dev-server"),!!t)try{let n=R(t)?await t(e):t;Object.keys(n).forEach(i=>{o.setHeader(i,n[i])})}catch(n){T.error(`${F.default.red("[headers error]")} ${e.url}
40
- `,n)}}async function gt(e,o,{cookies:t}){if(t)try{let r=R(t)?await t(e):t;Object.keys(r).forEach(s=>{let n=r[s];if(j(n)){let[i,c]=n;o.setCookie(s,i,c)}else o.setCookie(s,n)})}catch(r){T.error(`${F.default.red("[cookies error]")} ${e.url}
41
- `,r)}}function yt(e,o,t){if(Se(o))o.pipe(e);else if(ne.Buffer.isBuffer(o))e.end(t==="text"||t==="json"?o.toString("utf-8"):o);else{let r=typeof o=="string"?o:JSON.stringify(o);e.end(t==="buffer"?ne.Buffer.from(r):r)}}async function He(e,o){if(!o||o<=0)return;let t=Date.now()-e,r=o-t;r>0&&await Re(r)}function ht(e){return Ue.default[e]||"Unknown"}var Ae=u(require("events"),1),Z=u(require("fs"),1),Be=require("module"),le=u(require("path"),1),Je=require("url"),ue=u(require("chokidar"),1),ze=require("esbuild"),Ge=u(require("fast-glob"),1),C=require("vite");var Ne=require("url"),qe=u(require("lodash.sortby"),1);function pe(e){let o=[];for(let[,r]of e.entries())r&&(j(r)?o.push(...r):o.push(r));let t={};return o.filter(r=>(r.enabled||typeof r.enabled>"u")&&r.url).forEach(r=>{let{pathname:s,query:n}=(0,Ne.parse)(r.url,!0),i=t[s]??(t[s]=[]),c={...r,url:s};if(c.ws!==!0){let a=c.validator;Pe(n)||(R(a)?c.validator=function(p){return W(p.query,n)&&a(p)}:a?(c.validator={...a},c.validator.query=c.validator.query?{...n,...c.validator.query}:n):c.validator={query:n})}i.push(c)}),Object.keys(t).forEach(r=>{t[r]=(0,qe.default)(t[r],s=>{if(s.ws===!0)return 0;let{validator:n}=s;if(!n)return 1;if(R(n))return 0;let{query:i,params:c,headers:a,body:p,refererQuery:m}=n;return 1/(N(i)+N(c)+N(a)+N(p)+N(m))})}),t}function N(e){return e?Object.keys(e).length:0}var vt=De(x),I=(0,Be.createRequire)(vt),ee=class extends Ae.default{constructor(t){super();this.options=t;this.moduleCache=new Map;this.moduleDeps=new Map;this.moduleType="cjs";this._mockData={};this.cwd=t.cwd||process.cwd();try{let r=$(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}async load(){let{include:t,exclude:r}=this.options,s=await(0,Ge.default)(t,{cwd:this.cwd}),n=(0,C.createFilter)(t,r,{resolve:!1});this.watchMockEntry(),this.watchDeps();for(let c of s.filter(n))await this.loadMock(c);this.updateMockList();let i=null;this.on("mock:update",async c=>{n(c)&&(await this.loadMock(c),i&&clearTimeout(i),i=setTimeout(()=>{this.updateMockList(),this.emit("mock:update-end",c),i=null},0))}),this.on("mock:unlink",async c=>{n(c)&&(this.moduleCache.delete(c),this.updateMockList(),this.emit("mock:update-end",c))})}watchMockEntry(){let{include:t}=this.options,[r,...s]=t,n=ue.default.watch(r,{ignoreInitial:!0,cwd:this.cwd});s.length>0&&s.forEach(i=>n.add(i)),n.on("add",async i=>{i=(0,C.normalizePath)(i),this.emit("mock:update",i),D("watcher:add",i)}),n.on("change",async i=>{i=(0,C.normalizePath)(i),this.emit("mock:update",i),D("watcher:change",i)}),n.on("unlink",async i=>{i=(0,C.normalizePath)(i),this.emit("mock:unlink",i),D("watcher:unlink",i)}),this.mockWatcher=n}watchDeps(){let t=[];this.depsWatcher=ue.default.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=(0,C.normalizePath)(r);let s=this.moduleDeps.get(r);s&&s.forEach(n=>{this.emit("mock:update",n)})}),this.depsWatcher.on("unlink",r=>{r=(0,C.normalizePath)(r),this.moduleDeps.delete(r)}),this.on("update:deps",()=>{let r=[];for(let[n]of this.moduleDeps.entries())r.push(n);let s=r.filter(n=>!t.includes(n));s.length>0&&this.depsWatcher.add(s)})}close(){var t,r;(t=this.mockWatcher)==null||t.close(),(r=this.depsWatcher)==null||r.close()}updateMockList(){this._mockData=pe(this.moduleCache)}updateModuleDeps(t,r){Object.keys(r).forEach(s=>{r[s].imports.map(i=>i.path).forEach(i=>{this.moduleDeps.has(i)||this.moduleDeps.set(i,new Set),this.moduleDeps.get(i).add(t)})}),this.emit("update:deps")}async loadMock(t){if(!t)return;let r=!1;/\.m[jt]s$/.test(t)?r=!0:/\.c[jt]s$/.test(t)?r=!1:r=this.moduleType==="esm";let{code:s,deps:n}=await this.transformWithEsbuild(t,r);try{let i=await this.loadFromCode(t,s,r),c=i&&i.default?i.default:Object.keys(i||{}).map(a=>i[a]);j(c)?c.forEach(a=>a.__filepath__=t):c.__filepath__=t,this.moduleCache.set(t,c),this.updateModuleDeps(t,n)}catch(i){console.error(i)}}async loadFromCode(t,r,s){if(s){let n=`${t}.timestamp-${Date.now()}`,i=`${n}.mjs`,c=`${(0,Je.pathToFileURL)(n)}.mjs`;await Z.default.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{Z.default.unlinkSync(i)}catch{}}}else{t=le.default.resolve(this.cwd,t);let n=le.default.extname(t),i=Z.default.realpathSync(t),c=n in I.extensions?n:".js",a=I.extensions[c];I.extensions[c]=(m,l)=>{l===i?m._compile(r,l):a(m,l)},delete I.cache[I.resolve(t)];let p=I(t);return I.extensions[c]=a,p.__esModule?p:{default:p}}}async transformWithEsbuild(t,r){var s;try{let n=await(0,ze.build)({entryPoints:[t],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:r?"esm":"cjs",define:this.options.define,plugins:[z(this.options.alias),A,J,B]});return{code:n.outputFiles[0].text,deps:((s=n.metafile)==null?void 0:s.inputs)||{}}}catch(n){console.error(n)}return{code:"",deps:{}}}};var me=require("url"),Qe=u(require("cookies"),1),de=require("path-to-regexp"),Xe=require("ws");function fe(e,o,t,r){var c;let s=new Set,n=new Map,i=new Map;(c=e.on)==null||c.call(e,"mock:update-end",a=>{if(!s.has(a))return;let p={};for(let[m,l]of i.entries())e.mockData[m].forEach(M=>{M.__filepath__===a&&M.ws&&l.forEach(({pathname:b,req:h,ws:g})=>{p[b]??(p[b]={mock:M,list:[],mockUrl:m}),p[b].list.push({req:h,ws:g}),g.removeAllListeners()})});Object.keys(p).forEach(m=>{var g,f;let l=n.get(m),{mock:M,list:b,mockUrl:h}=p[m];l.wss.removeAllListeners(),(g=l.cancel)==null||g.call(l),l.cancel=(f=M.setup)==null?void 0:f.call(M,l.wss),l.wss.on("close",()=>{n.delete(m)}),b.forEach(({req:d,ws:v})=>{l.wss.emit("connection",v,d),v.on("close",()=>{let y=i.get(h),w=(y==null?void 0:y.findIndex(k=>k.ws===v))||-1;w>=0&&(y==null||y.splice(w,1))})})})}),o==null||o.on("upgrade",(a,p,m)=>{var w;let{pathname:l,query:M}=(0,me.parse)(a.url,!0);if(!l||t.length===0||!t.some(k=>K(k,a.url)))return;let b=e.mockData,h=Object.keys(b).find(k=>(0,de.pathToRegexp)(k).test(l));if(!h)return;let g=b[h].find(k=>k.url&&k.ws&&(0,de.pathToRegexp)(k.url).test(l));if(!g)return;s.add(g.__filepath__);let f=n.get(l);if(!f){let k=new Xe.WebSocketServer({noServer:!0}),O=(w=g.setup)==null?void 0:w.call(g,k);k.on("close",()=>{n.delete(l)}),f={wss:k,cancel:O},n.set(l,f)}let d=a,v=new Qe.default(a,a,r),{query:y}=(0,me.parse)(a.headers.referer||"",!0);d.query=M,d.refererQuery=y,d.params=H(h,l),d.getCookie=v.get.bind(v),f.wss.handleUpgrade(d,p,m,k=>{D(`websocket-mock: ${a.url} connected`),f.wss.emit("connection",k,d);let O=i.get(h);O||(O=[],i.set(h,O)),O.push({req:d,ws:k,pathname:l}),k.on("close",()=>{let L=O.findIndex(te=>te.ws===k);L>=0&&O.splice(L,1)})})}),o==null||o.on("close",()=>{n.forEach(({wss:a,cancel:p})=>{p==null||p(),a.close()}),n.clear(),s.clear(),i.clear()})}async function ke(e,o,t,r){let s=P(o.include),n=P(o.exclude),i={};if(e.define)for(let m in e.define){let l=e.define[m];i[m]=typeof l=="string"?l:JSON.stringify(l)}let c=new ee({include:s,exclude:n,define:i,alias:e.resolve.alias});await c.load(),c.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),t==null||t.on("close",()=>c.close());let{httpProxies:a}=X(e.server.proxy||{}),p=P(o.prefix);return fe(c,t,P(o.wsPrefix),o.cookiesOptions),ae(c,{formidableOptions:o.formidableOptions,proxies:[...p,...a],cookiesOptions:o.cookiesOptions})}function ge({prefix:e=[],wsPrefix:o=[],include:t=["mock/**/*.mock.{js,ts,cjs,mjs,json,json5}"],exclude:r=["**/node_modules/**","**/.vscode/**","**/.git/**"],reload:s=!1,formidableOptions:n={},build:i=!1,cookiesOptions:c={}}={}){let a={prefix:e,wsPrefix:o,include:t,exclude:r,reload:s,cookiesOptions:c,formidableOptions:{multiples:!0,...n},build:i?Object.assign({serverPort:8080,dist:"mockServer"},typeof i=="object"?i:{}):!1},p=[bt(a)];return a.build&&p.push(Mt(a)),p}function Mt(e){let o={};return{name:"vite-plugin-mock-dev-server-generator",enforce:"post",apply:"build",configResolved(t){o=t,t.logger.warn("")},async buildEnd(t){t||o.command==="build"&&await Te(this,o,e)}}}function bt(e){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",configResolved(t){o=t,t.logger.warn("")},async configureServer({middlewares:t,config:r,httpServer:s,ws:n}){let i=await ke(r,e,s,n);t.use(i)},async configurePreviewServer({middlewares:t,httpServer:r}){let s=await ke(o,e,r);t.use(s)}}}function xt(e){return e}function wt(e){return t=>(j(t)?t=t.map(r=>e(r)||r):t=e(t)||t,t)}var Ot=ge;0&&(module.exports={baseMiddleware,createDefineMock,defineMock,mockDevServerPlugin,mockWebSocket,transformMockData});
36
+ `}async function dt(e,o,t){var r;try{let n=await(0,We.build)({entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[G(t),B,J,z]});return{code:n.outputFiles[0].text,deps:((r=n.metafile)==null?void 0:r.inputs)||{}}}catch(n){console.error(n)}return{code:"",deps:{}}}var se=require("buffer"),ie=require("url"),_e=l(require("cookies"),1),Ue=l(require("http-status"),1),N=l(require("mime-types"),1),ce=require("path-to-regexp"),F=l(require("picocolors"),1);var Z=l(require("co-body"),1),Te=l(require("formidable"),1);async function Fe(e,o){var n;let t=e.method.toUpperCase();if(["GET","DELETE","HEAD"].includes(t))return;let r=((n=e.headers["content-type"])==null?void 0:n.toLocaleLowerCase())||"";try{if(r.startsWith("application/json"))return await Z.default.json(e);if(r.startsWith("application/x-www-form-urlencoded"))return await Z.default.form(e);if(r.startsWith("text/plain"))return await Z.default.text(e);if(r.startsWith("multipart/form-data"))return await ft(e,o)}catch(s){console.error(s)}}async function ft(e,o){let t=(0,Te.default)(o);return new Promise((r,n)=>{t.parse(e,(s,i,c)=>{if(s){n(s);return}r({...i,...c})})})}function $e(e,o){return E(e.headers,o.headers)&&E(e.body,o.body)&&E(e.params,o.params)&&E(e.query,o.query)&&E(e.refererQuery,o.refererQuery)}function E(e,o){if(!o)return!0;for(let t in o)if(o[t]!==e[t])return!1;return!0}function ae(e,{formidableOptions:o={},proxies:t,cookiesOptions:r}){return async function(n,s,i){let c=Date.now(),{query:a,pathname:p}=(0,ie.parse)(n.url,!0);if(!p||t.length===0||!t.some(P=>V(P,n.url)))return i();let d=e.mockData,u=Object.keys(d).find(P=>(0,ce.pathToRegexp)(P).test(p));if(!u)return i();let{query:w}=(0,ie.parse)(n.headers.referer||"",!0),v=await Fe(n,o),g=new _e.default(n,s,r),y=g.get.bind(g),k=n.method.toUpperCase(),m=kt(d[u],{pathname:p,method:k,request:{query:a,refererQuery:w,body:v,headers:n.headers,getCookie:y}});if(!m)return i();D("middleware: ",k,n.url);let M=n,h=s;M.body=v,M.query=a,M.refererQuery=w,M.params=_(m.url,p),M.getCookie=y,h.setCookie=g.set.bind(g);let{body:b,delay:f,type:O="json",response:R,status:$=200,statusText:Ve}=m;if(ne(h,$,Ve),await gt(M,h,m),await yt(M,h,m),b){try{let P=C(b)?await b(M):b;await He(c,f),ht(h,P,O)}catch(P){T.error(`${F.default.red("[body error]")} ${n.url}
37
+ `,P),ne(h,500),s.end("")}return}if(R){try{await He(c,f),await R(M,h,i)}catch(P){T.error(`${F.default.red("[response error]")} ${n.url}
38
+ `,P),ne(h,500),s.end("")}return}s.end("")}}function kt(e,{pathname:o,method:t,request:r}){return e.find(n=>{if(!o||!n||!n.url||n.ws===!0||!(n.method?S(n.method)?n.method:[n.method]:["GET","POST"]).includes(t))return!1;let i=(0,ce.pathToRegexp)(n.url).test(o);if(i&&n.validator){let c=_(n.url,o);if(C(n.validator))return n.validator({params:c,...r});try{return $e({params:c,...r},n.validator)}catch(a){return T.error(`${F.default.red("[validator error]")} ${o}
39
+ `,a),!1}}return i})}function ne(e,o=200,t){e.statusCode=o,e.statusMessage=t||vt(o)}async function gt(e,o,{headers:t,type:r="json"}){let n=N.contentType(r)||N.contentType(N.lookup(r)||"");if(n&&o.setHeader("Content-Type",n),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock","generate by vite:plugin-mock-dev-server"),!!t)try{let s=C(t)?await t(e):t;Object.keys(s).forEach(i=>{o.setHeader(i,s[i])})}catch(s){T.error(`${F.default.red("[headers error]")} ${e.url}
40
+ `,s)}}async function yt(e,o,{cookies:t}){if(t)try{let r=C(t)?await t(e):t;Object.keys(r).forEach(n=>{let s=r[n];if(S(s)){let[i,c]=s;o.setCookie(n,i,c)}else o.setCookie(n,s)})}catch(r){T.error(`${F.default.red("[cookies error]")} ${e.url}
41
+ `,r)}}function ht(e,o,t){if(Pe(o))o.pipe(e);else if(se.Buffer.isBuffer(o))e.end(t==="text"||t==="json"?o.toString("utf-8"):o);else{let r=typeof o=="string"?o:JSON.stringify(o);e.end(t==="buffer"?se.Buffer.from(r):r)}}async function He(e,o){if(!o||o<=0)return;let t=Date.now()-e,r=o-t;r>0&&await Re(r)}function vt(e){return Ue.default[e]||"Unknown"}var Ae=l(require("events"),1),ee=l(require("fs"),1),Be=require("module"),ue=l(require("path"),1),Je=require("url"),le=l(require("chokidar"),1),ze=require("esbuild"),Ge=l(require("fast-glob"),1),W=require("vite");var Ne=require("url"),qe=l(require("lodash.sortby"),1);function pe(e){let o=[];for(let[,r]of e.entries())r&&(S(r)?o.push(...r):o.push(r));let t={};return o.filter(r=>(r.enabled||typeof r.enabled>"u")&&r.url).forEach(r=>{let{pathname:n,query:s}=(0,Ne.parse)(r.url,!0),i=t[n]??(t[n]=[]),c={...r,url:n};if(c.ws!==!0){let a=c.validator;je(s)||(C(a)?c.validator=function(p){return E(p.query,s)&&a(p)}:a?(c.validator={...a},c.validator.query=c.validator.query?{...s,...c.validator.query}:s):c.validator={query:s})}i.push(c)}),Object.keys(t).forEach(r=>{t[r]=(0,qe.default)(t[r],n=>{if(n.ws===!0)return 0;let{validator:s}=n;if(!s)return 1;if(C(s))return 0;let{query:i,params:c,headers:a,body:p,refererQuery:d}=s;return 1/(q(i)+q(c)+q(a)+q(p)+q(d))})}),t}function q(e){return e?Object.keys(e).length:0}var Mt=Ce(x),L=(0,Be.createRequire)(Mt),te=class extends Ae.default{constructor(t){super();this.options=t;this.moduleCache=new Map;this.moduleDeps=new Map;this.moduleType="cjs";this._mockData={};this.cwd=t.cwd||process.cwd();try{let r=H(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}async load(){let{include:t,exclude:r}=this.options,n=await(0,Ge.default)(t,{cwd:this.cwd}),s=(0,W.createFilter)(t,r,{resolve:!1});this.watchMockEntry(),this.watchDeps();for(let c of n.filter(s))await this.loadMock(c);this.updateMockList();let i=null;this.on("mock:update",async c=>{s(c)&&(await this.loadMock(c),i&&clearTimeout(i),i=setTimeout(()=>{this.updateMockList(),this.emit("mock:update-end",c),i=null},0))}),this.on("mock:unlink",async c=>{s(c)&&(this.moduleCache.delete(c),this.updateMockList(),this.emit("mock:update-end",c))})}watchMockEntry(){let{include:t}=this.options,[r,...n]=t,s=le.default.watch(r,{ignoreInitial:!0,cwd:this.cwd});n.length>0&&n.forEach(i=>s.add(i)),s.on("add",async i=>{i=(0,W.normalizePath)(i),this.emit("mock:update",i),D("watcher:add",i)}),s.on("change",async i=>{i=(0,W.normalizePath)(i),this.emit("mock:update",i),D("watcher:change",i)}),s.on("unlink",async i=>{i=(0,W.normalizePath)(i),this.emit("mock:unlink",i),D("watcher:unlink",i)}),this.mockWatcher=s}watchDeps(){let t=[];this.depsWatcher=le.default.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=(0,W.normalizePath)(r);let n=this.moduleDeps.get(r);n&&n.forEach(s=>{this.emit("mock:update",s)})}),this.depsWatcher.on("unlink",r=>{r=(0,W.normalizePath)(r),this.moduleDeps.delete(r)}),this.on("update:deps",()=>{let r=[];for(let[s]of this.moduleDeps.entries())r.push(s);let n=r.filter(s=>!t.includes(s));n.length>0&&this.depsWatcher.add(n)})}close(){var t,r;(t=this.mockWatcher)==null||t.close(),(r=this.depsWatcher)==null||r.close()}updateMockList(){this._mockData=pe(this.moduleCache)}updateModuleDeps(t,r){Object.keys(r).forEach(n=>{r[n].imports.map(i=>i.path).forEach(i=>{this.moduleDeps.has(i)||this.moduleDeps.set(i,new Set),this.moduleDeps.get(i).add(t)})}),this.emit("update:deps")}async loadMock(t){if(!t)return;let r=!1;/\.m[jt]s$/.test(t)?r=!0:/\.c[jt]s$/.test(t)?r=!1:r=this.moduleType==="esm";let{code:n,deps:s}=await this.transformWithEsbuild(t,r);try{let i=await this.loadFromCode(t,n,r),c=i&&i.default?i.default:Object.keys(i||{}).map(a=>i[a]);S(c)?c.forEach(a=>a.__filepath__=t):c.__filepath__=t,this.moduleCache.set(t,c),this.updateModuleDeps(t,s)}catch(i){console.error(i)}}async loadFromCode(t,r,n){if(n){let s=`${t}.timestamp-${Date.now()}`,i=`${s}.mjs`,c=`${(0,Je.pathToFileURL)(s)}.mjs`;await ee.default.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ee.default.unlinkSync(i)}catch{}}}else{t=ue.default.resolve(this.cwd,t);let s=ue.default.extname(t),i=ee.default.realpathSync(t),c=s in L.extensions?s:".js",a=L.extensions[c];L.extensions[c]=(d,u)=>{u===i?d._compile(r,u):a(d,u)},delete L.cache[L.resolve(t)];let p=L(t);return L.extensions[c]=a,p.__esModule?p:{default:p}}}async transformWithEsbuild(t,r){var n;try{let s=await(0,ze.build)({entryPoints:[t],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:r?"esm":"cjs",define:this.options.define,plugins:[G(this.options.alias),B,z,J]});return{code:s.outputFiles[0].text,deps:((n=s.metafile)==null?void 0:n.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}};var me=require("url"),Xe=l(require("cookies"),1),de=require("path-to-regexp"),Ke=require("ws");function fe(e,o,t,r){var c;let n=new Set,s=new Map,i=new Map;(c=e.on)==null||c.call(e,"mock:update-end",a=>{if(!n.has(a))return;let p={};for(let[d,u]of i.entries())e.mockData[d].forEach(w=>{w.ws&&w.__filepath__===a&&u.forEach(({pathname:v,req:g,ws:y})=>{p[v]??(p[v]={mock:w,list:[],mockUrl:d}),p[v].list.push({req:g,ws:y})})});Object.keys(p).forEach(d=>{var m;let{wss:u,cleanupList:w,context:v}=s.get(d),{mock:g,list:y,mockUrl:k}=p[d];Qe(w),u.removeAllListeners(),(m=g.setup)==null||m.call(g,u,v),u.on("close",()=>s.delete(d)),y.forEach(({req:M,ws:h})=>{h.removeAllListeners(),u.emit("connection",h,M),h.on("close",()=>{let b=i.get(k),f=(b==null?void 0:b.findIndex(O=>O.ws===h))||-1;f!==-1&&(b==null||b.splice(f,1))})})})}),o==null||o.on("upgrade",(a,p,d)=>{var b;let{pathname:u,query:w}=(0,me.parse)(a.url,!0);if(!u||t.length===0||!t.some(f=>V(f,a.url)))return;let v=e.mockData,g=Object.keys(v).find(f=>(0,de.pathToRegexp)(f).test(u));if(!g)return;let y=v[g].find(f=>f.url&&f.ws&&(0,de.pathToRegexp)(f.url).test(u));if(!y)return;n.add(y.__filepath__);let k=s.get(u);if(!k){let f=new Ke.WebSocketServer({noServer:!0}),O=[],R={onCleanup:$=>O.push($)};(b=y.setup)==null||b.call(y,f,R),f.on("close",()=>s.delete(u)),s.set(u,k={wss:f,cleanupList:O,context:R})}let m=a,M=new Xe.default(a,a,r),{query:h}=(0,me.parse)(a.headers.referer||"",!0);m.query=w,m.refererQuery=h,m.params=_(g,u),m.getCookie=M.get.bind(M),k.wss.handleUpgrade(m,p,d,f=>{D(`websocket-mock: ${a.url} connected`),k.wss.emit("connection",f,m);let O=i.get(g);O||i.set(g,O=[]),O.push({req:m,ws:f,pathname:u}),f.on("close",()=>{let R=O.findIndex($=>$.ws===f);R!==-1&&O.splice(R,1)})})}),o==null||o.on("close",()=>{s.forEach(({wss:a,cleanupList:p})=>{Qe(p),a.close()}),s.clear(),i.clear(),n.clear()})}function Qe(e){let o;for(;o=e.shift();)o==null||o()}async function ke(e,o,t,r){let n=j(o.include),s=j(o.exclude),i={};if(e.define)for(let d in e.define){let u=e.define[d];i[d]=typeof u=="string"?u:JSON.stringify(u)}let c=new te({include:n,exclude:s,define:i,alias:e.resolve.alias});await c.load(),c.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),t==null||t.on("close",()=>c.close());let{httpProxies:a}=K(e.server.proxy||{}),p=j(o.prefix);return fe(c,t,j(o.wsPrefix),o.cookiesOptions),ae(c,{formidableOptions:o.formidableOptions,proxies:[...p,...a],cookiesOptions:o.cookiesOptions})}function ge({prefix:e=[],wsPrefix:o=[],include:t=["mock/**/*.mock.{js,ts,cjs,mjs,json,json5}"],exclude:r=["**/node_modules/**","**/.vscode/**","**/.git/**"],reload:n=!1,formidableOptions:s={},build:i=!1,cookiesOptions:c={}}={}){let a={prefix:e,wsPrefix:o,include:t,exclude:r,reload:n,cookiesOptions:c,formidableOptions:{multiples:!0,...s},build:i?Object.assign({serverPort:8080,dist:"mockServer"},typeof i=="object"?i:{}):!1},p=[xt(a)];return a.build&&p.push(bt(a)),p}function bt(e){let o={};return{name:"vite-plugin-mock-dev-server-generator",enforce:"post",apply:"build",configResolved(t){o=t,t.logger.warn("")},async buildEnd(t){t||o.command==="build"&&await Le(this,o,e)}}}function xt(e){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",configResolved(t){o=t,t.logger.warn("")},async configureServer({middlewares:t,config:r,httpServer:n,ws:s}){let i=await ke(r,e,n,s);t.use(i)},async configurePreviewServer({middlewares:t,httpServer:r}){let n=await ke(o,e,r);t.use(n)}}}function wt(e){return e}function Ot(e){return t=>(S(t)?t=t.map(r=>e(r)||r):t=e(t)||t,t)}var St=ge;0&&(module.exports={baseMiddleware,createDefineMock,defineMock,mockDevServerPlugin,mockWebSocket,transformMockData});
package/dist/index.d.ts CHANGED
@@ -356,7 +356,6 @@ interface MockHttpItem extends MockBaseItem {
356
356
  validator?: Partial<Omit<ExtraRequest, 'getCookie'>> | ((request: ExtraRequest) => boolean);
357
357
  ws?: false;
358
358
  }
359
- type MockWebsocketServerDestroy = (() => void) | void;
360
359
  interface MockWebsocketItem extends MockBaseItem {
361
360
  ws: true;
362
361
  /**
@@ -367,17 +366,28 @@ interface MockWebsocketItem extends MockBaseItem {
367
366
  * ```ts
368
367
  * export default {
369
368
  * ws: true
370
- * setup: (wss) => {
369
+ * setup: (wss, { onCleanup }) => {
371
370
  * wss.on('connection', (ws,req) => {
372
371
  * ws.on('message', (raw) => console.log(raw))
373
- * ws.send(JSON.stringify({ type: 'connected' }))
372
+ * const timer = setInterval(
373
+ * () => ws.send(JSON.stringify({ type: 'connected' })),
374
+ * 1000,
375
+ * )
376
+ * onCleanup(() => clearInterval(timer))
374
377
  * })
375
378
  * wss.on('error', (error) => console.error(error))
376
379
  * }
377
380
  * }
378
381
  * ```
379
382
  */
380
- setup: (wss: WebSocketServer) => MockWebsocketServerDestroy;
383
+ setup: (wss: WebSocketServer, context: WebSocketSetupContext) => void;
384
+ }
385
+ interface WebSocketSetupContext {
386
+ /**
387
+ * 当你在定义 WSS 时,可能会执行一些自动任务或循环任务,
388
+ * 但是当热更新时,插件内部会重新执行 setup() ,这可能导致出现
389
+ */
390
+ onCleanup: (cleanup: () => void) => void;
381
391
  }
382
392
  type MockOptions = (MockHttpItem | MockWebsocketItem)[];
383
393
  type FormidableFile = formidable.File | formidable.File[];
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import Fe from"fs";import G from"fs/promises";import I from"path";import{build as Le}from"esbuild";import $e from"fast-glob";import He from"is-core-module";import{createFilter as _e,normalizePath as Ue}from"vite";var re="vite-plugin-mock-dev-server",se="1.1.6";import ne from"fs/promises";import Se from"path";import Re from"json5";var N={name:"externalize-deps",setup(t){t.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!Se.isAbsolute(o))return{external:!0}})}},q={name:"json5-loader",setup(t){t.onLoad({filter:/\.json5$/},async({path:o})=>{let e=await ne.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(Re.parse(e))}`,loader:"js"}})}},A={name:"json-loader",setup(t){t.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await ne.readFile(o,"utf-8")}`,loader:"js"}))}},B=t=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:e})=>{let r=t.find(({find:c})=>De(c,e));if(!r)return null;let{find:n,replacement:s}=r;return{path:(await o.resolve(e.replace(n,s),{kind:"import-statement",resolveDir:s,namespace:"file"})).path,external:!1}})}});function De(t,o){return t instanceof RegExp?t.test(o):o.length<t.length?!1:o===t?!0:o.startsWith(`${t}/`)}import K from"fs";import V from"path";import{fileURLToPath as Ce}from"url";import Ee from"debug";import{match as We}from"path-to-regexp";import ie from"picocolors";var P=t=>Array.isArray(t),R=t=>typeof t=="function",Ie=t=>Object.prototype.toString.call(t)==="[object Object]",ce=t=>Ie(t)&&Object.keys(t).length===0,Te=t=>t!==null&&typeof t=="object"&&typeof t.pipe=="function",ae=t=>Te(t)&&t.readable!==!1&&typeof t._read=="function"&&typeof t._readableState=="object";function pe(t){return new Promise(o=>setTimeout(o,t))}function le(t){return V.dirname(Ce(t))}var D=Ee("vite:plugin-mock-dev-server"),j=t=>P(t)?t:t==null?[]:[t],W={info(...t){console.info(ie.cyan("mock-dev-server: "),...t)},error(...t){console.error(`
1
+ import Fe from"fs";import Q from"fs/promises";import L from"path";import{build as $e}from"esbuild";import He from"fast-glob";import _e from"is-core-module";import{createFilter as Ue,normalizePath as Ne}from"vite";var re="vite-plugin-mock-dev-server",ne="1.1.7";import se from"fs/promises";import Re from"path";import Ce from"json5";var q={name:"externalize-deps",setup(t){t.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!Re.isAbsolute(o))return{external:!0}})}},A={name:"json5-loader",setup(t){t.onLoad({filter:/\.json5$/},async({path:o})=>{let e=await se.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(Ce.parse(e))}`,loader:"js"}})}},B={name:"json-loader",setup(t){t.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await se.readFile(o,"utf-8")}`,loader:"js"}))}},J=t=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:e})=>{let r=t.find(({find:c})=>De(c,e));if(!r)return null;let{find:s,replacement:n}=r;return{path:(await o.resolve(e.replace(s,n),{kind:"import-statement",resolveDir:n,namespace:"file"})).path,external:!1}})}});function De(t,o){return t instanceof RegExp?t.test(o):o.length<t.length?!1:o===t?!0:o.startsWith(`${t}/`)}import K from"fs";import V from"path";import{fileURLToPath as We}from"url";import Ee from"debug";import{match as Ie}from"path-to-regexp";import ie from"picocolors";var S=t=>Array.isArray(t),C=t=>typeof t=="function",Le=t=>Object.prototype.toString.call(t)==="[object Object]",ce=t=>Le(t)&&Object.keys(t).length===0,Te=t=>t!==null&&typeof t=="object"&&typeof t.pipe=="function",ae=t=>Te(t)&&t.readable!==!1&&typeof t._read=="function"&&typeof t._readableState=="object";function pe(t){return new Promise(o=>setTimeout(o,t))}function ue(t){return V.dirname(We(t))}var D=Ee("vite:plugin-mock-dev-server"),P=t=>S(t)?t:t==null?[]:[t],I={info(...t){console.info(ie.cyan("mock-dev-server: "),...t)},error(...t){console.error(`
2
2
  `,ie.cyan("mock-dev-server: "),...t,`
3
- `)}};function F(t,o,e){for(let n of o){let s=V.join(t,n);if(K.existsSync(s)&&K.statSync(s).isFile()){let i=e!=null&&e.pathOnly?s:K.readFileSync(s,"utf-8");if(!(e!=null&&e.predicate)||e.predicate(i))return i}}let r=V.dirname(t);if(r!==t&&(!(e!=null&&e.rootDir)||r.startsWith(e==null?void 0:e.rootDir)))return F(r,o,e)}var J=(t={})=>{let o=[],e=[];return Object.keys(t).forEach(r=>{var s,i;let n=t[r];typeof n=="string"||!n.ws&&!((s=n.target)!=null&&s.toString().startsWith("ws:"))&&!((i=n.target)!=null&&i.toString().startsWith("wss:"))?o.push(r):e.push(r)}),{httpProxies:o,wsProxies:e}};function z(t,o){return t[0]==="^"&&new RegExp(t).test(o)||o.startsWith(t)}function L(t,o){return(We(t,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}async function ue(t,o,e){let r=j(e.include),n=j(e.exclude),s={};if(o.define)for(let m in o.define){let d=o.define[m];s[m]=typeof d=="string"?d:JSON.stringify(d)}let{httpProxies:i}=J(o.server.proxy||{});i.push(...j(e.prefix));let c=j(e.wsPrefix),a={};try{let m=F(o.root,["package.json"]);m&&(a=JSON.parse(m))}catch{}let p=e.build.dist,u=await Be(process.cwd(),r,n),l=I.join(o.root,`mock-data-${Date.now()}.js`);await G.writeFile(l,u,"utf-8");let{code:v,deps:M}=await Je(l,s,o.resolve.alias),y=Ne(M);await G.unlink(l);let k=[{filename:I.join(p,"mock-data.js"),source:v},{filename:I.join(p,"index.js"),source:Ae(i,c,e.cookiesOptions,e.build.serverPort)},{filename:I.join(p,"package.json"),source:qe(a,y)}];try{if(I.isAbsolute(p)){await G.rm(p,{recursive:!0}),Fe.mkdirSync(p,{recursive:!0});for(let{filename:m,source:d}of k)await G.writeFile(m,d,"utf-8")}else for(let{filename:m,source:d}of k)t.emitFile({type:"asset",fileName:m,source:d})}catch{}}function Ne(t){let o=new Set,e=[re,"connect","cors"];return Object.keys(t).forEach(r=>{t[r].imports.filter(s=>s.external).map(s=>s.path).forEach(s=>{!e.includes(s)&&!He(s)&&o.add(s)})}),Array.from(o)}function qe(t,o){let{dependencies:e={},devDependencies:r={}}=t,n={...e,...r},s={name:"mock-server",type:"module",scripts:{start:"node index.js"},dependencies:{connect:"^3.7.0","vite-plugin-mock-dev-server":`^${se}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{s.dependencies[i]=n[i]||"latest"}),JSON.stringify(s,null,2)}function Ae(t,o,e={},r=8080){return`import { createServer } from 'node:http';
3
+ `)}};function F(t,o,e){for(let s of o){let n=V.join(t,s);if(K.existsSync(n)&&K.statSync(n).isFile()){let i=e!=null&&e.pathOnly?n:K.readFileSync(n,"utf-8");if(!(e!=null&&e.predicate)||e.predicate(i))return i}}let r=V.dirname(t);if(r!==t&&(!(e!=null&&e.rootDir)||r.startsWith(e==null?void 0:e.rootDir)))return F(r,o,e)}var z=(t={})=>{let o=[],e=[];return Object.keys(t).forEach(r=>{var n,i;let s=t[r];typeof s=="string"||!s.ws&&!((n=s.target)!=null&&n.toString().startsWith("ws:"))&&!((i=s.target)!=null&&i.toString().startsWith("wss:"))?o.push(r):e.push(r)}),{httpProxies:o,wsProxies:e}};function G(t,o){return t[0]==="^"&&new RegExp(t).test(o)||o.startsWith(t)}function $(t,o){return(Ie(t,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}async function le(t,o,e){let r=P(e.include),s=P(e.exclude),n={};if(o.define)for(let f in o.define){let l=o.define[f];n[f]=typeof l=="string"?l:JSON.stringify(l)}let{httpProxies:i}=z(o.server.proxy||{});i.push(...P(e.prefix));let c=P(e.wsPrefix),a={};try{let f=F(o.root,["package.json"]);f&&(a=JSON.parse(f))}catch{}let p=e.build.dist,m=await Je(process.cwd(),r,s),u=L.join(o.root,`mock-data-${Date.now()}.js`);await Q.writeFile(u,m,"utf-8");let{code:b,deps:h}=await ze(u,n,o.resolve.alias),k=qe(h);await Q.unlink(u);let g=[{filename:L.join(p,"mock-data.js"),source:b},{filename:L.join(p,"index.js"),source:Be(i,c,e.cookiesOptions,e.build.serverPort)},{filename:L.join(p,"package.json"),source:Ae(a,k)}];try{if(L.isAbsolute(p)){await Q.rm(p,{recursive:!0}),Fe.mkdirSync(p,{recursive:!0});for(let{filename:f,source:l}of g)await Q.writeFile(f,l,"utf-8")}else for(let{filename:f,source:l}of g)t.emitFile({type:"asset",fileName:f,source:l})}catch{}}function qe(t){let o=new Set,e=[re,"connect","cors"];return Object.keys(t).forEach(r=>{t[r].imports.filter(n=>n.external).map(n=>n.path).forEach(n=>{!e.includes(n)&&!_e(n)&&o.add(n)})}),Array.from(o)}function Ae(t,o){let{dependencies:e={},devDependencies:r={}}=t,s={...e,...r},n={name:"mock-server",type:"module",scripts:{start:"node index.js"},dependencies:{connect:"^3.7.0","vite-plugin-mock-dev-server":`^${ne}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{n.dependencies[i]=s[i]||"latest"}),JSON.stringify(n,null,2)}function Be(t,o,e={},r=8080){return`import { createServer } from 'node:http';
4
4
  import connect from 'connect';
5
5
  import corsMiddleware from 'cors';
6
6
  import { baseMiddleware, mockWebSocket } from 'vite-plugin-mock-dev-server';
@@ -24,7 +24,7 @@ app.use(baseMiddleware({ mockData }, {
24
24
  server.listen(${r});
25
25
 
26
26
  console.log('listen: http://localhost:${r}');
27
- `}async function Be(t,o,e){let r=await $e(o,{cwd:t}),n=_e(o,e,{resolve:!1}),s=r.filter(n),i="",c="";return s.forEach((a,p)=>{let u=Ue(I.join(t,a));i+=`import * as m${p} from '${u}';
27
+ `}async function Je(t,o,e){let r=await He(o,{cwd:t}),s=Ue(o,e,{resolve:!1}),n=r.filter(s),i="",c="";return n.forEach((a,p)=>{let m=Ne(L.join(t,a));i+=`import * as m${p} from '${m}';
28
28
  `,c+=`m${p}, `}),`import { transformMockData } from 'vite-plugin-mock-dev-server';
29
29
  ${i}
30
30
  const exporters = [${c}];
@@ -33,9 +33,9 @@ const mockList = exporters.map((raw) => raw && raw.default
33
33
  : Object.keys(raw || {}).map((key) => raw[key])
34
34
  )
35
35
  export default transformMockData(mockList);
36
- `}async function Je(t,o,e){var r;try{let n=await Le({entryPoints:[t],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[B(e),N,q,A]});return{code:n.outputFiles[0].text,deps:((r=n.metafile)==null?void 0:r.inputs)||{}}}catch(n){console.error(n)}return{code:"",deps:{}}}import{Buffer as fe}from"buffer";import{parse as ke}from"url";import Qe from"cookies";import Xe from"http-status";import*as $ from"mime-types";import{pathToRegexp as ye}from"path-to-regexp";import H from"picocolors";import Y from"co-body";import ze from"formidable";async function de(t,o){var n;let e=t.method.toUpperCase();if(["GET","DELETE","HEAD"].includes(e))return;let r=((n=t.headers["content-type"])==null?void 0:n.toLocaleLowerCase())||"";try{if(r.startsWith("application/json"))return await Y.json(t);if(r.startsWith("application/x-www-form-urlencoded"))return await Y.form(t);if(r.startsWith("text/plain"))return await Y.text(t);if(r.startsWith("multipart/form-data"))return await Ge(t,o)}catch(s){console.error(s)}}async function Ge(t,o){let e=ze(o);return new Promise((r,n)=>{e.parse(t,(s,i,c)=>{if(s){n(s);return}r({...i,...c})})})}function me(t,o){return C(t.headers,o.headers)&&C(t.body,o.body)&&C(t.params,o.params)&&C(t.query,o.query)&&C(t.refererQuery,o.refererQuery)}function C(t,o){if(!o)return!0;for(let e in o)if(o[e]!==t[e])return!1;return!0}function he(t,{formidableOptions:o={},proxies:e,cookiesOptions:r}){return async function(n,s,i){let c=Date.now(),{query:a,pathname:p}=ke(n.url,!0);if(!p||e.length===0||!e.some(S=>z(S,n.url)))return i();let u=t.mockData,l=Object.keys(u).find(S=>ye(S).test(p));if(!l)return i();let{query:v}=ke(n.headers.referer||"",!0),M=await de(n,o),y=new Qe(n,s,r),k=y.get.bind(y),m=n.method.toUpperCase(),d=Ke(u[l],{pathname:p,method:m,request:{query:a,refererQuery:v,body:M,headers:n.headers,getCookie:k}});if(!d)return i();D("middleware: ",m,n.url);let h=n,g=s;h.body=M,h.query=a,h.refererQuery=v,h.params=L(d.url,p),h.getCookie=k,g.setCookie=y.set.bind(y);let{body:w,delay:f,type:O="json",response:T,status:X=200,statusText:je}=d;if(Z(g,X,je),await Ve(h,g,d),await Ye(h,g,d),w){try{let S=R(w)?await w(h):w;await ge(c,f),Ze(g,S,O)}catch(S){W.error(`${H.red("[body error]")} ${n.url}
37
- `,S),Z(g,500),s.end("")}return}if(T){try{await ge(c,f),await T(h,g,i)}catch(S){W.error(`${H.red("[response error]")} ${n.url}
38
- `,S),Z(g,500),s.end("")}return}s.end("")}}function Ke(t,{pathname:o,method:e,request:r}){return t.find(n=>{if(!o||!n||!n.url||n.ws===!0||!(n.method?P(n.method)?n.method:[n.method]:["GET","POST"]).includes(e))return!1;let i=ye(n.url).test(o);if(i&&n.validator){let c=L(n.url,o);if(R(n.validator))return n.validator({params:c,...r});try{return me({params:c,...r},n.validator)}catch(a){return W.error(`${H.red("[validator error]")} ${o}
39
- `,a),!1}}return i})}function Z(t,o=200,e){t.statusCode=o,t.statusMessage=e||et(o)}async function Ve(t,o,{headers:e,type:r="json"}){let n=$.contentType(r)||$.contentType($.lookup(r)||"");if(n&&o.setHeader("Content-Type",n),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock","generate by vite:plugin-mock-dev-server"),!!e)try{let s=R(e)?await e(t):e;Object.keys(s).forEach(i=>{o.setHeader(i,s[i])})}catch(s){W.error(`${H.red("[headers error]")} ${t.url}
40
- `,s)}}async function Ye(t,o,{cookies:e}){if(e)try{let r=R(e)?await e(t):e;Object.keys(r).forEach(n=>{let s=r[n];if(P(s)){let[i,c]=s;o.setCookie(n,i,c)}else o.setCookie(n,s)})}catch(r){W.error(`${H.red("[cookies error]")} ${t.url}
41
- `,r)}}function Ze(t,o,e){if(ae(o))o.pipe(t);else if(fe.isBuffer(o))t.end(e==="text"||e==="json"?o.toString("utf-8"):o);else{let r=typeof o=="string"?o:JSON.stringify(o);t.end(e==="buffer"?fe.from(r):r)}}async function ge(t,o){if(!o||o<=0)return;let e=Date.now()-t,r=o-e;r>0&&await pe(r)}function et(t){return Xe[t]||"Unknown"}import rt from"events";import ee from"fs";import{createRequire as st}from"module";import Me from"path";import{pathToFileURL as nt}from"url";import be from"chokidar";import{build as it}from"esbuild";import ct from"fast-glob";import{createFilter as at,normalizePath as U}from"vite";import{parse as tt}from"url";import ot from"lodash.sortby";function ve(t){let o=[];for(let[,r]of t.entries())r&&(P(r)?o.push(...r):o.push(r));let e={};return o.filter(r=>(r.enabled||typeof r.enabled>"u")&&r.url).forEach(r=>{let{pathname:n,query:s}=tt(r.url,!0),i=e[n]??(e[n]=[]),c={...r,url:n};if(c.ws!==!0){let a=c.validator;ce(s)||(R(a)?c.validator=function(p){return C(p.query,s)&&a(p)}:a?(c.validator={...a},c.validator.query=c.validator.query?{...s,...c.validator.query}:s):c.validator={query:s})}i.push(c)}),Object.keys(e).forEach(r=>{e[r]=ot(e[r],n=>{if(n.ws===!0)return 0;let{validator:s}=n;if(!s)return 1;if(R(s))return 0;let{query:i,params:c,headers:a,body:p,refererQuery:u}=s;return 1/(_(i)+_(c)+_(a)+_(p)+_(u))})}),e}function _(t){return t?Object.keys(t).length:0}var pt=le(import.meta.url),E=st(pt),Q=class extends rt{constructor(e){super();this.options=e;this.moduleCache=new Map;this.moduleDeps=new Map;this.moduleType="cjs";this._mockData={};this.cwd=e.cwd||process.cwd();try{let r=F(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}async load(){let{include:e,exclude:r}=this.options,n=await ct(e,{cwd:this.cwd}),s=at(e,r,{resolve:!1});this.watchMockEntry(),this.watchDeps();for(let c of n.filter(s))await this.loadMock(c);this.updateMockList();let i=null;this.on("mock:update",async c=>{s(c)&&(await this.loadMock(c),i&&clearTimeout(i),i=setTimeout(()=>{this.updateMockList(),this.emit("mock:update-end",c),i=null},0))}),this.on("mock:unlink",async c=>{s(c)&&(this.moduleCache.delete(c),this.updateMockList(),this.emit("mock:update-end",c))})}watchMockEntry(){let{include:e}=this.options,[r,...n]=e,s=be.watch(r,{ignoreInitial:!0,cwd:this.cwd});n.length>0&&n.forEach(i=>s.add(i)),s.on("add",async i=>{i=U(i),this.emit("mock:update",i),D("watcher:add",i)}),s.on("change",async i=>{i=U(i),this.emit("mock:update",i),D("watcher:change",i)}),s.on("unlink",async i=>{i=U(i),this.emit("mock:unlink",i),D("watcher:unlink",i)}),this.mockWatcher=s}watchDeps(){let e=[];this.depsWatcher=be.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=U(r);let n=this.moduleDeps.get(r);n&&n.forEach(s=>{this.emit("mock:update",s)})}),this.depsWatcher.on("unlink",r=>{r=U(r),this.moduleDeps.delete(r)}),this.on("update:deps",()=>{let r=[];for(let[s]of this.moduleDeps.entries())r.push(s);let n=r.filter(s=>!e.includes(s));n.length>0&&this.depsWatcher.add(n)})}close(){var e,r;(e=this.mockWatcher)==null||e.close(),(r=this.depsWatcher)==null||r.close()}updateMockList(){this._mockData=ve(this.moduleCache)}updateModuleDeps(e,r){Object.keys(r).forEach(n=>{r[n].imports.map(i=>i.path).forEach(i=>{this.moduleDeps.has(i)||this.moduleDeps.set(i,new Set),this.moduleDeps.get(i).add(e)})}),this.emit("update:deps")}async loadMock(e){if(!e)return;let r=!1;/\.m[jt]s$/.test(e)?r=!0:/\.c[jt]s$/.test(e)?r=!1:r=this.moduleType==="esm";let{code:n,deps:s}=await this.transformWithEsbuild(e,r);try{let i=await this.loadFromCode(e,n,r),c=i&&i.default?i.default:Object.keys(i||{}).map(a=>i[a]);P(c)?c.forEach(a=>a.__filepath__=e):c.__filepath__=e,this.moduleCache.set(e,c),this.updateModuleDeps(e,s)}catch(i){console.error(i)}}async loadFromCode(e,r,n){if(n){let s=`${e}.timestamp-${Date.now()}`,i=`${s}.mjs`,c=`${nt(s)}.mjs`;await ee.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ee.unlinkSync(i)}catch{}}}else{e=Me.resolve(this.cwd,e);let s=Me.extname(e),i=ee.realpathSync(e),c=s in E.extensions?s:".js",a=E.extensions[c];E.extensions[c]=(u,l)=>{l===i?u._compile(r,l):a(u,l)},delete E.cache[E.resolve(e)];let p=E(e);return E.extensions[c]=a,p.__esModule?p:{default:p}}}async transformWithEsbuild(e,r){var n;try{let s=await it({entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:r?"esm":"cjs",define:this.options.define,plugins:[B(this.options.alias),N,A,q]});return{code:s.outputFiles[0].text,deps:((n=s.metafile)==null?void 0:n.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}};import{parse as xe}from"url";import lt from"cookies";import{pathToRegexp as we}from"path-to-regexp";import{WebSocketServer as ut}from"ws";function Oe(t,o,e,r){var c;let n=new Set,s=new Map,i=new Map;(c=t.on)==null||c.call(t,"mock:update-end",a=>{if(!n.has(a))return;let p={};for(let[u,l]of i.entries())t.mockData[u].forEach(v=>{v.__filepath__===a&&v.ws&&l.forEach(({pathname:M,req:y,ws:k})=>{p[M]??(p[M]={mock:v,list:[],mockUrl:u}),p[M].list.push({req:y,ws:k}),k.removeAllListeners()})});Object.keys(p).forEach(u=>{var k,m;let l=s.get(u),{mock:v,list:M,mockUrl:y}=p[u];l.wss.removeAllListeners(),(k=l.cancel)==null||k.call(l),l.cancel=(m=v.setup)==null?void 0:m.call(v,l.wss),l.wss.on("close",()=>{s.delete(u)}),M.forEach(({req:d,ws:h})=>{l.wss.emit("connection",h,d),h.on("close",()=>{let g=i.get(y),w=(g==null?void 0:g.findIndex(f=>f.ws===h))||-1;w>=0&&(g==null||g.splice(w,1))})})})}),o==null||o.on("upgrade",(a,p,u)=>{var w;let{pathname:l,query:v}=xe(a.url,!0);if(!l||e.length===0||!e.some(f=>z(f,a.url)))return;let M=t.mockData,y=Object.keys(M).find(f=>we(f).test(l));if(!y)return;let k=M[y].find(f=>f.url&&f.ws&&we(f.url).test(l));if(!k)return;n.add(k.__filepath__);let m=s.get(l);if(!m){let f=new ut({noServer:!0}),O=(w=k.setup)==null?void 0:w.call(k,f);f.on("close",()=>{s.delete(l)}),m={wss:f,cancel:O},s.set(l,m)}let d=a,h=new lt(a,a,r),{query:g}=xe(a.headers.referer||"",!0);d.query=v,d.refererQuery=g,d.params=L(y,l),d.getCookie=h.get.bind(h),m.wss.handleUpgrade(d,p,u,f=>{D(`websocket-mock: ${a.url} connected`),m.wss.emit("connection",f,d);let O=i.get(y);O||(O=[],i.set(y,O)),O.push({req:d,ws:f,pathname:l}),f.on("close",()=>{let T=O.findIndex(X=>X.ws===f);T>=0&&O.splice(T,1)})})}),o==null||o.on("close",()=>{s.forEach(({wss:a,cancel:p})=>{p==null||p(),a.close()}),s.clear(),n.clear(),i.clear()})}async function te(t,o,e,r){let n=j(o.include),s=j(o.exclude),i={};if(t.define)for(let u in t.define){let l=t.define[u];i[u]=typeof l=="string"?l:JSON.stringify(l)}let c=new Q({include:n,exclude:s,define:i,alias:t.resolve.alias});await c.load(),c.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),e==null||e.on("close",()=>c.close());let{httpProxies:a}=J(t.server.proxy||{}),p=j(o.prefix);return Oe(c,e,j(o.wsPrefix),o.cookiesOptions),he(c,{formidableOptions:o.formidableOptions,proxies:[...p,...a],cookiesOptions:o.cookiesOptions})}function Pe({prefix:t=[],wsPrefix:o=[],include:e=["mock/**/*.mock.{js,ts,cjs,mjs,json,json5}"],exclude:r=["**/node_modules/**","**/.vscode/**","**/.git/**"],reload:n=!1,formidableOptions:s={},build:i=!1,cookiesOptions:c={}}={}){let a={prefix:t,wsPrefix:o,include:e,exclude:r,reload:n,cookiesOptions:c,formidableOptions:{multiples:!0,...s},build:i?Object.assign({serverPort:8080,dist:"mockServer"},typeof i=="object"?i:{}):!1},p=[mt(a)];return a.build&&p.push(dt(a)),p}function dt(t){let o={};return{name:"vite-plugin-mock-dev-server-generator",enforce:"post",apply:"build",configResolved(e){o=e,e.logger.warn("")},async buildEnd(e){e||o.command==="build"&&await ue(this,o,t)}}}function mt(t){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",configResolved(e){o=e,e.logger.warn("")},async configureServer({middlewares:e,config:r,httpServer:n,ws:s}){let i=await te(r,t,n,s);e.use(i)},async configurePreviewServer({middlewares:e,httpServer:r}){let n=await te(o,t,r);e.use(n)}}}function qo(t){return t}function Ao(t){return e=>(P(e)?e=e.map(r=>t(r)||r):e=t(e)||e,e)}var Go=Pe;export{he as baseMiddleware,Ao as createDefineMock,Go as default,qo as defineMock,Pe as mockDevServerPlugin,Oe as mockWebSocket,ve as transformMockData};
36
+ `}async function ze(t,o,e){var r;try{let s=await $e({entryPoints:[t],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[J(e),q,A,B]});return{code:s.outputFiles[0].text,deps:((r=s.metafile)==null?void 0:r.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}import{Buffer as fe}from"buffer";import{parse as ke}from"url";import Xe from"cookies";import Ke from"http-status";import*as H from"mime-types";import{pathToRegexp as ye}from"path-to-regexp";import _ from"picocolors";import Y from"co-body";import Ge from"formidable";async function me(t,o){var s;let e=t.method.toUpperCase();if(["GET","DELETE","HEAD"].includes(e))return;let r=((s=t.headers["content-type"])==null?void 0:s.toLocaleLowerCase())||"";try{if(r.startsWith("application/json"))return await Y.json(t);if(r.startsWith("application/x-www-form-urlencoded"))return await Y.form(t);if(r.startsWith("text/plain"))return await Y.text(t);if(r.startsWith("multipart/form-data"))return await Qe(t,o)}catch(n){console.error(n)}}async function Qe(t,o){let e=Ge(o);return new Promise((r,s)=>{e.parse(t,(n,i,c)=>{if(n){s(n);return}r({...i,...c})})})}function de(t,o){return W(t.headers,o.headers)&&W(t.body,o.body)&&W(t.params,o.params)&&W(t.query,o.query)&&W(t.refererQuery,o.refererQuery)}function W(t,o){if(!o)return!0;for(let e in o)if(o[e]!==t[e])return!1;return!0}function he(t,{formidableOptions:o={},proxies:e,cookiesOptions:r}){return async function(s,n,i){let c=Date.now(),{query:a,pathname:p}=ke(s.url,!0);if(!p||e.length===0||!e.some(j=>G(j,s.url)))return i();let m=t.mockData,u=Object.keys(m).find(j=>ye(j).test(p));if(!u)return i();let{query:b}=ke(s.headers.referer||"",!0),h=await me(s,o),k=new Xe(s,n,r),g=k.get.bind(k),f=s.method.toUpperCase(),l=Ve(m[u],{pathname:p,method:f,request:{query:a,refererQuery:b,body:h,headers:s.headers,getCookie:g}});if(!l)return i();D("middleware: ",f,s.url);let v=s,y=n;v.body=h,v.query=a,v.refererQuery=b,v.params=$(l.url,p),v.getCookie=g,y.setCookie=k.set.bind(k);let{body:M,delay:d,type:x="json",response:R,status:T=200,statusText:je}=l;if(Z(y,T,je),await Ye(v,y,l),await Ze(v,y,l),M){try{let j=C(M)?await M(v):M;await ge(c,d),et(y,j,x)}catch(j){I.error(`${_.red("[body error]")} ${s.url}
37
+ `,j),Z(y,500),n.end("")}return}if(R){try{await ge(c,d),await R(v,y,i)}catch(j){I.error(`${_.red("[response error]")} ${s.url}
38
+ `,j),Z(y,500),n.end("")}return}n.end("")}}function Ve(t,{pathname:o,method:e,request:r}){return t.find(s=>{if(!o||!s||!s.url||s.ws===!0||!(s.method?S(s.method)?s.method:[s.method]:["GET","POST"]).includes(e))return!1;let i=ye(s.url).test(o);if(i&&s.validator){let c=$(s.url,o);if(C(s.validator))return s.validator({params:c,...r});try{return de({params:c,...r},s.validator)}catch(a){return I.error(`${_.red("[validator error]")} ${o}
39
+ `,a),!1}}return i})}function Z(t,o=200,e){t.statusCode=o,t.statusMessage=e||tt(o)}async function Ye(t,o,{headers:e,type:r="json"}){let s=H.contentType(r)||H.contentType(H.lookup(r)||"");if(s&&o.setHeader("Content-Type",s),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock","generate by vite:plugin-mock-dev-server"),!!e)try{let n=C(e)?await e(t):e;Object.keys(n).forEach(i=>{o.setHeader(i,n[i])})}catch(n){I.error(`${_.red("[headers error]")} ${t.url}
40
+ `,n)}}async function Ze(t,o,{cookies:e}){if(e)try{let r=C(e)?await e(t):e;Object.keys(r).forEach(s=>{let n=r[s];if(S(n)){let[i,c]=n;o.setCookie(s,i,c)}else o.setCookie(s,n)})}catch(r){I.error(`${_.red("[cookies error]")} ${t.url}
41
+ `,r)}}function et(t,o,e){if(ae(o))o.pipe(t);else if(fe.isBuffer(o))t.end(e==="text"||e==="json"?o.toString("utf-8"):o);else{let r=typeof o=="string"?o:JSON.stringify(o);t.end(e==="buffer"?fe.from(r):r)}}async function ge(t,o){if(!o||o<=0)return;let e=Date.now()-t,r=o-e;r>0&&await pe(r)}function tt(t){return Ke[t]||"Unknown"}import nt from"events";import ee from"fs";import{createRequire as st}from"module";import Me from"path";import{pathToFileURL as it}from"url";import be from"chokidar";import{build as ct}from"esbuild";import at from"fast-glob";import{createFilter as pt,normalizePath as N}from"vite";import{parse as ot}from"url";import rt from"lodash.sortby";function ve(t){let o=[];for(let[,r]of t.entries())r&&(S(r)?o.push(...r):o.push(r));let e={};return o.filter(r=>(r.enabled||typeof r.enabled>"u")&&r.url).forEach(r=>{let{pathname:s,query:n}=ot(r.url,!0),i=e[s]??(e[s]=[]),c={...r,url:s};if(c.ws!==!0){let a=c.validator;ce(n)||(C(a)?c.validator=function(p){return W(p.query,n)&&a(p)}:a?(c.validator={...a},c.validator.query=c.validator.query?{...n,...c.validator.query}:n):c.validator={query:n})}i.push(c)}),Object.keys(e).forEach(r=>{e[r]=rt(e[r],s=>{if(s.ws===!0)return 0;let{validator:n}=s;if(!n)return 1;if(C(n))return 0;let{query:i,params:c,headers:a,body:p,refererQuery:m}=n;return 1/(U(i)+U(c)+U(a)+U(p)+U(m))})}),e}function U(t){return t?Object.keys(t).length:0}var ut=ue(import.meta.url),E=st(ut),X=class extends nt{constructor(e){super();this.options=e;this.moduleCache=new Map;this.moduleDeps=new Map;this.moduleType="cjs";this._mockData={};this.cwd=e.cwd||process.cwd();try{let r=F(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}async load(){let{include:e,exclude:r}=this.options,s=await at(e,{cwd:this.cwd}),n=pt(e,r,{resolve:!1});this.watchMockEntry(),this.watchDeps();for(let c of s.filter(n))await this.loadMock(c);this.updateMockList();let i=null;this.on("mock:update",async c=>{n(c)&&(await this.loadMock(c),i&&clearTimeout(i),i=setTimeout(()=>{this.updateMockList(),this.emit("mock:update-end",c),i=null},0))}),this.on("mock:unlink",async c=>{n(c)&&(this.moduleCache.delete(c),this.updateMockList(),this.emit("mock:update-end",c))})}watchMockEntry(){let{include:e}=this.options,[r,...s]=e,n=be.watch(r,{ignoreInitial:!0,cwd:this.cwd});s.length>0&&s.forEach(i=>n.add(i)),n.on("add",async i=>{i=N(i),this.emit("mock:update",i),D("watcher:add",i)}),n.on("change",async i=>{i=N(i),this.emit("mock:update",i),D("watcher:change",i)}),n.on("unlink",async i=>{i=N(i),this.emit("mock:unlink",i),D("watcher:unlink",i)}),this.mockWatcher=n}watchDeps(){let e=[];this.depsWatcher=be.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=N(r);let s=this.moduleDeps.get(r);s&&s.forEach(n=>{this.emit("mock:update",n)})}),this.depsWatcher.on("unlink",r=>{r=N(r),this.moduleDeps.delete(r)}),this.on("update:deps",()=>{let r=[];for(let[n]of this.moduleDeps.entries())r.push(n);let s=r.filter(n=>!e.includes(n));s.length>0&&this.depsWatcher.add(s)})}close(){var e,r;(e=this.mockWatcher)==null||e.close(),(r=this.depsWatcher)==null||r.close()}updateMockList(){this._mockData=ve(this.moduleCache)}updateModuleDeps(e,r){Object.keys(r).forEach(s=>{r[s].imports.map(i=>i.path).forEach(i=>{this.moduleDeps.has(i)||this.moduleDeps.set(i,new Set),this.moduleDeps.get(i).add(e)})}),this.emit("update:deps")}async loadMock(e){if(!e)return;let r=!1;/\.m[jt]s$/.test(e)?r=!0:/\.c[jt]s$/.test(e)?r=!1:r=this.moduleType==="esm";let{code:s,deps:n}=await this.transformWithEsbuild(e,r);try{let i=await this.loadFromCode(e,s,r),c=i&&i.default?i.default:Object.keys(i||{}).map(a=>i[a]);S(c)?c.forEach(a=>a.__filepath__=e):c.__filepath__=e,this.moduleCache.set(e,c),this.updateModuleDeps(e,n)}catch(i){console.error(i)}}async loadFromCode(e,r,s){if(s){let n=`${e}.timestamp-${Date.now()}`,i=`${n}.mjs`,c=`${it(n)}.mjs`;await ee.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ee.unlinkSync(i)}catch{}}}else{e=Me.resolve(this.cwd,e);let n=Me.extname(e),i=ee.realpathSync(e),c=n in E.extensions?n:".js",a=E.extensions[c];E.extensions[c]=(m,u)=>{u===i?m._compile(r,u):a(m,u)},delete E.cache[E.resolve(e)];let p=E(e);return E.extensions[c]=a,p.__esModule?p:{default:p}}}async transformWithEsbuild(e,r){var s;try{let n=await ct({entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:r?"esm":"cjs",define:this.options.define,plugins:[J(this.options.alias),q,B,A]});return{code:n.outputFiles[0].text,deps:((s=n.metafile)==null?void 0:s.inputs)||{}}}catch(n){console.error(n)}return{code:"",deps:{}}}};import{parse as xe}from"url";import lt from"cookies";import{pathToRegexp as we}from"path-to-regexp";import{WebSocketServer as mt}from"ws";function Se(t,o,e,r){var c;let s=new Set,n=new Map,i=new Map;(c=t.on)==null||c.call(t,"mock:update-end",a=>{if(!s.has(a))return;let p={};for(let[m,u]of i.entries())t.mockData[m].forEach(b=>{b.ws&&b.__filepath__===a&&u.forEach(({pathname:h,req:k,ws:g})=>{p[h]??(p[h]={mock:b,list:[],mockUrl:m}),p[h].list.push({req:k,ws:g})})});Object.keys(p).forEach(m=>{var l;let{wss:u,cleanupList:b,context:h}=n.get(m),{mock:k,list:g,mockUrl:f}=p[m];Oe(b),u.removeAllListeners(),(l=k.setup)==null||l.call(k,u,h),u.on("close",()=>n.delete(m)),g.forEach(({req:v,ws:y})=>{y.removeAllListeners(),u.emit("connection",y,v),y.on("close",()=>{let M=i.get(f),d=(M==null?void 0:M.findIndex(x=>x.ws===y))||-1;d!==-1&&(M==null||M.splice(d,1))})})})}),o==null||o.on("upgrade",(a,p,m)=>{var M;let{pathname:u,query:b}=xe(a.url,!0);if(!u||e.length===0||!e.some(d=>G(d,a.url)))return;let h=t.mockData,k=Object.keys(h).find(d=>we(d).test(u));if(!k)return;let g=h[k].find(d=>d.url&&d.ws&&we(d.url).test(u));if(!g)return;s.add(g.__filepath__);let f=n.get(u);if(!f){let d=new mt({noServer:!0}),x=[],R={onCleanup:T=>x.push(T)};(M=g.setup)==null||M.call(g,d,R),d.on("close",()=>n.delete(u)),n.set(u,f={wss:d,cleanupList:x,context:R})}let l=a,v=new lt(a,a,r),{query:y}=xe(a.headers.referer||"",!0);l.query=b,l.refererQuery=y,l.params=$(k,u),l.getCookie=v.get.bind(v),f.wss.handleUpgrade(l,p,m,d=>{D(`websocket-mock: ${a.url} connected`),f.wss.emit("connection",d,l);let x=i.get(k);x||i.set(k,x=[]),x.push({req:l,ws:d,pathname:u}),d.on("close",()=>{let R=x.findIndex(T=>T.ws===d);R!==-1&&x.splice(R,1)})})}),o==null||o.on("close",()=>{n.forEach(({wss:a,cleanupList:p})=>{Oe(p),a.close()}),n.clear(),i.clear(),s.clear()})}function Oe(t){let o;for(;o=t.shift();)o==null||o()}async function te(t,o,e,r){let s=P(o.include),n=P(o.exclude),i={};if(t.define)for(let m in t.define){let u=t.define[m];i[m]=typeof u=="string"?u:JSON.stringify(u)}let c=new X({include:s,exclude:n,define:i,alias:t.resolve.alias});await c.load(),c.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),e==null||e.on("close",()=>c.close());let{httpProxies:a}=z(t.server.proxy||{}),p=P(o.prefix);return Se(c,e,P(o.wsPrefix),o.cookiesOptions),he(c,{formidableOptions:o.formidableOptions,proxies:[...p,...a],cookiesOptions:o.cookiesOptions})}function Pe({prefix:t=[],wsPrefix:o=[],include:e=["mock/**/*.mock.{js,ts,cjs,mjs,json,json5}"],exclude:r=["**/node_modules/**","**/.vscode/**","**/.git/**"],reload:s=!1,formidableOptions:n={},build:i=!1,cookiesOptions:c={}}={}){let a={prefix:t,wsPrefix:o,include:e,exclude:r,reload:s,cookiesOptions:c,formidableOptions:{multiples:!0,...n},build:i?Object.assign({serverPort:8080,dist:"mockServer"},typeof i=="object"?i:{}):!1},p=[ft(a)];return a.build&&p.push(dt(a)),p}function dt(t){let o={};return{name:"vite-plugin-mock-dev-server-generator",enforce:"post",apply:"build",configResolved(e){o=e,e.logger.warn("")},async buildEnd(e){e||o.command==="build"&&await le(this,o,t)}}}function ft(t){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",configResolved(e){o=e,e.logger.warn("")},async configureServer({middlewares:e,config:r,httpServer:s,ws:n}){let i=await te(r,t,s,n);e.use(i)},async configurePreviewServer({middlewares:e,httpServer:r}){let s=await te(o,t,r);e.use(s)}}}function Ao(t){return t}function Bo(t){return e=>(S(e)?e=e.map(r=>t(r)||r):e=t(e)||e,e)}var Qo=Pe;export{he as baseMiddleware,Bo as createDefineMock,Qo as default,Ao as defineMock,Pe as mockDevServerPlugin,Se as mockWebSocket,ve as transformMockData};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-mock-dev-server",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "keywords": [
5
5
  "vite",
6
6
  "plugin",