@bubblelab/bubble-core 0.1.4 → 0.1.6
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/bubble-bundle.d.ts +28 -28
- package/dist/bubbles/service-bubble/ai-agent.d.ts +24 -24
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +16 -2
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/gmail.d.ts +4 -4
- package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
- package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
- package/dist/bubbles/service-bubble/google-sheets.d.ts +20 -20
- package/dist/bubbles/service-bubble/http.d.ts +2 -2
- package/dist/bubbles/service-bubble/postgresql.d.ts +4 -4
- package/dist/bubbles/service-bubble/slack.d.ts +58 -58
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +10 -10
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +8 -8
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +66 -66
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +50 -50
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +92 -92
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +36 -36
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +46 -46
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +60 -60
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +14 -14
- package/dist/logging/BubbleLogger.d.ts.map +1 -1
- package/dist/logging/BubbleLogger.js +16 -4
- package/dist/logging/BubbleLogger.js.map +1 -1
- package/dist/types/ai-models.d.ts +1 -1
- package/dist/types/ai-models.d.ts.map +1 -1
- package/dist/types/ai-models.js +2 -0
- package/dist/types/ai-models.js.map +1 -1
- package/dist/types/base-bubble-class.d.ts.map +1 -1
- package/dist/types/base-bubble-class.js +7 -1
- package/dist/types/base-bubble-class.js.map +1 -1
- package/package.json +4 -3
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.d.ts +0 -8
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.js +0 -65
- package/dist/bubbles/tool-bubble/virtual-file-editor-example.js.map +0 -1
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.d.ts +0 -125
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.js +0 -169
- package/dist/bubbles/tool-bubble/virtual-file-editor.tool.js.map +0 -1
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.d.ts +0 -97
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.d.ts.map +0 -1
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.js +0 -327
- package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.js.map +0 -1
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.d.ts +0 -157
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.d.ts.map +0 -1
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.js +0 -310
- package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.js.map +0 -1
- package/dist/bubbles/workflow-bubble/workflow-template.d.ts +0 -144
- package/dist/bubbles/workflow-bubble/workflow-template.d.ts.map +0 -1
- package/dist/bubbles/workflow-bubble/workflow-template.js +0 -124
- package/dist/bubbles/workflow-bubble/workflow-template.js.map +0 -1
- package/dist/types/streaming-events.d.ts +0 -18
- package/dist/types/streaming-events.d.ts.map +0 -1
- package/dist/types/streaming-events.js +0 -5
- package/dist/types/streaming-events.js.map +0 -1
- package/dist/utils/mock-data-generator.d.ts +0 -43
- package/dist/utils/mock-data-generator.d.ts.map +0 -1
- package/dist/utils/mock-data-generator.js +0 -312
- package/dist/utils/mock-data-generator.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import type { BubbleResult, BubbleOperationResult } from '../types/bubble.js';
|
|
3
|
-
/**
|
|
4
|
-
* Utility class for generating mock data from Zod schemas
|
|
5
|
-
* Useful for testing, development, and creating sample data
|
|
6
|
-
*/
|
|
7
|
-
export declare class MockDataGenerator {
|
|
8
|
-
/**
|
|
9
|
-
* Generate a complete mock BubbleResult from a result schema
|
|
10
|
-
*/
|
|
11
|
-
static generateMockResult<TResult extends BubbleOperationResult>(resultSchema: z.ZodObject<z.ZodRawShape>): BubbleResult<TResult>;
|
|
12
|
-
/**
|
|
13
|
-
* Generate mock data from JSON Schema
|
|
14
|
-
* Converts JSON Schema to mock data with realistic values
|
|
15
|
-
*/
|
|
16
|
-
static generateMockFromJsonSchema(jsonSchema: Record<string, unknown>): Record<string, unknown>;
|
|
17
|
-
/**
|
|
18
|
-
* Generate a mock value for a specific JSON Schema property
|
|
19
|
-
*/
|
|
20
|
-
static generateMockValueFromJsonSchema(schema: Record<string, unknown>): unknown;
|
|
21
|
-
/**
|
|
22
|
-
* Generate mock data object from a Zod schema
|
|
23
|
-
* Recursively handles nested objects, arrays, and primitive types
|
|
24
|
-
*/
|
|
25
|
-
static generateMockFromSchema(schema: z.ZodObject<z.ZodRawShape>): Record<string, unknown>;
|
|
26
|
-
/**
|
|
27
|
-
* Generate a mock value for a specific Zod type
|
|
28
|
-
*/
|
|
29
|
-
static generateMockValue(zodType: z.ZodTypeAny): unknown;
|
|
30
|
-
/**
|
|
31
|
-
* Generate mock string values with format-specific handling
|
|
32
|
-
*/
|
|
33
|
-
private static generateMockString;
|
|
34
|
-
/**
|
|
35
|
-
* Generate mock number values respecting constraints
|
|
36
|
-
*/
|
|
37
|
-
private static generateMockNumber;
|
|
38
|
-
/**
|
|
39
|
-
* Generate mock data with custom seed for reproducible results
|
|
40
|
-
*/
|
|
41
|
-
static generateMockWithSeed<TResult extends BubbleOperationResult>(resultSchema: z.ZodObject<z.ZodRawShape>, seed: number): BubbleResult<TResult>;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=mock-data-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-data-generator.d.ts","sourceRoot":"","sources":["../../src/utils/mock-data-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,SAAS,qBAAqB,EAC7D,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GACvC,YAAY,CAAC,OAAO,CAAC;IAYxB;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0B1B;;OAEG;IACH,MAAM,CAAC,+BAA+B,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO;IAwEV;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAC3B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0B1B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO;IA0HxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAoCjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA4BjC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,SAAS,qBAAqB,EAC/D,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EACxC,IAAI,EAAE,MAAM,GACX,YAAY,CAAC,OAAO,CAAC;CAmBzB"}
|
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { randomUUID } from 'crypto';
|
|
3
|
-
/**
|
|
4
|
-
* Utility class for generating mock data from Zod schemas
|
|
5
|
-
* Useful for testing, development, and creating sample data
|
|
6
|
-
*/
|
|
7
|
-
export class MockDataGenerator {
|
|
8
|
-
/**
|
|
9
|
-
* Generate a complete mock BubbleResult from a result schema
|
|
10
|
-
*/
|
|
11
|
-
static generateMockResult(resultSchema) {
|
|
12
|
-
const mockData = this.generateMockFromSchema(resultSchema);
|
|
13
|
-
return {
|
|
14
|
-
success: true,
|
|
15
|
-
data: mockData,
|
|
16
|
-
executionId: randomUUID(),
|
|
17
|
-
error: '',
|
|
18
|
-
timestamp: new Date(),
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Generate mock data from JSON Schema
|
|
23
|
-
* Converts JSON Schema to mock data with realistic values
|
|
24
|
-
*/
|
|
25
|
-
static generateMockFromJsonSchema(jsonSchema) {
|
|
26
|
-
const mockData = {};
|
|
27
|
-
if (!jsonSchema || typeof jsonSchema !== 'object') {
|
|
28
|
-
return mockData;
|
|
29
|
-
}
|
|
30
|
-
// Handle object type with properties
|
|
31
|
-
if (jsonSchema.type === 'object' && jsonSchema.properties) {
|
|
32
|
-
const properties = jsonSchema.properties;
|
|
33
|
-
for (const [key, propertySchema] of Object.entries(properties)) {
|
|
34
|
-
if (propertySchema && typeof propertySchema === 'object') {
|
|
35
|
-
const value = this.generateMockValueFromJsonSchema(propertySchema);
|
|
36
|
-
if (value !== undefined) {
|
|
37
|
-
mockData[key] = value;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return mockData;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Generate a mock value for a specific JSON Schema property
|
|
46
|
-
*/
|
|
47
|
-
static generateMockValueFromJsonSchema(schema) {
|
|
48
|
-
const type = schema.type;
|
|
49
|
-
switch (type) {
|
|
50
|
-
case 'string': {
|
|
51
|
-
if (schema.enum && Array.isArray(schema.enum)) {
|
|
52
|
-
return schema.enum[Math.floor(Math.random() * schema.enum.length)];
|
|
53
|
-
}
|
|
54
|
-
if (schema.format === 'email') {
|
|
55
|
-
return 'test@example.com';
|
|
56
|
-
}
|
|
57
|
-
if (schema.format === 'date-time') {
|
|
58
|
-
return new Date().toISOString();
|
|
59
|
-
}
|
|
60
|
-
if (schema.format === 'uuid') {
|
|
61
|
-
return randomUUID();
|
|
62
|
-
}
|
|
63
|
-
const minLength = typeof schema.minLength === 'number' ? schema.minLength : 1;
|
|
64
|
-
const maxLength = typeof schema.maxLength === 'number' ? schema.maxLength : 10;
|
|
65
|
-
const length = Math.floor(Math.random() * (maxLength - minLength + 1)) + minLength;
|
|
66
|
-
return ('sample_' +
|
|
67
|
-
Math.random()
|
|
68
|
-
.toString(36)
|
|
69
|
-
.substring(2, 2 + length));
|
|
70
|
-
}
|
|
71
|
-
case 'number':
|
|
72
|
-
case 'integer': {
|
|
73
|
-
const min = typeof schema.minimum === 'number' ? schema.minimum : 0;
|
|
74
|
-
const max = typeof schema.maximum === 'number' ? schema.maximum : 100;
|
|
75
|
-
const value = Math.random() * (max - min) + min;
|
|
76
|
-
return type === 'integer'
|
|
77
|
-
? Math.floor(value)
|
|
78
|
-
: Math.round(value * 100) / 100;
|
|
79
|
-
}
|
|
80
|
-
case 'boolean': {
|
|
81
|
-
return Math.random() > 0.5;
|
|
82
|
-
}
|
|
83
|
-
case 'array': {
|
|
84
|
-
const items = schema.items;
|
|
85
|
-
if (items) {
|
|
86
|
-
const minItems = typeof schema.minItems === 'number' ? schema.minItems : 1;
|
|
87
|
-
const maxItems = typeof schema.maxItems === 'number' ? schema.maxItems : 3;
|
|
88
|
-
const length = Math.floor(Math.random() * (maxItems - minItems + 1)) + minItems;
|
|
89
|
-
return Array.from({ length }, () => this.generateMockValueFromJsonSchema(items));
|
|
90
|
-
}
|
|
91
|
-
return [];
|
|
92
|
-
}
|
|
93
|
-
case 'object': {
|
|
94
|
-
return this.generateMockFromJsonSchema(schema);
|
|
95
|
-
}
|
|
96
|
-
default: {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Generate mock data object from a Zod schema
|
|
103
|
-
* Recursively handles nested objects, arrays, and primitive types
|
|
104
|
-
*/
|
|
105
|
-
static generateMockFromSchema(schema) {
|
|
106
|
-
const mockData = {};
|
|
107
|
-
if (!schema || typeof schema !== 'object' || !('shape' in schema)) {
|
|
108
|
-
return mockData;
|
|
109
|
-
}
|
|
110
|
-
const shape = schema.shape;
|
|
111
|
-
for (const [key, zodType] of Object.entries(shape)) {
|
|
112
|
-
if (key === 'success' || key === 'error') {
|
|
113
|
-
// Skip these as they're handled by the wrapper
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
if (zodType && typeof zodType === 'object' && '_def' in zodType) {
|
|
117
|
-
const value = this.generateMockValue(zodType);
|
|
118
|
-
if (value !== undefined) {
|
|
119
|
-
mockData[key] = value;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return mockData;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Generate a mock value for a specific Zod type
|
|
127
|
-
*/
|
|
128
|
-
static generateMockValue(zodType) {
|
|
129
|
-
const def = zodType._def;
|
|
130
|
-
switch (def.typeName) {
|
|
131
|
-
case 'ZodString': {
|
|
132
|
-
return this.generateMockString(def);
|
|
133
|
-
}
|
|
134
|
-
case 'ZodNumber': {
|
|
135
|
-
return this.generateMockNumber(def);
|
|
136
|
-
}
|
|
137
|
-
case 'ZodBoolean': {
|
|
138
|
-
return Math.random() > 0.5;
|
|
139
|
-
}
|
|
140
|
-
case 'ZodDate': {
|
|
141
|
-
return new Date();
|
|
142
|
-
}
|
|
143
|
-
case 'ZodArray': {
|
|
144
|
-
const elementType = def.type;
|
|
145
|
-
if (elementType) {
|
|
146
|
-
const arrayLength = Math.floor(Math.random() * 3) + 1; // 1-3 elements
|
|
147
|
-
return Array.from({ length: arrayLength }, () => this.generateMockValue(elementType));
|
|
148
|
-
}
|
|
149
|
-
return [];
|
|
150
|
-
}
|
|
151
|
-
case 'ZodObject': {
|
|
152
|
-
if ('shape' in zodType) {
|
|
153
|
-
const nestedMock = {};
|
|
154
|
-
const shape = zodType.shape;
|
|
155
|
-
for (const [key, value] of Object.entries(shape)) {
|
|
156
|
-
if (value && typeof value === 'object' && '_def' in value) {
|
|
157
|
-
const nestedValue = this.generateMockValue(value);
|
|
158
|
-
if (nestedValue !== undefined) {
|
|
159
|
-
nestedMock[key] = nestedValue;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return nestedMock;
|
|
164
|
-
}
|
|
165
|
-
return {};
|
|
166
|
-
}
|
|
167
|
-
case 'ZodOptional': {
|
|
168
|
-
// 70% chance to include optional fields
|
|
169
|
-
if (Math.random() > 0.3) {
|
|
170
|
-
return this.generateMockValue(def.innerType);
|
|
171
|
-
}
|
|
172
|
-
return undefined;
|
|
173
|
-
}
|
|
174
|
-
case 'ZodDefault': {
|
|
175
|
-
// 50% chance to use default, 50% to generate mock value
|
|
176
|
-
if (Math.random() > 0.5) {
|
|
177
|
-
return def.defaultValue();
|
|
178
|
-
}
|
|
179
|
-
return this.generateMockValue(def.innerType);
|
|
180
|
-
}
|
|
181
|
-
case 'ZodEnum': {
|
|
182
|
-
const values = def.values;
|
|
183
|
-
return values[Math.floor(Math.random() * values.length)];
|
|
184
|
-
}
|
|
185
|
-
case 'ZodLiteral': {
|
|
186
|
-
return def.value;
|
|
187
|
-
}
|
|
188
|
-
case 'ZodUnion': {
|
|
189
|
-
const options = def.options;
|
|
190
|
-
const randomOption = options[Math.floor(Math.random() * options.length)];
|
|
191
|
-
return this.generateMockValue(randomOption);
|
|
192
|
-
}
|
|
193
|
-
case 'ZodDiscriminatedUnion': {
|
|
194
|
-
const discriminatedOptions = def.options;
|
|
195
|
-
const randomDiscriminatedOption = discriminatedOptions[Math.floor(Math.random() * discriminatedOptions.length)];
|
|
196
|
-
return this.generateMockValue(randomDiscriminatedOption);
|
|
197
|
-
}
|
|
198
|
-
case 'ZodRecord': {
|
|
199
|
-
const recordMock = {};
|
|
200
|
-
const numKeys = Math.floor(Math.random() * 3) + 1; // 1-3 keys
|
|
201
|
-
for (let i = 0; i < numKeys; i++) {
|
|
202
|
-
const key = `key${i + 1}`;
|
|
203
|
-
const value = this.generateMockValue(def.valueType);
|
|
204
|
-
if (value !== undefined) {
|
|
205
|
-
recordMock[key] = value;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return recordMock;
|
|
209
|
-
}
|
|
210
|
-
case 'ZodNullable': {
|
|
211
|
-
// 80% chance to have value, 20% chance to be null
|
|
212
|
-
if (Math.random() > 0.2) {
|
|
213
|
-
return this.generateMockValue(def.innerType);
|
|
214
|
-
}
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
default: {
|
|
218
|
-
// For unknown types, return a generic value
|
|
219
|
-
console.warn(`Unknown Zod type for mock generation: ${def.typeName}`);
|
|
220
|
-
return `mock_${def.typeName}`;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Generate mock string values with format-specific handling
|
|
226
|
-
*/
|
|
227
|
-
static generateMockString(def) {
|
|
228
|
-
if (def.checks) {
|
|
229
|
-
for (const check of def.checks) {
|
|
230
|
-
switch (check.kind) {
|
|
231
|
-
case 'email': {
|
|
232
|
-
return 'test@example.com';
|
|
233
|
-
}
|
|
234
|
-
case 'url': {
|
|
235
|
-
return 'https://example.com';
|
|
236
|
-
}
|
|
237
|
-
case 'uuid': {
|
|
238
|
-
return randomUUID();
|
|
239
|
-
}
|
|
240
|
-
case 'regex': {
|
|
241
|
-
// For regex patterns, try to generate simple matching strings
|
|
242
|
-
const pattern = check.regex;
|
|
243
|
-
if (pattern.source.includes('\\d+')) {
|
|
244
|
-
return '12345';
|
|
245
|
-
}
|
|
246
|
-
if (pattern.source.includes('[a-z]')) {
|
|
247
|
-
return 'abcde';
|
|
248
|
-
}
|
|
249
|
-
return 'mock_regex_match';
|
|
250
|
-
}
|
|
251
|
-
case 'min': {
|
|
252
|
-
return 'a'.repeat(check.value);
|
|
253
|
-
}
|
|
254
|
-
case 'max': {
|
|
255
|
-
return 'mock'.substring(0, check.value);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
return 'mock string';
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Generate mock number values respecting constraints
|
|
264
|
-
*/
|
|
265
|
-
static generateMockNumber(def) {
|
|
266
|
-
let min = 0;
|
|
267
|
-
let max = 100;
|
|
268
|
-
let isInt = false;
|
|
269
|
-
if (def.checks) {
|
|
270
|
-
for (const check of def.checks) {
|
|
271
|
-
switch (check.kind) {
|
|
272
|
-
case 'min': {
|
|
273
|
-
min = check.value;
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
case 'max': {
|
|
277
|
-
max = check.value;
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
case 'int': {
|
|
281
|
-
isInt = true;
|
|
282
|
-
break;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
const value = Math.random() * (max - min) + min;
|
|
288
|
-
return isInt ? Math.floor(value) : Math.round(value * 100) / 100;
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Generate mock data with custom seed for reproducible results
|
|
292
|
-
*/
|
|
293
|
-
static generateMockWithSeed(resultSchema, seed) {
|
|
294
|
-
// Simple seeded random number generator
|
|
295
|
-
let currentSeed = seed;
|
|
296
|
-
const seededRandom = () => {
|
|
297
|
-
currentSeed = (currentSeed * 9301 + 49297) % 233280;
|
|
298
|
-
return currentSeed / 233280;
|
|
299
|
-
};
|
|
300
|
-
// Temporarily override Math.random
|
|
301
|
-
const originalRandom = Math.random;
|
|
302
|
-
Math.random = seededRandom;
|
|
303
|
-
try {
|
|
304
|
-
return this.generateMockResult(resultSchema);
|
|
305
|
-
}
|
|
306
|
-
finally {
|
|
307
|
-
// Restore original Math.random
|
|
308
|
-
Math.random = originalRandom;
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
//# sourceMappingURL=mock-data-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-data-generator.js","sourceRoot":"","sources":["../../src/utils/mock-data-generator.ts"],"names":[],"mappings":"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"}
|