@chatbi-v/mocks 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +846 -85
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +789 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/dist/adapter.d.ts +0 -48
- package/dist/adapter.js +0 -308
- package/dist/adapter.js.map +0 -1
- package/dist/generator.d.ts +0 -68
- package/dist/generator.js +0 -150
- package/dist/generator.js.map +0 -1
- package/dist/index.cjs +0 -25
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -89
- package/dist/interceptor.d.ts +0 -10
- package/dist/interceptor.js +0 -80
- package/dist/interceptor.js.map +0 -1
- package/dist/strategies.d.ts +0 -20
- package/dist/strategies.js +0 -137
- package/dist/strategies.js.map +0 -1
- package/dist/types.d.ts +0 -77
- package/dist/types.js +0 -8
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -19
- package/dist/utils.js +0 -108
- package/dist/utils.js.map +0 -1
package/dist/strategies.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import Mock from 'mockjs';
|
|
2
|
-
import { MockResponseGenerator } from './generator';
|
|
3
|
-
import { flatEvents, processTemplate } from './utils';
|
|
4
|
-
// === Legacy Strategies (Preserved) ===
|
|
5
|
-
export class ChatStreamStrategy {
|
|
6
|
-
generate(schema) {
|
|
7
|
-
const config = schema;
|
|
8
|
-
const defaultName = config.agentName || 'BI助手';
|
|
9
|
-
const generator = new MockResponseGenerator(defaultName);
|
|
10
|
-
const mockData = config.data ? Mock.mock(config.data) : {};
|
|
11
|
-
// 1. Init Plan
|
|
12
|
-
if (config.plan) {
|
|
13
|
-
generator.initPlan(config.plan);
|
|
14
|
-
}
|
|
15
|
-
// 2. Execute Timeline
|
|
16
|
-
if (config.timeline) {
|
|
17
|
-
config.timeline.forEach(step => {
|
|
18
|
-
if (step.planIndex !== undefined) {
|
|
19
|
-
generator.updatePlanStatus(step.planIndex);
|
|
20
|
-
}
|
|
21
|
-
if (step.log) {
|
|
22
|
-
const logContent = typeof step.log === 'string' ? step.log : step.log.content;
|
|
23
|
-
const logLevel = typeof step.log === 'object' ? step.log.level : 'info';
|
|
24
|
-
const logAgent = typeof step.log === 'object' ? step.log.agent : undefined;
|
|
25
|
-
generator.addLog(logContent, logLevel, logAgent);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
// 3. Content
|
|
30
|
-
let content;
|
|
31
|
-
if (typeof config.content === 'function') {
|
|
32
|
-
content = config.content(mockData);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
content = config.content;
|
|
36
|
-
}
|
|
37
|
-
if (typeof content === 'object' && content !== null) {
|
|
38
|
-
generator.emitA2UI(content);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
generator.streamContent(content);
|
|
42
|
-
}
|
|
43
|
-
// 4. Complete
|
|
44
|
-
generator.completePlan();
|
|
45
|
-
generator.finish();
|
|
46
|
-
return generator.toString().split('\n\n').map(chunk => chunk + '\n\n');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
export class HistoryStreamStrategy {
|
|
50
|
-
generate(schema) {
|
|
51
|
-
const config = schema;
|
|
52
|
-
const generator = new MockResponseGenerator('BI助手');
|
|
53
|
-
const historyMock = Mock.mock(config.template);
|
|
54
|
-
const fullHistory = [...(config.prepend || []), ...(historyMock.list || historyMock)];
|
|
55
|
-
generator.emitHistory(fullHistory);
|
|
56
|
-
return generator.toString().split('\n\n').map(chunk => chunk + '\n\n');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// === New Schema Strategies ===
|
|
60
|
-
export class JsonStrategy {
|
|
61
|
-
process(config, _requestParams) {
|
|
62
|
-
const jsonConfig = config;
|
|
63
|
-
if (!jsonConfig.responseSchema)
|
|
64
|
-
return {};
|
|
65
|
-
return Mock.mock(jsonConfig.responseSchema);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export class SseStrategy {
|
|
69
|
-
process(config, requestParams = {}) {
|
|
70
|
-
const sseConfig = config;
|
|
71
|
-
if (!sseConfig.responseSchema)
|
|
72
|
-
return [];
|
|
73
|
-
// Use flatEvents to process the schema with MockJS and sort by delay
|
|
74
|
-
return flatEvents(sseConfig.responseSchema, requestParams);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
export class SsePageStrategy {
|
|
78
|
-
process(config, requestParams = {}) {
|
|
79
|
-
const ssePageConfig = config;
|
|
80
|
-
if (!ssePageConfig.responseSchema)
|
|
81
|
-
return [];
|
|
82
|
-
// 1. Generate base events
|
|
83
|
-
const events = flatEvents(ssePageConfig.responseSchema, requestParams);
|
|
84
|
-
// 2. Generate page event if exists
|
|
85
|
-
if (ssePageConfig.pageEvent) {
|
|
86
|
-
const context = {
|
|
87
|
-
$query: requestParams, // Backward compatibility
|
|
88
|
-
$body: requestParams,
|
|
89
|
-
$param: requestParams?.param || requestParams
|
|
90
|
-
};
|
|
91
|
-
Mock.Random.extend({
|
|
92
|
-
$query: () => context.$query,
|
|
93
|
-
$body: () => context.$body,
|
|
94
|
-
$param: () => context.$param
|
|
95
|
-
});
|
|
96
|
-
// First let Mock.js process standard templates (like @integer)
|
|
97
|
-
let pageEvent = Mock.mock(ssePageConfig.pageEvent);
|
|
98
|
-
// Then process custom {{}} templates
|
|
99
|
-
pageEvent = processTemplate(pageEvent, context);
|
|
100
|
-
// Calculate max delay from existing events to ensure page event is last
|
|
101
|
-
let maxDelay = 0;
|
|
102
|
-
if (events.length > 0) {
|
|
103
|
-
const lastEvent = events[events.length - 1];
|
|
104
|
-
maxDelay = typeof lastEvent.delay === 'number' ? lastEvent.delay : parseInt(String(lastEvent.delay || 0));
|
|
105
|
-
}
|
|
106
|
-
// Set page event delay to be slightly after the last event
|
|
107
|
-
const pageDelay = typeof pageEvent.delay === 'number' ? pageEvent.delay : parseInt(String(pageEvent.delay || 0));
|
|
108
|
-
if (pageDelay <= maxDelay) {
|
|
109
|
-
pageEvent.delay = maxDelay + 20; // Add small buffer
|
|
110
|
-
}
|
|
111
|
-
events.push(pageEvent);
|
|
112
|
-
}
|
|
113
|
-
// Re-sort in case pageEvent has specific delay
|
|
114
|
-
const es = events.sort((a, b) => {
|
|
115
|
-
const delayA = typeof a.delay === 'number' ? a.delay : parseInt(String(a.delay || 0));
|
|
116
|
-
const delayB = typeof b.delay === 'number' ? b.delay : parseInt(String(b.delay || 0));
|
|
117
|
-
return delayA - delayB;
|
|
118
|
-
});
|
|
119
|
-
console.log(es);
|
|
120
|
-
return es;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Factory for new strategies
|
|
124
|
-
export const StrategyFactory = {
|
|
125
|
-
getStrategy(type = 'json') {
|
|
126
|
-
switch (type) {
|
|
127
|
-
case 'sse':
|
|
128
|
-
return new SseStrategy();
|
|
129
|
-
case 'sse-page':
|
|
130
|
-
return new SsePageStrategy();
|
|
131
|
-
case 'json':
|
|
132
|
-
default:
|
|
133
|
-
return new JsonStrategy();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=strategies.js.map
|
package/dist/strategies.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strategies.js","sourceRoot":"","sources":["../src/strategies.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
export type MockMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
2
|
-
export type MockType = 'json' | 'sse' | 'sse-page';
|
|
3
|
-
export interface MockEvent {
|
|
4
|
-
event: string;
|
|
5
|
-
data: any;
|
|
6
|
-
/** Delay in ms, or a mockjs template string like '@increment(100)' */
|
|
7
|
-
delay?: number | string;
|
|
8
|
-
}
|
|
9
|
-
export interface MockStrategy {
|
|
10
|
-
/**
|
|
11
|
-
* Process the schema and return the result.
|
|
12
|
-
* For JSON: returns the mocked object.
|
|
13
|
-
* For SSE: returns an array of formatted event strings (chunks).
|
|
14
|
-
*/
|
|
15
|
-
process(config: MockConfig, requestParams?: any): any;
|
|
16
|
-
}
|
|
17
|
-
export interface BaseMockConfig {
|
|
18
|
-
/** Optional: URL pattern if used in global interceptor */
|
|
19
|
-
url?: string;
|
|
20
|
-
/** Optional: Method if used in global interceptor */
|
|
21
|
-
method?: MockMethod;
|
|
22
|
-
/** Global delay for the request */
|
|
23
|
-
delay?: number;
|
|
24
|
-
/** Optional: HTTP status code (default: 200) */
|
|
25
|
-
status?: number;
|
|
26
|
-
/** Mock type (default: 'json') */
|
|
27
|
-
type?: MockType;
|
|
28
|
-
}
|
|
29
|
-
export interface JsonMockConfig extends BaseMockConfig {
|
|
30
|
-
type?: 'json';
|
|
31
|
-
/** The MockJS template for the response body */
|
|
32
|
-
responseSchema: any;
|
|
33
|
-
}
|
|
34
|
-
export interface SseMockConfig extends BaseMockConfig {
|
|
35
|
-
type: 'sse';
|
|
36
|
-
/**
|
|
37
|
-
* Dictionary of event templates.
|
|
38
|
-
* Key can be a mockjs template like 'data|3-5'
|
|
39
|
-
*/
|
|
40
|
-
responseSchema: Record<string, MockEvent[]>;
|
|
41
|
-
}
|
|
42
|
-
export interface SsePageMockConfig extends BaseMockConfig {
|
|
43
|
-
type: 'sse-page';
|
|
44
|
-
/** Dictionary of event templates */
|
|
45
|
-
responseSchema: Record<string, MockEvent[]>;
|
|
46
|
-
/** Special event for pagination metadata */
|
|
47
|
-
pageEvent: MockEvent;
|
|
48
|
-
}
|
|
49
|
-
export type MockConfig = JsonMockConfig | SseMockConfig | SsePageMockConfig;
|
|
50
|
-
export type MockSchema = Record<string, MockConfig>;
|
|
51
|
-
export interface ChatStreamConfig {
|
|
52
|
-
_type: 'chat_stream';
|
|
53
|
-
agentName?: string;
|
|
54
|
-
plan?: string[];
|
|
55
|
-
data?: Record<string, any>;
|
|
56
|
-
timeline?: Array<{
|
|
57
|
-
log?: string | {
|
|
58
|
-
content: string;
|
|
59
|
-
level?: 'info' | 'warning' | 'error';
|
|
60
|
-
agent?: string;
|
|
61
|
-
};
|
|
62
|
-
planIndex?: number;
|
|
63
|
-
delay?: number;
|
|
64
|
-
}>;
|
|
65
|
-
content: string | Record<string, any> | ((data: any) => string | Record<string, any>);
|
|
66
|
-
}
|
|
67
|
-
export interface HistoryStreamConfig {
|
|
68
|
-
_type: 'history_stream';
|
|
69
|
-
template: Record<string, any>;
|
|
70
|
-
prepend?: any[];
|
|
71
|
-
}
|
|
72
|
-
export type AdvancedMockSchema = ChatStreamConfig | HistoryStreamConfig;
|
|
73
|
-
export interface MockGeneratorStrategy {
|
|
74
|
-
generate(schema: any): string[];
|
|
75
|
-
}
|
|
76
|
-
export declare function createChatStream(config: Omit<ChatStreamConfig, '_type'>): ChatStreamConfig;
|
|
77
|
-
export declare function createHistoryStream(config: Omit<HistoryStreamConfig, '_type'>): HistoryStreamConfig;
|
package/dist/types.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// === Helper Functions (Restored) ===
|
|
2
|
-
export function createChatStream(config) {
|
|
3
|
-
return { _type: 'chat_stream', ...config };
|
|
4
|
-
}
|
|
5
|
-
export function createHistoryStream(config) {
|
|
6
|
-
return { _type: 'history_stream', ...config };
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+FA,sCAAsC;AAEtC,MAAM,UAAU,gBAAgB,CAAC,MAAuC;IACtE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA0C;IAC5E,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAAC;AAChD,CAAC"}
|
package/dist/utils.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { MockEvent } from './types';
|
|
2
|
-
export declare const sleep: (ms: number) => Promise<unknown>;
|
|
3
|
-
/**
|
|
4
|
-
* Process string templates like "{{$query.pageNo * 10}}" in object values.
|
|
5
|
-
* Supports $query (for backward compatibility), $body, and $param.
|
|
6
|
-
*/
|
|
7
|
-
export declare function processTemplate(data: any, context: Record<string, any>): any;
|
|
8
|
-
/**
|
|
9
|
-
* Flatten eventsSchema into a sorted array of events.
|
|
10
|
-
*
|
|
11
|
-
* Supports Mock.js array generation rules in keys, e.g.:
|
|
12
|
-
* { 'data|8-12': [{ event: 'data', ... }] }
|
|
13
|
-
* -> generates 8 to 12 data events.
|
|
14
|
-
*/
|
|
15
|
-
export declare function flatEvents(eventsSchema: Record<string, MockEvent[]>, requestData?: any): MockEvent[];
|
|
16
|
-
/**
|
|
17
|
-
* Convert an array of events into a ReadableStream (for SSE).
|
|
18
|
-
*/
|
|
19
|
-
export declare function eventsToStream(events: MockEvent[]): ReadableStream;
|
package/dist/utils.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import dayjs from 'dayjs';
|
|
2
|
-
import Mock from 'mockjs';
|
|
3
|
-
export const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
4
|
-
/**
|
|
5
|
-
* Process string templates like "{{$query.pageNo * 10}}" in object values.
|
|
6
|
-
* Supports $query (for backward compatibility), $body, and $param.
|
|
7
|
-
*/
|
|
8
|
-
export function processTemplate(data, context) {
|
|
9
|
-
if (typeof data === 'string') {
|
|
10
|
-
// Check for {{ ... }} pattern
|
|
11
|
-
if (/^\{\{.*\}\}$/.test(data)) {
|
|
12
|
-
const expression = data.slice(2, -2).trim();
|
|
13
|
-
try {
|
|
14
|
-
// Safe evaluation using Function with context keys
|
|
15
|
-
const keys = Object.keys(context);
|
|
16
|
-
const values = Object.values(context);
|
|
17
|
-
const fn = new Function(...keys, `return ${expression}`);
|
|
18
|
-
return fn(...values);
|
|
19
|
-
}
|
|
20
|
-
catch (e) {
|
|
21
|
-
console.warn(`[Mock] Failed to evaluate template: ${data}`, e);
|
|
22
|
-
return data;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return data;
|
|
26
|
-
}
|
|
27
|
-
if (Array.isArray(data)) {
|
|
28
|
-
return data.map(item => processTemplate(item, context));
|
|
29
|
-
}
|
|
30
|
-
if (typeof data === 'object' && data !== null) {
|
|
31
|
-
const result = {};
|
|
32
|
-
for (const key in data) {
|
|
33
|
-
result[key] = processTemplate(data[key], context);
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Flatten eventsSchema into a sorted array of events.
|
|
41
|
-
*
|
|
42
|
-
* Supports Mock.js array generation rules in keys, e.g.:
|
|
43
|
-
* { 'data|8-12': [{ event: 'data', ... }] }
|
|
44
|
-
* -> generates 8 to 12 data events.
|
|
45
|
-
*/
|
|
46
|
-
export function flatEvents(eventsSchema, requestData = {}) {
|
|
47
|
-
// Construct context for template processing
|
|
48
|
-
const context = {
|
|
49
|
-
$query: requestData, // Backward compatibility
|
|
50
|
-
$body: requestData,
|
|
51
|
-
$param: requestData?.param || requestData
|
|
52
|
-
};
|
|
53
|
-
// Extend Mock.Random to support templates
|
|
54
|
-
Mock.Random.extend({
|
|
55
|
-
$query: () => context.$query,
|
|
56
|
-
$body: () => context.$body,
|
|
57
|
-
$param: () => context.$param
|
|
58
|
-
});
|
|
59
|
-
// Generate data using Mock.mock
|
|
60
|
-
const compiled = Mock.mock(eventsSchema);
|
|
61
|
-
// Flatten and sort by delay
|
|
62
|
-
return Object.values(compiled)
|
|
63
|
-
.flat()
|
|
64
|
-
.map(event => processTemplate(event, context))
|
|
65
|
-
.sort((a, b) => {
|
|
66
|
-
const delayA = typeof a.delay === 'number' ? a.delay : parseInt(String(a.delay || 0));
|
|
67
|
-
const delayB = typeof b.delay === 'number' ? b.delay : parseInt(String(b.delay || 0));
|
|
68
|
-
return delayA - delayB;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Convert an array of events into a ReadableStream (for SSE).
|
|
73
|
-
*/
|
|
74
|
-
export function eventsToStream(events) {
|
|
75
|
-
const encoder = new TextEncoder();
|
|
76
|
-
return new ReadableStream({
|
|
77
|
-
start(ctrl) {
|
|
78
|
-
// Check if events is empty
|
|
79
|
-
if (!events || events.length === 0) {
|
|
80
|
-
ctrl.close();
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
(async () => {
|
|
84
|
-
try {
|
|
85
|
-
// We assume events are sorted by their `delay` property which represents
|
|
86
|
-
// "absolute time from start".
|
|
87
|
-
const startTime = dayjs().valueOf();
|
|
88
|
-
for (const eventItem of events) {
|
|
89
|
-
const delay = typeof eventItem.delay === 'number' ? eventItem.delay : parseInt(String(eventItem.delay || 0));
|
|
90
|
-
// Calculate how much time passed since start
|
|
91
|
-
const elapsed = dayjs().valueOf() - startTime;
|
|
92
|
-
const remaining = Math.max(0, delay - elapsed);
|
|
93
|
-
if (remaining > 0) {
|
|
94
|
-
await sleep(remaining);
|
|
95
|
-
}
|
|
96
|
-
const payload = `event: ${eventItem.event}\ndata: ${JSON.stringify(eventItem.data)}\n\n`;
|
|
97
|
-
ctrl.enqueue(encoder.encode(payload));
|
|
98
|
-
}
|
|
99
|
-
ctrl.close();
|
|
100
|
-
}
|
|
101
|
-
catch (e) {
|
|
102
|
-
ctrl.error(e);
|
|
103
|
-
}
|
|
104
|
-
})();
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|