@walkeros/cli 0.0.0-next-20251219153324

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 (284) hide show
  1. package/CHANGELOG.md +175 -0
  2. package/README.md +531 -0
  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 +564 -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 +192 -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 +208 -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 +61 -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 +250 -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 +165 -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 +46 -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 +114 -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 +28 -0
  196. package/dist/core/logger.d.ts.map +1 -0
  197. package/dist/core/logger.js +88 -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/examples/README.md +355 -0
  216. package/dist/examples/event.json +53 -0
  217. package/dist/examples/flow-order-complete.json +67 -0
  218. package/dist/examples/flow-simple.json +31 -0
  219. package/dist/examples/flow.json +82 -0
  220. package/dist/examples/server-collect.json +60 -0
  221. package/dist/examples/server-collect.mjs +13540 -0
  222. package/dist/examples/test.html +43 -0
  223. package/dist/examples/web-serve.js +25503 -0
  224. package/dist/examples/web-serve.json +74 -0
  225. package/dist/index.d.ts +427 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +2629 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/runtime/index.d.ts +10 -0
  230. package/dist/runtime/index.d.ts.map +1 -0
  231. package/dist/runtime/index.js +10 -0
  232. package/dist/runtime/index.js.map +1 -0
  233. package/dist/runtime/main.d.ts +2 -0
  234. package/dist/runtime/main.d.ts.map +1 -0
  235. package/dist/runtime/main.js +269 -0
  236. package/dist/runtime/main.js.map +1 -0
  237. package/dist/runtime/runner.d.ts +20 -0
  238. package/dist/runtime/runner.d.ts.map +1 -0
  239. package/dist/runtime/runner.js +72 -0
  240. package/dist/runtime/runner.js.map +1 -0
  241. package/dist/runtime/serve.d.ts +19 -0
  242. package/dist/runtime/serve.d.ts.map +1 -0
  243. package/dist/runtime/serve.js +97 -0
  244. package/dist/runtime/serve.js.map +1 -0
  245. package/dist/schemas/index.d.ts +9 -0
  246. package/dist/schemas/index.d.ts.map +1 -0
  247. package/dist/schemas/index.js +9 -0
  248. package/dist/schemas/index.js.map +1 -0
  249. package/dist/schemas/primitives.d.ts +37 -0
  250. package/dist/schemas/primitives.d.ts.map +1 -0
  251. package/dist/schemas/primitives.js +43 -0
  252. package/dist/schemas/primitives.js.map +1 -0
  253. package/dist/schemas/run.d.ts +23 -0
  254. package/dist/schemas/run.d.ts.map +1 -0
  255. package/dist/schemas/run.js +20 -0
  256. package/dist/schemas/run.js.map +1 -0
  257. package/dist/types/bundle.d.ts +141 -0
  258. package/dist/types/bundle.d.ts.map +1 -0
  259. package/dist/types/bundle.js +10 -0
  260. package/dist/types/bundle.js.map +1 -0
  261. package/dist/types/global.d.ts +38 -0
  262. package/dist/types/global.d.ts.map +1 -0
  263. package/dist/types/global.js +24 -0
  264. package/dist/types/global.js.map +1 -0
  265. package/dist/types/index.d.ts +8 -0
  266. package/dist/types/index.d.ts.map +1 -0
  267. package/dist/types/index.js +8 -0
  268. package/dist/types/index.js.map +1 -0
  269. package/dist/version.d.ts +3 -0
  270. package/dist/version.d.ts.map +1 -0
  271. package/dist/version.js +27 -0
  272. package/dist/version.js.map +1 -0
  273. package/dist/walker.js +1 -0
  274. package/examples/README.md +355 -0
  275. package/examples/event.json +53 -0
  276. package/examples/flow-order-complete.json +67 -0
  277. package/examples/flow-simple.json +31 -0
  278. package/examples/flow.json +82 -0
  279. package/examples/server-collect.json +60 -0
  280. package/examples/server-collect.mjs +13540 -0
  281. package/examples/test.html +43 -0
  282. package/examples/web-serve.js +25503 -0
  283. package/examples/web-serve.json +74 -0
  284. package/package.json +62 -0
@@ -0,0 +1,564 @@
1
+ import esbuild from 'esbuild';
2
+ import path from 'path';
3
+ import fs from 'fs-extra';
4
+ import { packageNameToVariable } from '@walkeros/core';
5
+ import { downloadPackages } from './package-manager.js';
6
+ import { getTmpPath } from '../../core/tmp.js';
7
+ import { isBuildCached, getCachedBuild, cacheBuild, } from '../../core/build-cache.js';
8
+ /**
9
+ * Copy included folders to output directory.
10
+ * Used to make credential files and other assets available alongside the bundle.
11
+ */
12
+ async function copyIncludes(includes, sourceDir, outputDir, logger) {
13
+ for (const include of includes) {
14
+ const sourcePath = path.resolve(sourceDir, include);
15
+ const folderName = path.basename(include);
16
+ const destPath = path.join(outputDir, folderName);
17
+ if (await fs.pathExists(sourcePath)) {
18
+ await fs.copy(sourcePath, destPath);
19
+ logger.debug(`Copied ${include} to output`);
20
+ // TODO: Add logging for copied folders
21
+ }
22
+ else {
23
+ logger.debug(`Include folder not found: ${include}`);
24
+ // TODO: Add logging for skipped folders (not found)
25
+ }
26
+ }
27
+ }
28
+ /**
29
+ * Generate cache key content from flow config and build options.
30
+ * Excludes non-deterministic fields (tempDir, output) from cache key.
31
+ */
32
+ function generateCacheKeyContent(flowConfig, buildOptions) {
33
+ const configForCache = {
34
+ flow: flowConfig,
35
+ build: {
36
+ ...buildOptions,
37
+ // Exclude non-deterministic fields from cache key
38
+ tempDir: undefined,
39
+ output: undefined,
40
+ },
41
+ };
42
+ return JSON.stringify(configForCache);
43
+ }
44
+ export async function bundleCore(flowConfig, buildOptions, logger, showStats = false) {
45
+ const bundleStartTime = Date.now();
46
+ // Use provided temp dir or default .tmp/
47
+ const TEMP_DIR = buildOptions.tempDir || getTmpPath();
48
+ // Check build cache if caching is enabled
49
+ if (buildOptions.cache !== false) {
50
+ const configContent = generateCacheKeyContent(flowConfig, buildOptions);
51
+ const cached = await isBuildCached(configContent);
52
+ if (cached) {
53
+ const cachedBuild = await getCachedBuild(configContent);
54
+ if (cachedBuild) {
55
+ logger.info('✨ Using cached build');
56
+ // Write cached build to output
57
+ const outputPath = path.resolve(buildOptions.output);
58
+ await fs.ensureDir(path.dirname(outputPath));
59
+ await fs.writeFile(outputPath, cachedBuild);
60
+ logger.gray(`Output: ${outputPath}`);
61
+ logger.success('✅ Build completed (from cache)');
62
+ // Return stats if requested
63
+ if (showStats) {
64
+ const stats = await fs.stat(outputPath);
65
+ // Generate basic package stats from buildOptions
66
+ const packageStats = Object.entries(buildOptions.packages).map(([name, pkg]) => ({
67
+ name: `${name}@${pkg.version || 'latest'}`,
68
+ size: 0, // Size estimation not available for cached builds
69
+ }));
70
+ return {
71
+ totalSize: stats.size,
72
+ packages: packageStats,
73
+ buildTime: Date.now() - bundleStartTime,
74
+ treeshakingEffective: true,
75
+ };
76
+ }
77
+ return;
78
+ }
79
+ }
80
+ }
81
+ try {
82
+ // Step 1: Ensure temporary directory exists
83
+ await fs.ensureDir(TEMP_DIR);
84
+ // Step 2: Download packages
85
+ logger.info('📥 Downloading packages...');
86
+ // Convert packages object to array format expected by downloadPackages
87
+ const packagesArray = Object.entries(buildOptions.packages).map(([name, packageConfig]) => ({
88
+ name,
89
+ version: packageConfig.version || 'latest',
90
+ path: packageConfig.path, // Pass local path if defined
91
+ }));
92
+ // downloadPackages adds 'node_modules' subdirectory automatically
93
+ const packagePaths = await downloadPackages(packagesArray, TEMP_DIR, logger, buildOptions.cache, buildOptions.configDir);
94
+ // Fix @walkeros packages to have proper ESM exports
95
+ // This ensures Node resolves to .mjs files instead of .js (CJS)
96
+ for (const [pkgName, pkgPath] of packagePaths.entries()) {
97
+ if (pkgName.startsWith('@walkeros/')) {
98
+ const pkgJsonPath = path.join(pkgPath, 'package.json');
99
+ const pkgJson = await fs.readJSON(pkgJsonPath);
100
+ // Add exports field to force ESM resolution
101
+ if (!pkgJson.exports && pkgJson.module) {
102
+ pkgJson.exports = {
103
+ '.': {
104
+ import: pkgJson.module,
105
+ require: pkgJson.main,
106
+ },
107
+ };
108
+ await fs.writeJSON(pkgJsonPath, pkgJson, { spaces: 2 });
109
+ }
110
+ }
111
+ }
112
+ // Step 3: Create package.json to enable ESM in temp directory
113
+ // This ensures Node treats all .js files as ESM and resolves @walkeros packages correctly
114
+ const packageJsonPath = path.join(TEMP_DIR, 'package.json');
115
+ await fs.writeFile(packageJsonPath, JSON.stringify({ type: 'module' }, null, 2));
116
+ // Step 4: Create entry point
117
+ logger.info('📝 Creating entry point...');
118
+ const entryContent = await createEntryPoint(flowConfig, buildOptions, packagePaths);
119
+ const entryPath = path.join(TEMP_DIR, 'entry.js');
120
+ await fs.writeFile(entryPath, entryContent);
121
+ // Step 4: Bundle with esbuild
122
+ logger.info('⚡ Bundling with esbuild...');
123
+ const outputPath = path.resolve(buildOptions.output);
124
+ // Ensure output directory exists
125
+ await fs.ensureDir(path.dirname(outputPath));
126
+ const esbuildOptions = createEsbuildOptions(buildOptions, entryPath, outputPath, TEMP_DIR, packagePaths, logger);
127
+ try {
128
+ await esbuild.build(esbuildOptions);
129
+ }
130
+ catch (buildError) {
131
+ // Enhanced error handling for build failures
132
+ throw createBuildError(buildError, buildOptions.code || '');
133
+ }
134
+ logger.gray(`Output: ${outputPath}`);
135
+ // Step 5: Cache the build result if caching is enabled
136
+ if (buildOptions.cache !== false) {
137
+ const configContent = generateCacheKeyContent(flowConfig, buildOptions);
138
+ const buildOutput = await fs.readFile(outputPath, 'utf-8');
139
+ await cacheBuild(configContent, buildOutput);
140
+ logger.debug('Build cached for future use');
141
+ }
142
+ // Step 6: Collect stats if requested
143
+ let stats;
144
+ if (showStats) {
145
+ stats = await collectBundleStats(outputPath, buildOptions.packages, bundleStartTime, entryContent);
146
+ }
147
+ // Step 7: Copy included folders to output directory
148
+ if (buildOptions.include && buildOptions.include.length > 0) {
149
+ const outputDir = path.dirname(outputPath);
150
+ await copyIncludes(buildOptions.include, buildOptions.configDir || process.cwd(), outputDir, logger);
151
+ }
152
+ // No auto-cleanup - user runs `walkeros clean` explicitly
153
+ return stats;
154
+ }
155
+ catch (error) {
156
+ throw error;
157
+ }
158
+ }
159
+ async function collectBundleStats(outputPath, packages, startTime, entryContent) {
160
+ const stats = await fs.stat(outputPath);
161
+ const totalSize = stats.size;
162
+ const buildTime = Date.now() - startTime;
163
+ // Estimate package sizes by analyzing imports in entry content
164
+ const packageStats = Object.entries(packages).map(([name, pkg]) => {
165
+ const importPattern = new RegExp(`from\\s+['"]${name}['"]`, 'g');
166
+ const namedImportPattern = new RegExp(`import\\s+\\{[^}]*\\}\\s+from\\s+['"]${name}['"]`, 'g');
167
+ const hasImports = importPattern.test(entryContent) || namedImportPattern.test(entryContent);
168
+ // Rough estimation: if package is imported, assign proportional size
169
+ const packagesCount = Object.keys(packages).length;
170
+ const estimatedSize = hasImports
171
+ ? Math.floor(totalSize / packagesCount)
172
+ : 0;
173
+ return {
174
+ name: `${name}@${pkg.version || 'latest'}`,
175
+ size: estimatedSize,
176
+ };
177
+ });
178
+ // Tree-shaking is effective if we use named imports (not wildcard imports)
179
+ const hasWildcardImports = /import\s+\*\s+as\s+\w+\s+from/.test(entryContent);
180
+ const treeshakingEffective = !hasWildcardImports;
181
+ return {
182
+ totalSize,
183
+ packages: packageStats,
184
+ buildTime,
185
+ treeshakingEffective,
186
+ };
187
+ }
188
+ function createEsbuildOptions(buildOptions, entryPath, outputPath, tempDir, packagePaths, logger) {
189
+ // Don't use aliases - they cause esbuild to bundle even external packages
190
+ // Instead, use absWorkingDir to point to temp directory where node_modules is
191
+ const alias = {};
192
+ const baseOptions = {
193
+ entryPoints: [entryPath],
194
+ bundle: true,
195
+ format: buildOptions.format,
196
+ platform: buildOptions.platform,
197
+ outfile: outputPath,
198
+ absWorkingDir: tempDir, // Resolve modules from temp directory
199
+ // alias removed - not needed with absWorkingDir
200
+ mainFields: ['module', 'main'], // Prefer ESM over CJS
201
+ treeShaking: true,
202
+ logLevel: 'error',
203
+ minify: buildOptions.minify,
204
+ sourcemap: buildOptions.sourcemap,
205
+ resolveExtensions: ['.mjs', '.js', '.ts', '.json'], // Prefer .mjs
206
+ // Enhanced minification options when minify is enabled
207
+ ...(buildOptions.minify && {
208
+ minifyWhitespace: buildOptions.minifyOptions?.whitespace ?? true,
209
+ minifyIdentifiers: buildOptions.minifyOptions?.identifiers ?? true,
210
+ minifySyntax: buildOptions.minifyOptions?.syntax ?? true,
211
+ legalComments: buildOptions.minifyOptions?.legalComments ?? 'none',
212
+ keepNames: buildOptions.minifyOptions?.keepNames ?? false,
213
+ charset: 'utf8',
214
+ }),
215
+ };
216
+ // Platform-specific configurations
217
+ if (buildOptions.platform === 'browser') {
218
+ baseOptions.define = {
219
+ 'process.env.NODE_ENV': '"production"',
220
+ global: 'globalThis',
221
+ };
222
+ // For browser bundles, let users handle Node.js built-ins as needed
223
+ baseOptions.external = buildOptions.external || [];
224
+ }
225
+ else if (buildOptions.platform === 'node') {
226
+ // For Node.js bundles, mark Node built-ins as external
227
+ const nodeBuiltins = [
228
+ 'crypto',
229
+ 'fs',
230
+ 'path',
231
+ 'os',
232
+ 'util',
233
+ 'stream',
234
+ 'buffer',
235
+ 'events',
236
+ 'http',
237
+ 'https',
238
+ 'url',
239
+ 'querystring',
240
+ 'zlib',
241
+ ];
242
+ // Mark runtime dependencies as external
243
+ // These packages are installed in the Docker container and should not be bundled
244
+ // - express/cors: Runtime dependencies for server sources
245
+ // Note: zod is bundled inline via @walkeros/core (not marked external)
246
+ // Use wildcard patterns to match both ESM and CJS imports
247
+ const npmPackages = ['express', 'express/*', 'cors', 'cors/*'];
248
+ // All downloaded @walkeros packages will be bundled into the output
249
+ // Only Node.js built-ins and runtime server packages (express/cors) are marked external
250
+ baseOptions.external = buildOptions.external
251
+ ? [...nodeBuiltins, ...npmPackages, ...buildOptions.external]
252
+ : [...nodeBuiltins, ...npmPackages];
253
+ // Add createRequire shim for ESM bundles with CJS external dependencies
254
+ // This allows require() calls generated by esbuild to work in ESM context
255
+ if (buildOptions.format === 'esm') {
256
+ baseOptions.banner = {
257
+ js: `import { createRequire } from 'module';const require = createRequire(import.meta.url);`,
258
+ };
259
+ }
260
+ }
261
+ // Set target if specified
262
+ if (buildOptions.target) {
263
+ baseOptions.target = buildOptions.target;
264
+ }
265
+ else if (buildOptions.platform === 'node') {
266
+ baseOptions.target = 'node18';
267
+ }
268
+ else {
269
+ baseOptions.target = 'es2018';
270
+ }
271
+ return baseOptions;
272
+ }
273
+ /**
274
+ * Detects destination packages from flow configuration.
275
+ * Extracts package names from destinations that have explicit 'package' field.
276
+ */
277
+ function detectDestinationPackages(flowConfig) {
278
+ const destinationPackages = new Set();
279
+ const destinations = flowConfig.destinations;
280
+ if (destinations) {
281
+ for (const [destKey, destConfig] of Object.entries(destinations)) {
282
+ // Require explicit package field - no inference for any packages
283
+ if (typeof destConfig === 'object' &&
284
+ destConfig !== null &&
285
+ 'package' in destConfig &&
286
+ typeof destConfig.package === 'string') {
287
+ destinationPackages.add(destConfig.package);
288
+ }
289
+ // If no package field, skip auto-importing examples for this destination
290
+ }
291
+ }
292
+ return destinationPackages;
293
+ }
294
+ /**
295
+ * Detects source packages from flow configuration.
296
+ * Extracts package names from sources that have explicit 'package' field.
297
+ */
298
+ function detectSourcePackages(flowConfig) {
299
+ const sourcePackages = new Set();
300
+ const sources = flowConfig.sources;
301
+ if (sources) {
302
+ for (const [sourceKey, sourceConfig] of Object.entries(sources)) {
303
+ // Require explicit package field - no inference for any packages
304
+ if (typeof sourceConfig === 'object' &&
305
+ sourceConfig !== null &&
306
+ 'package' in sourceConfig &&
307
+ typeof sourceConfig.package === 'string') {
308
+ sourcePackages.add(sourceConfig.package);
309
+ }
310
+ }
311
+ }
312
+ return sourcePackages;
313
+ }
314
+ /**
315
+ * Detects explicit code imports from destinations and sources.
316
+ * Returns a map of package names to sets of export names.
317
+ */
318
+ function detectExplicitCodeImports(flowConfig) {
319
+ const explicitCodeImports = new Map();
320
+ // Check destinations
321
+ const destinations = flowConfig.destinations;
322
+ if (destinations) {
323
+ for (const [destKey, destConfig] of Object.entries(destinations)) {
324
+ if (typeof destConfig === 'object' &&
325
+ destConfig !== null &&
326
+ 'package' in destConfig &&
327
+ typeof destConfig.package === 'string' &&
328
+ 'code' in destConfig &&
329
+ typeof destConfig.code === 'string') {
330
+ // Only treat as explicit if code doesn't match auto-generated pattern
331
+ // Auto-generated code starts with '_' (from packageNameToVariable)
332
+ const isAutoGenerated = destConfig.code.startsWith('_');
333
+ if (!isAutoGenerated) {
334
+ if (!explicitCodeImports.has(destConfig.package)) {
335
+ explicitCodeImports.set(destConfig.package, new Set());
336
+ }
337
+ explicitCodeImports.get(destConfig.package).add(destConfig.code);
338
+ }
339
+ }
340
+ }
341
+ }
342
+ // Check sources
343
+ const sources = flowConfig.sources;
344
+ if (sources) {
345
+ for (const [sourceKey, sourceConfig] of Object.entries(sources)) {
346
+ if (typeof sourceConfig === 'object' &&
347
+ sourceConfig !== null &&
348
+ 'package' in sourceConfig &&
349
+ typeof sourceConfig.package === 'string' &&
350
+ 'code' in sourceConfig &&
351
+ typeof sourceConfig.code === 'string') {
352
+ // Only treat as explicit if code doesn't match auto-generated pattern
353
+ // Auto-generated code starts with '_' (from packageNameToVariable)
354
+ const isAutoGenerated = sourceConfig.code.startsWith('_');
355
+ if (!isAutoGenerated) {
356
+ if (!explicitCodeImports.has(sourceConfig.package)) {
357
+ explicitCodeImports.set(sourceConfig.package, new Set());
358
+ }
359
+ explicitCodeImports.get(sourceConfig.package).add(sourceConfig.code);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ return explicitCodeImports;
365
+ }
366
+ /**
367
+ * Generates import statements and examples mappings from build packages.
368
+ * Handles explicit imports, default imports for destinations/sources, and utility imports.
369
+ */
370
+ function generateImportStatements(packages, destinationPackages, sourcePackages, explicitCodeImports) {
371
+ const importStatements = [];
372
+ const examplesMappings = [];
373
+ const usedPackages = new Set([...destinationPackages, ...sourcePackages]);
374
+ for (const [packageName, packageConfig] of Object.entries(packages)) {
375
+ const isUsedByDestOrSource = usedPackages.has(packageName);
376
+ const hasExplicitCode = explicitCodeImports.has(packageName);
377
+ if (packageConfig.imports && packageConfig.imports.length > 0) {
378
+ // Explicit imports (utilities) - existing logic
379
+ // Remove duplicates within the same package
380
+ const uniqueImports = [...new Set(packageConfig.imports)];
381
+ // Handle special "default as X" syntax
382
+ const defaultImports = [];
383
+ const namedImports = [];
384
+ for (const imp of uniqueImports) {
385
+ if (imp.startsWith('default as ')) {
386
+ defaultImports.push(imp.replace('default as ', ''));
387
+ }
388
+ else {
389
+ namedImports.push(imp);
390
+ }
391
+ }
392
+ // Generate import statements
393
+ if (defaultImports.length > 0) {
394
+ for (const defaultImport of defaultImports) {
395
+ importStatements.push(`import ${defaultImport} from '${packageName}';`);
396
+ }
397
+ }
398
+ if (namedImports.length > 0) {
399
+ const importList = namedImports.join(', ');
400
+ importStatements.push(`import { ${importList} } from '${packageName}';`);
401
+ }
402
+ // Check if this package imports examples and create mappings
403
+ const examplesImport = uniqueImports.find((imp) => imp.includes('examples as '));
404
+ if (examplesImport) {
405
+ // Extract destination name and examples variable name
406
+ // Format: "examples as gtagExamples" -> gtagExamples
407
+ const examplesVarName = examplesImport.split(' as ')[1];
408
+ // Get destination name from package (assumes @walkeros/web-destination-xxx format)
409
+ const destinationMatch = packageName.match(/@walkeros\/web-destination-(.+)$/);
410
+ if (destinationMatch) {
411
+ const destinationName = destinationMatch[1];
412
+ examplesMappings.push(` ${destinationName}: typeof ${examplesVarName} !== 'undefined' ? ${examplesVarName} : undefined`);
413
+ }
414
+ }
415
+ }
416
+ else if (hasExplicitCode) {
417
+ // Package with explicit code specified in destinations/sources
418
+ // → Generate named imports
419
+ const codes = Array.from(explicitCodeImports.get(packageName));
420
+ importStatements.push(`import { ${codes.join(', ')} } from '${packageName}';`);
421
+ }
422
+ else if (isUsedByDestOrSource) {
423
+ // Package used by destination/source but no explicit imports or code
424
+ // → Generate default import
425
+ const varName = packageNameToVariable(packageName);
426
+ importStatements.push(`import ${varName} from '${packageName}';`);
427
+ }
428
+ // If package declared but not used by any dest/source, skip import
429
+ // Examples are no longer auto-imported - simulator loads them dynamically
430
+ }
431
+ return { importStatements, examplesMappings };
432
+ }
433
+ /**
434
+ * Creates the entry point code for the bundle.
435
+ * Generates imports, config object, and platform-specific wrapper programmatically.
436
+ */
437
+ export async function createEntryPoint(flowConfig, buildOptions, packagePaths) {
438
+ // Detect packages used by destinations and sources
439
+ const destinationPackages = detectDestinationPackages(flowConfig);
440
+ const sourcePackages = detectSourcePackages(flowConfig);
441
+ const explicitCodeImports = detectExplicitCodeImports(flowConfig);
442
+ // Generate import statements
443
+ const { importStatements } = generateImportStatements(buildOptions.packages, destinationPackages, sourcePackages, explicitCodeImports);
444
+ const importsCode = importStatements.join('\n');
445
+ const hasFlow = destinationPackages.size > 0 || sourcePackages.size > 0;
446
+ // If no sources/destinations, just return user code with imports (no flow wrapper)
447
+ if (!hasFlow) {
448
+ const userCode = buildOptions.code || '';
449
+ return importsCode ? `${importsCode}\n\n${userCode}` : userCode;
450
+ }
451
+ // Build config object programmatically (DRY - single source of truth)
452
+ const configObject = buildConfigObject(flowConfig, explicitCodeImports);
453
+ // Generate platform-specific wrapper
454
+ const wrappedCode = generatePlatformWrapper(configObject, buildOptions.code || '', buildOptions);
455
+ // Assemble final code
456
+ return importsCode ? `${importsCode}\n\n${wrappedCode}` : wrappedCode;
457
+ }
458
+ function createBuildError(buildError, code) {
459
+ if (!buildError.errors || buildError.errors.length === 0) {
460
+ return new Error(`Build failed: ${buildError.message || buildError}`);
461
+ }
462
+ const firstError = buildError.errors[0];
463
+ const location = firstError.location;
464
+ if (location && location.file && location.file.includes('entry.js')) {
465
+ // Error is in our generated entry point (code)
466
+ const line = location.line;
467
+ const column = location.column;
468
+ const codeLines = code.split('\n');
469
+ const errorLine = codeLines[line - 1] || '';
470
+ return new Error(`Code syntax error at line ${line}, column ${column}:\n` +
471
+ ` ${errorLine}\n` +
472
+ ` ${' '.repeat(column - 1)}^\n` +
473
+ `${firstError.text}`);
474
+ }
475
+ // Error is in package code or other build issue
476
+ return new Error(`Build error: ${firstError.text}\n` +
477
+ (location
478
+ ? ` at ${location.file}:${location.line}:${location.column}`
479
+ : ''));
480
+ }
481
+ /**
482
+ * Build config object string from flow configuration.
483
+ * Respects import strategy decisions from detectExplicitCodeImports.
484
+ */
485
+ export function buildConfigObject(flowConfig, explicitCodeImports) {
486
+ const flowWithProps = flowConfig;
487
+ const sources = flowWithProps.sources || {};
488
+ const destinations = flowWithProps.destinations || {};
489
+ // Build sources
490
+ const sourcesEntries = Object.entries(sources).map(([key, source]) => {
491
+ const hasExplicitCode = source.code && explicitCodeImports.has(source.package);
492
+ const codeVar = hasExplicitCode
493
+ ? source.code
494
+ : packageNameToVariable(source.package);
495
+ const configStr = source.config ? processConfigValue(source.config) : '{}';
496
+ const envStr = source.env
497
+ ? `,\n env: ${processConfigValue(source.env)}`
498
+ : '';
499
+ return ` ${key}: {\n code: ${codeVar},\n config: ${configStr}${envStr}\n }`;
500
+ });
501
+ // Build destinations
502
+ const destinationsEntries = Object.entries(destinations).map(([key, dest]) => {
503
+ const hasExplicitCode = dest.code && explicitCodeImports.has(dest.package);
504
+ const codeVar = hasExplicitCode
505
+ ? dest.code
506
+ : packageNameToVariable(dest.package);
507
+ const configStr = dest.config ? processConfigValue(dest.config) : '{}';
508
+ const envStr = dest.env
509
+ ? `,\n env: ${processConfigValue(dest.env)}`
510
+ : '';
511
+ return ` ${key}: {\n code: ${codeVar},\n config: ${configStr}${envStr}\n }`;
512
+ });
513
+ // Build collector
514
+ const collectorStr = flowWithProps.collector
515
+ ? `,\n ...${processConfigValue(flowWithProps.collector)}`
516
+ : '';
517
+ return `{
518
+ sources: {
519
+ ${sourcesEntries.join(',\n')}
520
+ },
521
+ destinations: {
522
+ ${destinationsEntries.join(',\n')}
523
+ }${collectorStr}
524
+ }`;
525
+ }
526
+ /**
527
+ * Process config value for serialization.
528
+ * Uses existing serializer utilities.
529
+ */
530
+ function processConfigValue(value) {
531
+ return JSON.stringify(value, null, 2);
532
+ }
533
+ /**
534
+ * Generate platform-specific wrapper code.
535
+ */
536
+ export function generatePlatformWrapper(configObject, userCode, buildOptions) {
537
+ if (buildOptions.platform === 'browser') {
538
+ // Web platform: IIFE with browser globals
539
+ const windowAssignments = [];
540
+ if (buildOptions.windowCollector) {
541
+ windowAssignments.push(` if (typeof window !== 'undefined') window['${buildOptions.windowCollector}'] = collector;`);
542
+ }
543
+ if (buildOptions.windowElb) {
544
+ windowAssignments.push(` if (typeof window !== 'undefined') window['${buildOptions.windowElb}'] = elb;`);
545
+ }
546
+ const assignments = windowAssignments.length > 0 ? '\n' + windowAssignments.join('\n') : '';
547
+ return `(async () => {
548
+ const config = ${configObject};
549
+
550
+ ${userCode}
551
+
552
+ const { collector, elb } = await startFlow(config);${assignments}
553
+ })();`;
554
+ }
555
+ else {
556
+ // Server platform: Export default function
557
+ const codeSection = userCode ? `\n ${userCode}\n` : '';
558
+ return `export default async function(context = {}) {
559
+ const config = ${configObject};${codeSection}
560
+ return await startFlow(config);
561
+ }`;
562
+ }
563
+ }
564
+ //# sourceMappingURL=bundler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../src/commands/bundle/bundler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Bundle Command
3
+ *
4
+ * Supports both single-flow and multi-flow builds.
5
+ */
6
+ import type { BuildOptions } from '../../types/bundle.js';
7
+ export interface BundleCommandOptions {
8
+ config: string;
9
+ flow?: string;
10
+ all?: boolean;
11
+ stats?: boolean;
12
+ json?: boolean;
13
+ cache?: boolean;
14
+ verbose?: boolean;
15
+ dryRun?: boolean;
16
+ silent?: boolean;
17
+ }
18
+ export declare function bundleCommand(options: BundleCommandOptions): Promise<void>;
19
+ /**
20
+ * High-level bundle function for programmatic usage.
21
+ *
22
+ * Handles configuration loading, parsing, and logger creation internally.
23
+ *
24
+ * @param configOrPath - Bundle configuration (Flow.Setup) or path to config file
25
+ * @param options - Bundle options
26
+ * @param options.silent - Suppress all output (default: false)
27
+ * @param options.verbose - Enable verbose logging (default: false)
28
+ * @param options.stats - Collect and return bundle statistics (default: false)
29
+ * @param options.cache - Enable package caching (default: true)
30
+ * @param options.flowName - Flow to use (required for multi-flow configs)
31
+ * @returns Bundle statistics if stats option is true, otherwise void
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // With Flow.Setup config object
36
+ * await bundle({
37
+ * version: 1,
38
+ * flows: {
39
+ * default: {
40
+ * web: {},
41
+ * packages: { '@walkeros/collector': { imports: ['startFlow'] } },
42
+ * destinations: { api: { code: 'destinationApi' } },
43
+ * }
44
+ * }
45
+ * });
46
+ *
47
+ * // With config file
48
+ * await bundle('./walker.config.json', { stats: true });
49
+ * ```
50
+ */
51
+ export declare function bundle(configOrPath: unknown, options?: {
52
+ silent?: boolean;
53
+ verbose?: boolean;
54
+ stats?: boolean;
55
+ cache?: boolean;
56
+ flowName?: string;
57
+ buildOverrides?: Partial<BuildOptions>;
58
+ }): Promise<import('./bundler').BundleStats | void>;
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Jf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,MAAM,CAC1B,YAAY,EAAE,OAAO,EACrB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACnC,GACL,OAAO,CAAC,OAAO,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC,CAmCjD"}