@chatbi-v/mocks 2.0.5 → 2.1.1

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.
@@ -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
@@ -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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"}