@walkeros/cli 0.7.0-next.0 → 1.0.0

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 (269) hide show
  1. package/CHANGELOG.md +8 -151
  2. package/README.md +123 -37
  3. package/dist/examples/flow-order-complete.json +0 -1
  4. package/dist/examples/flow-simple.json +0 -3
  5. package/dist/examples/flow.json +0 -1
  6. package/dist/index.d.ts +23 -13
  7. package/dist/index.js +882 -846
  8. package/dist/index.js.map +1 -1
  9. package/dist/runtime/main.d.ts +2 -0
  10. package/dist/runtime/main.js +271 -0
  11. package/dist/runtime/main.js.map +1 -0
  12. package/examples/flow-order-complete.json +0 -1
  13. package/examples/flow-simple.json +0 -3
  14. package/examples/flow.json +0 -1
  15. package/package.json +10 -7
  16. package/dist/__tests__/bundle/bundler-helpers.test.d.ts +0 -2
  17. package/dist/__tests__/bundle/bundler-helpers.test.d.ts.map +0 -1
  18. package/dist/__tests__/bundle/bundler-helpers.test.js +0 -151
  19. package/dist/__tests__/bundle/bundler-helpers.test.js.map +0 -1
  20. package/dist/__tests__/bundle/bundler.test.d.ts +0 -2
  21. package/dist/__tests__/bundle/bundler.test.d.ts.map +0 -1
  22. package/dist/__tests__/bundle/bundler.test.js +0 -353
  23. package/dist/__tests__/bundle/bundler.test.js.map +0 -1
  24. package/dist/__tests__/bundle/programmatic.test.d.ts +0 -2
  25. package/dist/__tests__/bundle/programmatic.test.d.ts.map +0 -1
  26. package/dist/__tests__/bundle/programmatic.test.js +0 -148
  27. package/dist/__tests__/bundle/programmatic.test.js.map +0 -1
  28. package/dist/__tests__/cli-e2e.test.d.ts +0 -8
  29. package/dist/__tests__/cli-e2e.test.d.ts.map +0 -1
  30. package/dist/__tests__/cli-e2e.test.js +0 -130
  31. package/dist/__tests__/cli-e2e.test.js.map +0 -1
  32. package/dist/__tests__/cli.test.d.ts +0 -2
  33. package/dist/__tests__/cli.test.d.ts.map +0 -1
  34. package/dist/__tests__/cli.test.js +0 -180
  35. package/dist/__tests__/cli.test.js.map +0 -1
  36. package/dist/__tests__/config-loader.test.d.ts +0 -7
  37. package/dist/__tests__/config-loader.test.d.ts.map +0 -1
  38. package/dist/__tests__/config-loader.test.js +0 -414
  39. package/dist/__tests__/config-loader.test.js.map +0 -1
  40. package/dist/__tests__/core/asset-resolver.test.d.ts +0 -2
  41. package/dist/__tests__/core/asset-resolver.test.d.ts.map +0 -1
  42. package/dist/__tests__/core/asset-resolver.test.js +0 -14
  43. package/dist/__tests__/core/asset-resolver.test.js.map +0 -1
  44. package/dist/__tests__/core/build-cache.test.d.ts +0 -2
  45. package/dist/__tests__/core/build-cache.test.d.ts.map +0 -1
  46. package/dist/__tests__/core/build-cache.test.js +0 -55
  47. package/dist/__tests__/core/build-cache.test.js.map +0 -1
  48. package/dist/__tests__/core/cache-utils.test.d.ts +0 -2
  49. package/dist/__tests__/core/cache-utils.test.d.ts.map +0 -1
  50. package/dist/__tests__/core/cache-utils.test.js +0 -70
  51. package/dist/__tests__/core/cache-utils.test.js.map +0 -1
  52. package/dist/__tests__/core/config.test.d.ts +0 -2
  53. package/dist/__tests__/core/config.test.d.ts.map +0 -1
  54. package/dist/__tests__/core/config.test.js +0 -72
  55. package/dist/__tests__/core/config.test.js.map +0 -1
  56. package/dist/__tests__/core/docker-url.test.d.ts +0 -2
  57. package/dist/__tests__/core/docker-url.test.d.ts.map +0 -1
  58. package/dist/__tests__/core/docker-url.test.js +0 -54
  59. package/dist/__tests__/core/docker-url.test.js.map +0 -1
  60. package/dist/__tests__/core/logger.test.d.ts +0 -2
  61. package/dist/__tests__/core/logger.test.d.ts.map +0 -1
  62. package/dist/__tests__/core/logger.test.js +0 -53
  63. package/dist/__tests__/core/logger.test.js.map +0 -1
  64. package/dist/__tests__/integration/bundle-run.integration.test.d.ts +0 -8
  65. package/dist/__tests__/integration/bundle-run.integration.test.d.ts.map +0 -1
  66. package/dist/__tests__/integration/bundle-run.integration.test.js +0 -54
  67. package/dist/__tests__/integration/bundle-run.integration.test.js.map +0 -1
  68. package/dist/__tests__/push/push.test.d.ts +0 -7
  69. package/dist/__tests__/push/push.test.d.ts.map +0 -1
  70. package/dist/__tests__/push/push.test.js +0 -197
  71. package/dist/__tests__/push/push.test.js.map +0 -1
  72. package/dist/__tests__/simulate/env-loader.test.d.ts +0 -2
  73. package/dist/__tests__/simulate/env-loader.test.d.ts.map +0 -1
  74. package/dist/__tests__/simulate/env-loader.test.js +0 -47
  75. package/dist/__tests__/simulate/env-loader.test.js.map +0 -1
  76. package/dist/__tests__/simulate/node-executor.test.d.ts +0 -5
  77. package/dist/__tests__/simulate/node-executor.test.d.ts.map +0 -1
  78. package/dist/__tests__/simulate/node-executor.test.js +0 -25
  79. package/dist/__tests__/simulate/node-executor.test.js.map +0 -1
  80. package/dist/__tests__/simulate/server-simulate.integration.test.d.ts +0 -5
  81. package/dist/__tests__/simulate/server-simulate.integration.test.d.ts.map +0 -1
  82. package/dist/__tests__/simulate/server-simulate.integration.test.js +0 -58
  83. package/dist/__tests__/simulate/server-simulate.integration.test.js.map +0 -1
  84. package/dist/__tests__/smoke/production.smoke.test.d.ts +0 -8
  85. package/dist/__tests__/smoke/production.smoke.test.d.ts.map +0 -1
  86. package/dist/__tests__/smoke/production.smoke.test.js +0 -65
  87. package/dist/__tests__/smoke/production.smoke.test.js.map +0 -1
  88. package/dist/commands/bundle/bundler.d.ts +0 -32
  89. package/dist/commands/bundle/bundler.d.ts.map +0 -1
  90. package/dist/commands/bundle/bundler.js +0 -583
  91. package/dist/commands/bundle/bundler.js.map +0 -1
  92. package/dist/commands/bundle/index.d.ts +0 -57
  93. package/dist/commands/bundle/index.d.ts.map +0 -1
  94. package/dist/commands/bundle/index.js +0 -200
  95. package/dist/commands/bundle/index.js.map +0 -1
  96. package/dist/commands/bundle/package-manager.d.ts +0 -8
  97. package/dist/commands/bundle/package-manager.d.ts.map +0 -1
  98. package/dist/commands/bundle/package-manager.js +0 -197
  99. package/dist/commands/bundle/package-manager.js.map +0 -1
  100. package/dist/commands/bundle/stats.d.ts +0 -23
  101. package/dist/commands/bundle/stats.d.ts.map +0 -1
  102. package/dist/commands/bundle/stats.js +0 -52
  103. package/dist/commands/bundle/stats.js.map +0 -1
  104. package/dist/commands/cache.d.ts +0 -3
  105. package/dist/commands/cache.d.ts.map +0 -1
  106. package/dist/commands/cache.js +0 -44
  107. package/dist/commands/cache.js.map +0 -1
  108. package/dist/commands/push/index.d.ts +0 -7
  109. package/dist/commands/push/index.d.ts.map +0 -1
  110. package/dist/commands/push/index.js +0 -257
  111. package/dist/commands/push/index.js.map +0 -1
  112. package/dist/commands/push/types.d.ts +0 -21
  113. package/dist/commands/push/types.d.ts.map +0 -1
  114. package/dist/commands/push/types.js +0 -2
  115. package/dist/commands/push/types.js.map +0 -1
  116. package/dist/commands/run/__tests__/run.integration.test.d.ts +0 -8
  117. package/dist/commands/run/__tests__/run.integration.test.d.ts.map +0 -1
  118. package/dist/commands/run/__tests__/run.integration.test.js +0 -52
  119. package/dist/commands/run/__tests__/run.integration.test.js.map +0 -1
  120. package/dist/commands/run/__tests__/validators.test.d.ts +0 -2
  121. package/dist/commands/run/__tests__/validators.test.d.ts.map +0 -1
  122. package/dist/commands/run/__tests__/validators.test.js +0 -80
  123. package/dist/commands/run/__tests__/validators.test.js.map +0 -1
  124. package/dist/commands/run/execution.d.ts +0 -14
  125. package/dist/commands/run/execution.d.ts.map +0 -1
  126. package/dist/commands/run/execution.js +0 -41
  127. package/dist/commands/run/execution.js.map +0 -1
  128. package/dist/commands/run/index.d.ts +0 -39
  129. package/dist/commands/run/index.d.ts.map +0 -1
  130. package/dist/commands/run/index.js +0 -191
  131. package/dist/commands/run/index.js.map +0 -1
  132. package/dist/commands/run/types.d.ts +0 -60
  133. package/dist/commands/run/types.d.ts.map +0 -1
  134. package/dist/commands/run/types.js +0 -7
  135. package/dist/commands/run/types.js.map +0 -1
  136. package/dist/commands/run/utils.d.ts +0 -29
  137. package/dist/commands/run/utils.d.ts.map +0 -1
  138. package/dist/commands/run/utils.js +0 -52
  139. package/dist/commands/run/utils.js.map +0 -1
  140. package/dist/commands/run/validators.d.ts +0 -33
  141. package/dist/commands/run/validators.d.ts.map +0 -1
  142. package/dist/commands/run/validators.js +0 -58
  143. package/dist/commands/run/validators.js.map +0 -1
  144. package/dist/commands/simulate/env-loader.d.ts +0 -19
  145. package/dist/commands/simulate/env-loader.d.ts.map +0 -1
  146. package/dist/commands/simulate/env-loader.js +0 -46
  147. package/dist/commands/simulate/env-loader.js.map +0 -1
  148. package/dist/commands/simulate/index.d.ts +0 -48
  149. package/dist/commands/simulate/index.d.ts.map +0 -1
  150. package/dist/commands/simulate/index.js +0 -116
  151. package/dist/commands/simulate/index.js.map +0 -1
  152. package/dist/commands/simulate/jsdom-executor.d.ts +0 -37
  153. package/dist/commands/simulate/jsdom-executor.d.ts.map +0 -1
  154. package/dist/commands/simulate/jsdom-executor.js +0 -137
  155. package/dist/commands/simulate/jsdom-executor.js.map +0 -1
  156. package/dist/commands/simulate/node-executor.d.ts +0 -28
  157. package/dist/commands/simulate/node-executor.d.ts.map +0 -1
  158. package/dist/commands/simulate/node-executor.js +0 -94
  159. package/dist/commands/simulate/node-executor.js.map +0 -1
  160. package/dist/commands/simulate/simulator.d.ts +0 -14
  161. package/dist/commands/simulate/simulator.d.ts.map +0 -1
  162. package/dist/commands/simulate/simulator.js +0 -162
  163. package/dist/commands/simulate/simulator.js.map +0 -1
  164. package/dist/commands/simulate/tracker.d.ts +0 -30
  165. package/dist/commands/simulate/tracker.d.ts.map +0 -1
  166. package/dist/commands/simulate/tracker.js +0 -96
  167. package/dist/commands/simulate/tracker.js.map +0 -1
  168. package/dist/commands/simulate/types.d.ts +0 -18
  169. package/dist/commands/simulate/types.d.ts.map +0 -1
  170. package/dist/commands/simulate/types.js +0 -2
  171. package/dist/commands/simulate/types.js.map +0 -1
  172. package/dist/config/build-defaults.d.ts +0 -49
  173. package/dist/config/build-defaults.d.ts.map +0 -1
  174. package/dist/config/build-defaults.js +0 -70
  175. package/dist/config/build-defaults.js.map +0 -1
  176. package/dist/config/index.d.ts +0 -13
  177. package/dist/config/index.d.ts.map +0 -1
  178. package/dist/config/index.js +0 -15
  179. package/dist/config/index.js.map +0 -1
  180. package/dist/config/loader.d.ts +0 -81
  181. package/dist/config/loader.d.ts.map +0 -1
  182. package/dist/config/loader.js +0 -155
  183. package/dist/config/loader.js.map +0 -1
  184. package/dist/config/utils.d.ts +0 -114
  185. package/dist/config/utils.d.ts.map +0 -1
  186. package/dist/config/utils.js +0 -257
  187. package/dist/config/utils.js.map +0 -1
  188. package/dist/config/validators.d.ts +0 -52
  189. package/dist/config/validators.d.ts.map +0 -1
  190. package/dist/config/validators.js +0 -85
  191. package/dist/config/validators.js.map +0 -1
  192. package/dist/core/asset-resolver.d.ts +0 -34
  193. package/dist/core/asset-resolver.d.ts.map +0 -1
  194. package/dist/core/asset-resolver.js +0 -70
  195. package/dist/core/asset-resolver.js.map +0 -1
  196. package/dist/core/build-cache.d.ts +0 -23
  197. package/dist/core/build-cache.d.ts.map +0 -1
  198. package/dist/core/build-cache.js +0 -43
  199. package/dist/core/build-cache.js.map +0 -1
  200. package/dist/core/cache-utils.d.ts +0 -27
  201. package/dist/core/cache-utils.d.ts.map +0 -1
  202. package/dist/core/cache-utils.js +0 -60
  203. package/dist/core/cache-utils.js.map +0 -1
  204. package/dist/core/docker.d.ts +0 -102
  205. package/dist/core/docker.d.ts.map +0 -1
  206. package/dist/core/docker.js +0 -278
  207. package/dist/core/docker.js.map +0 -1
  208. package/dist/core/execution.d.ts +0 -34
  209. package/dist/core/execution.d.ts.map +0 -1
  210. package/dist/core/execution.js +0 -64
  211. package/dist/core/execution.js.map +0 -1
  212. package/dist/core/index.d.ts +0 -10
  213. package/dist/core/index.d.ts.map +0 -1
  214. package/dist/core/index.js +0 -10
  215. package/dist/core/index.js.map +0 -1
  216. package/dist/core/local-packages.d.ts +0 -19
  217. package/dist/core/local-packages.d.ts.map +0 -1
  218. package/dist/core/local-packages.js +0 -60
  219. package/dist/core/local-packages.js.map +0 -1
  220. package/dist/core/logger.d.ts +0 -28
  221. package/dist/core/logger.d.ts.map +0 -1
  222. package/dist/core/logger.js +0 -88
  223. package/dist/core/logger.js.map +0 -1
  224. package/dist/core/output.d.ts +0 -30
  225. package/dist/core/output.d.ts.map +0 -1
  226. package/dist/core/output.js +0 -46
  227. package/dist/core/output.js.map +0 -1
  228. package/dist/core/temp-manager.d.ts +0 -51
  229. package/dist/core/temp-manager.d.ts.map +0 -1
  230. package/dist/core/temp-manager.js +0 -73
  231. package/dist/core/temp-manager.js.map +0 -1
  232. package/dist/core/timer.d.ts +0 -14
  233. package/dist/core/timer.d.ts.map +0 -1
  234. package/dist/core/timer.js +0 -29
  235. package/dist/core/timer.js.map +0 -1
  236. package/dist/core/utils.d.ts +0 -10
  237. package/dist/core/utils.d.ts.map +0 -1
  238. package/dist/core/utils.js +0 -12
  239. package/dist/core/utils.js.map +0 -1
  240. package/dist/index.d.ts.map +0 -1
  241. package/dist/schemas/index.d.ts +0 -9
  242. package/dist/schemas/index.d.ts.map +0 -1
  243. package/dist/schemas/index.js +0 -9
  244. package/dist/schemas/index.js.map +0 -1
  245. package/dist/schemas/primitives.d.ts +0 -37
  246. package/dist/schemas/primitives.d.ts.map +0 -1
  247. package/dist/schemas/primitives.js +0 -43
  248. package/dist/schemas/primitives.js.map +0 -1
  249. package/dist/schemas/run.d.ts +0 -23
  250. package/dist/schemas/run.d.ts.map +0 -1
  251. package/dist/schemas/run.js +0 -20
  252. package/dist/schemas/run.js.map +0 -1
  253. package/dist/types/bundle.d.ts +0 -141
  254. package/dist/types/bundle.d.ts.map +0 -1
  255. package/dist/types/bundle.js +0 -10
  256. package/dist/types/bundle.js.map +0 -1
  257. package/dist/types/global.d.ts +0 -51
  258. package/dist/types/global.d.ts.map +0 -1
  259. package/dist/types/global.js +0 -30
  260. package/dist/types/global.js.map +0 -1
  261. package/dist/types/index.d.ts +0 -8
  262. package/dist/types/index.d.ts.map +0 -1
  263. package/dist/types/index.js +0 -8
  264. package/dist/types/index.js.map +0 -1
  265. package/dist/version.d.ts +0 -3
  266. package/dist/version.d.ts.map +0 -1
  267. package/dist/version.js +0 -27
  268. package/dist/version.js.map +0 -1
  269. package/dist/walker.js +0 -1
@@ -1,116 +0,0 @@
1
- import { simulateCore, formatSimulationResult } from './simulator.js';
2
- import { createCommandLogger, createLogger, executeCommand, getErrorMessage, buildCommonDockerArgs, } from '../../core/index.js';
3
- import { loadJsonFromSource } from '../../config/index.js';
4
- /**
5
- * CLI command handler for simulate command
6
- */
7
- export async function simulateCommand(options) {
8
- const logger = createCommandLogger(options);
9
- // Build Docker args - start with common flags
10
- const dockerArgs = buildCommonDockerArgs(options);
11
- // Add simulate-specific flag
12
- if (options.event)
13
- dockerArgs.push('--event', options.event);
14
- await executeCommand(async () => {
15
- const startTime = Date.now();
16
- try {
17
- // Load event from inline JSON, file path, or URL
18
- const event = await loadJsonFromSource(options.event, {
19
- name: 'event',
20
- });
21
- // Execute simulation
22
- const result = await simulateCore(options.config, event, {
23
- json: options.json,
24
- verbose: options.verbose,
25
- silent: options.silent,
26
- });
27
- // Add duration to result
28
- const resultWithDuration = {
29
- ...result,
30
- duration: (Date.now() - startTime) / 1000,
31
- };
32
- // Output results - create output logger that always logs
33
- const outputLogger = createLogger({ silent: false, json: false });
34
- const output = formatSimulationResult(resultWithDuration, {
35
- json: options.json,
36
- });
37
- outputLogger.log('white', output);
38
- // Exit with error code if simulation failed
39
- if (!result.success) {
40
- process.exit(1);
41
- }
42
- }
43
- catch (error) {
44
- const errorMessage = getErrorMessage(error);
45
- if (options.json) {
46
- // JSON error output - create output logger that always logs
47
- const outputLogger = createLogger({ silent: false, json: false });
48
- const errorOutput = JSON.stringify({
49
- success: false,
50
- error: errorMessage,
51
- duration: (Date.now() - startTime) / 1000,
52
- }, null, 2);
53
- outputLogger.log('white', errorOutput);
54
- }
55
- else {
56
- // Error output - create error logger that always logs
57
- const errorLogger = createLogger({ silent: false, json: false });
58
- errorLogger.error(`❌ Simulate command failed: ${errorMessage}`);
59
- }
60
- process.exit(1);
61
- }
62
- }, 'simulate', dockerArgs, options, logger, options.config);
63
- }
64
- /**
65
- * High-level simulate function for programmatic usage.
66
- *
67
- * Handles configuration loading internally and returns structured results.
68
- *
69
- * @param configOrPath - Bundle configuration object or path to config file
70
- * @param event - Event object to simulate
71
- * @param options - Simulation options
72
- * @param options.silent - Suppress all output (default: false)
73
- * @param options.verbose - Enable verbose logging (default: false)
74
- * @param options.json - Format output as JSON (default: false)
75
- * @returns Simulation result with success status, elb result, and usage data
76
- *
77
- * @example
78
- * ```typescript
79
- * // With config file
80
- * const result = await simulate('./walker.config.json', {
81
- * name: 'page view',
82
- * data: { title: 'Home Page', path: '/', url: 'https://example.com' }
83
- * });
84
- *
85
- * // With config object
86
- * const result = await simulate(
87
- * {
88
- * platform: 'web',
89
- * packages: { '@walkeros/collector': { imports: ['startFlow'] } },
90
- * code: '...',
91
- * output: './bundle.js'
92
- * },
93
- * { name: 'page view' },
94
- * { silent: true }
95
- * );
96
- * ```
97
- */
98
- export async function simulate(configOrPath, event, options = {}) {
99
- // simulateCore currently only accepts file paths, so we need to handle that
100
- // For now, if configOrPath is not a string, throw an error with guidance
101
- if (typeof configOrPath !== 'string') {
102
- throw new Error('simulate() currently only supports config file paths. ' +
103
- 'Config object support will be added in a future version. ' +
104
- 'Please provide a path to a configuration file.');
105
- }
106
- // Call core simulator
107
- return await simulateCore(configOrPath, event, {
108
- json: options.json ?? false,
109
- verbose: options.verbose ?? false,
110
- });
111
- }
112
- // Re-export types and utilities for testing
113
- export * from './types.js';
114
- export * from './simulator.js';
115
- export { executeInNode } from './node-executor.js';
116
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/simulate/index.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * JSDOM-based executor for simulating IIFE bundles
3
- *
4
- * Executes actual production IIFE bundles in a virtual DOM environment
5
- * with env-based mocking from destination examples.
6
- */
7
- import type { Elb } from '@walkeros/core';
8
- import type { CallTracker, ApiCall } from './tracker.js';
9
- export interface ExecutionResult {
10
- collector: unknown;
11
- elb: unknown;
12
- elbResult: Elb.PushResult | undefined;
13
- usage: Record<string, ApiCall[]>;
14
- duration: number;
15
- }
16
- interface DestinationEnv {
17
- init?: Record<string, unknown>;
18
- push: Record<string, unknown>;
19
- simulation?: string[];
20
- }
21
- /**
22
- * Execute production IIFE bundle in JSDOM with env-based mocking
23
- *
24
- * Main orchestration function that:
25
- * 1. Creates JSDOM virtual DOM
26
- * 2. Builds sandbox from dynamically loaded envs
27
- * 3. Executes IIFE in JSDOM
28
- * 4. Waits for window.collector/elb assignment
29
- * 5. Runs event through elb
30
- * 6. Returns tracked API calls
31
- */
32
- export declare function executeInJSDOM(bundlePath: string, destinations: Record<string, unknown>, event: {
33
- name: string;
34
- data?: unknown;
35
- }, tracker: CallTracker, envs: Record<string, DestinationEnv>, timeout?: number): Promise<ExecutionResult>;
36
- export {};
37
- //# sourceMappingURL=jsdom-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsdom-executor.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/jsdom-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AA2FD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACvC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACpC,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,eAAe,CAAC,CAsE1B"}
@@ -1,137 +0,0 @@
1
- /**
2
- * JSDOM-based executor for simulating IIFE bundles
3
- *
4
- * Executes actual production IIFE bundles in a virtual DOM environment
5
- * with env-based mocking from destination examples.
6
- */
7
- import { JSDOM, VirtualConsole } from 'jsdom';
8
- import fs from 'fs-extra';
9
- import { getErrorMessage } from '../../core/index.js';
10
- /**
11
- * Build sandbox from destination-provided envs
12
- *
13
- * Merges env mocks from each destination's envs, wrapping
14
- * specified paths with CallTracker for API call tracking.
15
- */
16
- function buildSandboxFromEnvs(envs, destinations, tracker) {
17
- // Base browser APIs (not provided by destinations)
18
- const baseBrowserMocks = {
19
- Image: class MockImage {
20
- src = '';
21
- onload = (() => { });
22
- onerror = (() => { });
23
- },
24
- fetch: async () => ({ ok: true, json: async () => ({}) }),
25
- location: { href: 'http://localhost' },
26
- navigator: { userAgent: 'Mozilla/5.0 (walkerOS Simulation)' },
27
- };
28
- const sandbox = {
29
- window: { ...baseBrowserMocks },
30
- document: {},
31
- };
32
- // Add destination-specific env mocks
33
- for (const [destKey, destConfig] of Object.entries(destinations)) {
34
- const destEnv = envs[destKey];
35
- if (!destEnv?.push)
36
- continue;
37
- const mockEnv = destEnv.push;
38
- const trackPaths = destEnv.simulation || [];
39
- // Use existing CallTracker to wrap env
40
- const trackedEnv = tracker.wrapEnv(mockEnv, trackPaths.map((p) => `${destKey}:${p}`));
41
- // Merge window properties
42
- if (trackedEnv.window && typeof trackedEnv.window === 'object') {
43
- Object.assign(sandbox.window, trackedEnv.window);
44
- }
45
- // Merge document properties
46
- if (trackedEnv.document && typeof trackedEnv.document === 'object') {
47
- Object.assign(sandbox.document, trackedEnv.document);
48
- }
49
- }
50
- return sandbox;
51
- }
52
- /**
53
- * Wait for async window property assignment
54
- *
55
- * IIFE bundles execute asynchronously and assign to window.
56
- * This helper polls until the property appears or timeout occurs.
57
- */
58
- function waitForWindowProperty(window, prop, timeout = 5000) {
59
- return new Promise((resolve, reject) => {
60
- const start = Date.now();
61
- const check = () => {
62
- if (window[prop] !== undefined) {
63
- resolve();
64
- }
65
- else if (Date.now() - start > timeout) {
66
- reject(new Error(`Timeout waiting for window.${prop}. ` +
67
- `IIFE may have failed to execute or assign to window.`));
68
- }
69
- else {
70
- setImmediate(check);
71
- }
72
- };
73
- check();
74
- });
75
- }
76
- /**
77
- * Execute production IIFE bundle in JSDOM with env-based mocking
78
- *
79
- * Main orchestration function that:
80
- * 1. Creates JSDOM virtual DOM
81
- * 2. Builds sandbox from dynamically loaded envs
82
- * 3. Executes IIFE in JSDOM
83
- * 4. Waits for window.collector/elb assignment
84
- * 5. Runs event through elb
85
- * 6. Returns tracked API calls
86
- */
87
- export async function executeInJSDOM(bundlePath, destinations, event, tracker, envs, timeout = 10000) {
88
- const start = Date.now();
89
- // 1. Create JSDOM virtual DOM with console suppression
90
- const virtualConsole = new VirtualConsole();
91
- // Silent mode - don't pipe console output to process stdout/stderr
92
- const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
93
- url: 'http://localhost',
94
- runScripts: 'dangerously', // Allow script execution
95
- resources: 'usable',
96
- virtualConsole,
97
- });
98
- const { window } = dom;
99
- // 2. Build sandbox from dynamically loaded envs and inject into window
100
- const sandbox = buildSandboxFromEnvs(envs, destinations, tracker);
101
- Object.assign(window, sandbox.window);
102
- Object.assign(window.document, sandbox.document);
103
- // 3. Load and execute bundle code
104
- const bundleCode = await fs.readFile(bundlePath, 'utf8');
105
- try {
106
- window.eval(bundleCode);
107
- }
108
- catch (error) {
109
- throw new Error(`Bundle execution failed: ${getErrorMessage(error)}`);
110
- }
111
- // 4. Wait for window.collector and window.elb assignments
112
- try {
113
- await waitForWindowProperty(window, 'collector', timeout);
114
- await waitForWindowProperty(window, 'elb', timeout);
115
- }
116
- catch (error) {
117
- throw new Error(`Window property assignment failed: ${getErrorMessage(error)}`);
118
- }
119
- const { collector, elb } = window;
120
- // 5. Run event through elb
121
- let elbResult;
122
- try {
123
- elbResult = (await elb(event.name, event.data));
124
- }
125
- catch (error) {
126
- throw new Error(`Event execution failed: ${getErrorMessage(error)}`);
127
- }
128
- // 6. Return results with tracked calls
129
- return {
130
- collector,
131
- elb,
132
- elbResult,
133
- usage: tracker.getCalls(),
134
- duration: Date.now() - start,
135
- };
136
- }
137
- //# sourceMappingURL=jsdom-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsdom-executor.js","sourceRoot":"","sources":["../../../src/commands/simulate/jsdom-executor.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Node.js-based executor for simulating ESM server bundles
3
- *
4
- * Executes server bundles via dynamic import with env-based mocking.
5
- */
6
- import type { Elb } from '@walkeros/core';
7
- import type { CallTracker, ApiCall } from './tracker.js';
8
- export interface ExecutionResult {
9
- collector: unknown;
10
- elb: unknown;
11
- elbResult: Elb.PushResult | undefined;
12
- usage: Record<string, ApiCall[]>;
13
- duration: number;
14
- }
15
- interface DestinationEnv {
16
- init?: Record<string, unknown>;
17
- push: Record<string, unknown>;
18
- simulation?: string[];
19
- }
20
- /**
21
- * Execute server ESM bundle in Node.js with env-based mocking
22
- */
23
- export declare function executeInNode(bundlePath: string, destinations: Record<string, unknown>, event: {
24
- name: string;
25
- data?: unknown;
26
- }, tracker: CallTracker, envs: Record<string, DestinationEnv>, timeout?: number): Promise<ExecutionResult>;
27
- export {};
28
- //# sourceMappingURL=node-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-executor.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/node-executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAoDD;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACvC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACpC,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,eAAe,CAAC,CA6D1B"}
@@ -1,94 +0,0 @@
1
- /**
2
- * Node.js-based executor for simulating ESM server bundles
3
- *
4
- * Executes server bundles via dynamic import with env-based mocking.
5
- */
6
- import { pathToFileURL } from 'url';
7
- import { getErrorMessage } from '../../core/index.js';
8
- /**
9
- * Build global mocks from destination-provided envs
10
- */
11
- function buildGlobalMocksFromEnvs(envs, destinations, tracker) {
12
- const globalMocks = {};
13
- for (const [destKey] of Object.entries(destinations)) {
14
- const destEnv = envs[destKey];
15
- if (!destEnv?.push)
16
- continue;
17
- const mockEnv = destEnv.push;
18
- const trackPaths = destEnv.simulation || [];
19
- const trackedEnv = tracker.wrapEnv(mockEnv, trackPaths.map((p) => `${destKey}:${p}`));
20
- Object.assign(globalMocks, trackedEnv);
21
- }
22
- return globalMocks;
23
- }
24
- /**
25
- * Inject mocks into global scope and return cleanup function
26
- */
27
- function injectGlobalMocks(mocks) {
28
- const originalValues = {};
29
- for (const [key, value] of Object.entries(mocks)) {
30
- originalValues[key] = globalThis[key];
31
- globalThis[key] = value;
32
- }
33
- return () => {
34
- for (const [key, value] of Object.entries(originalValues)) {
35
- if (value === undefined) {
36
- delete globalThis[key];
37
- }
38
- else {
39
- globalThis[key] = value;
40
- }
41
- }
42
- };
43
- }
44
- /**
45
- * Execute server ESM bundle in Node.js with env-based mocking
46
- */
47
- export async function executeInNode(bundlePath, destinations, event, tracker, envs, timeout = 30000) {
48
- const start = Date.now();
49
- const globalMocks = buildGlobalMocksFromEnvs(envs, destinations, tracker);
50
- const cleanupMocks = injectGlobalMocks(globalMocks);
51
- try {
52
- const executeWithTimeout = async () => {
53
- // Jest has issues with file:// URLs in dynamic imports, use path directly
54
- // Outside Jest, use file:// URL with cache-busting to prevent module caching
55
- const importUrl = process.env.JEST_WORKER_ID
56
- ? bundlePath
57
- : `${pathToFileURL(bundlePath).href}?t=${Date.now()}`;
58
- const module = await import(importUrl);
59
- if (!module.default || typeof module.default !== 'function') {
60
- throw new Error('Bundle does not export default factory function');
61
- }
62
- const result = await module.default();
63
- if (!result || !result.elb || typeof result.elb !== 'function') {
64
- throw new Error('Factory function did not return valid result with elb');
65
- }
66
- const { collector, elb } = result;
67
- let elbResult;
68
- try {
69
- elbResult = (await elb(event.name, event.data));
70
- }
71
- catch (error) {
72
- throw new Error(`Event execution failed: ${getErrorMessage(error)}`);
73
- }
74
- return {
75
- collector,
76
- elb,
77
- elbResult,
78
- usage: tracker.getCalls(),
79
- duration: Date.now() - start,
80
- };
81
- };
82
- const timeoutPromise = new Promise((_, reject) => {
83
- setTimeout(() => reject(new Error(`Server simulation timeout after ${timeout}ms`)), timeout);
84
- });
85
- return await Promise.race([executeWithTimeout(), timeoutPromise]);
86
- }
87
- catch (error) {
88
- throw new Error(`Node execution failed: ${getErrorMessage(error)}`);
89
- }
90
- finally {
91
- cleanupMocks();
92
- }
93
- }
94
- //# sourceMappingURL=node-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-executor.js","sourceRoot":"","sources":["../../../src/commands/simulate/node-executor.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { SimulateCommandOptions, SimulationResult } from './types.js';
2
- /**
3
- * Main simulation orchestrator
4
- */
5
- export declare function simulateCore(configPath: string, event: unknown, options?: Pick<SimulateCommandOptions, 'json' | 'verbose' | 'silent'>): Promise<SimulationResult>;
6
- /**
7
- * Simple result formatting
8
- */
9
- export declare function formatSimulationResult(result: SimulationResult, options?: Pick<SimulateCommandOptions, 'json'>): string;
10
- /**
11
- * Execute simulation using destination-provided mock environments
12
- */
13
- export declare function executeSimulation(event: unknown, configPath: string): Promise<SimulationResult>;
14
- //# sourceMappingURL=simulator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/simulator.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAS3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAM,GACxE,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAM,GACjD,MAAM,CAeR;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CA6H3B"}
@@ -1,162 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import { getPlatform } from '@walkeros/core';
4
- import { createLogger, getErrorMessage } from '../../core/index.js';
5
- import { loadJsonConfig, loadBundleConfig, getTempDir, isObject, } from '../../config/index.js';
6
- import { bundleCore } from '../bundle/bundler.js';
7
- import { CallTracker } from './tracker.js';
8
- import { executeInJSDOM } from './jsdom-executor.js';
9
- import { executeInNode } from './node-executor.js';
10
- import { loadDestinationEnvs } from './env-loader.js';
11
- /**
12
- * Generate a unique ID for temp files
13
- */
14
- function generateId() {
15
- return `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
16
- }
17
- /**
18
- * Main simulation orchestrator
19
- */
20
- export async function simulateCore(configPath, event, options = {}) {
21
- const logger = createLogger({
22
- verbose: options.verbose || false,
23
- silent: options.silent || false,
24
- json: options.json || false,
25
- });
26
- try {
27
- logger.info('🎯 Starting walkerOS simulation...');
28
- // Load and validate configuration
29
- logger.info('📦 Loading bundle configuration...');
30
- const fullConfigPath = path.resolve(configPath);
31
- const rawConfig = await loadJsonConfig(fullConfigPath);
32
- loadBundleConfig(rawConfig, { configPath: fullConfigPath });
33
- // Execute simulation
34
- logger.info(`🚀 Executing simulation with event: ${JSON.stringify(event)}`);
35
- const result = await executeSimulation(event, fullConfigPath);
36
- // Report results
37
- if (result.success) {
38
- logger.info(`✅ Simulation completed successfully`);
39
- }
40
- else {
41
- logger.error(`❌ Simulation failed: ${result.error}`);
42
- }
43
- return result;
44
- }
45
- catch (error) {
46
- const errorMessage = getErrorMessage(error);
47
- logger.error(`💥 Simulation error: ${errorMessage}`);
48
- return {
49
- success: false,
50
- error: errorMessage,
51
- };
52
- }
53
- }
54
- /**
55
- * Simple result formatting
56
- */
57
- export function formatSimulationResult(result, options = {}) {
58
- if (options.json) {
59
- const output = {
60
- result: result.elbResult,
61
- usage: result.usage,
62
- duration: result.duration,
63
- };
64
- return JSON.stringify(output, null, 2);
65
- }
66
- if (result.success) {
67
- return '✅ Simulation completed successfully';
68
- }
69
- else {
70
- return `❌ Simulation failed: ${result.error}`;
71
- }
72
- }
73
- /**
74
- * Execute simulation using destination-provided mock environments
75
- */
76
- export async function executeSimulation(event, configPath) {
77
- const startTime = Date.now();
78
- let bundlePath;
79
- const tempDir = getTempDir();
80
- try {
81
- // Validate event format
82
- if (!isObject(event) ||
83
- !('name' in event) ||
84
- typeof event.name !== 'string') {
85
- throw new Error('Event must be an object with a "name" property of type string');
86
- }
87
- const typedEvent = event;
88
- // Ensure temp directory exists
89
- await fs.ensureDir(tempDir);
90
- // 1. Load config
91
- const rawConfig = await loadJsonConfig(configPath);
92
- const { flowConfig, buildOptions } = loadBundleConfig(rawConfig, {
93
- configPath,
94
- });
95
- // Detect platform from flowConfig
96
- const platform = getPlatform(flowConfig);
97
- // 2. Create tracker
98
- const tracker = new CallTracker();
99
- // 3. Create temporary bundle
100
- const tempOutput = path.join(tempDir, `simulation-bundle-${generateId()}.${platform === 'web' ? 'js' : 'mjs'}`);
101
- const destinations = flowConfig.destinations;
102
- // Create build options for simulation - platform-aware bundling
103
- const simulationBuildOptions = {
104
- ...buildOptions,
105
- code: buildOptions.code || '',
106
- output: tempOutput,
107
- tempDir,
108
- ...(platform === 'web'
109
- ? {
110
- format: 'iife',
111
- platform: 'browser',
112
- windowCollector: 'collector',
113
- windowElb: 'elb',
114
- }
115
- : {
116
- format: 'esm',
117
- platform: 'node',
118
- }),
119
- };
120
- // 4. Bundle (downloads packages internally)
121
- await bundleCore(flowConfig, simulationBuildOptions, createLogger({ silent: true }), false);
122
- bundlePath = tempOutput;
123
- // 5. Load env examples dynamically from destination packages
124
- const envs = await loadDestinationEnvs(destinations || {});
125
- // 6. Execute based on platform
126
- let result;
127
- if (platform === 'web') {
128
- result = await executeInJSDOM(tempOutput, destinations || {}, typedEvent, tracker, envs, 10000);
129
- }
130
- else {
131
- result = await executeInNode(tempOutput, destinations || {}, typedEvent, tracker, envs, 30000);
132
- }
133
- const elbResult = result.elbResult;
134
- const usage = result.usage;
135
- const duration = Date.now() - startTime;
136
- return {
137
- success: true,
138
- elbResult,
139
- usage,
140
- duration,
141
- logs: [],
142
- };
143
- }
144
- catch (error) {
145
- const duration = Date.now() - startTime;
146
- return {
147
- success: false,
148
- error: getErrorMessage(error),
149
- duration,
150
- };
151
- }
152
- finally {
153
- // Cleanup temp directory and all its contents
154
- if (tempDir) {
155
- await fs.remove(tempDir).catch(() => {
156
- // Ignore cleanup errors - temp dirs will be cleaned eventually
157
- });
158
- }
159
- // Note: JSDOM automatically cleans up its own isolated environment
160
- }
161
- }
162
- //# sourceMappingURL=simulator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../src/commands/simulate/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,QAAQ,GAET,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;GAEG;AACH,SAAS,UAAU;IACjB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,KAAc,EACd,UAAuE,EAAE;IAEzE,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAElD,kCAAkC;QAClC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC;QACvD,gBAAgB,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;QAE5D,qBAAqB;QACrB,MAAM,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAE9D,iBAAiB;QACjB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAErD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,YAAY;SACpB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAwB,EACxB,UAAgD,EAAE;IAElD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,qCAAqC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,wBAAwB,MAAM,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAc,EACd,UAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,UAA8B,CAAC;IACnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,wBAAwB;QACxB,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;YAClB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,KAAyC,CAAC;QAE7D,+BAA+B;QAC/B,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5B,iBAAiB;QACjB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE;YAC/D,UAAU;SACX,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAEzC,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAElC,6BAA6B;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,OAAO,EACP,qBAAqB,UAAU,EAAE,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CACzE,CAAC;QAEF,MAAM,YAAY,GAChB,UACD,CAAC,YAAY,CAAC;QAEf,gEAAgE;QAChE,MAAM,sBAAsB,GAAiB;YAC3C,GAAG,YAAY;YACf,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE;YAC7B,MAAM,EAAE,UAAU;YAClB,OAAO;YACP,GAAG,CAAC,QAAQ,KAAK,KAAK;gBACpB,CAAC,CAAC;oBACE,MAAM,EAAE,MAAe;oBACvB,QAAQ,EAAE,SAAkB;oBAC5B,eAAe,EAAE,WAAW;oBAC5B,SAAS,EAAE,KAAK;iBACjB;gBACH,CAAC,CAAC;oBACE,MAAM,EAAE,KAAc;oBACtB,QAAQ,EAAE,MAAe;iBAC1B,CAAC;SACP,CAAC;QAEF,4CAA4C;QAC5C,MAAM,UAAU,CACd,UAAU,EACV,sBAAsB,EACtB,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAC9B,KAAK,CACN,CAAC;QACF,UAAU,GAAG,UAAU,CAAC;QAExB,6DAA6D;QAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAE3D,+BAA+B;QAC/B,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,cAAc,CAC3B,UAAU,EACV,YAAY,IAAI,EAAE,EAClB,UAAU,EACV,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,aAAa,CAC1B,UAAU,EACV,YAAY,IAAI,EAAE,EAClB,UAAU,EACV,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS;YACT,KAAK;YACL,QAAQ;YACR,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;YAC7B,QAAQ;SACT,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,8CAA8C;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAClC,+DAA+D;YACjE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,mEAAmE;IACrE,CAAC;AACH,CAAC"}