@bubblelab/shared-schemas 0.1.10 → 0.1.11

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.
Files changed (94) hide show
  1. package/dist/agent-memory.d.ts +21 -0
  2. package/dist/agent-memory.d.ts.map +1 -0
  3. package/dist/agent-memory.js +11 -0
  4. package/dist/agent-memory.js.map +1 -0
  5. package/dist/ai-models.d.ts +1 -1
  6. package/dist/ai-models.d.ts.map +1 -1
  7. package/dist/ai-models.js +12 -0
  8. package/dist/ai-models.js.map +1 -1
  9. package/dist/api-schema.d.ts +2 -2
  10. package/dist/bubble-definition-schema.d.ts +559 -75
  11. package/dist/bubble-definition-schema.d.ts.map +1 -1
  12. package/dist/bubble-definition-schema.js +184 -0
  13. package/dist/bubble-definition-schema.js.map +1 -1
  14. package/dist/bubbleflow-execution-schema.d.ts +586 -175
  15. package/dist/bubbleflow-execution-schema.d.ts.map +1 -1
  16. package/dist/bubbleflow-execution-schema.js +40 -26
  17. package/dist/bubbleflow-execution-schema.js.map +1 -1
  18. package/dist/bubbleflow-generation-prompts.d.ts +13 -7
  19. package/dist/bubbleflow-generation-prompts.d.ts.map +1 -1
  20. package/dist/bubbleflow-generation-prompts.js +384 -15
  21. package/dist/bubbleflow-generation-prompts.js.map +1 -1
  22. package/dist/bubbleflow-schema.d.ts +1112 -123
  23. package/dist/bubbleflow-schema.d.ts.map +1 -1
  24. package/dist/bubbleflow-schema.js +94 -4
  25. package/dist/bubbleflow-schema.js.map +1 -1
  26. package/dist/coffee.d.ts +2201 -0
  27. package/dist/coffee.d.ts.map +1 -0
  28. package/dist/coffee.js +258 -0
  29. package/dist/coffee.js.map +1 -0
  30. package/dist/credential-schema.d.ts +27 -13
  31. package/dist/credential-schema.d.ts.map +1 -1
  32. package/dist/credential-schema.js +137 -4
  33. package/dist/credential-schema.js.map +1 -1
  34. package/dist/database-definition-schema.d.ts +8 -8
  35. package/dist/error-enhancer.d.ts +6 -0
  36. package/dist/error-enhancer.d.ts.map +1 -0
  37. package/dist/error-enhancer.js +88 -0
  38. package/dist/error-enhancer.js.map +1 -0
  39. package/dist/generate-bubbleflow-schema.d.ts +1001 -79
  40. package/dist/generate-bubbleflow-schema.d.ts.map +1 -1
  41. package/dist/generate-bubbleflow-schema.js +23 -7
  42. package/dist/generate-bubbleflow-schema.js.map +1 -1
  43. package/dist/hash-utils.d.ts +26 -0
  44. package/dist/hash-utils.d.ts.map +1 -0
  45. package/dist/hash-utils.js +37 -0
  46. package/dist/hash-utils.js.map +1 -0
  47. package/dist/index.d.ts +6 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +6 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/milk-tea.d.ts +18 -20
  52. package/dist/milk-tea.d.ts.map +1 -1
  53. package/dist/milk-tea.js +1 -4
  54. package/dist/milk-tea.js.map +1 -1
  55. package/dist/oauth-schema.d.ts +2 -2
  56. package/dist/param-utils.d.ts +10 -0
  57. package/dist/param-utils.d.ts.map +1 -0
  58. package/dist/param-utils.js +13 -0
  59. package/dist/param-utils.js.map +1 -0
  60. package/dist/pearl.d.ts +96 -29
  61. package/dist/pearl.d.ts.map +1 -1
  62. package/dist/pearl.js +20 -9
  63. package/dist/pearl.js.map +1 -1
  64. package/dist/storage-utils.d.ts +19 -0
  65. package/dist/storage-utils.d.ts.map +1 -0
  66. package/dist/storage-utils.js +54 -0
  67. package/dist/storage-utils.js.map +1 -0
  68. package/dist/streaming-events.d.ts +28 -2
  69. package/dist/streaming-events.d.ts.map +1 -1
  70. package/dist/subscription-status-schema.d.ts +192 -32
  71. package/dist/subscription-status-schema.d.ts.map +1 -1
  72. package/dist/subscription-status-schema.js +85 -7
  73. package/dist/subscription-status-schema.js.map +1 -1
  74. package/dist/trigger.d.ts +45 -51
  75. package/dist/trigger.d.ts.map +1 -1
  76. package/dist/trigger.js +0 -2
  77. package/dist/trigger.js.map +1 -1
  78. package/dist/types.d.ts +11 -2
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/types.js +14 -0
  81. package/dist/types.js.map +1 -1
  82. package/package.json +1 -1
  83. package/dist/general-chat.d.ts +0 -81
  84. package/dist/general-chat.d.ts.map +0 -1
  85. package/dist/general-chat.js +0 -58
  86. package/dist/general-chat.js.map +0 -1
  87. package/dist/generation-result-schema.d.ts +0 -73
  88. package/dist/generation-result-schema.d.ts.map +0 -1
  89. package/dist/generation-result-schema.js +0 -55
  90. package/dist/generation-result-schema.js.map +0 -1
  91. package/dist/mock-data-generator.test.d.ts +0 -2
  92. package/dist/mock-data-generator.test.d.ts.map +0 -1
  93. package/dist/mock-data-generator.test.js +0 -176
  94. package/dist/mock-data-generator.test.js.map +0 -1
@@ -1,81 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * Request schema for General Chat agent
4
- * General Chat helps users build complete workflows without requiring specific bubbles
5
- */
6
- export declare const GeneralChatRequestSchema: z.ZodObject<{
7
- userRequest: z.ZodString;
8
- currentCode: z.ZodOptional<z.ZodString>;
9
- userName: z.ZodString;
10
- conversationHistory: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
11
- role: z.ZodEnum<["user", "assistant"]>;
12
- content: z.ZodString;
13
- }, "strip", z.ZodTypeAny, {
14
- role: "user" | "assistant";
15
- content: string;
16
- }, {
17
- role: "user" | "assistant";
18
- content: string;
19
- }>, "many">>>;
20
- model: z.ZodDefault<z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-o4-mini", "openai/gpt-4o", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "anthropic/claude-sonnet-4-5-20250929", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.5-air"]>>;
21
- }, "strip", z.ZodTypeAny, {
22
- userRequest: string;
23
- userName: string;
24
- conversationHistory: {
25
- role: "user" | "assistant";
26
- content: string;
27
- }[];
28
- model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-o4-mini" | "openai/gpt-4o" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "anthropic/claude-sonnet-4-5-20250929" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.5-air";
29
- currentCode?: string | undefined;
30
- }, {
31
- userRequest: string;
32
- userName: string;
33
- currentCode?: string | undefined;
34
- conversationHistory?: {
35
- role: "user" | "assistant";
36
- content: string;
37
- }[] | undefined;
38
- model?: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-o4-mini" | "openai/gpt-4o" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "anthropic/claude-sonnet-4-5-20250929" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.5-air" | undefined;
39
- }>;
40
- /**
41
- * Response schema for General Chat agent
42
- */
43
- export declare const GeneralChatResponseSchema: z.ZodObject<{
44
- type: z.ZodEnum<["code", "question", "reject"]>;
45
- message: z.ZodString;
46
- snippet: z.ZodOptional<z.ZodString>;
47
- success: z.ZodBoolean;
48
- error: z.ZodOptional<z.ZodString>;
49
- }, "strip", z.ZodTypeAny, {
50
- message: string;
51
- type: "code" | "question" | "reject";
52
- success: boolean;
53
- snippet?: string | undefined;
54
- error?: string | undefined;
55
- }, {
56
- message: string;
57
- type: "code" | "question" | "reject";
58
- success: boolean;
59
- snippet?: string | undefined;
60
- error?: string | undefined;
61
- }>;
62
- /**
63
- * Internal agent response format (JSON mode output from AI)
64
- */
65
- export declare const GeneralChatAgentOutputSchema: z.ZodObject<{
66
- type: z.ZodEnum<["code", "question", "reject"]>;
67
- message: z.ZodString;
68
- snippet: z.ZodOptional<z.ZodString>;
69
- }, "strip", z.ZodTypeAny, {
70
- message: string;
71
- type: "code" | "question" | "reject";
72
- snippet?: string | undefined;
73
- }, {
74
- message: string;
75
- type: "code" | "question" | "reject";
76
- snippet?: string | undefined;
77
- }>;
78
- export type GeneralChatRequest = z.infer<typeof GeneralChatRequestSchema>;
79
- export type GeneralChatResponse = z.infer<typeof GeneralChatResponseSchema>;
80
- export type GeneralChatAgentOutput = z.infer<typeof GeneralChatAgentOutputSchema>;
81
- //# sourceMappingURL=general-chat.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"general-chat.d.ts","sourceRoot":"","sources":["../src/general-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EA0BpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;EAIvC,CAAC;AAGH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAC"}
@@ -1,58 +0,0 @@
1
- import { z } from 'zod';
2
- import { AvailableModels } from './ai-models.js';
3
- // Reuse the ConversationMessageSchema from milk-tea to avoid duplication
4
- const ConversationMessageSchema = z.object({
5
- role: z.enum(['user', 'assistant']),
6
- content: z.string(),
7
- });
8
- /**
9
- * Request schema for General Chat agent
10
- * General Chat helps users build complete workflows without requiring specific bubbles
11
- */
12
- export const GeneralChatRequestSchema = z.object({
13
- userRequest: z
14
- .string()
15
- .min(1, 'User request is required')
16
- .describe('The user request or question about building a workflow'),
17
- currentCode: z
18
- .string()
19
- .optional()
20
- .describe('The current workflow code for context and modification'),
21
- userName: z.string().describe('Name of the user making the request'),
22
- conversationHistory: z
23
- .array(ConversationMessageSchema)
24
- .optional()
25
- .default([])
26
- .describe('Previous conversation messages for multi-turn interactions (frontend manages state)'),
27
- model: AvailableModels.default('google/gemini-2.5-pro').describe('AI model to use for General Chat agent'),
28
- });
29
- /**
30
- * Response schema for General Chat agent
31
- */
32
- export const GeneralChatResponseSchema = z.object({
33
- type: z
34
- .enum(['code', 'question', 'reject'])
35
- .describe('Type of response: code (generated workflow), question (needs clarification), reject (infeasible request)'),
36
- message: z
37
- .string()
38
- .describe('Human-readable message: explanation for code, question text, or rejection reason'),
39
- snippet: z
40
- .string()
41
- .optional()
42
- .describe('Generated TypeScript code for complete workflow (only present when type is "code")'),
43
- success: z.boolean().describe('Whether the operation completed successfully'),
44
- error: z
45
- .string()
46
- .optional()
47
- .describe('Error message if the operation failed'),
48
- });
49
- /**
50
- * Internal agent response format (JSON mode output from AI)
51
- */
52
- export const GeneralChatAgentOutputSchema = z.object({
53
- type: z.enum(['code', 'question', 'reject']),
54
- message: z.string(),
55
- snippet: z.string().optional(),
56
- });
57
- // Note: ConversationMessage type is exported from milk-tea.ts to avoid duplication
58
- //# sourceMappingURL=general-chat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"general-chat.js","sourceRoot":"","sources":["../src/general-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,yEAAyE;AACzE,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;SAClC,QAAQ,CAAC,wDAAwD,CAAC;IAErE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IAErE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAEpE,mBAAmB,EAAE,CAAC;SACnB,KAAK,CAAC,yBAAyB,CAAC;SAChC,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CACP,qFAAqF,CACtF;IAEH,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAC9D,wCAAwC,CACzC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SACpC,QAAQ,CACP,0GAA0G,CAC3G;IAEH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CACP,kFAAkF,CACnF;IAEH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oFAAoF,CACrF;IAEH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAE7E,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;CACrD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAQH,mFAAmF"}
@@ -1,73 +0,0 @@
1
- import { z } from '@hono/zod-openapi';
2
- import { CredentialType } from './types.js';
3
- /**
4
- * Generation result schema that matches the BubbleFlow generator workflow result
5
- * but includes additional fields for the frontend generation store
6
- */
7
- export declare const GenerationResultSchema: z.ZodObject<{
8
- generatedCode: z.ZodString;
9
- isValid: z.ZodBoolean;
10
- success: z.ZodBoolean;
11
- error: z.ZodString;
12
- toolCalls: z.ZodArray<z.ZodAny, "many">;
13
- summary: z.ZodString;
14
- inputsSchema: z.ZodString;
15
- tokenUsage: z.ZodObject<{
16
- inputTokens: z.ZodNumber;
17
- outputTokens: z.ZodNumber;
18
- totalTokens: z.ZodNumber;
19
- modelName: z.ZodOptional<z.ZodString>;
20
- }, "strip", z.ZodTypeAny, {
21
- inputTokens: number;
22
- outputTokens: number;
23
- totalTokens: number;
24
- modelName?: string | undefined;
25
- }, {
26
- inputTokens: number;
27
- outputTokens: number;
28
- totalTokens: number;
29
- modelName?: string | undefined;
30
- }>;
31
- codeLength: z.ZodNumber;
32
- bubbleCount: z.ZodNumber;
33
- flowId: z.ZodNumber;
34
- requiredCredentials: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNativeEnum<typeof CredentialType>, "many">>;
35
- }, "strip", z.ZodTypeAny, {
36
- generatedCode: string;
37
- isValid: boolean;
38
- success: boolean;
39
- error: string;
40
- toolCalls: any[];
41
- summary: string;
42
- inputsSchema: string;
43
- tokenUsage: {
44
- inputTokens: number;
45
- outputTokens: number;
46
- totalTokens: number;
47
- modelName?: string | undefined;
48
- };
49
- codeLength: number;
50
- bubbleCount: number;
51
- flowId: number;
52
- requiredCredentials: Record<string, CredentialType[]>;
53
- }, {
54
- generatedCode: string;
55
- isValid: boolean;
56
- success: boolean;
57
- error: string;
58
- toolCalls: any[];
59
- summary: string;
60
- inputsSchema: string;
61
- tokenUsage: {
62
- inputTokens: number;
63
- outputTokens: number;
64
- totalTokens: number;
65
- modelName?: string | undefined;
66
- };
67
- codeLength: number;
68
- bubbleCount: number;
69
- flowId: number;
70
- requiredCredentials: Record<string, CredentialType[]>;
71
- }>;
72
- export type GenerationResult = z.infer<typeof GenerationResultSchema>;
73
- //# sourceMappingURL=generation-result-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generation-result-schema.d.ts","sourceRoot":"","sources":["../src/generation-result-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -1,55 +0,0 @@
1
- import { z } from '@hono/zod-openapi';
2
- import { CredentialType } from './types.js';
3
- import { TokenUsageSchema } from './bubbleflow-execution-schema.js';
4
- /**
5
- * Generation result schema that matches the BubbleFlow generator workflow result
6
- * but includes additional fields for the frontend generation store
7
- */
8
- export const GenerationResultSchema = z.object({
9
- // Core generation fields (matching BubbleFlowGeneratorResultSchema)
10
- generatedCode: z.string().openapi({
11
- description: 'The generated BubbleFlow TypeScript code',
12
- }),
13
- isValid: z.boolean().openapi({
14
- description: 'Whether the generated code is valid',
15
- }),
16
- success: z.boolean().openapi({
17
- description: 'Whether the generation was successful',
18
- }),
19
- error: z.string().openapi({
20
- description: 'Error message if generation failed',
21
- }),
22
- toolCalls: z.array(z.any()).openapi({
23
- description: 'The tool calls made by the AI agent',
24
- }),
25
- summary: z.string().openapi({
26
- description: 'High-level instructions for using the validated flow',
27
- }),
28
- inputsSchema: z.string().openapi({
29
- description: 'JSON Schema (string) representing the inputs of the flow',
30
- }),
31
- // Additional fields for frontend generation store
32
- tokenUsage: TokenUsageSchema.openapi({
33
- description: 'Token usage information for the generation',
34
- }),
35
- codeLength: z.number().openapi({
36
- description: 'Length of the generated code in characters',
37
- example: 2500,
38
- }),
39
- bubbleCount: z.number().openapi({
40
- description: 'Number of bubbles used in the generated flow',
41
- example: 3,
42
- }),
43
- flowId: z.number().openapi({
44
- description: 'ID of the created flow in the database',
45
- example: 123,
46
- }),
47
- requiredCredentials: z.record(z.string(), z.array(z.nativeEnum(CredentialType))).openapi({
48
- description: 'Required credentials for the bubbles in the generated code',
49
- example: {
50
- 'database-connection': [CredentialType.DATABASE_CRED],
51
- 'slack-notification': [CredentialType.SLACK_CRED],
52
- },
53
- }),
54
- });
55
- //# sourceMappingURL=generation-result-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generation-result-schema.js","sourceRoot":"","sources":["../src/generation-result-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,oEAAoE;IACpE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QAChC,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;QAC3B,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;QAC3B,WAAW,EAAE,uCAAuC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QACxB,WAAW,EAAE,oCAAoC;KAClD,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;QAClC,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QAC1B,WAAW,EAAE,sDAAsD;KACpE,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QAC/B,WAAW,EAAE,0DAA0D;KACxE,CAAC;IAEF,kDAAkD;IAClD,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACnC,WAAW,EAAE,4CAA4C;KAC1D,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QAC7B,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,IAAI;KACd,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QAC9B,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,CAAC;KACX,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;QACzB,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,GAAG;KACb,CAAC;IACF,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvF,WAAW,EAAE,4DAA4D;QACzE,OAAO,EAAE;YACP,qBAAqB,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC;YACrD,oBAAoB,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC;SAClD;KACF,CAAC;CACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mock-data-generator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-data-generator.test.d.ts","sourceRoot":"","sources":["../src/mock-data-generator.test.ts"],"names":[],"mappings":""}
@@ -1,176 +0,0 @@
1
- import { describe, test, expect } from 'vitest';
2
- import { z } from 'zod';
3
- import { MockDataGenerator } from './mock-data-generator.js';
4
- describe('MockDataGenerator', () => {
5
- describe('generateMockValue', () => {
6
- test('should generate mock string values', () => {
7
- const stringSchema = z.string();
8
- const result = MockDataGenerator.generateMockValue(stringSchema);
9
- expect(typeof result).toBe('string');
10
- expect(result).toBe('mock string');
11
- });
12
- test('should generate mock email values', () => {
13
- const emailSchema = z.string().email();
14
- const result = MockDataGenerator.generateMockValue(emailSchema);
15
- expect(typeof result).toBe('string');
16
- expect(result).toBe('test@example.com');
17
- });
18
- test('should generate mock URL values', () => {
19
- const urlSchema = z.string().url();
20
- const result = MockDataGenerator.generateMockValue(urlSchema);
21
- expect(typeof result).toBe('string');
22
- expect(result).toBe('https://example.com');
23
- });
24
- test('should generate mock UUID values', () => {
25
- const uuidSchema = z.string().uuid();
26
- const result = MockDataGenerator.generateMockValue(uuidSchema);
27
- expect(typeof result).toBe('string');
28
- expect(result).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
29
- });
30
- test('should generate mock number values', () => {
31
- const numberSchema = z.number();
32
- const result = MockDataGenerator.generateMockValue(numberSchema);
33
- expect(typeof result).toBe('number');
34
- expect(result).toBeGreaterThanOrEqual(0);
35
- expect(result).toBeLessThanOrEqual(100);
36
- });
37
- test('should generate mock boolean values', () => {
38
- const booleanSchema = z.boolean();
39
- const result = MockDataGenerator.generateMockValue(booleanSchema);
40
- expect(typeof result).toBe('boolean');
41
- });
42
- test('should generate mock array values', () => {
43
- const arraySchema = z.array(z.string());
44
- const result = MockDataGenerator.generateMockValue(arraySchema);
45
- expect(Array.isArray(result)).toBe(true);
46
- expect(result.length).toBeGreaterThan(0);
47
- expect(result.every((item) => typeof item === 'string')).toBe(true);
48
- });
49
- test('should generate mock object values', () => {
50
- const objectSchema = z.object({
51
- name: z.string(),
52
- age: z.number(),
53
- isActive: z.boolean(),
54
- });
55
- const result = MockDataGenerator.generateMockValue(objectSchema);
56
- expect(typeof result).toBe('object');
57
- expect(result).toHaveProperty('name');
58
- expect(result).toHaveProperty('age');
59
- expect(result).toHaveProperty('isActive');
60
- expect(typeof result.name).toBe('string');
61
- expect(typeof result.age).toBe('number');
62
- expect(typeof result.isActive).toBe('boolean');
63
- });
64
- test('should handle optional fields', () => {
65
- const optionalSchema = z.string().optional();
66
- const result = MockDataGenerator.generateMockValue(optionalSchema);
67
- expect(result === undefined || typeof result === 'string').toBe(true);
68
- });
69
- test('should handle enum values', () => {
70
- const enumSchema = z.enum(['option1', 'option2', 'option3']);
71
- const result = MockDataGenerator.generateMockValue(enumSchema);
72
- expect(['option1', 'option2', 'option3']).toContain(result);
73
- });
74
- test('should handle literal values', () => {
75
- const literalSchema = z.literal('exact_value');
76
- const result = MockDataGenerator.generateMockValue(literalSchema);
77
- expect(result).toBe('exact_value');
78
- });
79
- });
80
- describe('generateMockFromSchema', () => {
81
- test('should generate mock data from complex schema', () => {
82
- const complexSchema = z.object({
83
- id: z.string().uuid(),
84
- user: z.object({
85
- name: z.string(),
86
- email: z.string().email(),
87
- age: z.number().min(18).max(100),
88
- }),
89
- tags: z.array(z.string()),
90
- isActive: z.boolean(),
91
- metadata: z.record(z.string()),
92
- success: z.boolean(), // Should be skipped
93
- error: z.string(), // Should be skipped
94
- });
95
- const result = MockDataGenerator.generateMockFromSchema(complexSchema);
96
- // Verify structure
97
- expect(result).toHaveProperty('id');
98
- expect(result).toHaveProperty('user');
99
- expect(result).toHaveProperty('tags');
100
- expect(result).toHaveProperty('isActive');
101
- expect(result).toHaveProperty('metadata');
102
- // Should not include success/error as they're skipped
103
- expect(result).not.toHaveProperty('success');
104
- expect(result).not.toHaveProperty('error');
105
- // Verify types
106
- expect(typeof result.id).toBe('string');
107
- expect(typeof result.user).toBe('object');
108
- expect(Array.isArray(result.tags)).toBe(true);
109
- expect(typeof result.isActive).toBe('boolean');
110
- expect(typeof result.metadata).toBe('object');
111
- // Verify nested user object
112
- const user = result.user;
113
- expect(user).toHaveProperty('name');
114
- expect(user).toHaveProperty('email');
115
- expect(user).toHaveProperty('age');
116
- expect(typeof user.name).toBe('string');
117
- expect(typeof user.email).toBe('string');
118
- expect(typeof user.age).toBe('number');
119
- expect(user.age).toBeGreaterThanOrEqual(18);
120
- expect(user.age).toBeLessThanOrEqual(100);
121
- });
122
- });
123
- describe('generateMockResult', () => {
124
- test('should generate complete BubbleResult', () => {
125
- const resultSchema = z.object({
126
- greeting: z.string(),
127
- count: z.number(),
128
- success: z.boolean(),
129
- error: z.string(),
130
- });
131
- const result = MockDataGenerator.generateMockResult(resultSchema);
132
- // Verify BubbleResult structure
133
- expect(result).toHaveProperty('success');
134
- expect(result).toHaveProperty('data');
135
- expect(result).toHaveProperty('executionId');
136
- expect(result).toHaveProperty('error');
137
- expect(result).toHaveProperty('timestamp');
138
- expect(result.success).toBe(true);
139
- expect(typeof result.executionId).toBe('string');
140
- expect(result.error).toBe('');
141
- expect(result.timestamp).toBeInstanceOf(Date);
142
- // Verify data structure
143
- const data = result.data;
144
- expect(data).toHaveProperty('greeting');
145
- expect(data).toHaveProperty('count');
146
- expect(typeof data.greeting).toBe('string');
147
- expect(typeof data.count).toBe('number');
148
- });
149
- });
150
- describe('generateMockWithSeed', () => {
151
- test('should generate reproducible results with same seed', () => {
152
- const resultSchema = z.object({
153
- name: z.string(),
154
- value: z.number(),
155
- });
156
- const result1 = MockDataGenerator.generateMockWithSeed(resultSchema, 12345);
157
- const result2 = MockDataGenerator.generateMockWithSeed(resultSchema, 12345);
158
- expect(result1.data).toEqual(result2.data);
159
- });
160
- test('should generate different results with different seeds', () => {
161
- const resultSchema = z.object({
162
- name: z.string(),
163
- value: z.number(),
164
- });
165
- const result1 = MockDataGenerator.generateMockWithSeed(resultSchema, 12345);
166
- const result2 = MockDataGenerator.generateMockWithSeed(resultSchema, 54321);
167
- // Results should have same structure but different values
168
- expect(result1.data).not.toEqual(result2.data);
169
- expect(typeof result1.data.name).toBe('string');
170
- expect(typeof result1.data.value).toBe('number');
171
- expect(typeof result2.data.name).toBe('string');
172
- expect(typeof result2.data.value).toBe('number');
173
- });
174
- });
175
- });
176
- //# sourceMappingURL=mock-data-generator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-data-generator.test.js","sourceRoot":"","sources":["../src/mock-data-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC5C,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,iEAAiE,CAClE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC/C,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAE,MAAoB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CACH,MAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;gBACf,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;aACtB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAQ,MAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,CAAC,OAAQ,MAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,CAAC,OAAQ,MAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACrC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACzD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;gBACrB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;oBAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;oBACzB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;iBACjC,CAAC;gBACF,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;gBACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,oBAAoB;gBAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB;aACxC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;YAEvE,mBAAmB;YACnB,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAE1C,sDAAsD;YACtD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAE3C,eAAe;YACf,MAAM,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE9C,4BAA4B;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAW,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;YACjD,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAElE,gCAAgC;YAChC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE9C,wBAAwB;YACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAW,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC/D,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,iBAAiB,CAAC,oBAAoB,CACpD,YAAY,EACZ,KAAK,CACN,CAAC;YACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,oBAAoB,CACpD,YAAY,EACZ,KAAK,CACN,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAClE,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,iBAAiB,CAAC,oBAAoB,CACpD,YAAY,EACZ,KAAK,CACN,CAAC;YACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,oBAAoB,CACpD,YAAY,EACZ,KAAK,CACN,CAAC;YAEF,0DAA0D;YAC1D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAQ,OAAO,CAAC,IAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,OAAQ,OAAO,CAAC,IAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAQ,OAAO,CAAC,IAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,OAAQ,OAAO,CAAC,IAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}