vite-plugin-mock-dev-server 1.7.1 → 1.7.3

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.
@@ -252,10 +252,10 @@ function recoverRequest(config) {
252
252
 
253
253
  // src/core/utils.ts
254
254
  import fs from "node:fs";
255
+ import os from "node:os";
255
256
  import path from "node:path";
256
257
  import { parse as queryParse } from "node:querystring";
257
- import { URL as URL2, fileURLToPath } from "node:url";
258
- import os from "node:os";
258
+ import { fileURLToPath, URL as URL2 } from "node:url";
259
259
  import Debug from "debug";
260
260
  import { match } from "path-to-regexp";
261
261
  function isStream(stream) {
@@ -612,10 +612,134 @@ function requestLog(request, filepath) {
612
612
  return `${ms} ${pathname}${qs}${ps}${bs}${file}`;
613
613
  }
614
614
 
615
+ // src/core/logger.ts
616
+ import { isBoolean } from "@pengzhanbo/utils";
617
+ import colors2 from "picocolors";
618
+ var logLevels = {
619
+ silent: 0,
620
+ error: 1,
621
+ warn: 2,
622
+ info: 3,
623
+ debug: 4
624
+ };
625
+ function createLogger(prefix, defaultLevel = "info") {
626
+ prefix = `[${prefix}]`;
627
+ function output(type, msg, level) {
628
+ level = isBoolean(level) ? level ? defaultLevel : "error" : level;
629
+ const thresh = logLevels[level];
630
+ if (thresh >= logLevels[type]) {
631
+ const method = type === "info" || type === "debug" ? "log" : type;
632
+ const tag = type === "debug" ? colors2.magenta(colors2.bold(prefix)) : type === "info" ? colors2.cyan(colors2.bold(prefix)) : type === "warn" ? colors2.yellow(colors2.bold(prefix)) : colors2.red(colors2.bold(prefix));
633
+ const format = `${colors2.dim(
634
+ (/* @__PURE__ */ new Date()).toLocaleTimeString()
635
+ )} ${tag} ${msg}`;
636
+ console[method](format);
637
+ }
638
+ }
639
+ const logger = {
640
+ debug(msg, level = defaultLevel) {
641
+ output("debug", msg, level);
642
+ },
643
+ info(msg, level = defaultLevel) {
644
+ output("info", msg, level);
645
+ },
646
+ warn(msg, level = defaultLevel) {
647
+ output("warn", msg, level);
648
+ },
649
+ error(msg, level = defaultLevel) {
650
+ output("error", msg, level);
651
+ }
652
+ };
653
+ return logger;
654
+ }
655
+
656
+ // src/core/transform.ts
657
+ import {
658
+ isArray as isArray4,
659
+ isEmptyObject as isEmptyObject3,
660
+ isFunction as isFunction2,
661
+ isObject as isObject2,
662
+ sortBy as sortBy2,
663
+ toArray
664
+ } from "@pengzhanbo/utils";
665
+ function transformRawData(raw, __filepath__) {
666
+ let mockConfig;
667
+ if (isArray4(raw)) {
668
+ mockConfig = raw.map((item) => ({ ...item, __filepath__ }));
669
+ } else if ("url" in raw) {
670
+ mockConfig = { ...raw, __filepath__ };
671
+ } else {
672
+ mockConfig = [];
673
+ Object.keys(raw).forEach((key) => {
674
+ const data = raw[key];
675
+ if (isArray4(data)) {
676
+ mockConfig.push(...data.map((item) => ({ ...item, __filepath__ })));
677
+ } else {
678
+ mockConfig.push({ ...data, __filepath__ });
679
+ }
680
+ });
681
+ }
682
+ return mockConfig;
683
+ }
684
+ function transformMockData(mockList) {
685
+ const list = [];
686
+ for (const [, handle] of mockList.entries()) {
687
+ if (handle)
688
+ list.push(...toArray(handle));
689
+ }
690
+ const mocks = {};
691
+ list.filter((mock) => isObject2(mock) && mock.enabled !== false && mock.url).forEach((mock) => {
692
+ const { pathname, query } = urlParse(mock.url);
693
+ const list2 = mocks[pathname] ??= [];
694
+ const current = { ...mock, url: pathname };
695
+ if (current.ws !== true) {
696
+ const validator = current.validator;
697
+ if (!isEmptyObject3(query)) {
698
+ if (isFunction2(validator)) {
699
+ current.validator = function(request) {
700
+ return isObjectSubset(request.query, query) && validator(request);
701
+ };
702
+ } else if (validator) {
703
+ current.validator = { ...validator };
704
+ current.validator.query = current.validator.query ? { ...query, ...current.validator.query } : query;
705
+ } else {
706
+ current.validator = { query };
707
+ }
708
+ }
709
+ }
710
+ list2.push(current);
711
+ });
712
+ Object.keys(mocks).forEach((key) => {
713
+ mocks[key] = sortByValidator(mocks[key]);
714
+ });
715
+ return mocks;
716
+ }
717
+ function sortByValidator(mocks) {
718
+ return sortBy2(mocks, (item) => {
719
+ if (item.ws === true)
720
+ return 0;
721
+ const { validator } = item;
722
+ if (!validator || isEmptyObject3(validator))
723
+ return 2;
724
+ if (isFunction2(validator))
725
+ return 0;
726
+ const count = Object.keys(validator).reduce(
727
+ (prev, key) => prev + keysCount(validator[key]),
728
+ 0
729
+ );
730
+ return 1 / count;
731
+ });
732
+ }
733
+ function keysCount(obj) {
734
+ if (!obj)
735
+ return 0;
736
+ return Object.keys(obj).length;
737
+ }
738
+
615
739
  // src/core/ws.ts
616
740
  import Cookies2 from "cookies";
617
741
  import { pathToRegexp as pathToRegexp3 } from "path-to-regexp";
618
- import colors2 from "picocolors";
742
+ import colors3 from "picocolors";
619
743
  import { WebSocketServer } from "ws";
620
744
  function mockWebSocket(compiler, server, {
621
745
  wsProxies: proxies,
@@ -649,7 +773,7 @@ function mockWebSocket(compiler, server, {
649
773
  wss.on("close", () => wssMap.delete(pathname));
650
774
  wss.on("error", (e) => {
651
775
  logger.error(
652
- `${colors2.red(
776
+ `${colors3.red(
653
777
  `WebSocket mock error at ${wss.path}`
654
778
  )}
655
779
  ${e}
@@ -659,7 +783,7 @@ ${e}
659
783
  });
660
784
  } catch (e) {
661
785
  logger.error(
662
- `${colors2.red(
786
+ `${colors3.red(
663
787
  `WebSocket mock error at ${wss.path}`
664
788
  )}
665
789
  ${e}
@@ -741,9 +865,9 @@ ${e}
741
865
  request.getCookie = cookies.get.bind(cookies);
742
866
  wss.handleUpgrade(request, socket, head, (ws) => {
743
867
  logger.info(
744
- `${colors2.magenta(colors2.bold("WebSocket"))} ${colors2.green(
868
+ `${colors3.magenta(colors3.bold("WebSocket"))} ${colors3.green(
745
869
  req.url
746
- )} connected ${colors2.dim(`(${filepath})`)}`,
870
+ )} connected ${colors3.dim(`(${filepath})`)}`,
747
871
  mock.log
748
872
  );
749
873
  wssContext.connectionList.push({ req: request, ws });
@@ -769,130 +893,6 @@ function cleanupRunner(cleanupList) {
769
893
  cleanup?.();
770
894
  }
771
895
 
772
- // src/core/transform.ts
773
- import {
774
- isArray as isArray4,
775
- isEmptyObject as isEmptyObject3,
776
- isFunction as isFunction2,
777
- isObject as isObject2,
778
- sortBy as sortBy2,
779
- toArray
780
- } from "@pengzhanbo/utils";
781
- function transformRawData(raw, __filepath__) {
782
- let mockConfig;
783
- if (isArray4(raw)) {
784
- mockConfig = raw.map((item) => ({ ...item, __filepath__ }));
785
- } else if ("url" in raw) {
786
- mockConfig = { ...raw, __filepath__ };
787
- } else {
788
- mockConfig = [];
789
- Object.keys(raw).forEach((key) => {
790
- const data = raw[key];
791
- if (isArray4(data)) {
792
- mockConfig.push(...data.map((item) => ({ ...item, __filepath__ })));
793
- } else {
794
- mockConfig.push({ ...data, __filepath__ });
795
- }
796
- });
797
- }
798
- return mockConfig;
799
- }
800
- function transformMockData(mockList) {
801
- const list = [];
802
- for (const [, handle] of mockList.entries()) {
803
- if (handle)
804
- list.push(...toArray(handle));
805
- }
806
- const mocks = {};
807
- list.filter((mock) => isObject2(mock) && mock.enabled !== false && mock.url).forEach((mock) => {
808
- const { pathname, query } = urlParse(mock.url);
809
- const list2 = mocks[pathname] ??= [];
810
- const current = { ...mock, url: pathname };
811
- if (current.ws !== true) {
812
- const validator = current.validator;
813
- if (!isEmptyObject3(query)) {
814
- if (isFunction2(validator)) {
815
- current.validator = function(request) {
816
- return isObjectSubset(request.query, query) && validator(request);
817
- };
818
- } else if (validator) {
819
- current.validator = { ...validator };
820
- current.validator.query = current.validator.query ? { ...query, ...current.validator.query } : query;
821
- } else {
822
- current.validator = { query };
823
- }
824
- }
825
- }
826
- list2.push(current);
827
- });
828
- Object.keys(mocks).forEach((key) => {
829
- mocks[key] = sortByValidator(mocks[key]);
830
- });
831
- return mocks;
832
- }
833
- function sortByValidator(mocks) {
834
- return sortBy2(mocks, (item) => {
835
- if (item.ws === true)
836
- return 0;
837
- const { validator } = item;
838
- if (!validator || isEmptyObject3(validator))
839
- return 2;
840
- if (isFunction2(validator))
841
- return 0;
842
- const count = Object.keys(validator).reduce(
843
- (prev, key) => prev + keysCount(validator[key]),
844
- 0
845
- );
846
- return 1 / count;
847
- });
848
- }
849
- function keysCount(obj) {
850
- if (!obj)
851
- return 0;
852
- return Object.keys(obj).length;
853
- }
854
-
855
- // src/core/logger.ts
856
- import { isBoolean } from "@pengzhanbo/utils";
857
- import colors3 from "picocolors";
858
- var logLevels = {
859
- silent: 0,
860
- error: 1,
861
- warn: 2,
862
- info: 3,
863
- debug: 4
864
- };
865
- function createLogger(prefix, defaultLevel = "info") {
866
- prefix = `[${prefix}]`;
867
- function output(type, msg, level) {
868
- level = isBoolean(level) ? level ? defaultLevel : "error" : level;
869
- const thresh = logLevels[level];
870
- if (thresh >= logLevels[type]) {
871
- const method = type === "info" || type === "debug" ? "log" : type;
872
- const tag = type === "debug" ? colors3.magenta(colors3.bold(prefix)) : type === "info" ? colors3.cyan(colors3.bold(prefix)) : type === "warn" ? colors3.yellow(colors3.bold(prefix)) : colors3.red(colors3.bold(prefix));
873
- const format = `${colors3.dim(
874
- (/* @__PURE__ */ new Date()).toLocaleTimeString()
875
- )} ${tag} ${msg}`;
876
- console[method](format);
877
- }
878
- }
879
- const logger = {
880
- debug(msg, level = defaultLevel) {
881
- output("debug", msg, level);
882
- },
883
- info(msg, level = defaultLevel) {
884
- output("info", msg, level);
885
- },
886
- warn(msg, level = defaultLevel) {
887
- output("warn", msg, level);
888
- },
889
- error(msg, level = defaultLevel) {
890
- output("error", msg, level);
891
- }
892
- };
893
- return logger;
894
- }
895
-
896
896
  export {
897
897
  debug,
898
898
  lookupFile,
package/dist/helper.d.cts CHANGED
@@ -1,14 +1,14 @@
1
- import { b as MockHttpItem, c as MockWebsocketItem, a as MockOptions } from './types-D50kW_6z.cjs';
2
- export { d as MockRequest } from './types-D50kW_6z.cjs';
3
- import 'node:buffer';
4
- import 'node:http';
5
- import 'node:stream';
1
+ import { a as MockHttpItem, d as MockWebsocketItem, b as MockOptions } from './types-BYspd62h.cjs';
2
+ export { c as MockRequest } from './types-BYspd62h.cjs';
3
+ import 'co-body';
6
4
  import 'cookies';
7
5
  import 'cors';
8
6
  import 'formidable';
7
+ import 'node:buffer';
8
+ import 'node:http';
9
+ import 'node:stream';
9
10
  import 'vite';
10
11
  import 'ws';
11
- import 'co-body';
12
12
 
13
13
  /**
14
14
  * mock config Type helper
package/dist/helper.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { b as MockHttpItem, c as MockWebsocketItem, a as MockOptions } from './types-D50kW_6z.js';
2
- export { d as MockRequest } from './types-D50kW_6z.js';
3
- import 'node:buffer';
4
- import 'node:http';
5
- import 'node:stream';
1
+ import { a as MockHttpItem, d as MockWebsocketItem, b as MockOptions } from './types-BYspd62h.js';
2
+ export { c as MockRequest } from './types-BYspd62h.js';
3
+ import 'co-body';
6
4
  import 'cookies';
7
5
  import 'cors';
8
6
  import 'formidable';
7
+ import 'node:buffer';
8
+ import 'node:http';
9
+ import 'node:stream';
9
10
  import 'vite';
10
11
  import 'ws';
11
- import 'co-body';
12
12
 
13
13
  /**
14
14
  * mock config Type helper
package/dist/index.cjs CHANGED
@@ -18,7 +18,7 @@ var _chunkFND5XIG2cjs = require('./chunk-FND5XIG2.cjs');
18
18
 
19
19
 
20
20
 
21
- var _chunkS76FMTCDcjs = require('./chunk-S76FMTCD.cjs');
21
+ var _chunkJP6LPDGGcjs = require('./chunk-JP6LPDGG.cjs');
22
22
 
23
23
  // src/plugin.ts
24
24
  var _utils = require('@pengzhanbo/utils');
@@ -29,16 +29,16 @@ var _promises = require('fs/promises'); var _promises2 = _interopRequireDefault(
29
29
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
30
30
  var _process = require('process'); var _process2 = _interopRequireDefault(_process);
31
31
 
32
+ var _pluginutils = require('@rollup/pluginutils');
32
33
  var _fastglob = require('fast-glob'); var _fastglob2 = _interopRequireDefault(_fastglob);
33
34
  var _iscoremodule = require('is-core-module'); var _iscoremodule2 = _interopRequireDefault(_iscoremodule);
34
- var _pluginutils = require('@rollup/pluginutils');
35
35
  var _picocolors = require('picocolors'); var _picocolors2 = _interopRequireDefault(_picocolors);
36
36
 
37
37
  // src/core/compiler.ts
38
38
 
39
39
 
40
- var _url = require('url');
41
40
 
41
+ var _url = require('url');
42
42
  var _esbuild = require('esbuild');
43
43
  var _json5 = require('json5'); var _json52 = _interopRequireDefault(_json5);
44
44
  var externalizeDeps = {
@@ -181,7 +181,7 @@ async function generateMockServer(ctx, options) {
181
181
  const cwd = options.cwd || _process2.default.cwd();
182
182
  let pkg = {};
183
183
  try {
184
- const pkgStr = _chunkS76FMTCDcjs.lookupFile.call(void 0, options.context, ["package.json"]);
184
+ const pkgStr = _chunkJP6LPDGGcjs.lookupFile.call(void 0, options.context, ["package.json"]);
185
185
  if (pkgStr)
186
186
  pkg = JSON.parse(pkgStr);
187
187
  } catch (e3) {
@@ -267,7 +267,7 @@ function generatePackageJson(pkg, mockDeps) {
267
267
  },
268
268
  dependencies: {
269
269
  connect: "^3.7.0",
270
- ["vite-plugin-mock-dev-server"]: `^${"1.7.0"}`,
270
+ ["vite-plugin-mock-dev-server"]: `^${"1.7.2"}`,
271
271
  cors: "^2.8.5"
272
272
  },
273
273
  pnpm: { peerDependencyRules: { ignoreMissing: ["vite"] } }
@@ -328,7 +328,7 @@ async function generateMockEntryCode(cwd, include, exclude) {
328
328
  let importers = "";
329
329
  const exporters = [];
330
330
  mockFiles.forEach((filepath, index) => {
331
- const file = _chunkS76FMTCDcjs.normalizePath.call(void 0, _path2.default.join(cwd, filepath));
331
+ const file = _chunkJP6LPDGGcjs.normalizePath.call(void 0, _path2.default.join(cwd, filepath));
332
332
  importers += `import * as m${index} from '${file}';
333
333
  `;
334
334
  exporters.push(`[m${index}, '${filepath}']`);
@@ -353,8 +353,8 @@ var _pathtoregexp = require('path-to-regexp');
353
353
  var _events = require('events'); var _events2 = _interopRequireDefault(_events);
354
354
 
355
355
 
356
- var _chokidar = require('chokidar'); var _chokidar2 = _interopRequireDefault(_chokidar);
357
356
 
357
+ var _chokidar = require('chokidar'); var _chokidar2 = _interopRequireDefault(_chokidar);
358
358
 
359
359
  function createMockCompiler(options) {
360
360
  return new MockCompiler(options);
@@ -365,7 +365,7 @@ var MockCompiler = (_class = class extends _events2.default {
365
365
  this.options = options;
366
366
  this.cwd = options.cwd || _process2.default.cwd();
367
367
  try {
368
- const pkg = _chunkS76FMTCDcjs.lookupFile.call(void 0, this.cwd, ["package.json"]);
368
+ const pkg = _chunkJP6LPDGGcjs.lookupFile.call(void 0, this.cwd, ["package.json"]);
369
369
  this.moduleType = !!pkg && JSON.parse(pkg).type === "module" ? "esm" : "cjs";
370
370
  } catch (e4) {
371
371
  }
@@ -419,19 +419,19 @@ var MockCompiler = (_class = class extends _events2.default {
419
419
  if (otherGlob.length > 0)
420
420
  otherGlob.forEach((glob) => watcher.add(glob));
421
421
  watcher.on("add", async (filepath) => {
422
- filepath = _chunkS76FMTCDcjs.normalizePath.call(void 0, filepath);
422
+ filepath = _chunkJP6LPDGGcjs.normalizePath.call(void 0, filepath);
423
423
  this.emit("mock:update", filepath);
424
- _chunkS76FMTCDcjs.debug.call(void 0, "watcher:add", filepath);
424
+ _chunkJP6LPDGGcjs.debug.call(void 0, "watcher:add", filepath);
425
425
  });
426
426
  watcher.on("change", async (filepath) => {
427
- filepath = _chunkS76FMTCDcjs.normalizePath.call(void 0, filepath);
427
+ filepath = _chunkJP6LPDGGcjs.normalizePath.call(void 0, filepath);
428
428
  this.emit("mock:update", filepath);
429
- _chunkS76FMTCDcjs.debug.call(void 0, "watcher:change", filepath);
429
+ _chunkJP6LPDGGcjs.debug.call(void 0, "watcher:change", filepath);
430
430
  });
431
431
  watcher.on("unlink", async (filepath) => {
432
- filepath = _chunkS76FMTCDcjs.normalizePath.call(void 0, filepath);
432
+ filepath = _chunkJP6LPDGGcjs.normalizePath.call(void 0, filepath);
433
433
  this.emit("mock:unlink", filepath);
434
- _chunkS76FMTCDcjs.debug.call(void 0, "watcher:unlink", filepath);
434
+ _chunkJP6LPDGGcjs.debug.call(void 0, "watcher:unlink", filepath);
435
435
  });
436
436
  }
437
437
  /**
@@ -445,14 +445,14 @@ var MockCompiler = (_class = class extends _events2.default {
445
445
  cwd: this.cwd
446
446
  });
447
447
  this.depsWatcher.on("change", (filepath) => {
448
- filepath = _chunkS76FMTCDcjs.normalizePath.call(void 0, filepath);
448
+ filepath = _chunkJP6LPDGGcjs.normalizePath.call(void 0, filepath);
449
449
  const mockFiles = this.moduleDeps.get(filepath);
450
450
  _optionalChain([mockFiles, 'optionalAccess', _4 => _4.forEach, 'call', _5 => _5((file) => {
451
451
  this.emit("mock:update", file);
452
452
  })]);
453
453
  });
454
454
  this.depsWatcher.on("unlink", (filepath) => {
455
- filepath = _chunkS76FMTCDcjs.normalizePath.call(void 0, filepath);
455
+ filepath = _chunkJP6LPDGGcjs.normalizePath.call(void 0, filepath);
456
456
  this.moduleDeps.delete(filepath);
457
457
  });
458
458
  this.on("update:deps", () => {
@@ -469,7 +469,7 @@ var MockCompiler = (_class = class extends _events2.default {
469
469
  _optionalChain([this, 'access', _9 => _9.depsWatcher, 'optionalAccess', _10 => _10.close, 'call', _11 => _11()]);
470
470
  }
471
471
  updateMockList() {
472
- this._mockData = _chunkS76FMTCDcjs.transformMockData.call(void 0, this.moduleCache);
472
+ this._mockData = _chunkJP6LPDGGcjs.transformMockData.call(void 0, this.moduleCache);
473
473
  }
474
474
  updateModuleDeps(filepath, deps) {
475
475
  Object.keys(deps).forEach((mPath) => {
@@ -500,7 +500,7 @@ var MockCompiler = (_class = class extends _events2.default {
500
500
  );
501
501
  try {
502
502
  const raw = await loadFromCode({ filepath, code, isESM, cwd: this.cwd }) || {};
503
- this.moduleCache.set(filepath, _chunkS76FMTCDcjs.transformRawData.call(void 0, raw, filepath));
503
+ this.moduleCache.set(filepath, _chunkJP6LPDGGcjs.transformRawData.call(void 0, raw, filepath));
504
504
  this.updateModuleDeps(filepath, deps);
505
505
  } catch (e) {
506
506
  console.error(e);
@@ -517,7 +517,7 @@ function mockServerMiddleware(options, server, ws) {
517
517
  _optionalChain([ws, 'optionalAccess', _12 => _12.send, 'call', _13 => _13({ type: "full-reload" })]);
518
518
  });
519
519
  _optionalChain([server, 'optionalAccess', _14 => _14.on, 'call', _15 => _15("close", () => compiler.close())]);
520
- _chunkS76FMTCDcjs.mockWebSocket.call(void 0, compiler, server, options);
520
+ _chunkJP6LPDGGcjs.mockWebSocket.call(void 0, compiler, server, options);
521
521
  const middlewares = [];
522
522
  middlewares.push(
523
523
  /**
@@ -532,14 +532,14 @@ function mockServerMiddleware(options, server, ws) {
532
532
  * 而用户的配置也仅对 mock 的接口生效。
533
533
  */
534
534
  corsMiddleware(compiler, options),
535
- _chunkS76FMTCDcjs.baseMiddleware.call(void 0, compiler, options)
535
+ _chunkJP6LPDGGcjs.baseMiddleware.call(void 0, compiler, options)
536
536
  );
537
537
  return middlewares.filter(Boolean);
538
538
  }
539
539
  function corsMiddleware(compiler, { proxies, cors: corsOptions }) {
540
540
  return !corsOptions ? void 0 : function(req, res, next) {
541
- const { pathname } = _chunkS76FMTCDcjs.urlParse.call(void 0, req.url);
542
- if (!pathname || proxies.length === 0 || !proxies.some((context) => _chunkS76FMTCDcjs.doesProxyContextMatchUrl.call(void 0, context, req.url))) {
541
+ const { pathname } = _chunkJP6LPDGGcjs.urlParse.call(void 0, req.url);
542
+ if (!pathname || proxies.length === 0 || !proxies.some((context) => _chunkJP6LPDGGcjs.doesProxyContextMatchUrl.call(void 0, context, req.url))) {
543
543
  return next();
544
544
  }
545
545
  const mockData = compiler.mockData;
@@ -652,8 +652,8 @@ function resolvePluginOptions({
652
652
  bodyParserOptions = {},
653
653
  priority = {}
654
654
  }, config) {
655
- const logger = _chunkS76FMTCDcjs.createLogger.call(void 0, "vite:mock", _utils.isBoolean.call(void 0, log) ? log ? "info" : "error" : log);
656
- const { httpProxies } = _chunkS76FMTCDcjs.ensureProxies.call(void 0, config.server.proxy || {});
655
+ const logger = _chunkJP6LPDGGcjs.createLogger.call(void 0, "vite:mock", _utils.isBoolean.call(void 0, log) ? log ? "info" : "error" : log);
656
+ const { httpProxies } = _chunkJP6LPDGGcjs.ensureProxies.call(void 0, config.server.proxy || {});
657
657
  const proxies = _utils.uniq.call(void 0, [..._utils.toArray.call(void 0, prefix), ...httpProxies]);
658
658
  const wsProxies = _utils.toArray.call(void 0, wsPrefix);
659
659
  if (!proxies.length && !wsProxies.length)
@@ -754,7 +754,7 @@ function serverPlugin(options) {
754
754
  });
755
755
  config.server.proxy = proxy;
756
756
  }
757
- _chunkS76FMTCDcjs.recoverRequest.call(void 0, config);
757
+ _chunkJP6LPDGGcjs.recoverRequest.call(void 0, config);
758
758
  },
759
759
  configResolved(config) {
760
760
  resolvedOptions = resolvePluginOptions(options, config);
@@ -786,4 +786,4 @@ var src_default = mockDevServerPlugin;
786
786
 
787
787
 
788
788
 
789
- exports.baseMiddleware = _chunkS76FMTCDcjs.baseMiddleware; exports.createDefineMock = _chunkFND5XIG2cjs.createDefineMock; exports.createLogger = _chunkS76FMTCDcjs.createLogger; exports.default = src_default; exports.defineMock = _chunkFND5XIG2cjs.defineMock; exports.defineMockData = _chunkFND5XIG2cjs.defineMockData; exports.logLevels = _chunkS76FMTCDcjs.logLevels; exports.mockDevServerPlugin = mockDevServerPlugin; exports.mockWebSocket = _chunkS76FMTCDcjs.mockWebSocket; exports.sortByValidator = _chunkS76FMTCDcjs.sortByValidator; exports.transformMockData = _chunkS76FMTCDcjs.transformMockData; exports.transformRawData = _chunkS76FMTCDcjs.transformRawData;
789
+ exports.baseMiddleware = _chunkJP6LPDGGcjs.baseMiddleware; exports.createDefineMock = _chunkFND5XIG2cjs.createDefineMock; exports.createLogger = _chunkJP6LPDGGcjs.createLogger; exports.default = src_default; exports.defineMock = _chunkFND5XIG2cjs.defineMock; exports.defineMockData = _chunkFND5XIG2cjs.defineMockData; exports.logLevels = _chunkJP6LPDGGcjs.logLevels; exports.mockDevServerPlugin = mockDevServerPlugin; exports.mockWebSocket = _chunkJP6LPDGGcjs.mockWebSocket; exports.sortByValidator = _chunkJP6LPDGGcjs.sortByValidator; exports.transformMockData = _chunkJP6LPDGGcjs.transformMockData; exports.transformRawData = _chunkJP6LPDGGcjs.transformRawData;
package/dist/index.d.cts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { Plugin } from 'vite';
2
- import { M as MockServerPluginOptions } from './types-D50kW_6z.cjs';
3
- export { F as FormidableFile, b as MockHttpItem, a as MockOptions, d as MockRequest, c as MockWebsocketItem } from './types-D50kW_6z.cjs';
2
+ import { M as MockServerPluginOptions } from './types-BYspd62h.cjs';
3
+ export { F as FormidableFile, a as MockHttpItem, b as MockOptions, c as MockRequest, d as MockWebsocketItem } from './types-BYspd62h.cjs';
4
4
  export { MockData, createDefineMock, defineMock, defineMockData } from './helper.cjs';
5
5
  export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from './server.cjs';
6
- import 'node:buffer';
7
- import 'node:http';
8
- import 'node:stream';
6
+ import 'co-body';
9
7
  import 'cookies';
10
8
  import 'cors';
11
9
  import 'formidable';
10
+ import 'node:buffer';
11
+ import 'node:http';
12
+ import 'node:stream';
12
13
  import 'ws';
13
- import 'co-body';
14
14
  import 'node:events';
15
15
  import 'chokidar';
16
16
  import 'node:http2';
package/dist/index.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { Plugin } from 'vite';
2
- import { M as MockServerPluginOptions } from './types-D50kW_6z.js';
3
- export { F as FormidableFile, b as MockHttpItem, a as MockOptions, d as MockRequest, c as MockWebsocketItem } from './types-D50kW_6z.js';
2
+ import { M as MockServerPluginOptions } from './types-BYspd62h.js';
3
+ export { F as FormidableFile, a as MockHttpItem, b as MockOptions, c as MockRequest, d as MockWebsocketItem } from './types-BYspd62h.js';
4
4
  export { MockData, createDefineMock, defineMock, defineMockData } from './helper.js';
5
5
  export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from './server.js';
6
- import 'node:buffer';
7
- import 'node:http';
8
- import 'node:stream';
6
+ import 'co-body';
9
7
  import 'cookies';
10
8
  import 'cors';
11
9
  import 'formidable';
10
+ import 'node:buffer';
11
+ import 'node:http';
12
+ import 'node:stream';
12
13
  import 'ws';
13
- import 'co-body';
14
14
  import 'node:events';
15
15
  import 'chokidar';
16
16
  import 'node:http2';
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ import {
18
18
  transformMockData,
19
19
  transformRawData,
20
20
  urlParse
21
- } from "./chunk-TTKDHWOT.js";
21
+ } from "./chunk-FUNGHLD3.js";
22
22
 
23
23
  // src/plugin.ts
24
24
  import { toArray as toArray4 } from "@pengzhanbo/utils";
@@ -29,16 +29,16 @@ import fsp2 from "node:fs/promises";
29
29
  import path2 from "node:path";
30
30
  import process2 from "node:process";
31
31
  import { toArray } from "@pengzhanbo/utils";
32
+ import { createFilter } from "@rollup/pluginutils";
32
33
  import fg from "fast-glob";
33
34
  import isCore from "is-core-module";
34
- import { createFilter } from "@rollup/pluginutils";
35
35
  import c from "picocolors";
36
36
 
37
37
  // src/core/compiler.ts
38
38
  import fs, { promises as fsp } from "node:fs";
39
39
  import path from "node:path";
40
- import { pathToFileURL } from "node:url";
41
40
  import process from "node:process";
41
+ import { pathToFileURL } from "node:url";
42
42
  import { build } from "esbuild";
43
43
  import JSON5 from "json5";
44
44
  var externalizeDeps = {
@@ -267,7 +267,7 @@ function generatePackageJson(pkg, mockDeps) {
267
267
  },
268
268
  dependencies: {
269
269
  connect: "^3.7.0",
270
- ["vite-plugin-mock-dev-server"]: `^${"1.7.0"}`,
270
+ ["vite-plugin-mock-dev-server"]: `^${"1.7.2"}`,
271
271
  cors: "^2.8.5"
272
272
  },
273
273
  pnpm: { peerDependencyRules: { ignoreMissing: ["vite"] } }
@@ -353,9 +353,9 @@ import { pathToRegexp } from "path-to-regexp";
353
353
  import EventEmitter from "node:events";
354
354
  import process3 from "node:process";
355
355
  import { promiseParallel, toArray as toArray2 } from "@pengzhanbo/utils";
356
+ import { createFilter as createFilter2 } from "@rollup/pluginutils";
356
357
  import chokidar from "chokidar";
357
358
  import fastGlob from "fast-glob";
358
- import { createFilter as createFilter2 } from "@rollup/pluginutils";
359
359
  function createMockCompiler(options) {
360
360
  return new MockCompiler(options);
361
361
  }
package/dist/server.cjs CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkS76FMTCDcjs = require('./chunk-S76FMTCD.cjs');
9
+ var _chunkJP6LPDGGcjs = require('./chunk-JP6LPDGG.cjs');
10
10
 
11
11
 
12
12
 
@@ -15,4 +15,4 @@ var _chunkS76FMTCDcjs = require('./chunk-S76FMTCD.cjs');
15
15
 
16
16
 
17
17
 
18
- exports.baseMiddleware = _chunkS76FMTCDcjs.baseMiddleware; exports.createLogger = _chunkS76FMTCDcjs.createLogger; exports.logLevels = _chunkS76FMTCDcjs.logLevels; exports.mockWebSocket = _chunkS76FMTCDcjs.mockWebSocket; exports.sortByValidator = _chunkS76FMTCDcjs.sortByValidator; exports.transformMockData = _chunkS76FMTCDcjs.transformMockData; exports.transformRawData = _chunkS76FMTCDcjs.transformRawData;
18
+ exports.baseMiddleware = _chunkJP6LPDGGcjs.baseMiddleware; exports.createLogger = _chunkJP6LPDGGcjs.createLogger; exports.logLevels = _chunkJP6LPDGGcjs.logLevels; exports.mockWebSocket = _chunkJP6LPDGGcjs.mockWebSocket; exports.sortByValidator = _chunkJP6LPDGGcjs.sortByValidator; exports.transformMockData = _chunkJP6LPDGGcjs.transformMockData; exports.transformRawData = _chunkJP6LPDGGcjs.transformRawData;
package/dist/server.d.cts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { Alias, Connect } from 'vite';
2
- import { L as LogLevel, M as MockServerPluginOptions, S as ServerBuildOption, a as MockOptions, b as MockHttpItem, c as MockWebsocketItem } from './types-D50kW_6z.cjs';
2
+ import { L as LogLevel, M as MockServerPluginOptions, S as ServerBuildOption, b as MockOptions, a as MockHttpItem, d as MockWebsocketItem } from './types-BYspd62h.cjs';
3
+ import { CorsOptions } from 'cors';
3
4
  import EventEmitter from 'node:events';
4
5
  import { FSWatcher } from 'chokidar';
5
- import { CorsOptions } from 'cors';
6
6
  import { Server } from 'node:http';
7
7
  import { Http2SecureServer } from 'node:http2';
8
- import 'node:buffer';
9
- import 'node:stream';
8
+ import 'co-body';
10
9
  import 'cookies';
11
10
  import 'formidable';
11
+ import 'node:buffer';
12
+ import 'node:stream';
12
13
  import 'ws';
13
- import 'co-body';
14
14
 
15
15
  interface Logger {
16
16
  debug: (msg: string, level?: boolean | LogLevel) => void;
@@ -69,6 +69,11 @@ interface BaseMiddlewareOptions {
69
69
  }
70
70
  declare function baseMiddleware(compiler: MockCompiler, { formidableOptions, bodyParserOptions, proxies, cookiesOptions, logger, priority, }: BaseMiddlewareOptions): Connect.NextHandleFunction;
71
71
 
72
+ type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
73
+ declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
74
+ declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
75
+ declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
76
+
72
77
  /**
73
78
  * 不复用 `viteConfig.server.proxy` 中 websocket proxy的原因是,
74
79
  * 很难通过一种令人满意的方式,检查 mock 文件中是否有 websocket 相关的 mock 配置,
@@ -86,9 +91,4 @@ declare function baseMiddleware(compiler: MockCompiler, { formidableOptions, bod
86
91
  */
87
92
  declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, { wsProxies: proxies, cookiesOptions, logger, }: ResolvedMockServerPluginOptions): void;
88
93
 
89
- type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
90
- declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
91
- declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
92
- declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
93
-
94
94
  export { type BaseMiddlewareOptions, type Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
package/dist/server.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { Alias, Connect } from 'vite';
2
- import { L as LogLevel, M as MockServerPluginOptions, S as ServerBuildOption, a as MockOptions, b as MockHttpItem, c as MockWebsocketItem } from './types-D50kW_6z.js';
2
+ import { L as LogLevel, M as MockServerPluginOptions, S as ServerBuildOption, b as MockOptions, a as MockHttpItem, d as MockWebsocketItem } from './types-BYspd62h.js';
3
+ import { CorsOptions } from 'cors';
3
4
  import EventEmitter from 'node:events';
4
5
  import { FSWatcher } from 'chokidar';
5
- import { CorsOptions } from 'cors';
6
6
  import { Server } from 'node:http';
7
7
  import { Http2SecureServer } from 'node:http2';
8
- import 'node:buffer';
9
- import 'node:stream';
8
+ import 'co-body';
10
9
  import 'cookies';
11
10
  import 'formidable';
11
+ import 'node:buffer';
12
+ import 'node:stream';
12
13
  import 'ws';
13
- import 'co-body';
14
14
 
15
15
  interface Logger {
16
16
  debug: (msg: string, level?: boolean | LogLevel) => void;
@@ -69,6 +69,11 @@ interface BaseMiddlewareOptions {
69
69
  }
70
70
  declare function baseMiddleware(compiler: MockCompiler, { formidableOptions, bodyParserOptions, proxies, cookiesOptions, logger, priority, }: BaseMiddlewareOptions): Connect.NextHandleFunction;
71
71
 
72
+ type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
73
+ declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
74
+ declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
75
+ declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
76
+
72
77
  /**
73
78
  * 不复用 `viteConfig.server.proxy` 中 websocket proxy的原因是,
74
79
  * 很难通过一种令人满意的方式,检查 mock 文件中是否有 websocket 相关的 mock 配置,
@@ -86,9 +91,4 @@ declare function baseMiddleware(compiler: MockCompiler, { formidableOptions, bod
86
91
  */
87
92
  declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, { wsProxies: proxies, cookiesOptions, logger, }: ResolvedMockServerPluginOptions): void;
88
93
 
89
- type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
90
- declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
91
- declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
92
- declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
93
-
94
94
  export { type BaseMiddlewareOptions, type Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
package/dist/server.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  sortByValidator,
7
7
  transformMockData,
8
8
  transformRawData
9
- } from "./chunk-TTKDHWOT.js";
9
+ } from "./chunk-FUNGHLD3.js";
10
10
  export {
11
11
  baseMiddleware,
12
12
  createLogger,
@@ -1,12 +1,12 @@
1
- import { Buffer } from 'node:buffer';
2
- import http from 'node:http';
3
- import { Readable } from 'node:stream';
1
+ import { Options } from 'co-body';
4
2
  import Cookies from 'cookies';
5
3
  import { CorsOptions } from 'cors';
6
4
  import formidable from 'formidable';
5
+ import { Buffer } from 'node:buffer';
6
+ import http from 'node:http';
7
+ import { Readable } from 'node:stream';
7
8
  import { Connect } from 'vite';
8
9
  import { WebSocketServer } from 'ws';
9
- import { Options } from 'co-body';
10
10
 
11
11
  /**
12
12
  * Configure plugin
@@ -568,4 +568,4 @@ type FormidableFile = formidable.File | formidable.File[];
568
568
  type LogType = 'info' | 'warn' | 'error' | 'debug';
569
569
  type LogLevel = LogType | 'silent';
570
570
 
571
- export type { FormidableFile as F, LogLevel as L, MockServerPluginOptions as M, ServerBuildOption as S, MockOptions as a, MockHttpItem as b, MockWebsocketItem as c, MockRequest as d };
571
+ export type { FormidableFile as F, LogLevel as L, MockServerPluginOptions as M, ServerBuildOption as S, MockHttpItem as a, MockOptions as b, MockRequest as c, MockWebsocketItem as d };
@@ -1,12 +1,12 @@
1
- import { Buffer } from 'node:buffer';
2
- import http from 'node:http';
3
- import { Readable } from 'node:stream';
1
+ import { Options } from 'co-body';
4
2
  import Cookies from 'cookies';
5
3
  import { CorsOptions } from 'cors';
6
4
  import formidable from 'formidable';
5
+ import { Buffer } from 'node:buffer';
6
+ import http from 'node:http';
7
+ import { Readable } from 'node:stream';
7
8
  import { Connect } from 'vite';
8
9
  import { WebSocketServer } from 'ws';
9
- import { Options } from 'co-body';
10
10
 
11
11
  /**
12
12
  * Configure plugin
@@ -568,4 +568,4 @@ type FormidableFile = formidable.File | formidable.File[];
568
568
  type LogType = 'info' | 'warn' | 'error' | 'debug';
569
569
  type LogLevel = LogType | 'silent';
570
570
 
571
- export type { FormidableFile as F, LogLevel as L, MockServerPluginOptions as M, ServerBuildOption as S, MockOptions as a, MockHttpItem as b, MockWebsocketItem as c, MockRequest as d };
571
+ export type { FormidableFile as F, LogLevel as L, MockServerPluginOptions as M, ServerBuildOption as S, MockHttpItem as a, MockOptions as b, MockRequest as c, MockWebsocketItem as d };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vite-plugin-mock-dev-server",
3
3
  "type": "module",
4
- "version": "1.7.1",
4
+ "version": "1.7.3",
5
5
  "author": "pengzhanbo <q942450674@outlook.com> (https://github.com/pengzhanbo)",
6
6
  "license": "MIT",
7
7
  "homepage": "https://vite-plugin-mock-dev-server.netlify.app",
@@ -69,25 +69,25 @@
69
69
  },
70
70
  "dependencies": {
71
71
  "@pengzhanbo/utils": "^1.1.2",
72
- "@rollup/pluginutils": "^5.1.0",
73
- "chokidar": "^3.6.0",
72
+ "@rollup/pluginutils": "^5.1.2",
73
+ "chokidar": "3.6.0",
74
74
  "co-body": "^6.2.0",
75
75
  "cookies": "^0.9.1",
76
76
  "cors": "^2.8.5",
77
- "debug": "^4.3.6",
77
+ "debug": "^4.3.7",
78
78
  "fast-glob": "^3.3.2",
79
79
  "formidable": "2.1.2",
80
80
  "http-status": "^1.7.4",
81
- "is-core-module": "^2.15.0",
81
+ "is-core-module": "^2.15.1",
82
82
  "json5": "^2.2.3",
83
83
  "mime-types": "^2.1.35",
84
84
  "path-to-regexp": "6.2.2",
85
- "picocolors": "^1.0.1",
85
+ "picocolors": "^1.1.0",
86
86
  "ws": "^8.18.0"
87
87
  },
88
88
  "devDependencies": {
89
- "esbuild": "^0.23.0",
90
- "vite": "^5.4.0"
89
+ "esbuild": "^0.24.0",
90
+ "vite": "^5.4.7"
91
91
  },
92
92
  "publishConfig": {
93
93
  "access": "public"
@@ -252,10 +252,10 @@ function recoverRequest(config) {
252
252
 
253
253
  // src/core/utils.ts
254
254
  var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
255
+ var _os = require('os'); var _os2 = _interopRequireDefault(_os);
255
256
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
256
257
  var _querystring = require('querystring');
257
258
  var _url = require('url');
258
- var _os = require('os'); var _os2 = _interopRequireDefault(_os);
259
259
  var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
260
260
 
261
261
  function isStream(stream) {
@@ -612,6 +612,130 @@ function requestLog(request, filepath) {
612
612
  return `${ms} ${pathname}${qs}${ps}${bs}${file}`;
613
613
  }
614
614
 
615
+ // src/core/logger.ts
616
+
617
+
618
+ var logLevels = {
619
+ silent: 0,
620
+ error: 1,
621
+ warn: 2,
622
+ info: 3,
623
+ debug: 4
624
+ };
625
+ function createLogger(prefix, defaultLevel = "info") {
626
+ prefix = `[${prefix}]`;
627
+ function output(type, msg, level) {
628
+ level = _utils.isBoolean.call(void 0, level) ? level ? defaultLevel : "error" : level;
629
+ const thresh = logLevels[level];
630
+ if (thresh >= logLevels[type]) {
631
+ const method = type === "info" || type === "debug" ? "log" : type;
632
+ const tag = type === "debug" ? _picocolors2.default.magenta(_picocolors2.default.bold(prefix)) : type === "info" ? _picocolors2.default.cyan(_picocolors2.default.bold(prefix)) : type === "warn" ? _picocolors2.default.yellow(_picocolors2.default.bold(prefix)) : _picocolors2.default.red(_picocolors2.default.bold(prefix));
633
+ const format = `${_picocolors2.default.dim(
634
+ (/* @__PURE__ */ new Date()).toLocaleTimeString()
635
+ )} ${tag} ${msg}`;
636
+ console[method](format);
637
+ }
638
+ }
639
+ const logger = {
640
+ debug(msg, level = defaultLevel) {
641
+ output("debug", msg, level);
642
+ },
643
+ info(msg, level = defaultLevel) {
644
+ output("info", msg, level);
645
+ },
646
+ warn(msg, level = defaultLevel) {
647
+ output("warn", msg, level);
648
+ },
649
+ error(msg, level = defaultLevel) {
650
+ output("error", msg, level);
651
+ }
652
+ };
653
+ return logger;
654
+ }
655
+
656
+ // src/core/transform.ts
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+ function transformRawData(raw, __filepath__) {
666
+ let mockConfig;
667
+ if (_utils.isArray.call(void 0, raw)) {
668
+ mockConfig = raw.map((item) => ({ ...item, __filepath__ }));
669
+ } else if ("url" in raw) {
670
+ mockConfig = { ...raw, __filepath__ };
671
+ } else {
672
+ mockConfig = [];
673
+ Object.keys(raw).forEach((key) => {
674
+ const data = raw[key];
675
+ if (_utils.isArray.call(void 0, data)) {
676
+ mockConfig.push(...data.map((item) => ({ ...item, __filepath__ })));
677
+ } else {
678
+ mockConfig.push({ ...data, __filepath__ });
679
+ }
680
+ });
681
+ }
682
+ return mockConfig;
683
+ }
684
+ function transformMockData(mockList) {
685
+ const list = [];
686
+ for (const [, handle] of mockList.entries()) {
687
+ if (handle)
688
+ list.push(..._utils.toArray.call(void 0, handle));
689
+ }
690
+ const mocks = {};
691
+ list.filter((mock) => _utils.isObject.call(void 0, mock) && mock.enabled !== false && mock.url).forEach((mock) => {
692
+ const { pathname, query } = urlParse(mock.url);
693
+ const list2 = mocks[pathname] ??= [];
694
+ const current = { ...mock, url: pathname };
695
+ if (current.ws !== true) {
696
+ const validator = current.validator;
697
+ if (!_utils.isEmptyObject.call(void 0, query)) {
698
+ if (_utils.isFunction.call(void 0, validator)) {
699
+ current.validator = function(request) {
700
+ return isObjectSubset(request.query, query) && validator(request);
701
+ };
702
+ } else if (validator) {
703
+ current.validator = { ...validator };
704
+ current.validator.query = current.validator.query ? { ...query, ...current.validator.query } : query;
705
+ } else {
706
+ current.validator = { query };
707
+ }
708
+ }
709
+ }
710
+ list2.push(current);
711
+ });
712
+ Object.keys(mocks).forEach((key) => {
713
+ mocks[key] = sortByValidator(mocks[key]);
714
+ });
715
+ return mocks;
716
+ }
717
+ function sortByValidator(mocks) {
718
+ return _utils.sortBy.call(void 0, mocks, (item) => {
719
+ if (item.ws === true)
720
+ return 0;
721
+ const { validator } = item;
722
+ if (!validator || _utils.isEmptyObject.call(void 0, validator))
723
+ return 2;
724
+ if (_utils.isFunction.call(void 0, validator))
725
+ return 0;
726
+ const count = Object.keys(validator).reduce(
727
+ (prev, key) => prev + keysCount(validator[key]),
728
+ 0
729
+ );
730
+ return 1 / count;
731
+ });
732
+ }
733
+ function keysCount(obj) {
734
+ if (!obj)
735
+ return 0;
736
+ return Object.keys(obj).length;
737
+ }
738
+
615
739
  // src/core/ws.ts
616
740
 
617
741
 
@@ -769,130 +893,6 @@ function cleanupRunner(cleanupList) {
769
893
  _optionalChain([cleanup, 'optionalCall', _28 => _28()]);
770
894
  }
771
895
 
772
- // src/core/transform.ts
773
-
774
-
775
-
776
-
777
-
778
-
779
-
780
-
781
- function transformRawData(raw, __filepath__) {
782
- let mockConfig;
783
- if (_utils.isArray.call(void 0, raw)) {
784
- mockConfig = raw.map((item) => ({ ...item, __filepath__ }));
785
- } else if ("url" in raw) {
786
- mockConfig = { ...raw, __filepath__ };
787
- } else {
788
- mockConfig = [];
789
- Object.keys(raw).forEach((key) => {
790
- const data = raw[key];
791
- if (_utils.isArray.call(void 0, data)) {
792
- mockConfig.push(...data.map((item) => ({ ...item, __filepath__ })));
793
- } else {
794
- mockConfig.push({ ...data, __filepath__ });
795
- }
796
- });
797
- }
798
- return mockConfig;
799
- }
800
- function transformMockData(mockList) {
801
- const list = [];
802
- for (const [, handle] of mockList.entries()) {
803
- if (handle)
804
- list.push(..._utils.toArray.call(void 0, handle));
805
- }
806
- const mocks = {};
807
- list.filter((mock) => _utils.isObject.call(void 0, mock) && mock.enabled !== false && mock.url).forEach((mock) => {
808
- const { pathname, query } = urlParse(mock.url);
809
- const list2 = mocks[pathname] ??= [];
810
- const current = { ...mock, url: pathname };
811
- if (current.ws !== true) {
812
- const validator = current.validator;
813
- if (!_utils.isEmptyObject.call(void 0, query)) {
814
- if (_utils.isFunction.call(void 0, validator)) {
815
- current.validator = function(request) {
816
- return isObjectSubset(request.query, query) && validator(request);
817
- };
818
- } else if (validator) {
819
- current.validator = { ...validator };
820
- current.validator.query = current.validator.query ? { ...query, ...current.validator.query } : query;
821
- } else {
822
- current.validator = { query };
823
- }
824
- }
825
- }
826
- list2.push(current);
827
- });
828
- Object.keys(mocks).forEach((key) => {
829
- mocks[key] = sortByValidator(mocks[key]);
830
- });
831
- return mocks;
832
- }
833
- function sortByValidator(mocks) {
834
- return _utils.sortBy.call(void 0, mocks, (item) => {
835
- if (item.ws === true)
836
- return 0;
837
- const { validator } = item;
838
- if (!validator || _utils.isEmptyObject.call(void 0, validator))
839
- return 2;
840
- if (_utils.isFunction.call(void 0, validator))
841
- return 0;
842
- const count = Object.keys(validator).reduce(
843
- (prev, key) => prev + keysCount(validator[key]),
844
- 0
845
- );
846
- return 1 / count;
847
- });
848
- }
849
- function keysCount(obj) {
850
- if (!obj)
851
- return 0;
852
- return Object.keys(obj).length;
853
- }
854
-
855
- // src/core/logger.ts
856
-
857
-
858
- var logLevels = {
859
- silent: 0,
860
- error: 1,
861
- warn: 2,
862
- info: 3,
863
- debug: 4
864
- };
865
- function createLogger(prefix, defaultLevel = "info") {
866
- prefix = `[${prefix}]`;
867
- function output(type, msg, level) {
868
- level = _utils.isBoolean.call(void 0, level) ? level ? defaultLevel : "error" : level;
869
- const thresh = logLevels[level];
870
- if (thresh >= logLevels[type]) {
871
- const method = type === "info" || type === "debug" ? "log" : type;
872
- const tag = type === "debug" ? _picocolors2.default.magenta(_picocolors2.default.bold(prefix)) : type === "info" ? _picocolors2.default.cyan(_picocolors2.default.bold(prefix)) : type === "warn" ? _picocolors2.default.yellow(_picocolors2.default.bold(prefix)) : _picocolors2.default.red(_picocolors2.default.bold(prefix));
873
- const format = `${_picocolors2.default.dim(
874
- (/* @__PURE__ */ new Date()).toLocaleTimeString()
875
- )} ${tag} ${msg}`;
876
- console[method](format);
877
- }
878
- }
879
- const logger = {
880
- debug(msg, level = defaultLevel) {
881
- output("debug", msg, level);
882
- },
883
- info(msg, level = defaultLevel) {
884
- output("info", msg, level);
885
- },
886
- warn(msg, level = defaultLevel) {
887
- output("warn", msg, level);
888
- },
889
- error(msg, level = defaultLevel) {
890
- output("error", msg, level);
891
- }
892
- };
893
- return logger;
894
- }
895
-
896
896
 
897
897
 
898
898