vite-plugin-mock-dev-server 0.3.20 → 0.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -263,14 +263,14 @@ export default defineMock({
263
263
  * configurations and determines which mock configuration
264
264
  * is valid according to the validator.
265
265
  *
266
- * @type { headers?: object; body?: object; query?: object; params?: object }
266
+ * @type { headers?: object; body?: object; query?: object; params?: object; refererQuery?: object }
267
267
  *
268
268
  * If the validator incoming is an object,
269
269
  * then the validation method is the comparison of the
270
270
  * strict request of interface, headers/body/query/params
271
271
  * each `key-value` congruent, congruent check through
272
272
  *
273
- * @type ({ headers: object; body: object; query: object; params: object }) => boolean
273
+ * @type ({ headers: object; body: object; query: object; params: object; refererQuery: object }) => boolean
274
274
  * If the validator is passed a function,
275
275
  * it takes the requested interface-related data as an input,
276
276
  * gives it to the consumer for custom validation,
@@ -282,6 +282,12 @@ export default defineMock({
282
282
  body: {},
283
283
  query: {},
284
284
  params: {},
285
+ /**
286
+ * refererQuery validates the query in the url of the page from which the request originated,
287
+ * which makes it possible to modify parameters directly in the browser address bar to get
288
+ * different mock data
289
+ */
290
+ refererQuery: {}
285
291
  },
286
292
  /**
287
293
  *
package/README.zh-CN.md CHANGED
@@ -262,13 +262,13 @@ export default defineMock({
262
262
  * 验证器可以很好的解决这一类问题,将同个 url 分为多个 mock配置,
263
263
  * 根据 验证器来判断哪个mock配置生效。
264
264
  *
265
- * @type { headers?: object; body?: object; query?: object; params?: object }
265
+ * @type { headers?: object; body?: object; query?: object; params?: object; refererQuery?: object }
266
266
  *
267
267
  * 如果 validator 传入的是一个对象,那么验证方式是严格比较 请求的接口
268
268
  * 中,headers/body/query/params 的各个`key`的`value`是否全等,
269
269
  * 全等则校验通过
270
270
  *
271
- * @type ({ headers: object; body: object; query: object; params: object }) => boolean
271
+ * @type ({ headers: object; body: object; query: object; params: object; refererQuery: object }) => boolean
272
272
  * 如果 validator 传入的是一个函数,那么会讲 请求的接口相关数据作为入参,提供给使用者进行自定义校验,并返回一个 boolean
273
273
  *
274
274
  */
@@ -277,6 +277,12 @@ export default defineMock({
277
277
  body: {},
278
278
  query: {},
279
279
  params: {},
280
+ /**
281
+ * refererQuery validates the query in the url of the page from which the request originated,
282
+ * which makes it possible to modify parameters directly in the browser address bar to get
283
+ * different mock data
284
+ */
285
+ refererQuery: {}
280
286
  },
281
287
  /**
282
288
  *
package/dist/index.cjs CHANGED
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -33,6 +37,10 @@ __export(src_exports, {
33
37
  });
34
38
  module.exports = __toCommonJS(src_exports);
35
39
 
40
+ // node_modules/.pnpm/tsup@6.6.3_typescript@4.9.5/node_modules/tsup/assets/cjs_shims.js
41
+ var getImportMetaUrl = () => typeof document === "undefined" ? new URL("file:" + __filename).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
42
+ var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
43
+
36
44
  // src/build.ts
37
45
  var import_node_fs2 = __toESM(require("fs"), 1);
38
46
  var import_promises2 = __toESM(require("fs/promises"), 1);
@@ -44,7 +52,7 @@ var import_vite = require("vite");
44
52
 
45
53
  // package.json
46
54
  var name = "vite-plugin-mock-dev-server";
47
- var version = "0.3.20";
55
+ var version = "0.3.21";
48
56
 
49
57
  // src/esbuildPlugin.ts
50
58
  var import_promises = __toESM(require("fs/promises"), 1);
@@ -97,8 +105,8 @@ var isFunction = (val) => typeof val === "function";
97
105
  function sleep(timeout) {
98
106
  return new Promise((resolve) => setTimeout(resolve, timeout));
99
107
  }
100
- function getDirname(importMetaUrl) {
101
- return import_node_path2.default.dirname((0, import_node_url.fileURLToPath)(importMetaUrl));
108
+ function getDirname(importMetaUrl2) {
109
+ return import_node_path2.default.dirname((0, import_node_url.fileURLToPath)(importMetaUrl2));
102
110
  }
103
111
  var debug = (0, import_debug.default)("vite:plugin-mock-dev-server");
104
112
  var ensureArray = (thing) => {
@@ -345,7 +353,7 @@ async function parseMultipart(req, options) {
345
353
 
346
354
  // src/validator.ts
347
355
  function validate(request, validator) {
348
- return equalObj(request.headers, validator.headers) && equalObj(request.body, validator.body) && equalObj(request.params, validator.params) && equalObj(request.query, validator.query);
356
+ return equalObj(request.headers, validator.headers) && equalObj(request.body, validator.body) && equalObj(request.params, validator.params) && equalObj(request.query, validator.query) && equalObj(request.refererQuery, validator.refererQuery);
349
357
  }
350
358
  function equalObj(left, right) {
351
359
  if (!right)
@@ -362,6 +370,7 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
362
370
  return async function(req, res, next) {
363
371
  const method = req.method.toUpperCase();
364
372
  const { query, pathname } = (0, import_node_url2.parse)(req.url, true);
373
+ const { query: refererQuery } = (0, import_node_url2.parse)(req.headers.referer || "", true);
365
374
  if (!pathname || proxies.length === 0 || !proxies.some((context) => doesProxyContextMatchUrl(context, req.url))) {
366
375
  return next();
367
376
  }
@@ -388,6 +397,7 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
388
397
  const params2 = urlMatch2.params || {};
389
398
  const request = {
390
399
  query,
400
+ refererQuery,
391
401
  params: params2,
392
402
  body: reqBody,
393
403
  headers: req.headers
@@ -414,12 +424,14 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
414
424
  const params = urlMatch.params || {};
415
425
  req.body = reqBody;
416
426
  req.query = query;
427
+ req.refererQuery = refererQuery;
417
428
  req.params = params;
418
429
  res.setHeader("Content-Type", "application/json");
419
430
  res.setHeader("X-Mock", "generate by vite:mock-dev-server");
420
431
  if (currentMock.headers) {
421
432
  const headers = isFunction(currentMock.headers) ? await currentMock.headers({
422
433
  query,
434
+ refererQuery,
423
435
  body: reqBody,
424
436
  params,
425
437
  headers: req.headers
@@ -433,6 +445,7 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
433
445
  if (isFunction(currentMock.body)) {
434
446
  body = await currentMock.body({
435
447
  query,
448
+ refererQuery,
436
449
  body: reqBody,
437
450
  params,
438
451
  headers: req.headers
@@ -469,8 +482,7 @@ var import_esbuild2 = require("esbuild");
469
482
  var import_fast_glob2 = __toESM(require("fast-glob"), 1);
470
483
  var import_json52 = __toESM(require("json5"), 1);
471
484
  var import_vite2 = require("vite");
472
- var import_meta = {};
473
- var _dirname = typeof __dirname !== "undefined" ? __dirname : getDirname(import_meta.url);
485
+ var _dirname = getDirname(importMetaUrl);
474
486
  var _require = (0, import_node_module.createRequire)(_dirname);
475
487
  var _MockLoader = class extends import_node_events.default {
476
488
  constructor(options) {
@@ -539,6 +551,10 @@ var _MockLoader = class extends import_node_events.default {
539
551
  });
540
552
  this.mockWatcher = watcher;
541
553
  }
554
+ /**
555
+ * 监听 mock文件依赖的本地文件变动,
556
+ * mock依赖文件更新,mock文件也一并更新
557
+ */
542
558
  watchDeps() {
543
559
  const oldDeps = [];
544
560
  this.depsWatcher = import_chokidar.default.watch([], {
package/dist/index.d.ts CHANGED
@@ -56,6 +56,10 @@ interface ResponseReq {
56
56
  * 请求地址中位于 `?` 后面的 queryString,已解析为 json
57
57
  */
58
58
  query: Record<string, any>;
59
+ /**
60
+ * 请求 referer 中位于 `?` 后面的 queryString,已解析为 json
61
+ */
62
+ refererQuery: Record<string, any>;
59
63
  /**
60
64
  * 请求体中 body 数据
61
65
  */
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import { createFilter } from "vite";
9
9
 
10
10
  // package.json
11
11
  var name = "vite-plugin-mock-dev-server";
12
- var version = "0.3.20";
12
+ var version = "0.3.21";
13
13
 
14
14
  // src/esbuildPlugin.ts
15
15
  import fsp from "fs/promises";
@@ -310,7 +310,7 @@ async function parseMultipart(req, options) {
310
310
 
311
311
  // src/validator.ts
312
312
  function validate(request, validator) {
313
- return equalObj(request.headers, validator.headers) && equalObj(request.body, validator.body) && equalObj(request.params, validator.params) && equalObj(request.query, validator.query);
313
+ return equalObj(request.headers, validator.headers) && equalObj(request.body, validator.body) && equalObj(request.params, validator.params) && equalObj(request.query, validator.query) && equalObj(request.refererQuery, validator.refererQuery);
314
314
  }
315
315
  function equalObj(left, right) {
316
316
  if (!right)
@@ -327,6 +327,7 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
327
327
  return async function(req, res, next) {
328
328
  const method = req.method.toUpperCase();
329
329
  const { query, pathname } = urlParse(req.url, true);
330
+ const { query: refererQuery } = urlParse(req.headers.referer || "", true);
330
331
  if (!pathname || proxies.length === 0 || !proxies.some((context) => doesProxyContextMatchUrl(context, req.url))) {
331
332
  return next();
332
333
  }
@@ -353,6 +354,7 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
353
354
  const params2 = urlMatch2.params || {};
354
355
  const request = {
355
356
  query,
357
+ refererQuery,
356
358
  params: params2,
357
359
  body: reqBody,
358
360
  headers: req.headers
@@ -379,12 +381,14 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
379
381
  const params = urlMatch.params || {};
380
382
  req.body = reqBody;
381
383
  req.query = query;
384
+ req.refererQuery = refererQuery;
382
385
  req.params = params;
383
386
  res.setHeader("Content-Type", "application/json");
384
387
  res.setHeader("X-Mock", "generate by vite:mock-dev-server");
385
388
  if (currentMock.headers) {
386
389
  const headers = isFunction(currentMock.headers) ? await currentMock.headers({
387
390
  query,
391
+ refererQuery,
388
392
  body: reqBody,
389
393
  params,
390
394
  headers: req.headers
@@ -398,6 +402,7 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies }) {
398
402
  if (isFunction(currentMock.body)) {
399
403
  body = await currentMock.body({
400
404
  query,
405
+ refererQuery,
401
406
  body: reqBody,
402
407
  params,
403
408
  headers: req.headers
@@ -434,7 +439,7 @@ import { build as build2 } from "esbuild";
434
439
  import fastGlob from "fast-glob";
435
440
  import JSON52 from "json5";
436
441
  import { createFilter as createFilter2 } from "vite";
437
- var _dirname = typeof __dirname !== "undefined" ? __dirname : getDirname(import.meta.url);
442
+ var _dirname = getDirname(import.meta.url);
438
443
  var _require = createRequire(_dirname);
439
444
  var _MockLoader = class extends EventEmitter {
440
445
  constructor(options) {
@@ -503,6 +508,10 @@ var _MockLoader = class extends EventEmitter {
503
508
  });
504
509
  this.mockWatcher = watcher;
505
510
  }
511
+ /**
512
+ * 监听 mock文件依赖的本地文件变动,
513
+ * mock依赖文件更新,mock文件也一并更新
514
+ */
506
515
  watchDeps() {
507
516
  const oldDeps = [];
508
517
  this.depsWatcher = chokidar.watch([], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-mock-dev-server",
3
- "version": "0.3.20",
3
+ "version": "0.3.21",
4
4
  "keywords": [
5
5
  "vite",
6
6
  "plugin",
@@ -53,7 +53,7 @@
53
53
  "eslint": "^8.33.0",
54
54
  "mockjs": "^1.1.0",
55
55
  "prettier": "^2.8.3",
56
- "tsup": "^6.5.0",
56
+ "tsup": "^6.6.3",
57
57
  "typescript": "^4.9.5",
58
58
  "vite": "^4.1.1",
59
59
  "vitepress": "1.0.0-alpha.45",
@@ -70,6 +70,7 @@
70
70
  "entry": [
71
71
  "src/index.ts"
72
72
  ],
73
+ "shims": true,
73
74
  "sourcemap": false,
74
75
  "dts": true,
75
76
  "splitting": false,