Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

vite-plugin-mock-dev-server

Package Overview
Dependencies
Maintainers
1
Versions
100
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vite-plugin-mock-dev-server - npm Package Compare versions

Comparing version
1.9.2
to
1.9.3
+111
dist/helper-BGOKvYrM.d.ts
import { MockHttpItem, MockOptions, MockWebsocketItem } from "./types-BbbTJG0b.js";
import { Transform } from "node:stream";
import { IncomingMessage, OutgoingHttpHeaders, ServerResponse } from "node:http";
//#region src/core/defineMock.d.ts
/**
* mock config Type helper
*
* mock配置 类型帮助函数
* @param config see config docs:
* {@link https://vite-plugin-mock-dev-server.netlify.app/guide/mock-config en-US DOC} |
* {@link https://vite-plugin-mock-dev-server.netlify.app/zh/guide/mock-config zh-CN DOC}
*
* @example
* Mock Http Request
* ```ts
* export default defineMock({
* url: '/api/example',
* method: ['GET', 'POST'],
* body: { a: 1 },
* })
* ```
* ```ts
* export default defineMock({
* url: '/api/example',
* method: 'GET',
* body: ({ query }) => ({ a: 1, b: query.b }),
* })
* ```
* @example
* Mock WebSocket
* ```ts
* export default defineMock({
* url: '/socket.io',
* ws: true,
* setup(wss) {
* wss.on('connection', (ws) => {
* ws.on('message', (rawData) => console.log(rawData))
* ws.send('data')
* })
* },
* })
* ```
*/
declare function defineMock(config: MockHttpItem): MockHttpItem;
declare function defineMock(config: MockWebsocketItem): MockWebsocketItem;
declare function defineMock(config: MockOptions): MockOptions;
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
declare function createDefineMock(transformer: (mock: MockHttpItem | MockWebsocketItem) => MockHttpItem | MockWebsocketItem | void): typeof defineMock;
//#endregion
//#region src/core/defineMockData.d.ts
type MockData<T = any> = readonly [() => T, (val: T | ((val: T) => T | void)) => void] & {
value: T;
};
declare function defineMockData<T = any>(key: string, initialData: T): MockData<T>;
//#endregion
//#region src/core/sse.d.ts
interface SSEMessage {
data?: string | object;
comment?: string;
event?: string;
id?: string;
retry?: number;
}
interface WriteHeaders {
writeHead?: (statusCode: number, headers?: OutgoingHttpHeaders) => WriteHeaders;
flushHeaders?: () => void;
}
type HeaderStream = NodeJS.WritableStream & WriteHeaders;
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
declare class SSEStream extends Transform {
constructor(req: IncomingMessage);
pipe<T extends HeaderStream>(destination: T, options?: {
end?: boolean;
}): T;
_transform(message: SSEMessage, encoding: string, callback: (error?: (Error | null), data?: any) => void): void;
write(message: SSEMessage, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean;
write(message: SSEMessage, cb?: (error: Error | null | undefined) => void): boolean;
destroy(error?: Error): this;
}
declare function createSSEStream(req: IncomingMessage, res: ServerResponse): SSEStream;
//#endregion
export { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData };
import { MockHttpItem, MockOptions, MockWebsocketItem } from "./types-DpbHkRjL.cjs";
import { IncomingMessage, OutgoingHttpHeaders, ServerResponse } from "node:http";
import { Transform } from "node:stream";
//#region src/core/defineMock.d.ts
/**
* mock config Type helper
*
* mock配置 类型帮助函数
* @param config see config docs:
* {@link https://vite-plugin-mock-dev-server.netlify.app/guide/mock-config en-US DOC} |
* {@link https://vite-plugin-mock-dev-server.netlify.app/zh/guide/mock-config zh-CN DOC}
*
* @example
* Mock Http Request
* ```ts
* export default defineMock({
* url: '/api/example',
* method: ['GET', 'POST'],
* body: { a: 1 },
* })
* ```
* ```ts
* export default defineMock({
* url: '/api/example',
* method: 'GET',
* body: ({ query }) => ({ a: 1, b: query.b }),
* })
* ```
* @example
* Mock WebSocket
* ```ts
* export default defineMock({
* url: '/socket.io',
* ws: true,
* setup(wss) {
* wss.on('connection', (ws) => {
* ws.on('message', (rawData) => console.log(rawData))
* ws.send('data')
* })
* },
* })
* ```
*/
declare function defineMock(config: MockHttpItem): MockHttpItem;
declare function defineMock(config: MockWebsocketItem): MockWebsocketItem;
declare function defineMock(config: MockOptions): MockOptions;
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
declare function createDefineMock(transformer: (mock: MockHttpItem | MockWebsocketItem) => MockHttpItem | MockWebsocketItem | void): typeof defineMock;
//#endregion
//#region src/core/defineMockData.d.ts
type MockData<T = any> = readonly [() => T, (val: T | ((val: T) => T | void)) => void] & {
value: T;
};
declare function defineMockData<T = any>(key: string, initialData: T): MockData<T>;
//#endregion
//#region src/core/sse.d.ts
interface SSEMessage {
data?: string | object;
comment?: string;
event?: string;
id?: string;
retry?: number;
}
interface WriteHeaders {
writeHead?: (statusCode: number, headers?: OutgoingHttpHeaders) => WriteHeaders;
flushHeaders?: () => void;
}
type HeaderStream = NodeJS.WritableStream & WriteHeaders;
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
declare class SSEStream extends Transform {
constructor(req: IncomingMessage);
pipe<T extends HeaderStream>(destination: T, options?: {
end?: boolean;
}): T;
_transform(message: SSEMessage, encoding: string, callback: (error?: (Error | null), data?: any) => void): void;
write(message: SSEMessage, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean;
write(message: SSEMessage, cb?: (error: Error | null | undefined) => void): boolean;
destroy(error?: Error): this;
}
declare function createSSEStream(req: IncomingMessage, res: ServerResponse): SSEStream;
//#endregion
export { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData };
import { deepClone, deepEqual, isArray, isFunction } from "./dist-CAA1v47s.js";
import { Transform } from "node:stream";
//#region src/core/defineMock.ts
function defineMock(config) {
return config;
}
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
function createDefineMock(transformer) {
const define = (config) => {
if (isArray(config)) config = config.map((item) => transformer(item) || item);
else config = transformer(config) || config;
return config;
};
return define;
}
//#endregion
//#region src/core/defineMockData.ts
const mockDataCache = /* @__PURE__ */ new Map();
const responseCache = /* @__PURE__ */ new WeakMap();
const staleInterval = 70;
var CacheImpl = class {
value;
#initialValue;
#lastUpdate;
constructor(value) {
this.value = value;
this.#initialValue = deepClone(value);
this.#lastUpdate = Date.now();
}
hotUpdate(value) {
if (Date.now() - this.#lastUpdate < staleInterval) return;
if (!deepEqual(value, this.#initialValue)) {
this.value = value;
this.#initialValue = deepClone(value);
this.#lastUpdate = Date.now();
}
}
};
function defineMockData(key, initialData) {
if (!mockDataCache.has(key)) mockDataCache.set(key, new CacheImpl(initialData));
const cache = mockDataCache.get(key);
cache.hotUpdate(initialData);
if (responseCache.has(cache)) return responseCache.get(cache);
const res = [() => cache.value, (val) => {
if (isFunction(val)) val = val(cache.value) ?? cache.value;
cache.value = val;
}];
Object.defineProperty(res, "value", {
get() {
return cache.value;
},
set(val) {
cache.value = val;
}
});
responseCache.set(cache, res);
return res;
}
//#endregion
//#region src/core/sse.ts
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
var SSEStream = class extends Transform {
constructor(req) {
super({ objectMode: true });
req.socket.setKeepAlive(true);
req.socket.setNoDelay(true);
req.socket.setTimeout(0);
}
pipe(destination, options) {
if (destination.writeHead) {
destination.writeHead(200, {
"Content-Type": "text/event-stream; charset=utf-8",
"Transfer-Encoding": "identity",
"Cache-Control": "no-cache",
"Connection": "keep-alive"
});
destination.flushHeaders?.();
}
destination.write(":ok\n\n");
return super.pipe(destination, options);
}
_transform(message, encoding, callback) {
if (message.comment) this.push(`: ${message.comment}\n`);
if (message.event) this.push(`event: ${message.event}\n`);
if (message.id) this.push(`id: ${message.id}\n`);
if (message.retry) this.push(`retry: ${message.retry}\n`);
if (message.data) this.push(dataString(message.data));
this.push("\n");
callback();
}
write(message, ...args) {
return super.write(message, ...args);
}
destroy(error) {
if (error) this.write({
event: "error",
data: error.message
});
this.end();
return this;
}
};
function dataString(data) {
if (typeof data === "object") return dataString(JSON.stringify(data));
return data.split(/\r\n|\r|\n/).map((line) => `data: ${line}\n`).join("");
}
function createSSEStream(req, res) {
const sse = new SSEStream(req);
sse.pipe(res);
return sse;
}
//#endregion
export { createDefineMock, createSSEStream, defineMock, defineMockData };
const require_dist = require('./dist-DrfpZ4UT.cjs');
const node_stream = require_dist.__toESM(require("node:stream"));
//#region src/core/defineMock.ts
function defineMock(config) {
return config;
}
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
function createDefineMock(transformer) {
const define = (config) => {
if (require_dist.isArray(config)) config = config.map((item) => transformer(item) || item);
else config = transformer(config) || config;
return config;
};
return define;
}
//#endregion
//#region src/core/defineMockData.ts
const mockDataCache = /* @__PURE__ */ new Map();
const responseCache = /* @__PURE__ */ new WeakMap();
const staleInterval = 70;
var CacheImpl = class {
value;
#initialValue;
#lastUpdate;
constructor(value) {
this.value = value;
this.#initialValue = require_dist.deepClone(value);
this.#lastUpdate = Date.now();
}
hotUpdate(value) {
if (Date.now() - this.#lastUpdate < staleInterval) return;
if (!require_dist.deepEqual(value, this.#initialValue)) {
this.value = value;
this.#initialValue = require_dist.deepClone(value);
this.#lastUpdate = Date.now();
}
}
};
function defineMockData(key, initialData) {
if (!mockDataCache.has(key)) mockDataCache.set(key, new CacheImpl(initialData));
const cache = mockDataCache.get(key);
cache.hotUpdate(initialData);
if (responseCache.has(cache)) return responseCache.get(cache);
const res = [() => cache.value, (val) => {
if (require_dist.isFunction(val)) val = val(cache.value) ?? cache.value;
cache.value = val;
}];
Object.defineProperty(res, "value", {
get() {
return cache.value;
},
set(val) {
cache.value = val;
}
});
responseCache.set(cache, res);
return res;
}
//#endregion
//#region src/core/sse.ts
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
var SSEStream = class extends node_stream.Transform {
constructor(req) {
super({ objectMode: true });
req.socket.setKeepAlive(true);
req.socket.setNoDelay(true);
req.socket.setTimeout(0);
}
pipe(destination, options) {
if (destination.writeHead) {
destination.writeHead(200, {
"Content-Type": "text/event-stream; charset=utf-8",
"Transfer-Encoding": "identity",
"Cache-Control": "no-cache",
"Connection": "keep-alive"
});
destination.flushHeaders?.();
}
destination.write(":ok\n\n");
return super.pipe(destination, options);
}
_transform(message, encoding, callback) {
if (message.comment) this.push(`: ${message.comment}\n`);
if (message.event) this.push(`event: ${message.event}\n`);
if (message.id) this.push(`id: ${message.id}\n`);
if (message.retry) this.push(`retry: ${message.retry}\n`);
if (message.data) this.push(dataString(message.data));
this.push("\n");
callback();
}
write(message, ...args) {
return super.write(message, ...args);
}
destroy(error) {
if (error) this.write({
event: "error",
data: error.message
});
this.end();
return this;
}
};
function dataString(data) {
if (typeof data === "object") return dataString(JSON.stringify(data));
return data.split(/\r\n|\r|\n/).map((line) => `data: ${line}\n`).join("");
}
function createSSEStream(req, res) {
const sse = new SSEStream(req);
sse.pipe(res);
return sse;
}
//#endregion
Object.defineProperty(exports, 'createDefineMock', {
enumerable: true,
get: function () {
return createDefineMock;
}
});
Object.defineProperty(exports, 'createSSEStream', {
enumerable: true,
get: function () {
return createSSEStream;
}
});
Object.defineProperty(exports, 'defineMock', {
enumerable: true,
get: function () {
return defineMock;
}
});
Object.defineProperty(exports, 'defineMockData', {
enumerable: true,
get: function () {
return defineMockData;
}
});
import { LogLevel, MockHttpItem, MockOptions, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption } from "./types-BbbTJG0b.js";
import { CorsOptions } from "cors";
import EventEmitter from "node:events";
import { FSWatcher } from "chokidar";
import { Server } from "node:http";
import { Alias, Connect } from "vite";
import { Http2SecureServer } from "node:http2";
//#region src/core/logger.d.ts
interface Logger {
debug: (msg: string, level?: boolean | LogLevel) => void;
info: (msg: string, level?: boolean | LogLevel) => void;
warn: (msg: string, level?: boolean | LogLevel) => void;
error: (msg: string, level?: boolean | LogLevel) => void;
}
declare const logLevels: Record<LogLevel, number>;
declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
//#endregion
//#region src/core/resolvePluginOptions.d.ts
type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, "build" | "cors" | "wsPrefix" | "prefix">> & {
context: string;
logger: Logger;
alias: Alias[];
define: Record<string, any>;
proxies: string[];
wsProxies: string[];
build: false | ServerBuildOption;
cors: false | CorsOptions;
};
//#endregion
//#region src/core/mockCompiler.d.ts
/**
* mock配置加载器
*/
declare class MockCompiler extends EventEmitter {
options: ResolvedMockServerPluginOptions;
moduleCache: Map<string, MockOptions | MockHttpItem | MockWebsocketItem>;
moduleDeps: Map<string, Set<string>>;
cwd: string;
mockWatcher: FSWatcher;
depsWatcher: FSWatcher;
moduleType: "cjs" | "esm";
private _mockData;
constructor(options: ResolvedMockServerPluginOptions);
get mockData(): Record<string, MockOptions>;
run(watch?: boolean): void;
private watchMockEntry;
/**
* 监听 mock文件依赖的本地文件变动,
* mock依赖文件更新,mock文件也一并更新
*/
private watchDeps;
close(): void;
private updateMockList;
private updateModuleDeps;
private loadMock;
}
//#endregion
//#region src/core/baseMiddleware.d.ts
interface BaseMiddlewareOptions {
formidableOptions: MockServerPluginOptions["formidableOptions"];
cookiesOptions: MockServerPluginOptions["cookiesOptions"];
bodyParserOptions: MockServerPluginOptions["bodyParserOptions"];
proxies: string[];
logger: Logger;
priority: MockServerPluginOptions["priority"];
}
declare function baseMiddleware(compiler: MockCompiler, {
formidableOptions,
bodyParserOptions,
proxies,
cookiesOptions,
logger,
priority
}: BaseMiddlewareOptions): Connect.NextHandleFunction;
//#endregion
//#region src/core/transform.d.ts
type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
//#endregion
//#region src/core/ws.d.ts
/**
* mock websocket
*/
declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, {
wsProxies: proxies,
cookiesOptions,
logger
}: ResolvedMockServerPluginOptions): void;
//#endregion
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
import { LogLevel, MockHttpItem, MockOptions, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption } from "./types-DpbHkRjL.cjs";
import { CorsOptions } from "cors";
import { Server } from "node:http";
import { Alias, Connect } from "vite";
import { FSWatcher } from "chokidar";
import EventEmitter from "node:events";
import { Http2SecureServer } from "node:http2";
//#region src/core/logger.d.ts
interface Logger {
debug: (msg: string, level?: boolean | LogLevel) => void;
info: (msg: string, level?: boolean | LogLevel) => void;
warn: (msg: string, level?: boolean | LogLevel) => void;
error: (msg: string, level?: boolean | LogLevel) => void;
}
declare const logLevels: Record<LogLevel, number>;
declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
//#endregion
//#region src/core/resolvePluginOptions.d.ts
type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, "build" | "cors" | "wsPrefix" | "prefix">> & {
context: string;
logger: Logger;
alias: Alias[];
define: Record<string, any>;
proxies: string[];
wsProxies: string[];
build: false | ServerBuildOption;
cors: false | CorsOptions;
};
//#endregion
//#region src/core/mockCompiler.d.ts
/**
* mock配置加载器
*/
declare class MockCompiler extends EventEmitter {
options: ResolvedMockServerPluginOptions;
moduleCache: Map<string, MockOptions | MockHttpItem | MockWebsocketItem>;
moduleDeps: Map<string, Set<string>>;
cwd: string;
mockWatcher: FSWatcher;
depsWatcher: FSWatcher;
moduleType: "cjs" | "esm";
private _mockData;
constructor(options: ResolvedMockServerPluginOptions);
get mockData(): Record<string, MockOptions>;
run(watch?: boolean): void;
private watchMockEntry;
/**
* 监听 mock文件依赖的本地文件变动,
* mock依赖文件更新,mock文件也一并更新
*/
private watchDeps;
close(): void;
private updateMockList;
private updateModuleDeps;
private loadMock;
}
//#endregion
//#region src/core/baseMiddleware.d.ts
interface BaseMiddlewareOptions {
formidableOptions: MockServerPluginOptions["formidableOptions"];
cookiesOptions: MockServerPluginOptions["cookiesOptions"];
bodyParserOptions: MockServerPluginOptions["bodyParserOptions"];
proxies: string[];
logger: Logger;
priority: MockServerPluginOptions["priority"];
}
declare function baseMiddleware(compiler: MockCompiler, {
formidableOptions,
bodyParserOptions,
proxies,
cookiesOptions,
logger,
priority
}: BaseMiddlewareOptions): Connect.NextHandleFunction;
//#endregion
//#region src/core/transform.d.ts
type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
//#endregion
//#region src/core/ws.d.ts
/**
* mock websocket
*/
declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, {
wsProxies: proxies,
cookiesOptions,
logger
}: ResolvedMockServerPluginOptions): void;
//#endregion
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
+1
-1
require('./dist-DrfpZ4UT.cjs');
const require_helper = require('./helper-CCVedLL0.cjs');
const require_helper = require('./helper-FbtDOlwA.cjs');

@@ -4,0 +4,0 @@ exports.createDefineMock = require_helper.createDefineMock;

import { MockHttpItem, MockOptions, MockRequest, MockWebsocketItem } from "./types-DpbHkRjL.cjs";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-iVHsUTZ6.cjs";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-D4jXMDFX.cjs";
export { HeaderStream, MockData, MockHttpItem, MockOptions, MockRequest, MockWebsocketItem, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData };
import { MockHttpItem, MockOptions, MockRequest, MockWebsocketItem } from "./types-BbbTJG0b.js";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-r_bW1AY8.js";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-BGOKvYrM.js";
export { HeaderStream, MockData, MockHttpItem, MockOptions, MockRequest, MockWebsocketItem, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData };
import "./dist-CAA1v47s.js";
import { createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-DhHU-YoO.js";
import { createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-DHb-Bj_j.js";
export { createDefineMock, createSSEStream, defineMock, defineMockData };
Object.defineProperty(exports, '__esModule', { value: true });
const require_dist = require('./dist-DrfpZ4UT.cjs');
const require_helper = require('./helper-CCVedLL0.cjs');
const require_helper = require('./helper-FbtDOlwA.cjs');
const require_server = require('./server-BwOfV_62.cjs');

@@ -238,3 +238,3 @@ const picocolors = require_dist.__toESM(require("picocolors"));

connect: "^3.7.0",
["vite-plugin-mock-dev-server"]: `^1.9.1`,
["vite-plugin-mock-dev-server"]: `^1.9.2`,
cors: "^2.8.5"

@@ -333,3 +333,3 @@ },

}
run() {
run(watch) {
const { include, exclude } = this.options;

@@ -342,2 +342,3 @@ /**

(0, fast_glob.default)(include, { cwd: this.cwd }).then((files) => files.filter(includeFilter).map((file) => () => this.loadMock(file))).then((loadList) => require_dist.promiseParallel(loadList, 10)).then(() => this.updateMockList());
if (!watch) return;
this.watchMockEntry();

@@ -469,3 +470,3 @@ this.watchDeps();

const compiler = createMockCompiler(options);
compiler.run();
compiler.run(!!server);
/**

@@ -472,0 +473,0 @@ * 监听 mock 文件是否发生变更,如何配置了 reload 为 true,

import { FormidableFile, MockHttpItem, MockOptions, MockRequest, MockServerPluginOptions, MockWebsocketItem } from "./types-DpbHkRjL.cjs";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-iVHsUTZ6.cjs";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-B5Ua2cmP.cjs";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-D4jXMDFX.cjs";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-DIZZ3-ar.cjs";
import { Plugin } from "vite";

@@ -5,0 +5,0 @@

import { FormidableFile, MockHttpItem, MockOptions, MockRequest, MockServerPluginOptions, MockWebsocketItem } from "./types-BbbTJG0b.js";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-r_bW1AY8.js";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-DgmHgcvl.js";
import { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-BGOKvYrM.js";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-CmsjYpLV.js";
import { Plugin } from "vite";

@@ -5,0 +5,0 @@

import { isArray, isBoolean, promiseParallel, toArray, uniq } from "./dist-CAA1v47s.js";
import { createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-DhHU-YoO.js";
import { createDefineMock, createSSEStream, defineMock, defineMockData } from "./helper-DHb-Bj_j.js";
import { baseMiddleware, createLogger, debug, doesProxyContextMatchUrl, ensureProxies, logLevels, lookupFile, mockWebSocket, normalizePath, recoverRequest, sortByValidator, transformMockData, transformRawData, urlParse } from "./server-C-u7jwot.js";

@@ -237,3 +237,3 @@ import pc from "picocolors";

connect: "^3.7.0",
["vite-plugin-mock-dev-server"]: `^1.9.1`,
["vite-plugin-mock-dev-server"]: `^1.9.2`,
cors: "^2.8.5"

@@ -332,3 +332,3 @@ },

}
run() {
run(watch) {
const { include, exclude } = this.options;

@@ -341,2 +341,3 @@ /**

fg(include, { cwd: this.cwd }).then((files) => files.filter(includeFilter).map((file) => () => this.loadMock(file))).then((loadList) => promiseParallel(loadList, 10)).then(() => this.updateMockList());
if (!watch) return;
this.watchMockEntry();

@@ -468,3 +469,3 @@ this.watchDeps();

const compiler = createMockCompiler(options);
compiler.run();
compiler.run(!!server);
/**

@@ -471,0 +472,0 @@ * 监听 mock 文件是否发生变更,如何配置了 reload 为 true,

import "./types-DpbHkRjL.cjs";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-B5Ua2cmP.cjs";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-DIZZ3-ar.cjs";
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
import "./types-BbbTJG0b.js";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-DgmHgcvl.js";
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-CmsjYpLV.js";
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
{
"name": "vite-plugin-mock-dev-server",
"type": "module",
"version": "1.9.2",
"version": "1.9.3",
"author": "pengzhanbo <q942450674@outlook.com> (https://github.com/pengzhanbo)",

@@ -89,4 +89,4 @@ "license": "MIT",

"@pengzhanbo/utils": "^2.1.0",
"esbuild": "^0.25.8",
"vite": "^7.1.1"
"esbuild": "^0.25.9",
"vite": "^7.1.2"
},

@@ -93,0 +93,0 @@ "publishConfig": {

const require_dist = require('./dist-DrfpZ4UT.cjs');
const node_stream = require_dist.__toESM(require("node:stream"));
//#region src/core/defineMock.ts
function defineMock(config) {
return config;
}
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
function createDefineMock(transformer) {
const define = (config) => {
if (require_dist.isArray(config)) config = config.map((item) => transformer(item) || item);
else config = transformer(config) || config;
return config;
};
return define;
}
//#endregion
//#region src/core/defineMockData.ts
const mockDataCache = /* @__PURE__ */ new Map();
const responseCache = /* @__PURE__ */ new WeakMap();
const staleInterval = 70;
var CacheImpl = class {
value;
#initialValue;
#lastUpdate;
constructor(value) {
this.value = value;
this.#initialValue = require_dist.deepClone(value);
this.#lastUpdate = Date.now();
}
hotUpdate(value) {
if (Date.now() - this.#lastUpdate < staleInterval) return;
if (!require_dist.deepEqual(value, this.#initialValue)) {
this.value = value;
this.#initialValue = require_dist.deepClone(value);
this.#lastUpdate = Date.now();
}
}
};
function defineMockData(key, initialData) {
if (!mockDataCache.has(key)) mockDataCache.set(key, new CacheImpl(initialData));
const cache = mockDataCache.get(key);
cache.hotUpdate(initialData);
if (responseCache.has(cache)) return responseCache.get(cache);
const res = [() => cache.value, (val) => {
if (require_dist.isFunction(val)) val = val(cache.value) ?? cache.value;
cache.value = val;
}];
Object.defineProperty(res, "value", {
get() {
return cache.value;
},
set(val) {
cache.value = val;
}
});
responseCache.set(cache, res);
return res;
}
//#endregion
//#region src/core/sse.ts
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
var SSEStream = class extends node_stream.Transform {
constructor(req) {
super({ objectMode: true });
req.socket.setKeepAlive(true);
req.socket.setNoDelay(true);
req.socket.setTimeout(0);
}
pipe(destination, options) {
if (destination.writeHead) {
destination.writeHead(200, {
"Content-Type": "text/event-stream; charset=utf-8",
"Transfer-Encoding": "identity",
"Cache-Control": "no-cache",
"Connection": "keep-alive"
});
destination.flushHeaders?.();
}
destination.write(":ok\n\n");
return super.pipe(destination, options);
}
_transform(message, encoding, callback) {
if (message.comment) this.push(`: ${message.comment}\n`);
if (message.event) this.push(`event: ${message.event}\n`);
if (message.id) this.push(`id: ${message.id}\n`);
if (message.retry) this.push(`retry: ${message.retry}\n`);
if (message.data) this.push(dataString(message.data));
this.push("\n");
callback();
}
write(message, ...args) {
return super.write(message, ...args);
}
};
function dataString(data) {
if (typeof data === "object") return dataString(JSON.stringify(data));
return data.split(/\r\n|\r|\n/).map((line) => `data: ${line}\n`).join("");
}
function createSSEStream(req, res) {
const sse = new SSEStream(req);
sse.pipe(res);
return sse;
}
//#endregion
Object.defineProperty(exports, 'createDefineMock', {
enumerable: true,
get: function () {
return createDefineMock;
}
});
Object.defineProperty(exports, 'createSSEStream', {
enumerable: true,
get: function () {
return createSSEStream;
}
});
Object.defineProperty(exports, 'defineMock', {
enumerable: true,
get: function () {
return defineMock;
}
});
Object.defineProperty(exports, 'defineMockData', {
enumerable: true,
get: function () {
return defineMockData;
}
});
import { deepClone, deepEqual, isArray, isFunction } from "./dist-CAA1v47s.js";
import { Transform } from "node:stream";
//#region src/core/defineMock.ts
function defineMock(config) {
return config;
}
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
function createDefineMock(transformer) {
const define = (config) => {
if (isArray(config)) config = config.map((item) => transformer(item) || item);
else config = transformer(config) || config;
return config;
};
return define;
}
//#endregion
//#region src/core/defineMockData.ts
const mockDataCache = /* @__PURE__ */ new Map();
const responseCache = /* @__PURE__ */ new WeakMap();
const staleInterval = 70;
var CacheImpl = class {
value;
#initialValue;
#lastUpdate;
constructor(value) {
this.value = value;
this.#initialValue = deepClone(value);
this.#lastUpdate = Date.now();
}
hotUpdate(value) {
if (Date.now() - this.#lastUpdate < staleInterval) return;
if (!deepEqual(value, this.#initialValue)) {
this.value = value;
this.#initialValue = deepClone(value);
this.#lastUpdate = Date.now();
}
}
};
function defineMockData(key, initialData) {
if (!mockDataCache.has(key)) mockDataCache.set(key, new CacheImpl(initialData));
const cache = mockDataCache.get(key);
cache.hotUpdate(initialData);
if (responseCache.has(cache)) return responseCache.get(cache);
const res = [() => cache.value, (val) => {
if (isFunction(val)) val = val(cache.value) ?? cache.value;
cache.value = val;
}];
Object.defineProperty(res, "value", {
get() {
return cache.value;
},
set(val) {
cache.value = val;
}
});
responseCache.set(cache, res);
return res;
}
//#endregion
//#region src/core/sse.ts
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
var SSEStream = class extends Transform {
constructor(req) {
super({ objectMode: true });
req.socket.setKeepAlive(true);
req.socket.setNoDelay(true);
req.socket.setTimeout(0);
}
pipe(destination, options) {
if (destination.writeHead) {
destination.writeHead(200, {
"Content-Type": "text/event-stream; charset=utf-8",
"Transfer-Encoding": "identity",
"Cache-Control": "no-cache",
"Connection": "keep-alive"
});
destination.flushHeaders?.();
}
destination.write(":ok\n\n");
return super.pipe(destination, options);
}
_transform(message, encoding, callback) {
if (message.comment) this.push(`: ${message.comment}\n`);
if (message.event) this.push(`event: ${message.event}\n`);
if (message.id) this.push(`id: ${message.id}\n`);
if (message.retry) this.push(`retry: ${message.retry}\n`);
if (message.data) this.push(dataString(message.data));
this.push("\n");
callback();
}
write(message, ...args) {
return super.write(message, ...args);
}
};
function dataString(data) {
if (typeof data === "object") return dataString(JSON.stringify(data));
return data.split(/\r\n|\r|\n/).map((line) => `data: ${line}\n`).join("");
}
function createSSEStream(req, res) {
const sse = new SSEStream(req);
sse.pipe(res);
return sse;
}
//#endregion
export { createDefineMock, createSSEStream, defineMock, defineMockData };
import { MockHttpItem, MockOptions, MockWebsocketItem } from "./types-DpbHkRjL.cjs";
import { IncomingMessage, OutgoingHttpHeaders, ServerResponse } from "node:http";
import { Transform } from "node:stream";
//#region src/core/defineMock.d.ts
/**
* mock config Type helper
*
* mock配置 类型帮助函数
* @param config see config docs:
* {@link https://vite-plugin-mock-dev-server.netlify.app/guide/mock-config en-US DOC} |
* {@link https://vite-plugin-mock-dev-server.netlify.app/zh/guide/mock-config zh-CN DOC}
*
* @example
* Mock Http Request
* ```ts
* export default defineMock({
* url: '/api/example',
* method: ['GET', 'POST'],
* body: { a: 1 },
* })
* ```
* ```ts
* export default defineMock({
* url: '/api/example',
* method: 'GET',
* body: ({ query }) => ({ a: 1, b: query.b }),
* })
* ```
* @example
* Mock WebSocket
* ```ts
* export default defineMock({
* url: '/socket.io',
* ws: true,
* setup(wss) {
* wss.on('connection', (ws) => {
* ws.on('message', (rawData) => console.log(rawData))
* ws.send('data')
* })
* },
* })
* ```
*/
declare function defineMock(config: MockHttpItem): MockHttpItem;
declare function defineMock(config: MockWebsocketItem): MockWebsocketItem;
declare function defineMock(config: MockOptions): MockOptions;
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
declare function createDefineMock(transformer: (mock: MockHttpItem | MockWebsocketItem) => MockHttpItem | MockWebsocketItem | void): typeof defineMock;
//#endregion
//#region src/core/defineMockData.d.ts
type MockData<T = any> = readonly [() => T, (val: T | ((val: T) => T | void)) => void] & {
value: T;
};
declare function defineMockData<T = any>(key: string, initialData: T): MockData<T>;
//#endregion
//#region src/core/sse.d.ts
interface SSEMessage {
data?: string | object;
comment?: string;
event?: string;
id?: string;
retry?: number;
}
interface WriteHeaders {
writeHead?: (statusCode: number, headers?: OutgoingHttpHeaders) => WriteHeaders;
flushHeaders?: () => void;
}
type HeaderStream = NodeJS.WritableStream & WriteHeaders;
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
declare class SSEStream extends Transform {
constructor(req: IncomingMessage);
pipe<T extends HeaderStream>(destination: T, options?: {
end?: boolean;
}): T;
_transform(message: SSEMessage, encoding: string, callback: (error?: (Error | null), data?: any) => void): void;
write(message: SSEMessage, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean;
write(message: SSEMessage, cb?: (error: Error | null | undefined) => void): boolean;
}
declare function createSSEStream(req: IncomingMessage, res: ServerResponse): SSEStream;
//#endregion
export { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData };
import { MockHttpItem, MockOptions, MockWebsocketItem } from "./types-BbbTJG0b.js";
import { Transform } from "node:stream";
import { IncomingMessage, OutgoingHttpHeaders, ServerResponse } from "node:http";
//#region src/core/defineMock.d.ts
/**
* mock config Type helper
*
* mock配置 类型帮助函数
* @param config see config docs:
* {@link https://vite-plugin-mock-dev-server.netlify.app/guide/mock-config en-US DOC} |
* {@link https://vite-plugin-mock-dev-server.netlify.app/zh/guide/mock-config zh-CN DOC}
*
* @example
* Mock Http Request
* ```ts
* export default defineMock({
* url: '/api/example',
* method: ['GET', 'POST'],
* body: { a: 1 },
* })
* ```
* ```ts
* export default defineMock({
* url: '/api/example',
* method: 'GET',
* body: ({ query }) => ({ a: 1, b: query.b }),
* })
* ```
* @example
* Mock WebSocket
* ```ts
* export default defineMock({
* url: '/socket.io',
* ws: true,
* setup(wss) {
* wss.on('connection', (ws) => {
* ws.on('message', (rawData) => console.log(rawData))
* ws.send('data')
* })
* },
* })
* ```
*/
declare function defineMock(config: MockHttpItem): MockHttpItem;
declare function defineMock(config: MockWebsocketItem): MockWebsocketItem;
declare function defineMock(config: MockOptions): MockOptions;
/**
* Return a custom defineMock function to support preprocessing of mock config.
*
* 返回一个自定义的 defineMock 函数,用于支持对 mock config 的预处理。
* @param transformer preprocessing function
* @example
* ```ts
* const definePostMock = createDefineMock((mock) => {
* mock.url = '/api/post/' + mock.url
* })
* export default definePostMock({
* url: 'list',
* body: [{ title: '1' }, { title: '2' }],
* })
* ```
*/
declare function createDefineMock(transformer: (mock: MockHttpItem | MockWebsocketItem) => MockHttpItem | MockWebsocketItem | void): typeof defineMock;
//#endregion
//#region src/core/defineMockData.d.ts
type MockData<T = any> = readonly [() => T, (val: T | ((val: T) => T | void)) => void] & {
value: T;
};
declare function defineMockData<T = any>(key: string, initialData: T): MockData<T>;
//#endregion
//#region src/core/sse.d.ts
interface SSEMessage {
data?: string | object;
comment?: string;
event?: string;
id?: string;
retry?: number;
}
interface WriteHeaders {
writeHead?: (statusCode: number, headers?: OutgoingHttpHeaders) => WriteHeaders;
flushHeaders?: () => void;
}
type HeaderStream = NodeJS.WritableStream & WriteHeaders;
/**
* Transforms "messages" to W3C event stream content.
* See https://html.spec.whatwg.org/multipage/server-sent-events.html
* A message is an object with one or more of the following properties:
* - data (String or object, which gets turned into JSON)
* - event
* - id
* - retry
* - comment
*
* If constructed with a HTTP Request, it will optimise the socket for streaming.
* If this stream is piped to an HTTP Response, it will set appropriate headers.
*/
declare class SSEStream extends Transform {
constructor(req: IncomingMessage);
pipe<T extends HeaderStream>(destination: T, options?: {
end?: boolean;
}): T;
_transform(message: SSEMessage, encoding: string, callback: (error?: (Error | null), data?: any) => void): void;
write(message: SSEMessage, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean;
write(message: SSEMessage, cb?: (error: Error | null | undefined) => void): boolean;
}
declare function createSSEStream(req: IncomingMessage, res: ServerResponse): SSEStream;
//#endregion
export { HeaderStream, MockData, SSEMessage, createDefineMock, createSSEStream, defineMock, defineMockData };
import { LogLevel, MockHttpItem, MockOptions, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption } from "./types-DpbHkRjL.cjs";
import { CorsOptions } from "cors";
import { Server } from "node:http";
import { Alias, Connect } from "vite";
import { FSWatcher } from "chokidar";
import EventEmitter from "node:events";
import { Http2SecureServer } from "node:http2";
//#region src/core/logger.d.ts
interface Logger {
debug: (msg: string, level?: boolean | LogLevel) => void;
info: (msg: string, level?: boolean | LogLevel) => void;
warn: (msg: string, level?: boolean | LogLevel) => void;
error: (msg: string, level?: boolean | LogLevel) => void;
}
declare const logLevels: Record<LogLevel, number>;
declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
//#endregion
//#region src/core/resolvePluginOptions.d.ts
type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, "build" | "cors" | "wsPrefix" | "prefix">> & {
context: string;
logger: Logger;
alias: Alias[];
define: Record<string, any>;
proxies: string[];
wsProxies: string[];
build: false | ServerBuildOption;
cors: false | CorsOptions;
};
//#endregion
//#region src/core/mockCompiler.d.ts
/**
* mock配置加载器
*/
declare class MockCompiler extends EventEmitter {
options: ResolvedMockServerPluginOptions;
moduleCache: Map<string, MockOptions | MockHttpItem | MockWebsocketItem>;
moduleDeps: Map<string, Set<string>>;
cwd: string;
mockWatcher: FSWatcher;
depsWatcher: FSWatcher;
moduleType: "cjs" | "esm";
private _mockData;
constructor(options: ResolvedMockServerPluginOptions);
get mockData(): Record<string, MockOptions>;
run(): void;
private watchMockEntry;
/**
* 监听 mock文件依赖的本地文件变动,
* mock依赖文件更新,mock文件也一并更新
*/
private watchDeps;
close(): void;
private updateMockList;
private updateModuleDeps;
private loadMock;
}
//#endregion
//#region src/core/baseMiddleware.d.ts
interface BaseMiddlewareOptions {
formidableOptions: MockServerPluginOptions["formidableOptions"];
cookiesOptions: MockServerPluginOptions["cookiesOptions"];
bodyParserOptions: MockServerPluginOptions["bodyParserOptions"];
proxies: string[];
logger: Logger;
priority: MockServerPluginOptions["priority"];
}
declare function baseMiddleware(compiler: MockCompiler, {
formidableOptions,
bodyParserOptions,
proxies,
cookiesOptions,
logger,
priority
}: BaseMiddlewareOptions): Connect.NextHandleFunction;
//#endregion
//#region src/core/transform.d.ts
type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
//#endregion
//#region src/core/ws.d.ts
/**
* mock websocket
*/
declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, {
wsProxies: proxies,
cookiesOptions,
logger
}: ResolvedMockServerPluginOptions): void;
//#endregion
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
import { LogLevel, MockHttpItem, MockOptions, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption } from "./types-BbbTJG0b.js";
import { CorsOptions } from "cors";
import EventEmitter from "node:events";
import { FSWatcher } from "chokidar";
import { Server } from "node:http";
import { Alias, Connect } from "vite";
import { Http2SecureServer } from "node:http2";
//#region src/core/logger.d.ts
interface Logger {
debug: (msg: string, level?: boolean | LogLevel) => void;
info: (msg: string, level?: boolean | LogLevel) => void;
warn: (msg: string, level?: boolean | LogLevel) => void;
error: (msg: string, level?: boolean | LogLevel) => void;
}
declare const logLevels: Record<LogLevel, number>;
declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
//#endregion
//#region src/core/resolvePluginOptions.d.ts
type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, "build" | "cors" | "wsPrefix" | "prefix">> & {
context: string;
logger: Logger;
alias: Alias[];
define: Record<string, any>;
proxies: string[];
wsProxies: string[];
build: false | ServerBuildOption;
cors: false | CorsOptions;
};
//#endregion
//#region src/core/mockCompiler.d.ts
/**
* mock配置加载器
*/
declare class MockCompiler extends EventEmitter {
options: ResolvedMockServerPluginOptions;
moduleCache: Map<string, MockOptions | MockHttpItem | MockWebsocketItem>;
moduleDeps: Map<string, Set<string>>;
cwd: string;
mockWatcher: FSWatcher;
depsWatcher: FSWatcher;
moduleType: "cjs" | "esm";
private _mockData;
constructor(options: ResolvedMockServerPluginOptions);
get mockData(): Record<string, MockOptions>;
run(): void;
private watchMockEntry;
/**
* 监听 mock文件依赖的本地文件变动,
* mock依赖文件更新,mock文件也一并更新
*/
private watchDeps;
close(): void;
private updateMockList;
private updateModuleDeps;
private loadMock;
}
//#endregion
//#region src/core/baseMiddleware.d.ts
interface BaseMiddlewareOptions {
formidableOptions: MockServerPluginOptions["formidableOptions"];
cookiesOptions: MockServerPluginOptions["cookiesOptions"];
bodyParserOptions: MockServerPluginOptions["bodyParserOptions"];
proxies: string[];
logger: Logger;
priority: MockServerPluginOptions["priority"];
}
declare function baseMiddleware(compiler: MockCompiler, {
formidableOptions,
bodyParserOptions,
proxies,
cookiesOptions,
logger,
priority
}: BaseMiddlewareOptions): Connect.NextHandleFunction;
//#endregion
//#region src/core/transform.d.ts
type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
//#endregion
//#region src/core/ws.d.ts
/**
* mock websocket
*/
declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2SecureServer | null, {
wsProxies: proxies,
cookiesOptions,
logger
}: ResolvedMockServerPluginOptions): void;
//#endregion
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };