@walkeros/cli 0.5.1-next.0 → 0.6.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 (264) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +51 -28
  3. package/dist/__tests__/bundle/bundler-helpers.test.d.ts +2 -0
  4. package/dist/__tests__/bundle/bundler-helpers.test.d.ts.map +1 -0
  5. package/dist/__tests__/bundle/bundler-helpers.test.js +151 -0
  6. package/dist/__tests__/bundle/bundler-helpers.test.js.map +1 -0
  7. package/dist/__tests__/bundle/bundler.test.d.ts +2 -0
  8. package/dist/__tests__/bundle/bundler.test.d.ts.map +1 -0
  9. package/dist/__tests__/bundle/bundler.test.js +352 -0
  10. package/dist/__tests__/bundle/bundler.test.js.map +1 -0
  11. package/dist/__tests__/bundle/programmatic.test.d.ts +2 -0
  12. package/dist/__tests__/bundle/programmatic.test.d.ts.map +1 -0
  13. package/dist/__tests__/bundle/programmatic.test.js +148 -0
  14. package/dist/__tests__/bundle/programmatic.test.js.map +1 -0
  15. package/dist/__tests__/cli-e2e.test.d.ts +8 -0
  16. package/dist/__tests__/cli-e2e.test.d.ts.map +1 -0
  17. package/dist/__tests__/cli-e2e.test.js +145 -0
  18. package/dist/__tests__/cli-e2e.test.js.map +1 -0
  19. package/dist/__tests__/cli.test.d.ts +2 -0
  20. package/dist/__tests__/cli.test.d.ts.map +1 -0
  21. package/dist/__tests__/cli.test.js +179 -0
  22. package/dist/__tests__/cli.test.js.map +1 -0
  23. package/dist/__tests__/config-loader.test.d.ts +7 -0
  24. package/dist/__tests__/config-loader.test.d.ts.map +1 -0
  25. package/dist/__tests__/config-loader.test.js +414 -0
  26. package/dist/__tests__/config-loader.test.js.map +1 -0
  27. package/dist/__tests__/core/asset-resolver.test.d.ts +2 -0
  28. package/dist/__tests__/core/asset-resolver.test.d.ts.map +1 -0
  29. package/dist/__tests__/core/asset-resolver.test.js +14 -0
  30. package/dist/__tests__/core/asset-resolver.test.js.map +1 -0
  31. package/dist/__tests__/core/build-cache.test.d.ts +2 -0
  32. package/dist/__tests__/core/build-cache.test.d.ts.map +1 -0
  33. package/dist/__tests__/core/build-cache.test.js +55 -0
  34. package/dist/__tests__/core/build-cache.test.js.map +1 -0
  35. package/dist/__tests__/core/cache-utils.test.d.ts +2 -0
  36. package/dist/__tests__/core/cache-utils.test.d.ts.map +1 -0
  37. package/dist/__tests__/core/cache-utils.test.js +70 -0
  38. package/dist/__tests__/core/cache-utils.test.js.map +1 -0
  39. package/dist/__tests__/core/config.test.d.ts +2 -0
  40. package/dist/__tests__/core/config.test.d.ts.map +1 -0
  41. package/dist/__tests__/core/config.test.js +79 -0
  42. package/dist/__tests__/core/config.test.js.map +1 -0
  43. package/dist/__tests__/core/logger.test.d.ts +2 -0
  44. package/dist/__tests__/core/logger.test.d.ts.map +1 -0
  45. package/dist/__tests__/core/logger.test.js +53 -0
  46. package/dist/__tests__/core/logger.test.js.map +1 -0
  47. package/dist/__tests__/integration/bundle-run.integration.test.d.ts +8 -0
  48. package/dist/__tests__/integration/bundle-run.integration.test.d.ts.map +1 -0
  49. package/dist/__tests__/integration/bundle-run.integration.test.js +54 -0
  50. package/dist/__tests__/integration/bundle-run.integration.test.js.map +1 -0
  51. package/dist/__tests__/push/push.test.d.ts +7 -0
  52. package/dist/__tests__/push/push.test.d.ts.map +1 -0
  53. package/dist/__tests__/push/push.test.js +197 -0
  54. package/dist/__tests__/push/push.test.js.map +1 -0
  55. package/dist/__tests__/simulate/env-loader.test.d.ts +2 -0
  56. package/dist/__tests__/simulate/env-loader.test.d.ts.map +1 -0
  57. package/dist/__tests__/simulate/env-loader.test.js +47 -0
  58. package/dist/__tests__/simulate/env-loader.test.js.map +1 -0
  59. package/dist/__tests__/simulate/node-executor.test.d.ts +5 -0
  60. package/dist/__tests__/simulate/node-executor.test.d.ts.map +1 -0
  61. package/dist/__tests__/simulate/node-executor.test.js +25 -0
  62. package/dist/__tests__/simulate/node-executor.test.js.map +1 -0
  63. package/dist/__tests__/simulate/server-simulate.integration.test.d.ts +5 -0
  64. package/dist/__tests__/simulate/server-simulate.integration.test.d.ts.map +1 -0
  65. package/dist/__tests__/simulate/server-simulate.integration.test.js +58 -0
  66. package/dist/__tests__/simulate/server-simulate.integration.test.js.map +1 -0
  67. package/dist/__tests__/smoke/production.smoke.test.d.ts +8 -0
  68. package/dist/__tests__/smoke/production.smoke.test.d.ts.map +1 -0
  69. package/dist/__tests__/smoke/production.smoke.test.js +65 -0
  70. package/dist/__tests__/smoke/production.smoke.test.js.map +1 -0
  71. package/dist/commands/bundle/bundler.d.ts +32 -0
  72. package/dist/commands/bundle/bundler.d.ts.map +1 -0
  73. package/dist/commands/bundle/bundler.js +569 -0
  74. package/dist/commands/bundle/bundler.js.map +1 -0
  75. package/dist/commands/bundle/index.d.ts +59 -0
  76. package/dist/commands/bundle/index.d.ts.map +1 -0
  77. package/dist/commands/bundle/index.js +184 -0
  78. package/dist/commands/bundle/index.js.map +1 -0
  79. package/dist/commands/bundle/package-manager.d.ts +8 -0
  80. package/dist/commands/bundle/package-manager.d.ts.map +1 -0
  81. package/dist/commands/bundle/package-manager.js +220 -0
  82. package/dist/commands/bundle/package-manager.js.map +1 -0
  83. package/dist/commands/bundle/stats.d.ts +23 -0
  84. package/dist/commands/bundle/stats.d.ts.map +1 -0
  85. package/dist/commands/bundle/stats.js +52 -0
  86. package/dist/commands/bundle/stats.js.map +1 -0
  87. package/dist/commands/cache.d.ts +7 -0
  88. package/dist/commands/cache.d.ts.map +1 -0
  89. package/dist/commands/cache.js +68 -0
  90. package/dist/commands/cache.js.map +1 -0
  91. package/dist/commands/push/index.d.ts +7 -0
  92. package/dist/commands/push/index.d.ts.map +1 -0
  93. package/dist/commands/push/index.js +247 -0
  94. package/dist/commands/push/index.js.map +1 -0
  95. package/dist/commands/push/types.d.ts +22 -0
  96. package/dist/commands/push/types.d.ts.map +1 -0
  97. package/dist/commands/push/types.js +2 -0
  98. package/dist/commands/push/types.js.map +1 -0
  99. package/dist/commands/run/__tests__/run.integration.test.d.ts +7 -0
  100. package/dist/commands/run/__tests__/run.integration.test.d.ts.map +1 -0
  101. package/dist/commands/run/__tests__/run.integration.test.js +51 -0
  102. package/dist/commands/run/__tests__/run.integration.test.js.map +1 -0
  103. package/dist/commands/run/__tests__/validators.test.d.ts +2 -0
  104. package/dist/commands/run/__tests__/validators.test.d.ts.map +1 -0
  105. package/dist/commands/run/__tests__/validators.test.js +80 -0
  106. package/dist/commands/run/__tests__/validators.test.js.map +1 -0
  107. package/dist/commands/run/execution.d.ts +14 -0
  108. package/dist/commands/run/execution.d.ts.map +1 -0
  109. package/dist/commands/run/execution.js +41 -0
  110. package/dist/commands/run/execution.js.map +1 -0
  111. package/dist/commands/run/index.d.ts +38 -0
  112. package/dist/commands/run/index.d.ts.map +1 -0
  113. package/dist/commands/run/index.js +154 -0
  114. package/dist/commands/run/index.js.map +1 -0
  115. package/dist/commands/run/types.d.ts +65 -0
  116. package/dist/commands/run/types.d.ts.map +1 -0
  117. package/dist/commands/run/types.js +7 -0
  118. package/dist/commands/run/types.js.map +1 -0
  119. package/dist/commands/run/utils.d.ts +29 -0
  120. package/dist/commands/run/utils.d.ts.map +1 -0
  121. package/dist/commands/run/utils.js +52 -0
  122. package/dist/commands/run/utils.js.map +1 -0
  123. package/dist/commands/run/validators.d.ts +33 -0
  124. package/dist/commands/run/validators.d.ts.map +1 -0
  125. package/dist/commands/run/validators.js +58 -0
  126. package/dist/commands/run/validators.js.map +1 -0
  127. package/dist/commands/simulate/env-loader.d.ts +19 -0
  128. package/dist/commands/simulate/env-loader.d.ts.map +1 -0
  129. package/dist/commands/simulate/env-loader.js +44 -0
  130. package/dist/commands/simulate/env-loader.js.map +1 -0
  131. package/dist/commands/simulate/index.d.ts +48 -0
  132. package/dist/commands/simulate/index.d.ts.map +1 -0
  133. package/dist/commands/simulate/index.js +113 -0
  134. package/dist/commands/simulate/index.js.map +1 -0
  135. package/dist/commands/simulate/jsdom-executor.d.ts +37 -0
  136. package/dist/commands/simulate/jsdom-executor.d.ts.map +1 -0
  137. package/dist/commands/simulate/jsdom-executor.js +137 -0
  138. package/dist/commands/simulate/jsdom-executor.js.map +1 -0
  139. package/dist/commands/simulate/node-executor.d.ts +28 -0
  140. package/dist/commands/simulate/node-executor.d.ts.map +1 -0
  141. package/dist/commands/simulate/node-executor.js +94 -0
  142. package/dist/commands/simulate/node-executor.js.map +1 -0
  143. package/dist/commands/simulate/simulator.d.ts +14 -0
  144. package/dist/commands/simulate/simulator.d.ts.map +1 -0
  145. package/dist/commands/simulate/simulator.js +163 -0
  146. package/dist/commands/simulate/simulator.js.map +1 -0
  147. package/dist/commands/simulate/tracker.d.ts +30 -0
  148. package/dist/commands/simulate/tracker.d.ts.map +1 -0
  149. package/dist/commands/simulate/tracker.js +96 -0
  150. package/dist/commands/simulate/tracker.js.map +1 -0
  151. package/dist/commands/simulate/types.d.ts +20 -0
  152. package/dist/commands/simulate/types.d.ts.map +1 -0
  153. package/dist/commands/simulate/types.js +2 -0
  154. package/dist/commands/simulate/types.js.map +1 -0
  155. package/dist/config/build-defaults.d.ts +49 -0
  156. package/dist/config/build-defaults.d.ts.map +1 -0
  157. package/dist/config/build-defaults.js +68 -0
  158. package/dist/config/build-defaults.js.map +1 -0
  159. package/dist/config/index.d.ts +13 -0
  160. package/dist/config/index.d.ts.map +1 -0
  161. package/dist/config/index.js +15 -0
  162. package/dist/config/index.js.map +1 -0
  163. package/dist/config/loader.d.ts +81 -0
  164. package/dist/config/loader.d.ts.map +1 -0
  165. package/dist/config/loader.js +153 -0
  166. package/dist/config/loader.js.map +1 -0
  167. package/dist/config/utils.d.ts +101 -0
  168. package/dist/config/utils.d.ts.map +1 -0
  169. package/dist/config/utils.js +235 -0
  170. package/dist/config/utils.js.map +1 -0
  171. package/dist/config/validators.d.ts +52 -0
  172. package/dist/config/validators.d.ts.map +1 -0
  173. package/dist/config/validators.js +85 -0
  174. package/dist/config/validators.js.map +1 -0
  175. package/dist/core/asset-resolver.d.ts +34 -0
  176. package/dist/core/asset-resolver.d.ts.map +1 -0
  177. package/dist/core/asset-resolver.js +70 -0
  178. package/dist/core/asset-resolver.js.map +1 -0
  179. package/dist/core/build-cache.d.ts +23 -0
  180. package/dist/core/build-cache.d.ts.map +1 -0
  181. package/dist/core/build-cache.js +44 -0
  182. package/dist/core/build-cache.js.map +1 -0
  183. package/dist/core/cache-utils.d.ts +27 -0
  184. package/dist/core/cache-utils.d.ts.map +1 -0
  185. package/dist/core/cache-utils.js +60 -0
  186. package/dist/core/cache-utils.js.map +1 -0
  187. package/dist/core/index.d.ts +8 -0
  188. package/dist/core/index.d.ts.map +1 -0
  189. package/dist/core/index.js +8 -0
  190. package/dist/core/index.js.map +1 -0
  191. package/dist/core/local-packages.d.ts +19 -0
  192. package/dist/core/local-packages.d.ts.map +1 -0
  193. package/dist/core/local-packages.js +60 -0
  194. package/dist/core/local-packages.js.map +1 -0
  195. package/dist/core/logger.d.ts +30 -0
  196. package/dist/core/logger.d.ts.map +1 -0
  197. package/dist/core/logger.js +85 -0
  198. package/dist/core/logger.js.map +1 -0
  199. package/dist/core/output.d.ts +30 -0
  200. package/dist/core/output.d.ts.map +1 -0
  201. package/dist/core/output.js +46 -0
  202. package/dist/core/output.js.map +1 -0
  203. package/dist/core/timer.d.ts +14 -0
  204. package/dist/core/timer.d.ts.map +1 -0
  205. package/dist/core/timer.js +29 -0
  206. package/dist/core/timer.js.map +1 -0
  207. package/dist/core/tmp.d.ts +27 -0
  208. package/dist/core/tmp.d.ts.map +1 -0
  209. package/dist/core/tmp.js +36 -0
  210. package/dist/core/tmp.js.map +1 -0
  211. package/dist/core/utils.d.ts +10 -0
  212. package/dist/core/utils.d.ts.map +1 -0
  213. package/dist/core/utils.js +12 -0
  214. package/dist/core/utils.js.map +1 -0
  215. package/dist/index.d.ts +20 -13
  216. package/dist/index.d.ts.map +1 -0
  217. package/dist/index.js +633 -761
  218. package/dist/index.js.map +1 -1
  219. package/dist/runtime/index.d.ts +10 -0
  220. package/dist/runtime/index.d.ts.map +1 -0
  221. package/dist/runtime/index.js +10 -0
  222. package/dist/runtime/index.js.map +1 -0
  223. package/dist/runtime/main.d.ts +2 -0
  224. package/dist/runtime/main.d.ts.map +1 -0
  225. package/dist/runtime/main.js +268 -0
  226. package/dist/runtime/main.js.map +1 -0
  227. package/dist/runtime/runner.d.ts +20 -0
  228. package/dist/runtime/runner.d.ts.map +1 -0
  229. package/dist/runtime/runner.js +72 -0
  230. package/dist/runtime/runner.js.map +1 -0
  231. package/dist/runtime/serve.d.ts +19 -0
  232. package/dist/runtime/serve.d.ts.map +1 -0
  233. package/dist/runtime/serve.js +97 -0
  234. package/dist/runtime/serve.js.map +1 -0
  235. package/dist/schemas/index.d.ts +9 -0
  236. package/dist/schemas/index.d.ts.map +1 -0
  237. package/dist/schemas/index.js +9 -0
  238. package/dist/schemas/index.js.map +1 -0
  239. package/dist/schemas/primitives.d.ts +37 -0
  240. package/dist/schemas/primitives.d.ts.map +1 -0
  241. package/dist/schemas/primitives.js +43 -0
  242. package/dist/schemas/primitives.js.map +1 -0
  243. package/dist/schemas/run.d.ts +23 -0
  244. package/dist/schemas/run.d.ts.map +1 -0
  245. package/dist/schemas/run.js +20 -0
  246. package/dist/schemas/run.js.map +1 -0
  247. package/dist/types/bundle.d.ts +141 -0
  248. package/dist/types/bundle.d.ts.map +1 -0
  249. package/dist/types/bundle.js +10 -0
  250. package/dist/types/bundle.js.map +1 -0
  251. package/dist/types/global.d.ts +38 -0
  252. package/dist/types/global.d.ts.map +1 -0
  253. package/dist/types/global.js +24 -0
  254. package/dist/types/global.js.map +1 -0
  255. package/dist/types/index.d.ts +8 -0
  256. package/dist/types/index.d.ts.map +1 -0
  257. package/dist/types/index.js +8 -0
  258. package/dist/types/index.js.map +1 -0
  259. package/dist/version.d.ts +3 -0
  260. package/dist/version.d.ts.map +1 -0
  261. package/dist/version.js +27 -0
  262. package/dist/version.js.map +1 -0
  263. package/dist/walker.js +1 -0
  264. package/package.json +7 -4
@@ -0,0 +1,352 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { bundleCore as bundle, buildConfigObject, generatePlatformWrapper, createEntryPoint, } from '../../commands/bundle/bundler.js';
4
+ import { loadBundleConfig } from '../../config/index.js';
5
+ import { createLogger } from '../../core/index.js';
6
+ import { getId } from '@walkeros/core';
7
+ // No mocks - test with real package downloads and bundling
8
+ /**
9
+ * Helper to create a Flow.Setup config for testing.
10
+ */
11
+ function createFlowSetup(platform, packages) {
12
+ return {
13
+ version: 1,
14
+ flows: {
15
+ default: {
16
+ ...(platform === 'web' ? { web: {} } : { server: {} }),
17
+ packages,
18
+ },
19
+ },
20
+ };
21
+ }
22
+ /**
23
+ * Helper to create build options for testing.
24
+ * Uses minimal defaults with test-specific overrides.
25
+ */
26
+ function createBuildOptions(overrides) {
27
+ return {
28
+ format: 'esm',
29
+ platform: 'browser',
30
+ target: 'es2020',
31
+ minify: false,
32
+ sourcemap: false,
33
+ cache: true,
34
+ packages: {},
35
+ code: '',
36
+ ...overrides,
37
+ };
38
+ }
39
+ describe('Bundler', () => {
40
+ const testOutputDir = path.resolve('.tmp', `bundler-${Date.now()}-${getId()}`);
41
+ let logger;
42
+ beforeEach(async () => {
43
+ // Ensure test output directory exists
44
+ await fs.ensureDir(testOutputDir);
45
+ // Clean build cache to ensure each test starts fresh
46
+ await fs.remove(path.join('.tmp', 'cache', 'builds'));
47
+ // Create a silent logger for tests
48
+ logger = createLogger({ silent: true });
49
+ // Mock console.log to suppress output during tests
50
+ jest.spyOn(console, 'log').mockImplementation(() => { });
51
+ // Mock fs.stat for bundle stats
52
+ const mockStat = {
53
+ size: 1024,
54
+ isFile: () => true,
55
+ isDirectory: () => false,
56
+ };
57
+ jest
58
+ .spyOn(fs, 'stat')
59
+ .mockImplementation(() => Promise.resolve(mockStat));
60
+ });
61
+ afterEach(async () => {
62
+ // Clean up test output
63
+ await fs.remove(testOutputDir);
64
+ // Restore console.log
65
+ jest.restoreAllMocks();
66
+ });
67
+ it('should bundle minimal config successfully', async () => {
68
+ const flowConfig = {
69
+ web: {},
70
+ packages: {
71
+ '@walkeros/core': {
72
+ imports: ['getId'],
73
+ },
74
+ },
75
+ };
76
+ const buildOptions = createBuildOptions({
77
+ packages: flowConfig.packages || {},
78
+ code: 'export const test = getId(8);',
79
+ platform: 'browser',
80
+ format: 'esm',
81
+ output: path.join(testOutputDir, 'minimal.js'),
82
+ });
83
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
84
+ });
85
+ it('should bundle server config with ESM format', async () => {
86
+ const flowConfig = {
87
+ server: {},
88
+ packages: {
89
+ '@walkeros/core': {
90
+ imports: ['trim', 'isString'],
91
+ },
92
+ },
93
+ };
94
+ const buildOptions = createBuildOptions({
95
+ packages: flowConfig.packages || {},
96
+ code: 'export default { processText: (text) => trim(text) };',
97
+ platform: 'node',
98
+ format: 'esm',
99
+ output: path.join(testOutputDir, 'server-bundle.mjs'),
100
+ });
101
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
102
+ });
103
+ it('should bundle advanced config with minification', async () => {
104
+ const flowConfig = {
105
+ web: {},
106
+ packages: {
107
+ '@walkeros/core': {
108
+ imports: ['getId', 'getByPath', 'clone', 'trim', 'isObject'],
109
+ },
110
+ },
111
+ };
112
+ const buildOptions = createBuildOptions({
113
+ packages: flowConfig.packages || {},
114
+ code: "export function processData(data) {\n return data.map(item => ({\n ...item,\n id: getId(8),\n timestamp: new Date().toISOString().split('T')[0],\n processed: true\n }));\n}\n\nexport function extractNestedValues(data, path) {\n return data.map(item => getByPath(item, path, null)).filter(val => val !== null);\n}\n\nexport function deepCloneData(data) {\n return clone(data);\n}\n\nexport function cleanStringData(data) {\n return data.map(item => ({\n ...item,\n name: typeof item.name === 'string' ? trim(item.name) : item.name\n }));\n}\n\n// Re-export walkerOS utilities\nexport { getId, getByPath, clone, trim, isObject };",
115
+ platform: 'browser',
116
+ format: 'esm',
117
+ target: 'es2020',
118
+ minify: true,
119
+ sourcemap: true,
120
+ output: path.join(testOutputDir, 'advanced-bundle.js'),
121
+ });
122
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
123
+ });
124
+ describe('Stats Collection', () => {
125
+ it('should collect bundle stats when requested', async () => {
126
+ const flowConfig = {
127
+ web: {},
128
+ packages: {
129
+ '@walkeros/core': {
130
+ imports: ['getId'],
131
+ },
132
+ },
133
+ };
134
+ const buildOptions = createBuildOptions({
135
+ packages: flowConfig.packages || {},
136
+ code: 'export const test = getId(8);',
137
+ format: 'esm',
138
+ output: path.join(testOutputDir, 'stats-test.js'),
139
+ });
140
+ const stats = await bundle(flowConfig, buildOptions, logger, true);
141
+ expect(stats).toBeDefined();
142
+ expect(stats.totalSize).toBe(1024); // From mocked fs.stat
143
+ expect(stats.buildTime).toBeGreaterThanOrEqual(0);
144
+ expect(stats.treeshakingEffective).toBe(true);
145
+ expect(stats.packages).toHaveLength(1);
146
+ expect(stats.packages[0].name).toBe('@walkeros/core@latest');
147
+ });
148
+ it('should detect ineffective tree-shaking with wildcard imports', async () => {
149
+ const flowConfig = {
150
+ web: {},
151
+ packages: { '@walkeros/core': {} },
152
+ };
153
+ const buildOptions = createBuildOptions({
154
+ packages: flowConfig.packages || {},
155
+ code: 'import * as walkerCore from "@walkeros/core";\nexport const test = walkerCore.getId;',
156
+ format: 'esm',
157
+ output: path.join(testOutputDir, 'test.js'),
158
+ });
159
+ const stats = await bundle(flowConfig, buildOptions, logger, true);
160
+ expect(stats.treeshakingEffective).toBe(false);
161
+ });
162
+ it('should return undefined when stats not requested', async () => {
163
+ const flowConfig = {
164
+ web: {},
165
+ packages: {
166
+ '@walkeros/core': {
167
+ imports: ['getId'],
168
+ },
169
+ },
170
+ };
171
+ const buildOptions = createBuildOptions({
172
+ packages: flowConfig.packages || {},
173
+ code: 'export const test = getId(8);',
174
+ format: 'esm',
175
+ output: path.join(testOutputDir, 'no-stats.js'),
176
+ });
177
+ const result = await bundle(flowConfig, buildOptions, logger, false);
178
+ expect(result).toBeUndefined();
179
+ });
180
+ });
181
+ describe('Configuration Scenarios', () => {
182
+ it('should handle custom temp directory configuration', async () => {
183
+ const flowConfig = {
184
+ web: {},
185
+ packages: {
186
+ '@walkeros/core': { imports: ['getId'] },
187
+ },
188
+ };
189
+ const buildOptions = createBuildOptions({
190
+ packages: flowConfig.packages || {},
191
+ code: 'export const test = getId();',
192
+ format: 'esm',
193
+ tempDir: '/tmp/my-custom-bundler-temp',
194
+ output: path.join(testOutputDir, 'custom-temp-example.js'),
195
+ });
196
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
197
+ });
198
+ it('should handle version pinning correctly', async () => {
199
+ const flowConfig = {
200
+ web: {},
201
+ packages: {
202
+ '@walkeros/core': { version: '0.0.7', imports: ['getId'] },
203
+ },
204
+ };
205
+ const buildOptions = createBuildOptions({
206
+ packages: flowConfig.packages || {},
207
+ code: '// Test version pinning\nexport const test = getId();',
208
+ platform: 'browser',
209
+ format: 'esm',
210
+ target: 'es2020',
211
+ output: path.join(testOutputDir, 'version-test.js'),
212
+ });
213
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
214
+ });
215
+ });
216
+ describe('Error Handling', () => {
217
+ it('should reject invalid config structure', async () => {
218
+ // Test that loader rejects invalid config structure
219
+ expect(() => {
220
+ loadBundleConfig({
221
+ flow: {
222
+ platform: 'web',
223
+ },
224
+ build: {
225
+ packages: {},
226
+ },
227
+ }, { configPath: '/test/config.json' });
228
+ }).toThrow(/Invalid configuration/);
229
+ });
230
+ });
231
+ describe('buildConfigObject', () => {
232
+ it('uses explicit code for named imports', () => {
233
+ const flowConfig = {
234
+ server: {},
235
+ sources: {
236
+ http: {
237
+ package: '@walkeros/server-source-express',
238
+ code: 'sourceExpress',
239
+ config: { settings: { port: 8080 } },
240
+ },
241
+ },
242
+ destinations: {
243
+ demo: {
244
+ package: '@walkeros/destination-demo',
245
+ code: 'destinationDemo',
246
+ config: { settings: { name: 'Test' } },
247
+ },
248
+ },
249
+ };
250
+ const explicitCodeImports = new Map([
251
+ ['@walkeros/server-source-express', new Set(['sourceExpress'])],
252
+ ['@walkeros/destination-demo', new Set(['destinationDemo'])],
253
+ ]);
254
+ const result = buildConfigObject(flowConfig, explicitCodeImports);
255
+ expect(result).toContain('code: sourceExpress');
256
+ expect(result).toContain('code: destinationDemo');
257
+ expect(result).toContain('"port": 8080');
258
+ expect(result).toContain('"name": "Test"');
259
+ });
260
+ it('uses default import variable when no explicit code', () => {
261
+ const flowConfig = {
262
+ server: {},
263
+ sources: {
264
+ http: {
265
+ package: '@walkeros/server-source-express',
266
+ config: { settings: { port: 8080 } },
267
+ },
268
+ },
269
+ destinations: {},
270
+ };
271
+ const explicitCodeImports = new Map(); // No explicit imports
272
+ const result = buildConfigObject(flowConfig, explicitCodeImports);
273
+ expect(result).toContain('code: _walkerosServerSourceExpress');
274
+ });
275
+ });
276
+ describe('generatePlatformWrapper', () => {
277
+ it('generates web IIFE wrapper', () => {
278
+ const config = '{ sources: {}, destinations: {} }';
279
+ const userCode = 'console.log("custom code");';
280
+ const buildOptions = {
281
+ platform: 'browser',
282
+ windowCollector: 'collector',
283
+ windowElb: 'elb',
284
+ };
285
+ const result = generatePlatformWrapper(config, userCode, buildOptions);
286
+ expect(result).toContain('(async () => {');
287
+ expect(result).toContain('const config = { sources: {}, destinations: {} };');
288
+ expect(result).toContain('console.log("custom code");');
289
+ expect(result).toContain('await startFlow(config)');
290
+ expect(result).toContain("window['collector'] = collector");
291
+ expect(result).toContain("window['elb'] = elb");
292
+ });
293
+ it('generates server export default wrapper', () => {
294
+ const config = '{ sources: {}, destinations: {} }';
295
+ const userCode = '';
296
+ const buildOptions = { platform: 'node' };
297
+ const result = generatePlatformWrapper(config, userCode, buildOptions);
298
+ expect(result).toContain('export default async function');
299
+ expect(result).toContain('const config = { sources: {}, destinations: {} };');
300
+ expect(result).toContain('return await startFlow(config)');
301
+ expect(result).not.toContain('window');
302
+ });
303
+ });
304
+ describe('createEntryPoint integration', () => {
305
+ it('generates complete entry point with explicit code', async () => {
306
+ const flowConfig = {
307
+ server: {},
308
+ packages: {
309
+ '@walkeros/collector': { imports: ['startFlow'] },
310
+ '@walkeros/server-source-express': {},
311
+ '@walkeros/destination-demo': {},
312
+ },
313
+ sources: {
314
+ http: {
315
+ package: '@walkeros/server-source-express',
316
+ code: 'sourceExpress',
317
+ config: { settings: { port: 8080 } },
318
+ },
319
+ },
320
+ destinations: {
321
+ demo: {
322
+ package: '@walkeros/destination-demo',
323
+ code: 'destinationDemo',
324
+ config: { settings: { name: 'Test' } },
325
+ },
326
+ },
327
+ };
328
+ const buildOptions = {
329
+ platform: 'node',
330
+ format: 'esm',
331
+ packages: {
332
+ '@walkeros/collector': { imports: ['startFlow'] },
333
+ '@walkeros/server-source-express': {},
334
+ '@walkeros/destination-demo': {},
335
+ },
336
+ output: './dist/bundle.mjs',
337
+ code: '',
338
+ };
339
+ const result = await createEntryPoint(flowConfig, buildOptions, new Map());
340
+ // Should have named imports
341
+ expect(result).toContain("import { startFlow } from '@walkeros/collector'");
342
+ expect(result).toContain("import { sourceExpress } from '@walkeros/server-source-express'");
343
+ expect(result).toContain("import { destinationDemo } from '@walkeros/destination-demo'");
344
+ // Should use those imports in config
345
+ expect(result).toContain('code: sourceExpress');
346
+ expect(result).toContain('code: destinationDemo');
347
+ // Should have server wrapper
348
+ expect(result).toContain('export default async function');
349
+ });
350
+ });
351
+ });
352
+ //# sourceMappingURL=bundler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler.test.js","sourceRoot":"","sources":["../../../src/__tests__/bundle/bundler.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=programmatic.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bundle/programmatic.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { bundle } from '../../commands/bundle/index.js';
4
+ import { getId } from '@walkeros/core';
5
+ import { getBuildDefaults, getDefaultOutput, } from '../../config/index.js';
6
+ describe('Programmatic Bundle API', () => {
7
+ const testOutputDir = path.join('.tmp', `programmatic-${Date.now()}-${getId()}`);
8
+ beforeEach(async () => {
9
+ await fs.ensureDir(testOutputDir);
10
+ // Mock console.log to suppress output during tests
11
+ jest.spyOn(console, 'log').mockImplementation(() => { });
12
+ // Mock fs.stat for bundle stats
13
+ const mockStat = {
14
+ size: 2048,
15
+ isFile: () => true,
16
+ isDirectory: () => false,
17
+ };
18
+ jest
19
+ .spyOn(fs, 'stat')
20
+ .mockImplementation(() => Promise.resolve(mockStat));
21
+ });
22
+ afterEach(async () => {
23
+ await fs.remove(testOutputDir);
24
+ jest.restoreAllMocks();
25
+ });
26
+ it('should bundle with Flow.Setup config object', async () => {
27
+ const config = {
28
+ version: 1,
29
+ flows: {
30
+ default: {
31
+ web: {},
32
+ packages: {
33
+ '@walkeros/core': {
34
+ imports: ['getId', 'trim'],
35
+ },
36
+ },
37
+ },
38
+ },
39
+ };
40
+ // Bundle will use convention-based output path
41
+ await expect(bundle(config, { silent: true })).resolves.not.toThrow();
42
+ });
43
+ it('should bundle with config file path', async () => {
44
+ const configPath = path.resolve(__dirname, '../../../examples/web-serve.json');
45
+ await expect(bundle(configPath, { silent: true })).resolves.not.toThrow();
46
+ });
47
+ it('should return stats when requested', async () => {
48
+ const config = {
49
+ version: 1,
50
+ flows: {
51
+ default: {
52
+ web: {},
53
+ packages: {
54
+ '@walkeros/core': { imports: ['getId'] },
55
+ },
56
+ },
57
+ },
58
+ };
59
+ const stats = await bundle(config, { silent: true, stats: true });
60
+ expect(stats).toBeDefined();
61
+ expect(stats.totalSize).toBe(2048); // From mocked fs.stat
62
+ expect(stats.buildTime).toBeGreaterThanOrEqual(0);
63
+ expect(stats.packages).toHaveLength(1);
64
+ });
65
+ it('should return undefined when stats not requested', async () => {
66
+ const config = {
67
+ version: 1,
68
+ flows: {
69
+ default: {
70
+ web: {},
71
+ packages: {
72
+ '@walkeros/core': { imports: ['getId'] },
73
+ },
74
+ },
75
+ },
76
+ };
77
+ const result = await bundle(config, { silent: true, stats: false });
78
+ expect(result).toBeUndefined();
79
+ });
80
+ it('should handle cache option', async () => {
81
+ const config = {
82
+ version: 1,
83
+ flows: {
84
+ default: {
85
+ web: {},
86
+ packages: {
87
+ '@walkeros/core': { imports: ['getId'] },
88
+ },
89
+ },
90
+ },
91
+ };
92
+ await expect(bundle(config, { silent: true, cache: false })).resolves.not.toThrow();
93
+ });
94
+ it('should handle verbose option', async () => {
95
+ const config = {
96
+ version: 1,
97
+ flows: {
98
+ default: {
99
+ web: {},
100
+ packages: {
101
+ '@walkeros/core': { imports: ['getId'] },
102
+ },
103
+ },
104
+ },
105
+ };
106
+ await expect(bundle(config, { silent: false, verbose: true })).resolves.not.toThrow();
107
+ });
108
+ it('should handle errors gracefully', async () => {
109
+ const invalidConfigPath = path.join(testOutputDir, 'nonexistent.json');
110
+ await expect(bundle(invalidConfigPath, { silent: true })).rejects.toThrow('Configuration file not found');
111
+ });
112
+ it('should select flow from multi-flow config', async () => {
113
+ const config = {
114
+ version: 1,
115
+ flows: {
116
+ production: {
117
+ web: {},
118
+ packages: {
119
+ '@walkeros/core': { imports: ['getId'] },
120
+ },
121
+ },
122
+ staging: {
123
+ web: {},
124
+ packages: {
125
+ '@walkeros/core': { imports: ['getId'] },
126
+ },
127
+ },
128
+ },
129
+ };
130
+ await expect(bundle(config, { silent: true, flowName: 'production' })).resolves.not.toThrow();
131
+ });
132
+ it('should apply platform-specific build defaults', () => {
133
+ // Verify build defaults are correctly applied
134
+ const webDefaults = getBuildDefaults('web');
135
+ expect(webDefaults.format).toBe('iife');
136
+ expect(webDefaults.platform).toBe('browser');
137
+ expect(webDefaults.target).toBe('es2020');
138
+ const serverDefaults = getBuildDefaults('server');
139
+ expect(serverDefaults.format).toBe('esm');
140
+ expect(serverDefaults.platform).toBe('node');
141
+ expect(serverDefaults.target).toBe('node20');
142
+ });
143
+ it('should use convention-based output paths', () => {
144
+ expect(getDefaultOutput('web')).toBe('./dist/walker.js');
145
+ expect(getDefaultOutput('server')).toBe('./dist/bundle.mjs');
146
+ });
147
+ });
148
+ //# sourceMappingURL=programmatic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic.test.js","sourceRoot":"","sources":["../../../src/__tests__/bundle/programmatic.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI End-to-End Tests
3
+ *
4
+ * Tests the actual CLI commands as users would invoke them
5
+ * Spawns real processes to test complete workflows
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli-e2e.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-e2e.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/cli-e2e.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}