vite-plugin-mock-dev-server 1.1.14 → 1.1.15

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/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var it=Object.create;var z=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var at=Object.getOwnPropertyNames;var pt=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty;var ut=(e,o)=>{for(var t in o)z(e,t,{get:o[t],enumerable:!0})},we=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of at(o))!lt.call(e,n)&&n!==t&&z(e,n,{get:()=>o[n],enumerable:!(r=ct(o,n))||r.enumerable});return e};var f=(e,o,t)=>(t=e!=null?it(pt(e)):{},we(o||!e||!e.__esModule?z(t,"default",{value:e,enumerable:!0}):t,e)),mt=e=>we(z({},"__esModule",{value:!0}),e);var $t={};ut($t,{baseMiddleware:()=>fe,createDefineMock:()=>It,default:()=>Lt,defineMock:()=>Et,mockDevServerPlugin:()=>be,mockWebSocket:()=>ve,transformMockData:()=>ke});module.exports=mt($t);var dt=()=>typeof document>"u"?new URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href,M=dt();var Le=f(require("fs"),1),B=f(require("fs/promises"),1),F=f(require("path"),1),$e=require("esbuild"),Te=f(require("fast-glob"),1),Fe=f(require("is-core-module"),1),ne=require("vite");var Oe="vite-plugin-mock-dev-server",Pe="1.1.14";var ft=/import\.meta\.env\.(.+)/;function G(e){let o={},t=process.env.NODE_ENV||e.mode;Object.assign(o,{"process.env.NODE_ENV":JSON.stringify(t),"global.process.env.NODE_ENV":JSON.stringify(t),"globalThis.process.env.NODE_ENV":JSON.stringify(t),__vite_process_env_NODE_ENV:JSON.stringify(t)});let r={},n={};for(let c in e.define){let a=e.define[c];r[c]=typeof a=="string"?a:JSON.stringify(a);let m=c.match(ft);m&&(n[m[1]]=`__vite__define__${r[c]}`)}let s={},i={};s["import.meta.hot"]="undefined";for(let c in e.env)s[`import.meta.env.${c}`]=JSON.stringify(e.env[c]);return Object.assign(i,{"import.meta.env":JSON.stringify({...e.env,...n}).replace(/"__vite__define__(.+?)"([,}])/g,(c,a,m)=>`${a.replace(/(^\\")|(\\"$)/g,'"')}${m}`)}),{...s,...r,...i,...o}}var ae=f(require("fs/promises"),1),je=f(require("path"),1),Re=f(require("json5"),1),Q={name:"externalize-deps",setup(e){e.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!je.default.isAbsolute(o))return{external:!0}})}},V={name:"json5-loader",setup(e){e.onLoad({filter:/\.json5$/},async({path:o})=>{let t=await ae.default.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(Re.default.parse(t))}`,loader:"js"}})}},K={name:"json-loader",setup(e){e.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await ae.default.readFile(o,"utf-8")}`,loader:"js"}))}},X=e=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:t})=>{let r=e.find(({find:c})=>kt(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 kt(e,o){return e instanceof RegExp?e.test(o):o.length<e.length?!1:o===e?!0:o.startsWith(`${e}/`)}var Y=f(require("fs"),1),Z=f(require("path"),1),Ce=require("querystring"),ee=require("url"),We=f(require("debug"),1),De=require("path-to-regexp"),pe=f(require("picocolors"),1),v=e=>Array.isArray(e),R=e=>typeof e=="function",te=e=>Object.prototype.toString.call(e)==="[object Object]",le=e=>te(e)&&Object.keys(e).length===0,gt=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function",_e=e=>gt(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";function Ee(e){return new Promise(o=>setTimeout(o,e))}function Ie(e){return Z.default.dirname((0,ee.fileURLToPath)(e))}var C=(0,We.default)("vite:plugin-mock-dev-server"),S=e=>v(e)?e:e==null?[]:[e],W={info(...e){console.info(pe.default.cyan("mock-dev-server: "),...e)},error(...e){console.error(`
1
+ "use strict";var ct=Object.create;var z=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var lt=Object.getPrototypeOf,ut=Object.prototype.hasOwnProperty;var mt=(e,o)=>{for(var t in o)z(e,t,{get:o[t],enumerable:!0})},Se=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of pt(o))!ut.call(e,n)&&n!==t&&z(e,n,{get:()=>o[n],enumerable:!(r=at(o,n))||r.enumerable});return e};var f=(e,o,t)=>(t=e!=null?ct(lt(e)):{},Se(o||!e||!e.__esModule?z(t,"default",{value:e,enumerable:!0}):t,e)),dt=e=>Se(z({},"__esModule",{value:!0}),e);var Tt={};mt(Tt,{baseMiddleware:()=>ke,createDefineMock:()=>Lt,default:()=>$t,defineMock:()=>It,mockDevServerPlugin:()=>xe,mockWebSocket:()=>Me,transformMockData:()=>ge});module.exports=dt(Tt);var ft=()=>typeof document>"u"?new URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href,b=ft();var $e=f(require("fs"),1),q=f(require("fs/promises"),1),F=f(require("path"),1),Te=require("esbuild"),Fe=f(require("fast-glob"),1),Ne=f(require("is-core-module"),1),se=require("vite");var Pe="vite-plugin-mock-dev-server",je="1.1.15";var Z=f(require("picocolors"),1);var G=f(require("fs"),1),Q=f(require("path"),1),Re=require("querystring"),V=require("url"),Ce=f(require("debug"),1),We=require("path-to-regexp"),pe=f(require("picocolors"),1),M=e=>Array.isArray(e),C=e=>typeof e=="function",K=e=>Object.prototype.toString.call(e)==="[object Object]",le=e=>K(e)&&Object.keys(e).length===0,kt=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function",De=e=>kt(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";function _e(e){return new Promise(o=>setTimeout(o,e))}function Ee(e){return Q.default.dirname((0,V.fileURLToPath)(e))}var W=(0,Ce.default)("vite:plugin-mock-dev-server"),S=e=>M(e)?e:e==null?[]:[e],P={info(...e){console.info(pe.default.cyan("mock-dev-server: "),...e)},error(...e){console.error(`
2
2
  `,pe.default.cyan("mock-dev-server: "),...e,`
3
- `)}};function A(e,o,t){for(let n of o){let s=Z.default.join(e,n);if(Y.default.existsSync(s)&&Y.default.statSync(s).isFile()){let i=t!=null&&t.pathOnly?s:Y.default.readFileSync(s,"utf-8");if(!(t!=null&&t.predicate)||t.predicate(i))return i}}let r=Z.default.dirname(e);if(r!==e&&(!(t!=null&&t.rootDir)||r.startsWith(t==null?void 0:t.rootDir)))return A(r,o,t)}var oe=(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 re(e,o){return e[0]==="^"&&new RegExp(e).test(o)||o.startsWith(e)}function q(e,o){return((0,De.match)(e,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}function D(e){let o=new ee.URL(e,"http://example.com"),t=decodeURIComponent(o.pathname),r=(0,Ce.parse)(o.search.replace(/^\?/,""));return{pathname:t,query:r}}async function Ne(e,o,t){let r=S(t.include),n=S(t.exclude),s=G(o),{httpProxies:i}=oe(o.server.proxy||{});i.push(...S(t.prefix));let c=S(t.wsPrefix),a={};try{let u=A(o.root,["package.json"]);u&&(a=JSON.parse(u))}catch{}let m=t.build.dist,w=await Mt(process.cwd(),r,n),b=F.default.join(o.root,`mock-data-${Date.now()}.js`);await B.default.writeFile(b,w,"utf-8");let{code:H,deps:I}=await bt(b,s,o.resolve.alias),p=yt(I);await B.default.unlink(b);let l=[{filename:F.default.join(m,"mock-data.js"),source:H},{filename:F.default.join(m,"index.js"),source:vt(i,c,t.cookiesOptions,t.build.serverPort)},{filename:F.default.join(m,"package.json"),source:ht(a,p)}];try{if(F.default.isAbsolute(m)){await B.default.rm(m,{recursive:!0}),Le.default.mkdirSync(m,{recursive:!0});for(let{filename:u,source:d}of l)await B.default.writeFile(u,d,"utf-8")}else for(let{filename:u,source:d}of l)e.emitFile({type:"asset",fileName:u,source:d})}catch{}}function yt(e){let o=new Set,t=[Oe,"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,Fe.default)(s)&&o.add(s)})}),Array.from(o)}function ht(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":`^${Pe}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{s.dependencies[i]=n[i]||"latest"}),JSON.stringify(s,null,2)}function vt(e,o,t={},r=8080){return`import { createServer } from 'node:http';
3
+ `)}};function A(e,o,t){for(let n of o){let s=Q.default.join(e,n);if(G.default.existsSync(s)&&G.default.statSync(s).isFile()){let i=t!=null&&t.pathOnly?s:G.default.readFileSync(s,"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 A(r,o,t)}var X=(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 Y(e,o){return e[0]==="^"&&new RegExp(e).test(o)||o.startsWith(e)}function J(e,o){return((0,We.match)(e,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}function D(e){let o=new V.URL(e,"http://example.com"),t=decodeURIComponent(o.pathname),r=(0,Re.parse)(o.search.replace(/^\?/,""));return{pathname:t,query:r}}var gt=/import\.meta\.env\.(.+)/;function ee(e){let o={},t=process.env.NODE_ENV||e.mode;Object.assign(o,{"process.env.NODE_ENV":JSON.stringify(t),"global.process.env.NODE_ENV":JSON.stringify(t),"globalThis.process.env.NODE_ENV":JSON.stringify(t),__vite_process_env_NODE_ENV:JSON.stringify(t)});let r={},n={},s=[];for(let a in e.define){let u=e.define[a];if(typeof u=="string")try{JSON.parse(u),r[a]=u}catch{s.push(a)}else r[a]=JSON.stringify(u);let v=a.match(gt);v&&r[a]&&(n[v[1]]=`__vite__define__${r[a]}`)}s.length&&P.error(`${Z.default.yellow("[warn]")} The following keys: ${Z.default.yellow(Z.default.underline(s.join(", ")))} declared in 'define' cannot be parsed as regular code snippets.`);let i={},c={};i["import.meta.hot"]="undefined";for(let a in e.env)i[`import.meta.env.${a}`]=JSON.stringify(e.env[a]);return Object.assign(c,{"import.meta.env":JSON.stringify({...e.env,...n}).replace(/"__vite__define__(.+?)"([,}])/g,(a,u,v)=>`${u.replace(/(^\\")|(\\"$)/g,'"')}${v}`)}),{...i,...r,...c,...o}}var ue=f(require("fs/promises"),1),Ie=f(require("path"),1),Le=f(require("json5"),1),te={name:"externalize-deps",setup(e){e.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!Ie.default.isAbsolute(o))return{external:!0}})}},oe={name:"json5-loader",setup(e){e.onLoad({filter:/\.json5$/},async({path:o})=>{let t=await ue.default.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(Le.default.parse(t))}`,loader:"js"}})}},re={name:"json-loader",setup(e){e.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await ue.default.readFile(o,"utf-8")}`,loader:"js"}))}},ne=e=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:t})=>{let r=e.find(({find:c})=>yt(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 yt(e,o){return e instanceof RegExp?e.test(o):o.length<e.length?!1:o===e?!0:o.startsWith(`${e}/`)}async function He(e,o,t){let r=S(t.include),n=S(t.exclude),s=ee(o),{httpProxies:i}=X(o.server.proxy||{});i.push(...S(t.prefix));let c=S(t.wsPrefix),a={};try{let m=A(o.root,["package.json"]);m&&(a=JSON.parse(m))}catch{}let u=t.build.dist,v=await bt(process.cwd(),r,n),x=F.default.join(o.root,`mock-data-${Date.now()}.js`);await q.default.writeFile(x,v,"utf-8");let{code:H,deps:I}=await xt(x,s,o.resolve.alias),p=ht(I);await q.default.unlink(x);let l=[{filename:F.default.join(u,"mock-data.js"),source:H},{filename:F.default.join(u,"index.js"),source:Mt(i,c,t.cookiesOptions,t.build.serverPort)},{filename:F.default.join(u,"package.json"),source:vt(a,p)}];try{if(F.default.isAbsolute(u)){await q.default.rm(u,{recursive:!0}),$e.default.mkdirSync(u,{recursive:!0});for(let{filename:m,source:d}of l)await q.default.writeFile(m,d,"utf-8")}else for(let{filename:m,source:d}of l)e.emitFile({type:"asset",fileName:m,source:d})}catch{}}function ht(e){let o=new Set,t=[Pe,"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,Ne.default)(s)&&o.add(s)})}),Array.from(o)}function vt(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":`^${je}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{s.dependencies[i]=n[i]||"latest"}),JSON.stringify(s,null,2)}function Mt(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,8 +24,8 @@ app.use(baseMiddleware({ mockData }, {
24
24
  server.listen(${r});
25
25
 
26
26
  console.log('listen: http://localhost:${r}');
27
- `}async function Mt(e,o,t){let r=await(0,Te.default)(o,{cwd:e}),n=(0,ne.createFilter)(o,t,{resolve:!1}),s=r.filter(n),i="",c="";return s.forEach((a,m)=>{let w=(0,ne.normalizePath)(F.default.join(e,a));i+=`import * as m${m} from '${w}';
28
- `,c+=`m${m}, `}),`import { transformMockData } from 'vite-plugin-mock-dev-server';
27
+ `}async function bt(e,o,t){let r=await(0,Fe.default)(o,{cwd:e}),n=(0,se.createFilter)(o,t,{resolve:!1}),s=r.filter(n),i="",c="";return s.forEach((a,u)=>{let v=(0,se.normalizePath)(F.default.join(e,a));i+=`import * as m${u} from '${v}';
28
+ `,c+=`m${u}, `}),`import { transformMockData } from 'vite-plugin-mock-dev-server';
29
29
  ${i}
30
30
  const exporters = [${c}];
31
31
  const mockList = exporters.map((raw) => {
@@ -42,10 +42,10 @@ const mockList = exporters.map((raw) => {
42
42
  }
43
43
  return mockConfig
44
44
  });
45
- export default transformMockData(mockList);`}async function bt(e,o,t){var r;try{let n=await(0,$e.build)({entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[X(t),Q,V,K]});return{code:n.outputFiles[0].text,deps:((r=n.metafile)==null?void 0:r.inputs)||{}}}catch(n){console.error(n)}return{code:"",deps:{}}}var me=require("buffer"),Je=f(require("cookies"),1),ze=f(require("http-status"),1),Ge=f(require("lodash.sortby"),1),J=f(require("mime-types"),1),de=require("path-to-regexp"),P=f(require("picocolors"),1);var se=f(require("co-body"),1),He=f(require("formidable"),1);async function Ue(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 se.default.json(e);if(r.startsWith("application/x-www-form-urlencoded"))return await se.default.form(e);if(r.startsWith("text/plain"))return await se.default.text(e);if(r.startsWith("multipart/form-data"))return await xt(e,o)}catch(s){console.error(s)}}async function xt(e,o){let t=(0,He.default)(o);return new Promise((r,n)=>{t.parse(e,(s,i,c)=>{if(s){n(s);return}r({...i,...c})})})}function Ae(e,o){return _(e.headers,o.headers)&&_(e.body,o.body)&&_(e.params,o.params)&&_(e.query,o.query)&&_(e.refererQuery,o.refererQuery)}function _(e,o){if(!o)return!0;for(let t in o)if(!qe(e[t],o[t]))return!1;return!0}function qe(e,o){if(v(e)&&v(o)){let t=new Set;return o.every(r=>e.some((n,s)=>{if(t.has(s))return!1;let i=qe(n,r);return i&&t.add(s),i}))}return te(e)&&te(o)?_(e,o):e===o}var wt=/:/g;function fe(e,{formidableOptions:o={},proxies:t,cookiesOptions:r}){return async function(n,s,i){let c=Date.now(),{query:a,pathname:m}=D(n.url);if(!m||t.length===0||!t.some(h=>re(h,n.url)))return i();let w=e.mockData,b=(0,Ge.default)(Object.keys(w),h=>{var U;return((U=h.match(wt))==null?void 0:U.length)||0}).find(h=>(0,de.pathToRegexp)(h).test(m));if(!b)return i();let{query:H}=D(n.headers.referer||""),I=await Ue(n,o),p=new Je.default(n,s,r),l=p.get.bind(p),u=n.method.toUpperCase(),d=St(w[b],{pathname:m,method:u,request:{query:a,refererQuery:H,body:I,headers:n.headers,getCookie:l}});if(!d)return i();C("middleware: ",u,n.url);let k=n,g=s;k.body=I,k.query=a,k.refererQuery=H,k.params=q(d.url,m),k.getCookie=l,g.setCookie=p.set.bind(p);let{body:y,delay:O,type:j="json",response:L,status:$=200,statusText:T}=d;if(ue(g,$,T),await Ot(k,g,d),await Pt(k,g,d),y){try{let h=R(y)?await y(k):y;await Be(c,O),jt(g,h,j)}catch(h){W.error(`${P.default.red("[body error]")} ${n.url}
46
- `,`file: ${P.default.cyan(d.__filepath__)}`,h),ue(g,500),s.end("")}return}if(L){try{await Be(c,O),await L(k,g,i)}catch(h){W.error(`${P.default.red("[response error]")} ${n.url}
47
- `,`file: ${P.default.cyan(d.__filepath__)}`,h),ue(g,500),s.end("")}return}s.end("")}}function St(e,{pathname:o,method:t,request:r}){return e.find(n=>{if(!o||!n||!n.url||n.ws===!0||!(n.method?v(n.method)?n.method:[n.method]:["GET","POST"]).includes(t))return!1;let i=(0,de.pathToRegexp)(n.url).test(o);if(i&&n.validator){let c=q(n.url,o);if(R(n.validator))return n.validator({params:c,...r});try{return Ae({params:c,...r},n.validator)}catch(a){return W.error(`${P.default.red("[validator error]")} ${o}
48
- `,`file: ${P.default.cyan(n.__filepath__)}`,a),!1}}return i})}function ue(e,o=200,t){e.statusCode=o,e.statusMessage=t||Rt(o)}async function Ot(e,o,t){let{headers:r,type:n="json"}=t,s=t.__filepath__,i=J.contentType(n)||J.contentType(J.lookup(n)||"");if(i&&o.setHeader("Content-Type",i),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock-Power-By","vite-plugin-mock-dev-server"),o.setHeader("X-File-Path",s),!!r)try{let c=R(r)?await r(e):r;Object.keys(c).forEach(a=>{o.setHeader(a,c[a])})}catch(c){W.error(`${P.default.red("[headers error]")} ${e.url}
49
- `,c)}}async function Pt(e,o,{cookies:t}){if(t)try{let r=R(t)?await t(e):t;Object.keys(r).forEach(n=>{let s=r[n];if(v(s)){let[i,c]=s;o.setCookie(n,i,c)}else o.setCookie(n,s)})}catch(r){W.error(`${P.default.red("[cookies error]")} ${e.url}
50
- `,r)}}function jt(e,o,t){if(_e(o))o.pipe(e);else if(me.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"?me.Buffer.from(r):r)}}async function Be(e,o){if(!o||typeof o=="number"&&o<=0||v(o)&&o.length!==2)return;let t=0;if(v(o)){let[r,n]=o;t=Math.floor(Math.random()*(n-r+1))+r}else t=o-(Date.now()-e);t>0&&await Ee(t)}function Rt(e){return ze.default[e]||"Unknown"}var Ve=f(require("events"),1),ie=f(require("fs"),1),Ke=require("module"),ge=f(require("path"),1),Xe=require("url"),ye=f(require("chokidar"),1),Ye=require("esbuild"),Ze=f(require("fast-glob"),1),E=require("vite");var Qe=f(require("lodash.sortby"),1);function ke(e){let o=[];for(let[,r]of e.entries())r&&(v(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}=D(r.url),i=t[n]??(t[n]=[]),c={...r,url:n};if(c.ws!==!0){let a=c.validator;le(s)||(R(a)?c.validator=function(m){return _(m.query,s)&&a(m)}: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;return!s||le(s)?2:R(s)?0:1/Object.keys(s).reduce((c,a)=>c+Ct(s[a]),0)})}),t}function Ct(e){return e?Object.keys(e).length:0}var Wt=Ie(M),N=(0,Ke.createRequire)(Wt),ce=class extends Ve.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=A(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}load(){let{include:t,exclude:r}=this.options,n=(0,E.createFilter)(t,r,{resolve:!1});(0,Ze.default)(t,{cwd:this.cwd}).then(i=>Promise.all(i.filter(n).map(c=>this.loadMock(c)))).then(()=>this.updateMockList()),this.watchMockEntry(),this.watchDeps();let s=null;this.on("mock:update",async i=>{n(i)&&(await this.loadMock(i),s&&clearImmediate(s),s=setImmediate(()=>{this.updateMockList(),this.emit("mock:update-end",i),s=null}))}),this.on("mock:unlink",async i=>{n(i)&&(this.moduleCache.delete(i),this.updateMockList(),this.emit("mock:update-end",i))})}watchMockEntry(){let{include:t}=this.options,[r,...n]=t,s=ye.default.watch(r,{ignoreInitial:!0,cwd:this.cwd});n.length>0&&n.forEach(i=>s.add(i)),s.on("add",async i=>{i=(0,E.normalizePath)(i),this.emit("mock:update",i),C("watcher:add",i)}),s.on("change",async i=>{i=(0,E.normalizePath)(i),this.emit("mock:update",i),C("watcher:change",i)}),s.on("unlink",async i=>{i=(0,E.normalizePath)(i),this.emit("mock:unlink",i),C("watcher:unlink",i)}),this.mockWatcher=s}watchDeps(){let t=[];this.depsWatcher=ye.default.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=(0,E.normalizePath)(r);let n=this.moduleDeps.get(r);n&&n.forEach(s=>{this.emit("mock:update",s)})}),this.depsWatcher.on("unlink",r=>{r=(0,E.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=ke(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.default?c=i.default:(c=[],Object.keys(i).forEach(a=>{v(i[a])?c.push(...i[a]):c.push(i[a])})),v(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,Xe.pathToFileURL)(s)}.mjs`;await ie.default.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ie.default.unlinkSync(i)}catch{}}}else{t=ge.default.resolve(this.cwd,t);let s=ge.default.extname(t),i=ie.default.realpathSync(t),c=s in N.extensions?s:".js",a=N.extensions[c];N.extensions[c]=(w,b)=>{b===i?w._compile(r,b):a(w,b)},delete N.cache[N.resolve(t)];let m=N(t);return N.extensions[c]=a,m.__esModule?m:{default:m}}}async transformWithEsbuild(t,r){var n;try{let s=await(0,Ye.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:[X(this.options.alias),Q,K,V]});return{code:s.outputFiles[0].text,deps:((n=s.metafile)==null?void 0:n.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}};var tt=f(require("cookies"),1),he=require("path-to-regexp"),ot=f(require("picocolors"),1),rt=require("ws");function ve(e,o,t,r){var I;let n=new Map,s=new Map,i=new WeakMap,c=p=>{let l=s.get(p);return!l&&s.set(p,l=new Map),l},a=(p,l)=>{let u=p.get(l);return!u&&p.set(l,u=new rt.WebSocketServer({noServer:!0})),u},m=(p,l)=>{let u=n.get(p);!u&&n.set(p,u=new Set),u.add(l)},w=(p,l,u,d,k,g)=>{var y;try{(y=u.setup)==null||y.call(u,l,d),l.on("close",()=>p.delete(k))}catch(O){W.error(`${ot.default.red("[websocket server error]")} ${g}
51
- `,O)}},b=(p,l,u,d)=>{p.emit("connection",l,u),l.on("close",()=>{let k=d.findIndex(g=>g.ws===l);k!==-1&&d.splice(k,1)})},H=(p,l,u,d,k)=>{let{cleanupList:g,connectionList:y,context:O}=i.get(l);et(g),y.forEach(({ws:j})=>j.removeAllListeners()),l.removeAllListeners(),w(p,l,u,O,d,k),y.forEach(({ws:j,req:L})=>b(l,j,L,y))};(I=e.on)==null||I.call(e,"mock:update-end",p=>{if(!n.has(p))return;let l=n.get(p);if(l)for(let u of l.values())for(let d of e.mockData[u]){if(!d.ws||d.__filepath__!==p)return;let k=c(u);for(let[g,y]of k.entries())H(k,y,d,g,p)}}),o==null||o.on("upgrade",(p,l,u)=>{let{pathname:d,query:k}=D(p.url);if(!d||t.length===0||!t.some(x=>re(x,p.url)))return;let g=e.mockData,y=Object.keys(g).find(x=>(0,he.pathToRegexp)(x).test(d));if(!y)return;let O=g[y].find(x=>x.url&&x.ws&&(0,he.pathToRegexp)(x.url).test(d));if(!O)return;let j=O.__filepath__;m(j,y);let L=c(y),$=a(L,d),T=i.get($);if(!T){let x=[],xe={onCleanup:st=>x.push(st)};T={cleanupList:x,context:xe,connectionList:[]},i.set($,T),w(L,$,O,xe,d,j)}let h=p,U=new tt.default(p,p,r),{query:nt}=D(p.headers.referer||"");h.query=k,h.refererQuery=nt,h.params=q(y,d),h.getCookie=U.get.bind(U),$.handleUpgrade(h,l,u,x=>{C(`websocket-mock: ${p.url} connected`),T.connectionList.push({req:h,ws:x}),b($,x,h,T.connectionList)})}),o==null||o.on("close",()=>{for(let p of s.values()){for(let l of p.values()){let u=i.get(l);et(u.cleanupList),l.close()}p.clear()}s.clear(),n.clear()})}function et(e){let o;for(;o=e.shift();)o==null||o()}async function Me(e,o,t,r){let n=new ce({include:S(o.include),exclude:S(o.exclude),define:G(e),alias:e.resolve.alias});n.load(),n.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),t==null||t.on("close",()=>n.close());let{httpProxies:s}=oe(e.server.proxy||{}),i=S(o.prefix);return ve(n,t,S(o.wsPrefix),o.cookiesOptions),fe(n,{formidableOptions:o.formidableOptions,proxies:[...i,...s],cookiesOptions:o.cookiesOptions})}function be({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},m=[_t(a)];return a.build&&m.push(Dt(a)),m}function Dt(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 Ne(this,o,e)}}}function _t(e){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",config(t){var s;let r=S(e.wsPrefix);if(r.length===0||!((s=t.server)!=null&&s.proxy)||Object.keys(t.server.proxy).length===0)return;let n={};Object.keys(t.server.proxy).forEach(i=>{r.includes(i)||(n[i]=t.server.proxy[i])}),t.server.proxy=n},configResolved(t){o=t,t.logger.warn("")},async configureServer({middlewares:t,config:r,httpServer:n,ws:s}){let i=await Me(r,e,n,s);t.use(i)},async configurePreviewServer({middlewares:t,httpServer:r}){let n=await Me(o,e,r);t.use(n)}}}function Et(e){return e}function It(e){return t=>(v(t)?t=t.map(r=>e(r)||r):t=e(t)||t,t)}var Lt=be;0&&(module.exports={baseMiddleware,createDefineMock,defineMock,mockDevServerPlugin,mockWebSocket,transformMockData});
45
+ export default transformMockData(mockList);`}async function xt(e,o,t){var r;try{let n=await(0,Te.build)({entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[ne(t),te,oe,re]});return{code:n.outputFiles[0].text,deps:((r=n.metafile)==null?void 0:r.inputs)||{}}}catch(n){console.error(n)}return{code:"",deps:{}}}var de=require("buffer"),ze=f(require("cookies"),1),Ge=f(require("http-status"),1),Qe=f(require("lodash.sortby"),1),B=f(require("mime-types"),1),fe=require("path-to-regexp"),j=f(require("picocolors"),1);var ie=f(require("co-body"),1),Ue=f(require("formidable"),1);async function Ae(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 ie.default.json(e);if(r.startsWith("application/x-www-form-urlencoded"))return await ie.default.form(e);if(r.startsWith("text/plain"))return await ie.default.text(e);if(r.startsWith("multipart/form-data"))return await wt(e,o)}catch(s){console.error(s)}}async function wt(e,o){let t=(0,Ue.default)(o);return new Promise((r,n)=>{t.parse(e,(s,i,c)=>{if(s){n(s);return}r({...i,...c})})})}function Je(e,o){return _(e.headers,o.headers)&&_(e.body,o.body)&&_(e.params,o.params)&&_(e.query,o.query)&&_(e.refererQuery,o.refererQuery)}function _(e,o){if(!o)return!0;for(let t in o)if(!qe(e[t],o[t]))return!1;return!0}function qe(e,o){if(M(e)&&M(o)){let t=new Set;return o.every(r=>e.some((n,s)=>{if(t.has(s))return!1;let i=qe(n,r);return i&&t.add(s),i}))}return K(e)&&K(o)?_(e,o):e===o}var St=/:/g;function ke(e,{formidableOptions:o={},proxies:t,cookiesOptions:r}){return async function(n,s,i){let c=Date.now(),{query:a,pathname:u}=D(n.url);if(!u||t.length===0||!t.some(h=>Y(h,n.url)))return i();let v=e.mockData,x=(0,Qe.default)(Object.keys(v),h=>{var U;return((U=h.match(St))==null?void 0:U.length)||0}).find(h=>(0,fe.pathToRegexp)(h).test(u));if(!x)return i();let{query:H}=D(n.headers.referer||""),I=await Ae(n,o),p=new ze.default(n,s,r),l=p.get.bind(p),m=n.method.toUpperCase(),d=Ot(v[x],{pathname:u,method:m,request:{query:a,refererQuery:H,body:I,headers:n.headers,getCookie:l}});if(!d)return i();W("middleware: ",m,n.url);let k=n,g=s;k.body=I,k.query=a,k.refererQuery=H,k.params=J(d.url,u),k.getCookie=l,g.setCookie=p.set.bind(p);let{body:y,delay:O,type:R="json",response:L,status:$=200,statusText:T}=d;if(me(g,$,T),await Pt(k,g,d),await jt(k,g,d),y){try{let h=C(y)?await y(k):y;await Be(c,O),Rt(g,h,R)}catch(h){P.error(`${j.default.red("[body error]")} ${n.url}
46
+ `,`file: ${j.default.cyan(d.__filepath__)}`,h),me(g,500),s.end("")}return}if(L){try{await Be(c,O),await L(k,g,i)}catch(h){P.error(`${j.default.red("[response error]")} ${n.url}
47
+ `,`file: ${j.default.cyan(d.__filepath__)}`,h),me(g,500),s.end("")}return}s.end("")}}function Ot(e,{pathname:o,method:t,request:r}){return e.find(n=>{if(!o||!n||!n.url||n.ws===!0||!(n.method?M(n.method)?n.method:[n.method]:["GET","POST"]).includes(t))return!1;let i=(0,fe.pathToRegexp)(n.url).test(o);if(i&&n.validator){let c=J(n.url,o);if(C(n.validator))return n.validator({params:c,...r});try{return Je({params:c,...r},n.validator)}catch(a){return P.error(`${j.default.red("[validator error]")} ${o}
48
+ `,`file: ${j.default.cyan(n.__filepath__)}`,a),!1}}return i})}function me(e,o=200,t){e.statusCode=o,e.statusMessage=t||Ct(o)}async function Pt(e,o,t){let{headers:r,type:n="json"}=t,s=t.__filepath__,i=B.contentType(n)||B.contentType(B.lookup(n)||"");if(i&&o.setHeader("Content-Type",i),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock-Power-By","vite-plugin-mock-dev-server"),o.setHeader("X-File-Path",s),!!r)try{let c=C(r)?await r(e):r;Object.keys(c).forEach(a=>{o.setHeader(a,c[a])})}catch(c){P.error(`${j.default.red("[headers error]")} ${e.url}
49
+ `,c)}}async function jt(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(M(s)){let[i,c]=s;o.setCookie(n,i,c)}else o.setCookie(n,s)})}catch(r){P.error(`${j.default.red("[cookies error]")} ${e.url}
50
+ `,r)}}function Rt(e,o,t){if(De(o))o.pipe(e);else if(de.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"?de.Buffer.from(r):r)}}async function Be(e,o){if(!o||typeof o=="number"&&o<=0||M(o)&&o.length!==2)return;let t=0;if(M(o)){let[r,n]=o;t=Math.floor(Math.random()*(n-r+1))+r}else t=o-(Date.now()-e);t>0&&await _e(t)}function Ct(e){return Ge.default[e]||"Unknown"}var Ke=f(require("events"),1),ce=f(require("fs"),1),Xe=require("module"),ye=f(require("path"),1),Ye=require("url"),he=f(require("chokidar"),1),Ze=require("esbuild"),et=f(require("fast-glob"),1),E=require("vite");var Ve=f(require("lodash.sortby"),1);function ge(e){let o=[];for(let[,r]of e.entries())r&&(M(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}=D(r.url),i=t[n]??(t[n]=[]),c={...r,url:n};if(c.ws!==!0){let a=c.validator;le(s)||(C(a)?c.validator=function(u){return _(u.query,s)&&a(u)}: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,Ve.default)(t[r],n=>{if(n.ws===!0)return 0;let{validator:s}=n;return!s||le(s)?2:C(s)?0:1/Object.keys(s).reduce((c,a)=>c+Wt(s[a]),0)})}),t}function Wt(e){return e?Object.keys(e).length:0}var Dt=Ee(b),N=(0,Xe.createRequire)(Dt),ae=class extends Ke.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=A(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}load(){let{include:t,exclude:r}=this.options,n=(0,E.createFilter)(t,r,{resolve:!1});(0,et.default)(t,{cwd:this.cwd}).then(i=>Promise.all(i.filter(n).map(c=>this.loadMock(c)))).then(()=>this.updateMockList()),this.watchMockEntry(),this.watchDeps();let s=null;this.on("mock:update",async i=>{n(i)&&(await this.loadMock(i),s&&clearImmediate(s),s=setImmediate(()=>{this.updateMockList(),this.emit("mock:update-end",i),s=null}))}),this.on("mock:unlink",async i=>{n(i)&&(this.moduleCache.delete(i),this.updateMockList(),this.emit("mock:update-end",i))})}watchMockEntry(){let{include:t}=this.options,[r,...n]=t,s=he.default.watch(r,{ignoreInitial:!0,cwd:this.cwd});n.length>0&&n.forEach(i=>s.add(i)),s.on("add",async i=>{i=(0,E.normalizePath)(i),this.emit("mock:update",i),W("watcher:add",i)}),s.on("change",async i=>{i=(0,E.normalizePath)(i),this.emit("mock:update",i),W("watcher:change",i)}),s.on("unlink",async i=>{i=(0,E.normalizePath)(i),this.emit("mock:unlink",i),W("watcher:unlink",i)}),this.mockWatcher=s}watchDeps(){let t=[];this.depsWatcher=he.default.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=(0,E.normalizePath)(r);let n=this.moduleDeps.get(r);n&&n.forEach(s=>{this.emit("mock:update",s)})}),this.depsWatcher.on("unlink",r=>{r=(0,E.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=ge(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.default?c=i.default:(c=[],Object.keys(i).forEach(a=>{M(i[a])?c.push(...i[a]):c.push(i[a])})),M(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,Ye.pathToFileURL)(s)}.mjs`;await ce.default.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ce.default.unlinkSync(i)}catch{}}}else{t=ye.default.resolve(this.cwd,t);let s=ye.default.extname(t),i=ce.default.realpathSync(t),c=s in N.extensions?s:".js",a=N.extensions[c];N.extensions[c]=(v,x)=>{x===i?v._compile(r,x):a(v,x)},delete N.cache[N.resolve(t)];let u=N(t);return N.extensions[c]=a,u.__esModule?u:{default:u}}}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:[ne(this.options.alias),te,re,oe]});return{code:s.outputFiles[0].text,deps:((n=s.metafile)==null?void 0:n.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}};var ot=f(require("cookies"),1),ve=require("path-to-regexp"),rt=f(require("picocolors"),1),nt=require("ws");function Me(e,o,t,r){var I;let n=new Map,s=new Map,i=new WeakMap,c=p=>{let l=s.get(p);return!l&&s.set(p,l=new Map),l},a=(p,l)=>{let m=p.get(l);return!m&&p.set(l,m=new nt.WebSocketServer({noServer:!0})),m},u=(p,l)=>{let m=n.get(p);!m&&n.set(p,m=new Set),m.add(l)},v=(p,l,m,d,k,g)=>{var y;try{(y=m.setup)==null||y.call(m,l,d),l.on("close",()=>p.delete(k))}catch(O){P.error(`${rt.default.red("[websocket server error]")} ${g}
51
+ `,O)}},x=(p,l,m,d)=>{p.emit("connection",l,m),l.on("close",()=>{let k=d.findIndex(g=>g.ws===l);k!==-1&&d.splice(k,1)})},H=(p,l,m,d,k)=>{let{cleanupList:g,connectionList:y,context:O}=i.get(l);tt(g),y.forEach(({ws:R})=>R.removeAllListeners()),l.removeAllListeners(),v(p,l,m,O,d,k),y.forEach(({ws:R,req:L})=>x(l,R,L,y))};(I=e.on)==null||I.call(e,"mock:update-end",p=>{if(!n.has(p))return;let l=n.get(p);if(l)for(let m of l.values())for(let d of e.mockData[m]){if(!d.ws||d.__filepath__!==p)return;let k=c(m);for(let[g,y]of k.entries())H(k,y,d,g,p)}}),o==null||o.on("upgrade",(p,l,m)=>{let{pathname:d,query:k}=D(p.url);if(!d||t.length===0||!t.some(w=>Y(w,p.url)))return;let g=e.mockData,y=Object.keys(g).find(w=>(0,ve.pathToRegexp)(w).test(d));if(!y)return;let O=g[y].find(w=>w.url&&w.ws&&(0,ve.pathToRegexp)(w.url).test(d));if(!O)return;let R=O.__filepath__;u(R,y);let L=c(y),$=a(L,d),T=i.get($);if(!T){let w=[],we={onCleanup:it=>w.push(it)};T={cleanupList:w,context:we,connectionList:[]},i.set($,T),v(L,$,O,we,d,R)}let h=p,U=new ot.default(p,p,r),{query:st}=D(p.headers.referer||"");h.query=k,h.refererQuery=st,h.params=J(y,d),h.getCookie=U.get.bind(U),$.handleUpgrade(h,l,m,w=>{W(`websocket-mock: ${p.url} connected`),T.connectionList.push({req:h,ws:w}),x($,w,h,T.connectionList)})}),o==null||o.on("close",()=>{for(let p of s.values()){for(let l of p.values()){let m=i.get(l);tt(m.cleanupList),l.close()}p.clear()}s.clear(),n.clear()})}function tt(e){let o;for(;o=e.shift();)o==null||o()}async function be(e,o,t,r){let n=new ae({include:S(o.include),exclude:S(o.exclude),define:ee(e),alias:e.resolve.alias});n.load(),n.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),t==null||t.on("close",()=>n.close());let{httpProxies:s}=X(e.server.proxy||{}),i=S(o.prefix);return Me(n,t,S(o.wsPrefix),o.cookiesOptions),ke(n,{formidableOptions:o.formidableOptions,proxies:[...i,...s],cookiesOptions:o.cookiesOptions})}function xe({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},u=[Et(a)];return a.build&&u.push(_t(a)),u}function _t(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 He(this,o,e)}}}function Et(e){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",config(t){var s;let r=S(e.wsPrefix);if(r.length===0||!((s=t.server)!=null&&s.proxy)||Object.keys(t.server.proxy).length===0)return;let n={};Object.keys(t.server.proxy).forEach(i=>{r.includes(i)||(n[i]=t.server.proxy[i])}),t.server.proxy=n},configResolved(t){o=t,t.logger.warn("")},async configureServer({middlewares:t,config:r,httpServer:n,ws:s}){let i=await be(r,e,n,s);t.use(i)},async configurePreviewServer({middlewares:t,httpServer:r}){let n=await be(o,e,r);t.use(n)}}}function It(e){return e}function Lt(e){return t=>(M(t)?t=t.map(r=>e(r)||r):t=e(t)||t,t)}var $t=xe;0&&(module.exports={baseMiddleware,createDefineMock,defineMock,mockDevServerPlugin,mockWebSocket,transformMockData});
package/dist/index.d.ts CHANGED
@@ -402,8 +402,19 @@ interface MockWebsocketItem extends MockBaseItem {
402
402
  }
403
403
  interface WebSocketSetupContext {
404
404
  /**
405
+ * When defining WSS, you may perform some automatic or looping tasks.
406
+ * However, when hot updating, the plugin will re-execute `setup()`,
407
+ * which may result in duplicate registration of listening events and looping tasks
408
+ * such as setTimeout. You can use `onCleanup()` to clear these automatic or looping tasks.
409
+ *
405
410
  * 当你在定义 WSS 时,可能会执行一些自动任务或循环任务,
406
- * 但是当热更新时,插件内部会重新执行 setup() ,这可能导致出现
411
+ * 但是当热更新时,插件内部会重新执行 setup()
412
+ * 这可能导致出现 重复注册监听事件 和 循环任务如 `setTimeout` 等。
413
+ * 通过 `onCleanup()` 可以来清除这些自动任务或循环任务。
414
+ * @example
415
+ * ``` ts
416
+ * onCleanup(() => clearTimeout(timeId))
417
+ * ```
407
418
  */
408
419
  onCleanup: (cleanup: () => void) => void;
409
420
  }
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import Be from"fs";import Z from"fs/promises";import N from"path";import{build as Je}from"esbuild";import ze from"fast-glob";import Ge from"is-core-module";import{createFilter as Qe,normalizePath as Ve}from"vite";var le="vite-plugin-mock-dev-server",ue="1.1.14";var Ie=/import\.meta\.env\.(.+)/;function J(t){let o={},e=process.env.NODE_ENV||t.mode;Object.assign(o,{"process.env.NODE_ENV":JSON.stringify(e),"global.process.env.NODE_ENV":JSON.stringify(e),"globalThis.process.env.NODE_ENV":JSON.stringify(e),__vite_process_env_NODE_ENV:JSON.stringify(e)});let r={},n={};for(let c in t.define){let a=t.define[c];r[c]=typeof a=="string"?a:JSON.stringify(a);let m=c.match(Ie);m&&(n[m[1]]=`__vite__define__${r[c]}`)}let s={},i={};s["import.meta.hot"]="undefined";for(let c in t.env)s[`import.meta.env.${c}`]=JSON.stringify(t.env[c]);return Object.assign(i,{"import.meta.env":JSON.stringify({...t.env,...n}).replace(/"__vite__define__(.+?)"([,}])/g,(c,a,m)=>`${a.replace(/(^\\")|(\\"$)/g,'"')}${m}`)}),{...s,...r,...i,...o}}import me from"fs/promises";import Le from"path";import $e from"json5";var z={name:"externalize-deps",setup(t){t.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!Le.isAbsolute(o))return{external:!0}})}},G={name:"json5-loader",setup(t){t.onLoad({filter:/\.json5$/},async({path:o})=>{let e=await me.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify($e.parse(e))}`,loader:"js"}})}},Q={name:"json-loader",setup(t){t.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await me.readFile(o,"utf-8")}`,loader:"js"}))}},V=t=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:e})=>{let r=t.find(({find:c})=>Te(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 Te(t,o){return t instanceof RegExp?t.test(o):o.length<t.length?!1:o===t?!0:o.startsWith(`${t}/`)}import te from"fs";import oe from"path";import{parse as Fe}from"querystring";import{URL as Ne,fileURLToPath as He}from"url";import Ae from"debug";import{match as Ue}from"path-to-regexp";import de from"picocolors";var h=t=>Array.isArray(t),j=t=>typeof t=="function",K=t=>Object.prototype.toString.call(t)==="[object Object]",re=t=>K(t)&&Object.keys(t).length===0,qe=t=>t!==null&&typeof t=="object"&&typeof t.pipe=="function",fe=t=>qe(t)&&t.readable!==!1&&typeof t._read=="function"&&typeof t._readableState=="object";function ke(t){return new Promise(o=>setTimeout(o,t))}function ge(t){return oe.dirname(He(t))}var C=Ae("vite:plugin-mock-dev-server"),S=t=>h(t)?t:t==null?[]:[t],R={info(...t){console.info(de.cyan("mock-dev-server: "),...t)},error(...t){console.error(`
1
+ import Be from"fs";import Z from"fs/promises";import N from"path";import{build as ze}from"esbuild";import Ge from"fast-glob";import Qe from"is-core-module";import{createFilter as Ve,normalizePath as Ke}from"vite";var ue="vite-plugin-mock-dev-server",me="1.1.15";import ne from"picocolors";import te from"fs";import oe from"path";import{parse as Le}from"querystring";import{URL as $e,fileURLToPath as Te}from"url";import Fe from"debug";import{match as Ne}from"path-to-regexp";import de from"picocolors";var v=t=>Array.isArray(t),C=t=>typeof t=="function",B=t=>Object.prototype.toString.call(t)==="[object Object]",re=t=>B(t)&&Object.keys(t).length===0,He=t=>t!==null&&typeof t=="object"&&typeof t.pipe=="function",fe=t=>He(t)&&t.readable!==!1&&typeof t._read=="function"&&typeof t._readableState=="object";function ke(t){return new Promise(o=>setTimeout(o,t))}function ge(t){return oe.dirname(Te(t))}var R=Fe("vite:plugin-mock-dev-server"),S=t=>v(t)?t:t==null?[]:[t],P={info(...t){console.info(de.cyan("mock-dev-server: "),...t)},error(...t){console.error(`
2
2
  `,de.cyan("mock-dev-server: "),...t,`
3
- `)}};function A(t,o,e){for(let n of o){let s=oe.join(t,n);if(te.existsSync(s)&&te.statSync(s).isFile()){let i=e!=null&&e.pathOnly?s:te.readFileSync(s,"utf-8");if(!(e!=null&&e.predicate)||e.predicate(i))return i}}let r=oe.dirname(t);if(r!==t&&(!(e!=null&&e.rootDir)||r.startsWith(e==null?void 0:e.rootDir)))return A(r,o,e)}var X=(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 Y(t,o){return t[0]==="^"&&new RegExp(t).test(o)||o.startsWith(t)}function U(t,o){return(Ue(t,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}function W(t){let o=new Ne(t,"http://example.com"),e=decodeURIComponent(o.pathname),r=Fe(o.search.replace(/^\?/,""));return{pathname:e,query:r}}async function ye(t,o,e){let r=S(e.include),n=S(e.exclude),s=J(o),{httpProxies:i}=X(o.server.proxy||{});i.push(...S(e.prefix));let c=S(e.wsPrefix),a={};try{let u=A(o.root,["package.json"]);u&&(a=JSON.parse(u))}catch{}let m=e.build.dist,w=await Ze(process.cwd(),r,n),v=N.join(o.root,`mock-data-${Date.now()}.js`);await Z.writeFile(v,w,"utf-8");let{code:F,deps:E}=await et(v,s,o.resolve.alias),p=Ke(E);await Z.unlink(v);let l=[{filename:N.join(m,"mock-data.js"),source:F},{filename:N.join(m,"index.js"),source:Ye(i,c,e.cookiesOptions,e.build.serverPort)},{filename:N.join(m,"package.json"),source:Xe(a,p)}];try{if(N.isAbsolute(m)){await Z.rm(m,{recursive:!0}),Be.mkdirSync(m,{recursive:!0});for(let{filename:u,source:d}of l)await Z.writeFile(u,d,"utf-8")}else for(let{filename:u,source:d}of l)t.emitFile({type:"asset",fileName:u,source:d})}catch{}}function Ke(t){let o=new Set,e=[le,"connect","cors"];return Object.keys(t).forEach(r=>{t[r].imports.filter(s=>s.external).map(s=>s.path).forEach(s=>{!e.includes(s)&&!Ge(s)&&o.add(s)})}),Array.from(o)}function Xe(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":`^${ue}`,cors:"^2.8.5"},pnpm:{peerDependencyRules:{ignoreMissing:["vite"]}}};return o.forEach(i=>{s.dependencies[i]=n[i]||"latest"}),JSON.stringify(s,null,2)}function Ye(t,o,e={},r=8080){return`import { createServer } from 'node:http';
3
+ `)}};function A(t,o,e){for(let n of o){let s=oe.join(t,n);if(te.existsSync(s)&&te.statSync(s).isFile()){let i=e!=null&&e.pathOnly?s:te.readFileSync(s,"utf-8");if(!(e!=null&&e.predicate)||e.predicate(i))return i}}let r=oe.dirname(t);if(r!==t&&(!(e!=null&&e.rootDir)||r.startsWith(e==null?void 0:e.rootDir)))return A(r,o,e)}var z=(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 G(t,o){return t[0]==="^"&&new RegExp(t).test(o)||o.startsWith(t)}function U(t,o){return(Ne(t,{decode:decodeURIComponent})(o)||{params:{}}).params||{}}function W(t){let o=new $e(t,"http://example.com"),e=decodeURIComponent(o.pathname),r=Le(o.search.replace(/^\?/,""));return{pathname:e,query:r}}var Ae=/import\.meta\.env\.(.+)/;function Q(t){let o={},e=process.env.NODE_ENV||t.mode;Object.assign(o,{"process.env.NODE_ENV":JSON.stringify(e),"global.process.env.NODE_ENV":JSON.stringify(e),"globalThis.process.env.NODE_ENV":JSON.stringify(e),__vite_process_env_NODE_ENV:JSON.stringify(e)});let r={},n={},s=[];for(let a in t.define){let u=t.define[a];if(typeof u=="string")try{JSON.parse(u),r[a]=u}catch{s.push(a)}else r[a]=JSON.stringify(u);let h=a.match(Ae);h&&r[a]&&(n[h[1]]=`__vite__define__${r[a]}`)}s.length&&P.error(`${ne.yellow("[warn]")} The following keys: ${ne.yellow(ne.underline(s.join(", ")))} declared in 'define' cannot be parsed as regular code snippets.`);let i={},c={};i["import.meta.hot"]="undefined";for(let a in t.env)i[`import.meta.env.${a}`]=JSON.stringify(t.env[a]);return Object.assign(c,{"import.meta.env":JSON.stringify({...t.env,...n}).replace(/"__vite__define__(.+?)"([,}])/g,(a,u,h)=>`${u.replace(/(^\\")|(\\"$)/g,'"')}${h}`)}),{...i,...r,...c,...o}}import ye from"fs/promises";import Ue from"path";import Je from"json5";var V={name:"externalize-deps",setup(t){t.onResolve({filter:/.*/},({path:o})=>{if(o[0]!=="."&&!Ue.isAbsolute(o))return{external:!0}})}},K={name:"json5-loader",setup(t){t.onLoad({filter:/\.json5$/},async({path:o})=>{let e=await ye.readFile(o,"utf-8");return{contents:`export default ${JSON.stringify(Je.parse(e))}`,loader:"js"}})}},X={name:"json-loader",setup(t){t.onLoad({filter:/\.json$/},async({path:o})=>({contents:`export default ${await ye.readFile(o,"utf-8")}`,loader:"js"}))}},Y=t=>({name:"alias-plugin",setup(o){o.onResolve({filter:/.*/},async({path:e})=>{let r=t.find(({find:c})=>qe(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 qe(t,o){return t instanceof RegExp?t.test(o):o.length<t.length?!1:o===t?!0:o.startsWith(`${t}/`)}async function he(t,o,e){let r=S(e.include),n=S(e.exclude),s=Q(o),{httpProxies:i}=z(o.server.proxy||{});i.push(...S(e.prefix));let c=S(e.wsPrefix),a={};try{let m=A(o.root,["package.json"]);m&&(a=JSON.parse(m))}catch{}let u=e.build.dist,h=await et(process.cwd(),r,n),M=N.join(o.root,`mock-data-${Date.now()}.js`);await Z.writeFile(M,h,"utf-8");let{code:F,deps:_}=await tt(M,s,o.resolve.alias),p=Xe(_);await Z.unlink(M);let l=[{filename:N.join(u,"mock-data.js"),source:F},{filename:N.join(u,"index.js"),source:Ze(i,c,e.cookiesOptions,e.build.serverPort)},{filename:N.join(u,"package.json"),source:Ye(a,p)}];try{if(N.isAbsolute(u)){await Z.rm(u,{recursive:!0}),Be.mkdirSync(u,{recursive:!0});for(let{filename:m,source:d}of l)await Z.writeFile(m,d,"utf-8")}else for(let{filename:m,source:d}of l)t.emitFile({type:"asset",fileName:m,source:d})}catch{}}function Xe(t){let o=new Set,e=[ue,"connect","cors"];return Object.keys(t).forEach(r=>{t[r].imports.filter(s=>s.external).map(s=>s.path).forEach(s=>{!e.includes(s)&&!Qe(s)&&o.add(s)})}),Array.from(o)}function Ye(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":`^${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 Ze(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,8 +24,8 @@ app.use(baseMiddleware({ mockData }, {
24
24
  server.listen(${r});
25
25
 
26
26
  console.log('listen: http://localhost:${r}');
27
- `}async function Ze(t,o,e){let r=await ze(o,{cwd:t}),n=Qe(o,e,{resolve:!1}),s=r.filter(n),i="",c="";return s.forEach((a,m)=>{let w=Ve(N.join(t,a));i+=`import * as m${m} from '${w}';
28
- `,c+=`m${m}, `}),`import { transformMockData } from 'vite-plugin-mock-dev-server';
27
+ `}async function et(t,o,e){let r=await Ge(o,{cwd:t}),n=Ve(o,e,{resolve:!1}),s=r.filter(n),i="",c="";return s.forEach((a,u)=>{let h=Ke(N.join(t,a));i+=`import * as m${u} from '${h}';
28
+ `,c+=`m${u}, `}),`import { transformMockData } from 'vite-plugin-mock-dev-server';
29
29
  ${i}
30
30
  const exporters = [${c}];
31
31
  const mockList = exporters.map((raw) => {
@@ -42,10 +42,10 @@ const mockList = exporters.map((raw) => {
42
42
  }
43
43
  return mockConfig
44
44
  });
45
- export default transformMockData(mockList);`}async function et(t,o,e){var r;try{let n=await Je({entryPoints:[t],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[V(e),z,G,Q]});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 be}from"buffer";import rt from"cookies";import nt from"http-status";import st from"lodash.sortby";import*as q from"mime-types";import{pathToRegexp as we}from"path-to-regexp";import _ from"picocolors";import ne from"co-body";import tt from"formidable";async function he(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 ne.json(t);if(r.startsWith("application/x-www-form-urlencoded"))return await ne.form(t);if(r.startsWith("text/plain"))return await ne.text(t);if(r.startsWith("multipart/form-data"))return await ot(t,o)}catch(s){console.error(s)}}async function ot(t,o){let e=tt(o);return new Promise((r,n)=>{e.parse(t,(s,i,c)=>{if(s){n(s);return}r({...i,...c})})})}function ve(t,o){return D(t.headers,o.headers)&&D(t.body,o.body)&&D(t.params,o.params)&&D(t.query,o.query)&&D(t.refererQuery,o.refererQuery)}function D(t,o){if(!o)return!0;for(let e in o)if(!Me(t[e],o[e]))return!1;return!0}function Me(t,o){if(h(t)&&h(o)){let e=new Set;return o.every(r=>t.some((n,s)=>{if(e.has(s))return!1;let i=Me(n,r);return i&&e.add(s),i}))}return K(t)&&K(o)?D(t,o):t===o}var it=/:/g;function Se(t,{formidableOptions:o={},proxies:e,cookiesOptions:r}){return async function(n,s,i){let c=Date.now(),{query:a,pathname:m}=W(n.url);if(!m||e.length===0||!e.some(y=>Y(y,n.url)))return i();let w=t.mockData,v=st(Object.keys(w),y=>{var H;return((H=y.match(it))==null?void 0:H.length)||0}).find(y=>we(y).test(m));if(!v)return i();let{query:F}=W(n.headers.referer||""),E=await he(n,o),p=new rt(n,s,r),l=p.get.bind(p),u=n.method.toUpperCase(),d=ct(w[v],{pathname:m,method:u,request:{query:a,refererQuery:F,body:E,headers:n.headers,getCookie:l}});if(!d)return i();C("middleware: ",u,n.url);let f=n,k=s;f.body=E,f.query=a,f.refererQuery=F,f.params=U(d.url,m),f.getCookie=l,k.setCookie=p.set.bind(p);let{body:g,delay:O,type:P="json",response:I,status:L=200,statusText:$}=d;if(se(k,L,$),await at(f,k,d),await pt(f,k,d),g){try{let y=j(g)?await g(f):g;await xe(c,O),lt(k,y,P)}catch(y){R.error(`${_.red("[body error]")} ${n.url}
46
- `,`file: ${_.cyan(d.__filepath__)}`,y),se(k,500),s.end("")}return}if(I){try{await xe(c,O),await I(f,k,i)}catch(y){R.error(`${_.red("[response error]")} ${n.url}
47
- `,`file: ${_.cyan(d.__filepath__)}`,y),se(k,500),s.end("")}return}s.end("")}}function ct(t,{pathname:o,method:e,request:r}){return t.find(n=>{if(!o||!n||!n.url||n.ws===!0||!(n.method?h(n.method)?n.method:[n.method]:["GET","POST"]).includes(e))return!1;let i=we(n.url).test(o);if(i&&n.validator){let c=U(n.url,o);if(j(n.validator))return n.validator({params:c,...r});try{return ve({params:c,...r},n.validator)}catch(a){return R.error(`${_.red("[validator error]")} ${o}
48
- `,`file: ${_.cyan(n.__filepath__)}`,a),!1}}return i})}function se(t,o=200,e){t.statusCode=o,t.statusMessage=e||ut(o)}async function at(t,o,e){let{headers:r,type:n="json"}=e,s=e.__filepath__,i=q.contentType(n)||q.contentType(q.lookup(n)||"");if(i&&o.setHeader("Content-Type",i),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock-Power-By","vite-plugin-mock-dev-server"),o.setHeader("X-File-Path",s),!!r)try{let c=j(r)?await r(t):r;Object.keys(c).forEach(a=>{o.setHeader(a,c[a])})}catch(c){R.error(`${_.red("[headers error]")} ${t.url}
49
- `,c)}}async function pt(t,o,{cookies:e}){if(e)try{let r=j(e)?await e(t):e;Object.keys(r).forEach(n=>{let s=r[n];if(h(s)){let[i,c]=s;o.setCookie(n,i,c)}else o.setCookie(n,s)})}catch(r){R.error(`${_.red("[cookies error]")} ${t.url}
50
- `,r)}}function lt(t,o,e){if(fe(o))o.pipe(t);else if(be.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"?be.from(r):r)}}async function xe(t,o){if(!o||typeof o=="number"&&o<=0||h(o)&&o.length!==2)return;let e=0;if(h(o)){let[r,n]=o;e=Math.floor(Math.random()*(n-r+1))+r}else e=o-(Date.now()-t);e>0&&await ke(e)}function ut(t){return nt[t]||"Unknown"}import ft from"events";import ie from"fs";import{createRequire as kt}from"module";import Pe from"path";import{pathToFileURL as gt}from"url";import je from"chokidar";import{build as yt}from"esbuild";import ht from"fast-glob";import{createFilter as vt,normalizePath as B}from"vite";import mt from"lodash.sortby";function Oe(t){let o=[];for(let[,r]of t.entries())r&&(h(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}=W(r.url),i=e[n]??(e[n]=[]),c={...r,url:n};if(c.ws!==!0){let a=c.validator;re(s)||(j(a)?c.validator=function(m){return D(m.query,s)&&a(m)}: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]=mt(e[r],n=>{if(n.ws===!0)return 0;let{validator:s}=n;return!s||re(s)?2:j(s)?0:1/Object.keys(s).reduce((c,a)=>c+dt(s[a]),0)})}),e}function dt(t){return t?Object.keys(t).length:0}var Mt=ge(import.meta.url),T=kt(Mt),ee=class extends ft{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=A(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}load(){let{include:e,exclude:r}=this.options,n=vt(e,r,{resolve:!1});ht(e,{cwd:this.cwd}).then(i=>Promise.all(i.filter(n).map(c=>this.loadMock(c)))).then(()=>this.updateMockList()),this.watchMockEntry(),this.watchDeps();let s=null;this.on("mock:update",async i=>{n(i)&&(await this.loadMock(i),s&&clearImmediate(s),s=setImmediate(()=>{this.updateMockList(),this.emit("mock:update-end",i),s=null}))}),this.on("mock:unlink",async i=>{n(i)&&(this.moduleCache.delete(i),this.updateMockList(),this.emit("mock:update-end",i))})}watchMockEntry(){let{include:e}=this.options,[r,...n]=e,s=je.watch(r,{ignoreInitial:!0,cwd:this.cwd});n.length>0&&n.forEach(i=>s.add(i)),s.on("add",async i=>{i=B(i),this.emit("mock:update",i),C("watcher:add",i)}),s.on("change",async i=>{i=B(i),this.emit("mock:update",i),C("watcher:change",i)}),s.on("unlink",async i=>{i=B(i),this.emit("mock:unlink",i),C("watcher:unlink",i)}),this.mockWatcher=s}watchDeps(){let e=[];this.depsWatcher=je.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=B(r);let n=this.moduleDeps.get(r);n&&n.forEach(s=>{this.emit("mock:update",s)})}),this.depsWatcher.on("unlink",r=>{r=B(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=Oe(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.default?c=i.default:(c=[],Object.keys(i).forEach(a=>{h(i[a])?c.push(...i[a]):c.push(i[a])})),h(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=`${gt(s)}.mjs`;await ie.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ie.unlinkSync(i)}catch{}}}else{e=Pe.resolve(this.cwd,e);let s=Pe.extname(e),i=ie.realpathSync(e),c=s in T.extensions?s:".js",a=T.extensions[c];T.extensions[c]=(w,v)=>{v===i?w._compile(r,v):a(w,v)},delete T.cache[T.resolve(e)];let m=T(e);return T.extensions[c]=a,m.__esModule?m:{default:m}}}async transformWithEsbuild(e,r){var n;try{let s=await yt({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:[V(this.options.alias),z,Q,G]});return{code:s.outputFiles[0].text,deps:((n=s.metafile)==null?void 0:n.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}};import bt from"cookies";import{pathToRegexp as Ce}from"path-to-regexp";import xt from"picocolors";import{WebSocketServer as wt}from"ws";function We(t,o,e,r){var E;let n=new Map,s=new Map,i=new WeakMap,c=p=>{let l=s.get(p);return!l&&s.set(p,l=new Map),l},a=(p,l)=>{let u=p.get(l);return!u&&p.set(l,u=new wt({noServer:!0})),u},m=(p,l)=>{let u=n.get(p);!u&&n.set(p,u=new Set),u.add(l)},w=(p,l,u,d,f,k)=>{var g;try{(g=u.setup)==null||g.call(u,l,d),l.on("close",()=>p.delete(f))}catch(O){R.error(`${xt.red("[websocket server error]")} ${k}
51
- `,O)}},v=(p,l,u,d)=>{p.emit("connection",l,u),l.on("close",()=>{let f=d.findIndex(k=>k.ws===l);f!==-1&&d.splice(f,1)})},F=(p,l,u,d,f)=>{let{cleanupList:k,connectionList:g,context:O}=i.get(l);Re(k),g.forEach(({ws:P})=>P.removeAllListeners()),l.removeAllListeners(),w(p,l,u,O,d,f),g.forEach(({ws:P,req:I})=>v(l,P,I,g))};(E=t.on)==null||E.call(t,"mock:update-end",p=>{if(!n.has(p))return;let l=n.get(p);if(l)for(let u of l.values())for(let d of t.mockData[u]){if(!d.ws||d.__filepath__!==p)return;let f=c(u);for(let[k,g]of f.entries())F(f,g,d,k,p)}}),o==null||o.on("upgrade",(p,l,u)=>{let{pathname:d,query:f}=W(p.url);if(!d||e.length===0||!e.some(M=>Y(M,p.url)))return;let k=t.mockData,g=Object.keys(k).find(M=>Ce(M).test(d));if(!g)return;let O=k[g].find(M=>M.url&&M.ws&&Ce(M.url).test(d));if(!O)return;let P=O.__filepath__;m(P,g);let I=c(g),L=a(I,d),$=i.get(L);if(!$){let M=[],ae={onCleanup:Ee=>M.push(Ee)};$={cleanupList:M,context:ae,connectionList:[]},i.set(L,$),w(I,L,O,ae,d,P)}let y=p,H=new bt(p,p,r),{query:_e}=W(p.headers.referer||"");y.query=f,y.refererQuery=_e,y.params=U(g,d),y.getCookie=H.get.bind(H),L.handleUpgrade(y,l,u,M=>{C(`websocket-mock: ${p.url} connected`),$.connectionList.push({req:y,ws:M}),v(L,M,y,$.connectionList)})}),o==null||o.on("close",()=>{for(let p of s.values()){for(let l of p.values()){let u=i.get(l);Re(u.cleanupList),l.close()}p.clear()}s.clear(),n.clear()})}function Re(t){let o;for(;o=t.shift();)o==null||o()}async function ce(t,o,e,r){let n=new ee({include:S(o.include),exclude:S(o.exclude),define:J(t),alias:t.resolve.alias});n.load(),n.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),e==null||e.on("close",()=>n.close());let{httpProxies:s}=X(t.server.proxy||{}),i=S(o.prefix);return We(n,e,S(o.wsPrefix),o.cookiesOptions),Se(n,{formidableOptions:o.formidableOptions,proxies:[...i,...s],cookiesOptions:o.cookiesOptions})}function De({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},m=[Ot(a)];return a.build&&m.push(St(a)),m}function St(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 ye(this,o,t)}}}function Ot(t){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",config(e){var s;let r=S(t.wsPrefix);if(r.length===0||!((s=e.server)!=null&&s.proxy)||Object.keys(e.server.proxy).length===0)return;let n={};Object.keys(e.server.proxy).forEach(i=>{r.includes(i)||(n[i]=e.server.proxy[i])}),e.server.proxy=n},configResolved(e){o=e,e.logger.warn("")},async configureServer({middlewares:e,config:r,httpServer:n,ws:s}){let i=await ce(r,t,n,s);e.use(i)},async configurePreviewServer({middlewares:e,httpServer:r}){let n=await ce(o,t,r);e.use(n)}}}function ir(t){return t}function cr(t){return e=>(h(e)?e=e.map(r=>t(r)||r):e=t(e)||e,e)}var ur=De;export{Se as baseMiddleware,cr as createDefineMock,ur as default,ir as defineMock,De as mockDevServerPlugin,We as mockWebSocket,Oe as transformMockData};
45
+ export default transformMockData(mockList);`}async function tt(t,o,e){var r;try{let n=await ze({entryPoints:[t],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,metafile:!0,format:"esm",define:o,plugins:[Y(e),V,K,X]});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 xe}from"buffer";import nt from"cookies";import st from"http-status";import it from"lodash.sortby";import*as J from"mime-types";import{pathToRegexp as Se}from"path-to-regexp";import E from"picocolors";import se from"co-body";import ot from"formidable";async function ve(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 se.json(t);if(r.startsWith("application/x-www-form-urlencoded"))return await se.form(t);if(r.startsWith("text/plain"))return await se.text(t);if(r.startsWith("multipart/form-data"))return await rt(t,o)}catch(s){console.error(s)}}async function rt(t,o){let e=ot(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 D(t.headers,o.headers)&&D(t.body,o.body)&&D(t.params,o.params)&&D(t.query,o.query)&&D(t.refererQuery,o.refererQuery)}function D(t,o){if(!o)return!0;for(let e in o)if(!be(t[e],o[e]))return!1;return!0}function be(t,o){if(v(t)&&v(o)){let e=new Set;return o.every(r=>t.some((n,s)=>{if(e.has(s))return!1;let i=be(n,r);return i&&e.add(s),i}))}return B(t)&&B(o)?D(t,o):t===o}var ct=/:/g;function Oe(t,{formidableOptions:o={},proxies:e,cookiesOptions:r}){return async function(n,s,i){let c=Date.now(),{query:a,pathname:u}=W(n.url);if(!u||e.length===0||!e.some(y=>G(y,n.url)))return i();let h=t.mockData,M=it(Object.keys(h),y=>{var H;return((H=y.match(ct))==null?void 0:H.length)||0}).find(y=>Se(y).test(u));if(!M)return i();let{query:F}=W(n.headers.referer||""),_=await ve(n,o),p=new nt(n,s,r),l=p.get.bind(p),m=n.method.toUpperCase(),d=at(h[M],{pathname:u,method:m,request:{query:a,refererQuery:F,body:_,headers:n.headers,getCookie:l}});if(!d)return i();R("middleware: ",m,n.url);let f=n,k=s;f.body=_,f.query=a,f.refererQuery=F,f.params=U(d.url,u),f.getCookie=l,k.setCookie=p.set.bind(p);let{body:g,delay:O,type:j="json",response:I,status:L=200,statusText:$}=d;if(ie(k,L,$),await pt(f,k,d),await lt(f,k,d),g){try{let y=C(g)?await g(f):g;await we(c,O),ut(k,y,j)}catch(y){P.error(`${E.red("[body error]")} ${n.url}
46
+ `,`file: ${E.cyan(d.__filepath__)}`,y),ie(k,500),s.end("")}return}if(I){try{await we(c,O),await I(f,k,i)}catch(y){P.error(`${E.red("[response error]")} ${n.url}
47
+ `,`file: ${E.cyan(d.__filepath__)}`,y),ie(k,500),s.end("")}return}s.end("")}}function at(t,{pathname:o,method:e,request:r}){return t.find(n=>{if(!o||!n||!n.url||n.ws===!0||!(n.method?v(n.method)?n.method:[n.method]:["GET","POST"]).includes(e))return!1;let i=Se(n.url).test(o);if(i&&n.validator){let c=U(n.url,o);if(C(n.validator))return n.validator({params:c,...r});try{return Me({params:c,...r},n.validator)}catch(a){return P.error(`${E.red("[validator error]")} ${o}
48
+ `,`file: ${E.cyan(n.__filepath__)}`,a),!1}}return i})}function ie(t,o=200,e){t.statusCode=o,t.statusMessage=e||mt(o)}async function pt(t,o,e){let{headers:r,type:n="json"}=e,s=e.__filepath__,i=J.contentType(n)||J.contentType(J.lookup(n)||"");if(i&&o.setHeader("Content-Type",i),o.setHeader("Cache-Control","no-cache,max-age=0"),o.setHeader("X-Mock-Power-By","vite-plugin-mock-dev-server"),o.setHeader("X-File-Path",s),!!r)try{let c=C(r)?await r(t):r;Object.keys(c).forEach(a=>{o.setHeader(a,c[a])})}catch(c){P.error(`${E.red("[headers error]")} ${t.url}
49
+ `,c)}}async function lt(t,o,{cookies:e}){if(e)try{let r=C(e)?await e(t):e;Object.keys(r).forEach(n=>{let s=r[n];if(v(s)){let[i,c]=s;o.setCookie(n,i,c)}else o.setCookie(n,s)})}catch(r){P.error(`${E.red("[cookies error]")} ${t.url}
50
+ `,r)}}function ut(t,o,e){if(fe(o))o.pipe(t);else if(xe.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"?xe.from(r):r)}}async function we(t,o){if(!o||typeof o=="number"&&o<=0||v(o)&&o.length!==2)return;let e=0;if(v(o)){let[r,n]=o;e=Math.floor(Math.random()*(n-r+1))+r}else e=o-(Date.now()-t);e>0&&await ke(e)}function mt(t){return st[t]||"Unknown"}import kt from"events";import ce from"fs";import{createRequire as gt}from"module";import je from"path";import{pathToFileURL as yt}from"url";import Ce from"chokidar";import{build as ht}from"esbuild";import vt from"fast-glob";import{createFilter as Mt,normalizePath as q}from"vite";import dt from"lodash.sortby";function Pe(t){let o=[];for(let[,r]of t.entries())r&&(v(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}=W(r.url),i=e[n]??(e[n]=[]),c={...r,url:n};if(c.ws!==!0){let a=c.validator;re(s)||(C(a)?c.validator=function(u){return D(u.query,s)&&a(u)}: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]=dt(e[r],n=>{if(n.ws===!0)return 0;let{validator:s}=n;return!s||re(s)?2:C(s)?0:1/Object.keys(s).reduce((c,a)=>c+ft(s[a]),0)})}),e}function ft(t){return t?Object.keys(t).length:0}var bt=ge(import.meta.url),T=gt(bt),ee=class extends kt{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=A(this.cwd,["package.json"]);this.moduleType=r&&JSON.parse(r).type==="module"?"esm":"cjs"}catch{}}get mockData(){return this._mockData}load(){let{include:e,exclude:r}=this.options,n=Mt(e,r,{resolve:!1});vt(e,{cwd:this.cwd}).then(i=>Promise.all(i.filter(n).map(c=>this.loadMock(c)))).then(()=>this.updateMockList()),this.watchMockEntry(),this.watchDeps();let s=null;this.on("mock:update",async i=>{n(i)&&(await this.loadMock(i),s&&clearImmediate(s),s=setImmediate(()=>{this.updateMockList(),this.emit("mock:update-end",i),s=null}))}),this.on("mock:unlink",async i=>{n(i)&&(this.moduleCache.delete(i),this.updateMockList(),this.emit("mock:update-end",i))})}watchMockEntry(){let{include:e}=this.options,[r,...n]=e,s=Ce.watch(r,{ignoreInitial:!0,cwd:this.cwd});n.length>0&&n.forEach(i=>s.add(i)),s.on("add",async i=>{i=q(i),this.emit("mock:update",i),R("watcher:add",i)}),s.on("change",async i=>{i=q(i),this.emit("mock:update",i),R("watcher:change",i)}),s.on("unlink",async i=>{i=q(i),this.emit("mock:unlink",i),R("watcher:unlink",i)}),this.mockWatcher=s}watchDeps(){let e=[];this.depsWatcher=Ce.watch([],{ignoreInitial:!0,cwd:this.cwd}),this.depsWatcher.on("change",r=>{r=q(r);let n=this.moduleDeps.get(r);n&&n.forEach(s=>{this.emit("mock:update",s)})}),this.depsWatcher.on("unlink",r=>{r=q(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=Pe(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.default?c=i.default:(c=[],Object.keys(i).forEach(a=>{v(i[a])?c.push(...i[a]):c.push(i[a])})),v(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=`${yt(s)}.mjs`;await ce.promises.writeFile(i,r,"utf8");try{return await import(c)}finally{try{ce.unlinkSync(i)}catch{}}}else{e=je.resolve(this.cwd,e);let s=je.extname(e),i=ce.realpathSync(e),c=s in T.extensions?s:".js",a=T.extensions[c];T.extensions[c]=(h,M)=>{M===i?h._compile(r,M):a(h,M)},delete T.cache[T.resolve(e)];let u=T(e);return T.extensions[c]=a,u.__esModule?u:{default:u}}}async transformWithEsbuild(e,r){var n;try{let s=await ht({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:[Y(this.options.alias),V,X,K]});return{code:s.outputFiles[0].text,deps:((n=s.metafile)==null?void 0:n.inputs)||{}}}catch(s){console.error(s)}return{code:"",deps:{}}}};import xt from"cookies";import{pathToRegexp as Re}from"path-to-regexp";import wt from"picocolors";import{WebSocketServer as St}from"ws";function De(t,o,e,r){var _;let n=new Map,s=new Map,i=new WeakMap,c=p=>{let l=s.get(p);return!l&&s.set(p,l=new Map),l},a=(p,l)=>{let m=p.get(l);return!m&&p.set(l,m=new St({noServer:!0})),m},u=(p,l)=>{let m=n.get(p);!m&&n.set(p,m=new Set),m.add(l)},h=(p,l,m,d,f,k)=>{var g;try{(g=m.setup)==null||g.call(m,l,d),l.on("close",()=>p.delete(f))}catch(O){P.error(`${wt.red("[websocket server error]")} ${k}
51
+ `,O)}},M=(p,l,m,d)=>{p.emit("connection",l,m),l.on("close",()=>{let f=d.findIndex(k=>k.ws===l);f!==-1&&d.splice(f,1)})},F=(p,l,m,d,f)=>{let{cleanupList:k,connectionList:g,context:O}=i.get(l);We(k),g.forEach(({ws:j})=>j.removeAllListeners()),l.removeAllListeners(),h(p,l,m,O,d,f),g.forEach(({ws:j,req:I})=>M(l,j,I,g))};(_=t.on)==null||_.call(t,"mock:update-end",p=>{if(!n.has(p))return;let l=n.get(p);if(l)for(let m of l.values())for(let d of t.mockData[m]){if(!d.ws||d.__filepath__!==p)return;let f=c(m);for(let[k,g]of f.entries())F(f,g,d,k,p)}}),o==null||o.on("upgrade",(p,l,m)=>{let{pathname:d,query:f}=W(p.url);if(!d||e.length===0||!e.some(b=>G(b,p.url)))return;let k=t.mockData,g=Object.keys(k).find(b=>Re(b).test(d));if(!g)return;let O=k[g].find(b=>b.url&&b.ws&&Re(b.url).test(d));if(!O)return;let j=O.__filepath__;u(j,g);let I=c(g),L=a(I,d),$=i.get(L);if(!$){let b=[],pe={onCleanup:Ie=>b.push(Ie)};$={cleanupList:b,context:pe,connectionList:[]},i.set(L,$),h(I,L,O,pe,d,j)}let y=p,H=new xt(p,p,r),{query:_e}=W(p.headers.referer||"");y.query=f,y.refererQuery=_e,y.params=U(g,d),y.getCookie=H.get.bind(H),L.handleUpgrade(y,l,m,b=>{R(`websocket-mock: ${p.url} connected`),$.connectionList.push({req:y,ws:b}),M(L,b,y,$.connectionList)})}),o==null||o.on("close",()=>{for(let p of s.values()){for(let l of p.values()){let m=i.get(l);We(m.cleanupList),l.close()}p.clear()}s.clear(),n.clear()})}function We(t){let o;for(;o=t.shift();)o==null||o()}async function ae(t,o,e,r){let n=new ee({include:S(o.include),exclude:S(o.exclude),define:Q(t),alias:t.resolve.alias});n.load(),n.on("mock:update-end",()=>{o.reload&&(r==null||r.send({type:"full-reload"}))}),e==null||e.on("close",()=>n.close());let{httpProxies:s}=z(t.server.proxy||{}),i=S(o.prefix);return De(n,e,S(o.wsPrefix),o.cookiesOptions),Oe(n,{formidableOptions:o.formidableOptions,proxies:[...i,...s],cookiesOptions:o.cookiesOptions})}function Ee({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},u=[Pt(a)];return a.build&&u.push(Ot(a)),u}function Ot(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 he(this,o,t)}}}function Pt(t){let o={};return{name:"vite-plugin-mock-dev-server",enforce:"pre",apply:"serve",config(e){var s;let r=S(t.wsPrefix);if(r.length===0||!((s=e.server)!=null&&s.proxy)||Object.keys(e.server.proxy).length===0)return;let n={};Object.keys(e.server.proxy).forEach(i=>{r.includes(i)||(n[i]=e.server.proxy[i])}),e.server.proxy=n},configResolved(e){o=e,e.logger.warn("")},async configureServer({middlewares:e,config:r,httpServer:n,ws:s}){let i=await ae(r,t,n,s);e.use(i)},async configurePreviewServer({middlewares:e,httpServer:r}){let n=await ae(o,t,r);e.use(n)}}}function pr(t){return t}function lr(t){return e=>(v(e)?e=e.map(r=>t(r)||r):e=t(e)||e,e)}var fr=Ee;export{Oe as baseMiddleware,lr as createDefineMock,fr as default,pr as defineMock,Ee as mockDevServerPlugin,De as mockWebSocket,Pe as transformMockData};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-mock-dev-server",
3
- "version": "1.1.14",
3
+ "version": "1.1.15",
4
4
  "keywords": [
5
5
  "vite",
6
6
  "plugin",