vite-plugin-mock-dev-server 1.6.0 → 1.7.0

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.
@@ -0,0 +1,18 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+ var _chunkS76FMTCDcjs = require('./chunk-S76FMTCD.cjs');
10
+
11
+
12
+
13
+
14
+
15
+
16
+
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;
@@ -0,0 +1,94 @@
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';
3
+ import EventEmitter from 'node:events';
4
+ import { FSWatcher } from 'chokidar';
5
+ import { CorsOptions } from 'cors';
6
+ import { Server } from 'node:http';
7
+ import { Http2SecureServer } from 'node:http2';
8
+ import 'node:buffer';
9
+ import 'node:stream';
10
+ import 'cookies';
11
+ import 'formidable';
12
+ import 'ws';
13
+ import 'co-body';
14
+
15
+ interface Logger {
16
+ debug: (msg: string, level?: boolean | LogLevel) => void;
17
+ info: (msg: string, level?: boolean | LogLevel) => void;
18
+ warn: (msg: string, level?: boolean | LogLevel) => void;
19
+ error: (msg: string, level?: boolean | LogLevel) => void;
20
+ }
21
+ declare const logLevels: Record<LogLevel, number>;
22
+ declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
23
+
24
+ type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, 'build' | 'cors' | 'wsPrefix' | 'prefix'>> & {
25
+ context: string;
26
+ logger: Logger;
27
+ alias: Alias[];
28
+ define: Record<string, any>;
29
+ proxies: string[];
30
+ wsProxies: string[];
31
+ build: false | ServerBuildOption;
32
+ cors: false | CorsOptions;
33
+ };
34
+
35
+ /**
36
+ * mock配置加载器
37
+ */
38
+ declare class MockCompiler extends EventEmitter {
39
+ options: ResolvedMockServerPluginOptions;
40
+ moduleCache: Map<string, MockOptions | MockHttpItem | MockWebsocketItem>;
41
+ moduleDeps: Map<string, Set<string>>;
42
+ cwd: string;
43
+ mockWatcher: FSWatcher;
44
+ depsWatcher: FSWatcher;
45
+ moduleType: 'cjs' | 'esm';
46
+ private _mockData;
47
+ constructor(options: ResolvedMockServerPluginOptions);
48
+ get mockData(): Record<string, MockOptions>;
49
+ run(): void;
50
+ private watchMockEntry;
51
+ /**
52
+ * 监听 mock文件依赖的本地文件变动,
53
+ * mock依赖文件更新,mock文件也一并更新
54
+ */
55
+ private watchDeps;
56
+ close(): void;
57
+ private updateMockList;
58
+ private updateModuleDeps;
59
+ private loadMock;
60
+ }
61
+
62
+ interface BaseMiddlewareOptions {
63
+ formidableOptions: MockServerPluginOptions['formidableOptions'];
64
+ cookiesOptions: MockServerPluginOptions['cookiesOptions'];
65
+ bodyParserOptions: MockServerPluginOptions['bodyParserOptions'];
66
+ proxies: string[];
67
+ logger: Logger;
68
+ priority: MockServerPluginOptions['priority'];
69
+ }
70
+ declare function baseMiddleware(compiler: MockCompiler, { formidableOptions, bodyParserOptions, proxies, cookiesOptions, logger, priority, }: BaseMiddlewareOptions): Connect.NextHandleFunction;
71
+
72
+ /**
73
+ * 不复用 `viteConfig.server.proxy` 中 websocket proxy的原因是,
74
+ * 很难通过一种令人满意的方式,检查 mock 文件中是否有 websocket 相关的 mock 配置,
75
+ * 对比 `server.proxy` 中被使用的,并从 `viteConfig.server.proxy` 中删除。
76
+ * 由于不确定 mock 文件的规模,解析所有mock文件后找出相对应的路径匹配规则再修改 `viteConfig`,
77
+ * 这个链路的时间开销,已经影响了 vite 开发服务的启动时间,这有违 vite 和插件的预期。
78
+ * 且如果 新增的 mock 文件中 又有其他的规则需要再次 修改 `viteConfig` 导致 vite 服务重启,
79
+ * 这其实并不是一个合适的处理方案,很难符合用户的预期。
80
+ * 比较合适的方案还是提供 `wsPrefix` 配置项给用户自定义,并由用户确保 `wsPrefix` 中的项不存在
81
+ * 于 `server.proxy` 中,避免 vite 内的 http-proxy ws 与 插件的 ws 的冲突。
82
+ */
83
+
84
+ /**
85
+ * mock websocket
86
+ */
87
+ declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, { wsProxies: proxies, cookiesOptions, logger, }: ResolvedMockServerPluginOptions): void;
88
+
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
+ export { type BaseMiddlewareOptions, type Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
@@ -0,0 +1,94 @@
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';
3
+ import EventEmitter from 'node:events';
4
+ import { FSWatcher } from 'chokidar';
5
+ import { CorsOptions } from 'cors';
6
+ import { Server } from 'node:http';
7
+ import { Http2SecureServer } from 'node:http2';
8
+ import 'node:buffer';
9
+ import 'node:stream';
10
+ import 'cookies';
11
+ import 'formidable';
12
+ import 'ws';
13
+ import 'co-body';
14
+
15
+ interface Logger {
16
+ debug: (msg: string, level?: boolean | LogLevel) => void;
17
+ info: (msg: string, level?: boolean | LogLevel) => void;
18
+ warn: (msg: string, level?: boolean | LogLevel) => void;
19
+ error: (msg: string, level?: boolean | LogLevel) => void;
20
+ }
21
+ declare const logLevels: Record<LogLevel, number>;
22
+ declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
23
+
24
+ type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, 'build' | 'cors' | 'wsPrefix' | 'prefix'>> & {
25
+ context: string;
26
+ logger: Logger;
27
+ alias: Alias[];
28
+ define: Record<string, any>;
29
+ proxies: string[];
30
+ wsProxies: string[];
31
+ build: false | ServerBuildOption;
32
+ cors: false | CorsOptions;
33
+ };
34
+
35
+ /**
36
+ * mock配置加载器
37
+ */
38
+ declare class MockCompiler extends EventEmitter {
39
+ options: ResolvedMockServerPluginOptions;
40
+ moduleCache: Map<string, MockOptions | MockHttpItem | MockWebsocketItem>;
41
+ moduleDeps: Map<string, Set<string>>;
42
+ cwd: string;
43
+ mockWatcher: FSWatcher;
44
+ depsWatcher: FSWatcher;
45
+ moduleType: 'cjs' | 'esm';
46
+ private _mockData;
47
+ constructor(options: ResolvedMockServerPluginOptions);
48
+ get mockData(): Record<string, MockOptions>;
49
+ run(): void;
50
+ private watchMockEntry;
51
+ /**
52
+ * 监听 mock文件依赖的本地文件变动,
53
+ * mock依赖文件更新,mock文件也一并更新
54
+ */
55
+ private watchDeps;
56
+ close(): void;
57
+ private updateMockList;
58
+ private updateModuleDeps;
59
+ private loadMock;
60
+ }
61
+
62
+ interface BaseMiddlewareOptions {
63
+ formidableOptions: MockServerPluginOptions['formidableOptions'];
64
+ cookiesOptions: MockServerPluginOptions['cookiesOptions'];
65
+ bodyParserOptions: MockServerPluginOptions['bodyParserOptions'];
66
+ proxies: string[];
67
+ logger: Logger;
68
+ priority: MockServerPluginOptions['priority'];
69
+ }
70
+ declare function baseMiddleware(compiler: MockCompiler, { formidableOptions, bodyParserOptions, proxies, cookiesOptions, logger, priority, }: BaseMiddlewareOptions): Connect.NextHandleFunction;
71
+
72
+ /**
73
+ * 不复用 `viteConfig.server.proxy` 中 websocket proxy的原因是,
74
+ * 很难通过一种令人满意的方式,检查 mock 文件中是否有 websocket 相关的 mock 配置,
75
+ * 对比 `server.proxy` 中被使用的,并从 `viteConfig.server.proxy` 中删除。
76
+ * 由于不确定 mock 文件的规模,解析所有mock文件后找出相对应的路径匹配规则再修改 `viteConfig`,
77
+ * 这个链路的时间开销,已经影响了 vite 开发服务的启动时间,这有违 vite 和插件的预期。
78
+ * 且如果 新增的 mock 文件中 又有其他的规则需要再次 修改 `viteConfig` 导致 vite 服务重启,
79
+ * 这其实并不是一个合适的处理方案,很难符合用户的预期。
80
+ * 比较合适的方案还是提供 `wsPrefix` 配置项给用户自定义,并由用户确保 `wsPrefix` 中的项不存在
81
+ * 于 `server.proxy` 中,避免 vite 内的 http-proxy ws 与 插件的 ws 的冲突。
82
+ */
83
+
84
+ /**
85
+ * mock websocket
86
+ */
87
+ declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, { wsProxies: proxies, cookiesOptions, logger, }: ResolvedMockServerPluginOptions): void;
88
+
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
+ export { type BaseMiddlewareOptions, type Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
package/dist/server.js ADDED
@@ -0,0 +1,18 @@
1
+ import {
2
+ baseMiddleware,
3
+ createLogger,
4
+ logLevels,
5
+ mockWebSocket,
6
+ sortByValidator,
7
+ transformMockData,
8
+ transformRawData
9
+ } from "./chunk-TTKDHWOT.js";
10
+ export {
11
+ baseMiddleware,
12
+ createLogger,
13
+ logLevels,
14
+ mockWebSocket,
15
+ sortByValidator,
16
+ transformMockData,
17
+ transformRawData
18
+ };