@walkeros/cli 0.3.1

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 (181) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +285 -0
  3. package/dist/__tests__/bundle/bundler-integration.test.d.ts +2 -0
  4. package/dist/__tests__/bundle/bundler-integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/bundle/bundler-integration.test.js +106 -0
  6. package/dist/__tests__/bundle/bundler-integration.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 +281 -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 +118 -0
  14. package/dist/__tests__/bundle/programmatic.test.js.map +1 -0
  15. package/dist/__tests__/bundle/serializer.test.d.ts +2 -0
  16. package/dist/__tests__/bundle/serializer.test.d.ts.map +1 -0
  17. package/dist/__tests__/bundle/serializer.test.js +173 -0
  18. package/dist/__tests__/bundle/serializer.test.js.map +1 -0
  19. package/dist/__tests__/bundle/template-engine.test.d.ts +2 -0
  20. package/dist/__tests__/bundle/template-engine.test.d.ts.map +1 -0
  21. package/dist/__tests__/bundle/template-engine.test.js +107 -0
  22. package/dist/__tests__/bundle/template-engine.test.js.map +1 -0
  23. package/dist/__tests__/cli-e2e.test.d.ts +8 -0
  24. package/dist/__tests__/cli-e2e.test.d.ts.map +1 -0
  25. package/dist/__tests__/cli-e2e.test.js +144 -0
  26. package/dist/__tests__/cli-e2e.test.js.map +1 -0
  27. package/dist/__tests__/cli.test.d.ts +2 -0
  28. package/dist/__tests__/cli.test.d.ts.map +1 -0
  29. package/dist/__tests__/cli.test.js +255 -0
  30. package/dist/__tests__/cli.test.js.map +1 -0
  31. package/dist/__tests__/config-loader.test.d.ts +7 -0
  32. package/dist/__tests__/config-loader.test.d.ts.map +1 -0
  33. package/dist/__tests__/config-loader.test.js +393 -0
  34. package/dist/__tests__/config-loader.test.js.map +1 -0
  35. package/dist/__tests__/core/config.test.d.ts +2 -0
  36. package/dist/__tests__/core/config.test.d.ts.map +1 -0
  37. package/dist/__tests__/core/config.test.js +72 -0
  38. package/dist/__tests__/core/config.test.js.map +1 -0
  39. package/dist/__tests__/core/logger.test.d.ts +2 -0
  40. package/dist/__tests__/core/logger.test.d.ts.map +1 -0
  41. package/dist/__tests__/core/logger.test.js +53 -0
  42. package/dist/__tests__/core/logger.test.js.map +1 -0
  43. package/dist/__tests__/simulate/programmatic.test.d.ts +2 -0
  44. package/dist/__tests__/simulate/programmatic.test.d.ts.map +1 -0
  45. package/dist/__tests__/simulate/programmatic.test.js +51 -0
  46. package/dist/__tests__/simulate/programmatic.test.js.map +1 -0
  47. package/dist/__tests__/simulate/simulator.test.d.ts +2 -0
  48. package/dist/__tests__/simulate/simulator.test.d.ts.map +1 -0
  49. package/dist/__tests__/simulate/simulator.test.js +29 -0
  50. package/dist/__tests__/simulate/simulator.test.js.map +1 -0
  51. package/dist/commands/bundle/bundler.d.ts +14 -0
  52. package/dist/commands/bundle/bundler.d.ts.map +1 -0
  53. package/dist/commands/bundle/bundler.js +372 -0
  54. package/dist/commands/bundle/bundler.js.map +1 -0
  55. package/dist/commands/bundle/index.d.ts +51 -0
  56. package/dist/commands/bundle/index.d.ts.map +1 -0
  57. package/dist/commands/bundle/index.js +200 -0
  58. package/dist/commands/bundle/index.js.map +1 -0
  59. package/dist/commands/bundle/package-manager.d.ts +7 -0
  60. package/dist/commands/bundle/package-manager.d.ts.map +1 -0
  61. package/dist/commands/bundle/package-manager.js +170 -0
  62. package/dist/commands/bundle/package-manager.js.map +1 -0
  63. package/dist/commands/bundle/serializer.d.ts +23 -0
  64. package/dist/commands/bundle/serializer.d.ts.map +1 -0
  65. package/dist/commands/bundle/serializer.js +127 -0
  66. package/dist/commands/bundle/serializer.js.map +1 -0
  67. package/dist/commands/bundle/stats.d.ts +23 -0
  68. package/dist/commands/bundle/stats.d.ts.map +1 -0
  69. package/dist/commands/bundle/stats.js +52 -0
  70. package/dist/commands/bundle/stats.js.map +1 -0
  71. package/dist/commands/bundle/template-engine.d.ts +18 -0
  72. package/dist/commands/bundle/template-engine.d.ts.map +1 -0
  73. package/dist/commands/bundle/template-engine.js +49 -0
  74. package/dist/commands/bundle/template-engine.js.map +1 -0
  75. package/dist/commands/run/__tests__/run.integration.test.d.ts +8 -0
  76. package/dist/commands/run/__tests__/run.integration.test.d.ts.map +1 -0
  77. package/dist/commands/run/__tests__/run.integration.test.js +53 -0
  78. package/dist/commands/run/__tests__/run.integration.test.js.map +1 -0
  79. package/dist/commands/run/__tests__/validators.test.d.ts +2 -0
  80. package/dist/commands/run/__tests__/validators.test.d.ts.map +1 -0
  81. package/dist/commands/run/__tests__/validators.test.js +80 -0
  82. package/dist/commands/run/__tests__/validators.test.js.map +1 -0
  83. package/dist/commands/run/index.d.ts +39 -0
  84. package/dist/commands/run/index.d.ts.map +1 -0
  85. package/dist/commands/run/index.js +251 -0
  86. package/dist/commands/run/index.js.map +1 -0
  87. package/dist/commands/run/types.d.ts +56 -0
  88. package/dist/commands/run/types.d.ts.map +1 -0
  89. package/dist/commands/run/types.js +7 -0
  90. package/dist/commands/run/types.js.map +1 -0
  91. package/dist/commands/run/validators.d.ts +29 -0
  92. package/dist/commands/run/validators.d.ts.map +1 -0
  93. package/dist/commands/run/validators.js +54 -0
  94. package/dist/commands/run/validators.js.map +1 -0
  95. package/dist/commands/simulate/index.d.ts +47 -0
  96. package/dist/commands/simulate/index.d.ts.map +1 -0
  97. package/dist/commands/simulate/index.js +121 -0
  98. package/dist/commands/simulate/index.js.map +1 -0
  99. package/dist/commands/simulate/simulator.d.ts +18 -0
  100. package/dist/commands/simulate/simulator.d.ts.map +1 -0
  101. package/dist/commands/simulate/simulator.js +236 -0
  102. package/dist/commands/simulate/simulator.js.map +1 -0
  103. package/dist/commands/simulate/tracker.d.ts +30 -0
  104. package/dist/commands/simulate/tracker.d.ts.map +1 -0
  105. package/dist/commands/simulate/tracker.js +96 -0
  106. package/dist/commands/simulate/tracker.js.map +1 -0
  107. package/dist/commands/simulate/types.d.ts +18 -0
  108. package/dist/commands/simulate/types.d.ts.map +1 -0
  109. package/dist/commands/simulate/types.js +2 -0
  110. package/dist/commands/simulate/types.js.map +1 -0
  111. package/dist/config/defaults.d.ts +33 -0
  112. package/dist/config/defaults.d.ts.map +1 -0
  113. package/dist/config/defaults.js +73 -0
  114. package/dist/config/defaults.js.map +1 -0
  115. package/dist/config/index.d.ts +14 -0
  116. package/dist/config/index.d.ts.map +1 -0
  117. package/dist/config/index.js +16 -0
  118. package/dist/config/index.js.map +1 -0
  119. package/dist/config/loader.d.ts +74 -0
  120. package/dist/config/loader.d.ts.map +1 -0
  121. package/dist/config/loader.js +136 -0
  122. package/dist/config/loader.js.map +1 -0
  123. package/dist/config/parser.d.ts +64 -0
  124. package/dist/config/parser.d.ts.map +1 -0
  125. package/dist/config/parser.js +137 -0
  126. package/dist/config/parser.js.map +1 -0
  127. package/dist/config/utils.d.ts +38 -0
  128. package/dist/config/utils.d.ts.map +1 -0
  129. package/dist/config/utils.js +66 -0
  130. package/dist/config/utils.js.map +1 -0
  131. package/dist/config/validators.d.ts +23 -0
  132. package/dist/config/validators.d.ts.map +1 -0
  133. package/dist/config/validators.js +45 -0
  134. package/dist/config/validators.js.map +1 -0
  135. package/dist/core/docker.d.ts +42 -0
  136. package/dist/core/docker.d.ts.map +1 -0
  137. package/dist/core/docker.js +114 -0
  138. package/dist/core/docker.js.map +1 -0
  139. package/dist/core/execution.d.ts +33 -0
  140. package/dist/core/execution.d.ts.map +1 -0
  141. package/dist/core/execution.js +57 -0
  142. package/dist/core/execution.js.map +1 -0
  143. package/dist/core/index.d.ts +6 -0
  144. package/dist/core/index.d.ts.map +1 -0
  145. package/dist/core/index.js +6 -0
  146. package/dist/core/index.js.map +1 -0
  147. package/dist/core/logger.d.ts +17 -0
  148. package/dist/core/logger.d.ts.map +1 -0
  149. package/dist/core/logger.js +74 -0
  150. package/dist/core/logger.js.map +1 -0
  151. package/dist/core/output.d.ts +30 -0
  152. package/dist/core/output.d.ts.map +1 -0
  153. package/dist/core/output.js +46 -0
  154. package/dist/core/output.js.map +1 -0
  155. package/dist/core/timer.d.ts +14 -0
  156. package/dist/core/timer.d.ts.map +1 -0
  157. package/dist/core/timer.js +29 -0
  158. package/dist/core/timer.js.map +1 -0
  159. package/dist/index.d.ts +614 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +1940 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/types/bundle.d.ts +251 -0
  164. package/dist/types/bundle.d.ts.map +1 -0
  165. package/dist/types/bundle.js +10 -0
  166. package/dist/types/bundle.js.map +1 -0
  167. package/dist/types/global.d.ts +51 -0
  168. package/dist/types/global.d.ts.map +1 -0
  169. package/dist/types/global.js +30 -0
  170. package/dist/types/global.js.map +1 -0
  171. package/dist/types/index.d.ts +8 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +8 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/types/template.d.ts +108 -0
  176. package/dist/types/template.d.ts.map +1 -0
  177. package/dist/types/template.js +10 -0
  178. package/dist/types/template.js.map +1 -0
  179. package/package.json +59 -0
  180. package/templates/base.hbs +44 -0
  181. package/templates/server.hbs +29 -0
@@ -0,0 +1,29 @@
1
+ import path from 'path';
2
+ import { simulateCore as simulate } from '../../commands/simulate/simulator';
3
+ // Mock package-manager to avoid network calls and return empty results
4
+ jest.mock('../../commands/bundle/package-manager', () => ({
5
+ downloadPackages: jest.fn().mockResolvedValue(new Map()),
6
+ }));
7
+ describe('Simulate', () => {
8
+ it('should handle package manager errors gracefully', async () => {
9
+ const configPath = path.resolve(__dirname, '../../../examples/web-serve.json');
10
+ const event = { name: 'product view', data: { id: 'P123' } };
11
+ const result = await simulate(configPath, event, {
12
+ json: true,
13
+ verbose: true,
14
+ });
15
+ // With mocked packages that return empty map, this will fail to bundle
16
+ // but should fail gracefully without crashing
17
+ expect(result).toBeDefined();
18
+ expect(typeof result).toBe('object');
19
+ expect(typeof result.success).toBe('boolean');
20
+ // Either succeeds or fails gracefully
21
+ if (result.success) {
22
+ expect(result.error).toBeUndefined();
23
+ }
24
+ else {
25
+ expect(typeof result.error).toBe('string');
26
+ }
27
+ }, 30000);
28
+ });
29
+ //# sourceMappingURL=simulator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator.test.js","sourceRoot":"","sources":["../../../src/__tests__/simulate/simulator.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,IAAI,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7E,uEAAuE;AACvE,IAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,GAAG,EAAE,CAAC;CACzD,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAC7B,SAAS,EACT,kCAAkC,CACnC,CAAC;QACF,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE;YAC/C,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,uEAAuE;QACvE,8CAA8C;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9C,sCAAsC;QACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Flow } from '@walkeros/core';
2
+ import type { BuildOptions } from '../../types/bundle';
3
+ import type { Logger } from '../../core';
4
+ export interface BundleStats {
5
+ totalSize: number;
6
+ packages: {
7
+ name: string;
8
+ size: number;
9
+ }[];
10
+ buildTime: number;
11
+ treeshakingEffective: boolean;
12
+ }
13
+ export declare function bundleCore(flowConfig: Flow.Config, buildOptions: BuildOptions, logger: Logger, showStats?: boolean): Promise<BundleStats | void>;
14
+ //# sourceMappingURL=bundler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/bundler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,IAAI,CAAC,MAAM,EACvB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,SAAS,UAAQ,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA6H7B"}
@@ -0,0 +1,372 @@
1
+ import esbuild from 'esbuild';
2
+ import path from 'path';
3
+ import fs from 'fs-extra';
4
+ import { downloadPackages } from './package-manager';
5
+ import { TemplateEngine } from './template-engine';
6
+ import { getTempDir } from '../../config';
7
+ export async function bundleCore(flowConfig, buildOptions, logger, showStats = false) {
8
+ const bundleStartTime = Date.now();
9
+ // Only generate a new temp dir if one isn't explicitly provided
10
+ // This allows simulator to share its temp dir with the bundler
11
+ // Ensure TEMP_DIR is always absolute (esbuild requirement)
12
+ const TEMP_DIR = buildOptions.tempDir
13
+ ? path.isAbsolute(buildOptions.tempDir)
14
+ ? buildOptions.tempDir
15
+ : path.resolve(buildOptions.tempDir)
16
+ : getTempDir();
17
+ try {
18
+ // Step 1: Prepare temporary directory
19
+ // Only clean if we created a new temp dir (don't clean shared simulator temp)
20
+ if (!buildOptions.tempDir) {
21
+ await fs.emptyDir(TEMP_DIR);
22
+ }
23
+ logger.debug('Cleaned temporary directory');
24
+ // Step 2: Download packages
25
+ logger.info('📥 Downloading packages...');
26
+ // Convert packages object to array format expected by downloadPackages
27
+ const packagesArray = Object.entries(buildOptions.packages).map(([name, packageConfig]) => ({
28
+ name,
29
+ version: packageConfig.version || 'latest',
30
+ }));
31
+ // downloadPackages adds 'node_modules' subdirectory automatically
32
+ const packagePaths = await downloadPackages(packagesArray, TEMP_DIR, logger, buildOptions.cache);
33
+ // Fix @walkeros packages to have proper ESM exports
34
+ // This ensures Node resolves to .mjs files instead of .js (CJS)
35
+ for (const [pkgName, pkgPath] of packagePaths.entries()) {
36
+ if (pkgName.startsWith('@walkeros/')) {
37
+ const pkgJsonPath = path.join(pkgPath, 'package.json');
38
+ const pkgJson = await fs.readJSON(pkgJsonPath);
39
+ // Add exports field to force ESM resolution
40
+ if (!pkgJson.exports && pkgJson.module) {
41
+ pkgJson.exports = {
42
+ '.': {
43
+ import: pkgJson.module,
44
+ require: pkgJson.main,
45
+ },
46
+ };
47
+ await fs.writeJSON(pkgJsonPath, pkgJson, { spaces: 2 });
48
+ }
49
+ }
50
+ }
51
+ // Step 3: Create package.json to enable ESM in temp directory
52
+ // This ensures Node treats all .js files as ESM and resolves @walkeros packages correctly
53
+ const packageJsonPath = path.join(TEMP_DIR, 'package.json');
54
+ await fs.writeFile(packageJsonPath, JSON.stringify({ type: 'module' }, null, 2));
55
+ // Step 4: Create entry point
56
+ logger.info('📝 Creating entry point...');
57
+ const entryContent = await createEntryPoint(flowConfig, buildOptions, packagePaths);
58
+ const entryPath = path.join(TEMP_DIR, 'entry.js');
59
+ await fs.writeFile(entryPath, entryContent);
60
+ // Step 4: Bundle with esbuild
61
+ logger.info('⚡ Bundling with esbuild...');
62
+ const outputPath = path.resolve(buildOptions.output);
63
+ // Ensure output directory exists
64
+ await fs.ensureDir(path.dirname(outputPath));
65
+ const esbuildOptions = createEsbuildOptions(buildOptions, entryPath, outputPath, TEMP_DIR, packagePaths, logger);
66
+ try {
67
+ await esbuild.build(esbuildOptions);
68
+ }
69
+ catch (buildError) {
70
+ // Enhanced error handling for build failures
71
+ throw createBuildError(buildError, buildOptions.code);
72
+ }
73
+ logger.gray(`Output: ${outputPath}`);
74
+ // Step 5: Collect stats if requested
75
+ let stats;
76
+ if (showStats) {
77
+ stats = await collectBundleStats(outputPath, buildOptions.packages, bundleStartTime, entryContent);
78
+ }
79
+ // Step 6: Cleanup
80
+ // Only cleanup if we created our own temp dir (not shared with simulator)
81
+ if (!buildOptions.tempDir) {
82
+ await fs.remove(TEMP_DIR);
83
+ logger.debug('Cleaned up temporary files');
84
+ }
85
+ return stats;
86
+ }
87
+ catch (error) {
88
+ // Cleanup on error (only if we created our own temp dir)
89
+ if (!buildOptions.tempDir) {
90
+ await fs.remove(TEMP_DIR).catch(() => { });
91
+ }
92
+ throw error;
93
+ }
94
+ }
95
+ async function collectBundleStats(outputPath, packages, startTime, entryContent) {
96
+ const stats = await fs.stat(outputPath);
97
+ const totalSize = stats.size;
98
+ const buildTime = Date.now() - startTime;
99
+ // Estimate package sizes by analyzing imports in entry content
100
+ const packageStats = Object.entries(packages).map(([name, pkg]) => {
101
+ const importPattern = new RegExp(`from\\s+['"]${name}['"]`, 'g');
102
+ const namedImportPattern = new RegExp(`import\\s+\\{[^}]*\\}\\s+from\\s+['"]${name}['"]`, 'g');
103
+ const hasImports = importPattern.test(entryContent) || namedImportPattern.test(entryContent);
104
+ // Rough estimation: if package is imported, assign proportional size
105
+ const packagesCount = Object.keys(packages).length;
106
+ const estimatedSize = hasImports
107
+ ? Math.floor(totalSize / packagesCount)
108
+ : 0;
109
+ return {
110
+ name: `${name}@${pkg.version || 'latest'}`,
111
+ size: estimatedSize,
112
+ };
113
+ });
114
+ // Tree-shaking is effective if we use named imports (not wildcard imports)
115
+ const hasWildcardImports = /import\s+\*\s+as\s+\w+\s+from/.test(entryContent);
116
+ const treeshakingEffective = !hasWildcardImports;
117
+ return {
118
+ totalSize,
119
+ packages: packageStats,
120
+ buildTime,
121
+ treeshakingEffective,
122
+ };
123
+ }
124
+ function createEsbuildOptions(buildOptions, entryPath, outputPath, tempDir, packagePaths, logger) {
125
+ // Don't use aliases - they cause esbuild to bundle even external packages
126
+ // Instead, use absWorkingDir to point to temp directory where node_modules is
127
+ const alias = {};
128
+ const baseOptions = {
129
+ entryPoints: [entryPath],
130
+ bundle: true,
131
+ format: buildOptions.format,
132
+ platform: buildOptions.platform,
133
+ outfile: outputPath,
134
+ absWorkingDir: tempDir, // Resolve modules from temp directory
135
+ // alias removed - not needed with absWorkingDir
136
+ mainFields: ['module', 'main'], // Prefer ESM over CJS
137
+ treeShaking: true,
138
+ logLevel: 'error',
139
+ minify: buildOptions.minify,
140
+ sourcemap: buildOptions.sourcemap,
141
+ resolveExtensions: ['.mjs', '.js', '.ts', '.json'], // Prefer .mjs
142
+ // Enhanced minification options when minify is enabled
143
+ ...(buildOptions.minify && {
144
+ minifyWhitespace: buildOptions.minifyOptions?.whitespace ?? true,
145
+ minifyIdentifiers: buildOptions.minifyOptions?.identifiers ?? true,
146
+ minifySyntax: buildOptions.minifyOptions?.syntax ?? true,
147
+ legalComments: buildOptions.minifyOptions?.legalComments ?? 'none',
148
+ keepNames: buildOptions.minifyOptions?.keepNames ?? false,
149
+ charset: 'utf8',
150
+ }),
151
+ };
152
+ // Platform-specific configurations
153
+ if (buildOptions.platform === 'browser') {
154
+ baseOptions.define = {
155
+ 'process.env.NODE_ENV': '"production"',
156
+ global: 'globalThis',
157
+ };
158
+ // For browser bundles, let users handle Node.js built-ins as needed
159
+ baseOptions.external = buildOptions.external || [];
160
+ }
161
+ else if (buildOptions.platform === 'node') {
162
+ // For Node.js bundles, mark Node built-ins as external
163
+ const nodeBuiltins = [
164
+ 'crypto',
165
+ 'fs',
166
+ 'path',
167
+ 'os',
168
+ 'util',
169
+ 'stream',
170
+ 'buffer',
171
+ 'events',
172
+ 'http',
173
+ 'https',
174
+ 'url',
175
+ 'querystring',
176
+ 'zlib',
177
+ ];
178
+ // Mark runtime dependencies as external
179
+ // These packages are installed in the Docker container and should not be bundled
180
+ // - zod: Prevents double-loading issues (used by @walkeros/core)
181
+ // - express/cors: Runtime dependencies for server sources
182
+ // Use wildcard patterns to match both ESM and CJS imports
183
+ const npmPackages = [
184
+ 'zod',
185
+ 'zod/*',
186
+ 'express',
187
+ 'express/*',
188
+ 'cors',
189
+ 'cors/*',
190
+ ];
191
+ // All downloaded @walkeros packages will be bundled into the output
192
+ // Only Node.js built-ins and problematic packages (zod) are marked external
193
+ baseOptions.external = buildOptions.external
194
+ ? [...nodeBuiltins, ...npmPackages, ...buildOptions.external]
195
+ : [...nodeBuiltins, ...npmPackages];
196
+ }
197
+ // Set target if specified
198
+ if (buildOptions.target) {
199
+ baseOptions.target = buildOptions.target;
200
+ }
201
+ else if (buildOptions.platform === 'node') {
202
+ baseOptions.target = 'node18';
203
+ }
204
+ else {
205
+ baseOptions.target = 'es2018';
206
+ }
207
+ // Set global name for IIFE format
208
+ if (buildOptions.globalName && buildOptions.format === 'iife') {
209
+ baseOptions.globalName = buildOptions.globalName;
210
+ }
211
+ return baseOptions;
212
+ }
213
+ // Helper function to convert package name to JS variable name
214
+ function packageNameToVariable(packageName) {
215
+ return packageName
216
+ .replace('@', '_')
217
+ .replace(/[/-]/g, '_')
218
+ .split('_')
219
+ .map((part, i) => i === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1))
220
+ .join('');
221
+ }
222
+ async function createEntryPoint(flowConfig, buildOptions, packagePaths) {
223
+ // Generate import statements from packages
224
+ const importStatements = [];
225
+ const examplesMappings = [];
226
+ // For simulation mode, automatically import examples from destination packages
227
+ // This ensures examples are loaded in the SAME execution context as the bundle
228
+ // preventing zod double-loading issues
229
+ const destinationPackages = new Set();
230
+ const destinations = flowConfig.destinations;
231
+ if (destinations) {
232
+ for (const [destKey, destConfig] of Object.entries(destinations)) {
233
+ // Require explicit package field - no inference for any packages
234
+ if (typeof destConfig === 'object' &&
235
+ destConfig !== null &&
236
+ 'package' in destConfig &&
237
+ typeof destConfig.package === 'string') {
238
+ destinationPackages.add(destConfig.package);
239
+ }
240
+ // If no package field, skip auto-importing examples for this destination
241
+ }
242
+ }
243
+ for (const [packageName, packageConfig] of Object.entries(buildOptions.packages)) {
244
+ if (packageConfig.imports && packageConfig.imports.length > 0) {
245
+ // Remove duplicates within the same package
246
+ const uniqueImports = [...new Set(packageConfig.imports)];
247
+ // Handle special "default as X" syntax
248
+ const defaultImports = [];
249
+ const namedImports = [];
250
+ for (const imp of uniqueImports) {
251
+ if (imp.startsWith('default as ')) {
252
+ defaultImports.push(imp.replace('default as ', ''));
253
+ }
254
+ else {
255
+ namedImports.push(imp);
256
+ }
257
+ }
258
+ // Generate import statements
259
+ if (defaultImports.length > 0) {
260
+ for (const defaultImport of defaultImports) {
261
+ importStatements.push(`import ${defaultImport} from '${packageName}';`);
262
+ }
263
+ }
264
+ if (namedImports.length > 0) {
265
+ const importList = namedImports.join(', ');
266
+ importStatements.push(`import { ${importList} } from '${packageName}';`);
267
+ }
268
+ // Check if this package imports examples and create mappings
269
+ const examplesImport = uniqueImports.find((imp) => imp.includes('examples as '));
270
+ if (examplesImport) {
271
+ // Extract destination name and examples variable name
272
+ // Format: "examples as gtagExamples" -> gtagExamples
273
+ const examplesVarName = examplesImport.split(' as ')[1];
274
+ // Get destination name from package (assumes @walkeros/web-destination-xxx format)
275
+ const destinationMatch = packageName.match(/@walkeros\/web-destination-(.+)$/);
276
+ if (destinationMatch) {
277
+ const destinationName = destinationMatch[1];
278
+ examplesMappings.push(` ${destinationName}: typeof ${examplesVarName} !== 'undefined' ? ${examplesVarName} : undefined`);
279
+ }
280
+ }
281
+ }
282
+ else {
283
+ // No imports specified - import as namespace with a warning comment
284
+ // User should specify explicit imports for better tree-shaking
285
+ const varName = packageNameToVariable(packageName);
286
+ importStatements.push(`import * as ${varName} from '${packageName}'; // Consider specifying explicit imports`);
287
+ }
288
+ // Auto-import examples for destination packages
289
+ if (destinationPackages.has(packageName)) {
290
+ const destinationMatch = packageName.match(/@walkeros\/(?:(?:web|server)-)?destination-(.+)$/);
291
+ if (destinationMatch) {
292
+ const destinationName = destinationMatch[1];
293
+ const examplesVarName = `${destinationName.replace(/-/g, '_')}_examples`;
294
+ // Try importing from /examples subpath first (standard packages)
295
+ // Fall back to importing { examples } from main module (demo packages)
296
+ const isDemoPackage = packageName.includes('-demo');
297
+ if (isDemoPackage) {
298
+ importStatements.push(`import { examples as ${examplesVarName} } from '${packageName}';`);
299
+ }
300
+ else {
301
+ importStatements.push(`import * as ${examplesVarName} from '${packageName}/examples';`);
302
+ }
303
+ examplesMappings.push(` ${destinationName}: ${examplesVarName}`);
304
+ }
305
+ }
306
+ }
307
+ // Create examples object if we have any mappings
308
+ const examplesObject = examplesMappings.length > 0
309
+ ? `const examples = {\n${examplesMappings.join(',\n')}\n};\n\n`
310
+ : '';
311
+ // Separate imports from template processing
312
+ const importsCode = importStatements.join('\n');
313
+ // Apply template if configured, otherwise just use code directly
314
+ let templatedCode;
315
+ if (buildOptions.template) {
316
+ const templateEngine = new TemplateEngine();
317
+ const flowWithProps = flowConfig;
318
+ templatedCode = await templateEngine.process(buildOptions.template, buildOptions.code, // Pass user code as parameter
319
+ (flowWithProps.sources || {}), (flowWithProps.destinations || {}), (flowWithProps.collector || {}), buildOptions);
320
+ }
321
+ else {
322
+ // No template - just use the code directly
323
+ templatedCode = buildOptions.code;
324
+ }
325
+ // Apply module format wrapping if needed
326
+ let wrappedCode = templatedCode;
327
+ // Check if code already has any export statements (default, named, etc.)
328
+ const hasExport = /^\s*export\s/m.test(templatedCode);
329
+ if (!hasExport) {
330
+ if (buildOptions.format === 'esm') {
331
+ // Export as default for ESM
332
+ wrappedCode = `export default ${templatedCode}`;
333
+ }
334
+ else if (buildOptions.platform === 'browser' && buildOptions.globalName) {
335
+ // Assign to window for browser builds with globalName
336
+ wrappedCode = `window['${buildOptions.globalName}'] = ${templatedCode}`;
337
+ }
338
+ }
339
+ // Combine imports, examples object, and wrapped code
340
+ let finalCode = importsCode
341
+ ? `${importsCode}\n\n${examplesObject}${wrappedCode}`
342
+ : `${examplesObject}${wrappedCode}`;
343
+ // If we have examples, export them as a named export
344
+ if (examplesObject && buildOptions.format === 'esm') {
345
+ finalCode += `\n\nexport { examples };`;
346
+ }
347
+ return finalCode;
348
+ }
349
+ function createBuildError(buildError, code) {
350
+ if (!buildError.errors || buildError.errors.length === 0) {
351
+ return new Error(`Build failed: ${buildError.message || buildError}`);
352
+ }
353
+ const firstError = buildError.errors[0];
354
+ const location = firstError.location;
355
+ if (location && location.file && location.file.includes('entry.js')) {
356
+ // Error is in our generated entry point (code)
357
+ const line = location.line;
358
+ const column = location.column;
359
+ const codeLines = code.split('\n');
360
+ const errorLine = codeLines[line - 1] || '';
361
+ return new Error(`Code syntax error at line ${line}, column ${column}:\n` +
362
+ ` ${errorLine}\n` +
363
+ ` ${' '.repeat(column - 1)}^\n` +
364
+ `${firstError.text}`);
365
+ }
366
+ // Error is in package code or other build issue
367
+ return new Error(`Build error: ${firstError.text}\n` +
368
+ (location
369
+ ? ` at ${location.file}:${location.line}:${location.column}`
370
+ : ''));
371
+ }
372
+ //# 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,51 @@
1
+ /**
2
+ * Bundle Command
3
+ *
4
+ * Supports both single-environment and multi-environment builds.
5
+ */
6
+ import type { GlobalOptions } from '../../types';
7
+ export interface BundleCommandOptions extends GlobalOptions {
8
+ config: string;
9
+ env?: string;
10
+ all?: boolean;
11
+ stats?: boolean;
12
+ json?: boolean;
13
+ cache?: boolean;
14
+ }
15
+ export declare function bundleCommand(options: BundleCommandOptions): Promise<void>;
16
+ /**
17
+ * High-level bundle function for programmatic usage.
18
+ *
19
+ * Handles configuration loading, parsing, and logger creation internally.
20
+ *
21
+ * @param configOrPath - Bundle configuration object or path to config file
22
+ * @param options - Bundle options
23
+ * @param options.silent - Suppress all output (default: false)
24
+ * @param options.verbose - Enable verbose logging (default: false)
25
+ * @param options.stats - Collect and return bundle statistics (default: false)
26
+ * @param options.cache - Enable package caching (default: true)
27
+ * @returns Bundle statistics if stats option is true, otherwise void
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // With config object
32
+ * await bundle({
33
+ * platform: 'web',
34
+ * packages: { '@walkeros/collector': { imports: ['startFlow'] } },
35
+ * sources: { browser: { code: 'sourceBrowser' } },
36
+ * destinations: { api: { code: 'destinationApi' } },
37
+ * code: 'export default startFlow({ sources, destinations })',
38
+ * output: './dist/walker.js'
39
+ * });
40
+ *
41
+ * // With config file
42
+ * await bundle('./walker.config.json', { stats: true });
43
+ * ```
44
+ */
45
+ export declare function bundle(configOrPath: unknown, options?: {
46
+ silent?: boolean;
47
+ verbose?: boolean;
48
+ stats?: boolean;
49
+ cache?: boolean;
50
+ }): Promise<import('./bundler').BundleStats | void>;
51
+ //# 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;AAiBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Kf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;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;CACZ,GACL,OAAO,CAAC,OAAO,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC,CA8BjD"}