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