@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,281 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { bundleCore as bundle } from '../../commands/bundle/bundler';
4
+ import { parseBundleConfig } from '../../config';
5
+ import { createLogger } from '../../core';
6
+ import { getId } from '@walkeros/core';
7
+ // No mocks - test with real package downloads and bundling
8
+ describe('Bundler', () => {
9
+ const testOutputDir = path.resolve('.tmp', `bundler-${Date.now()}-${getId()}`);
10
+ let logger;
11
+ beforeEach(async () => {
12
+ // Ensure test output directory exists
13
+ await fs.ensureDir(testOutputDir);
14
+ // Create a silent logger for tests
15
+ logger = createLogger({ silent: true });
16
+ // Mock console.log to suppress output during tests
17
+ jest.spyOn(console, 'log').mockImplementation(() => { });
18
+ // Mock fs.stat for bundle stats
19
+ const mockStat = {
20
+ size: 1024,
21
+ isFile: () => true,
22
+ isDirectory: () => false,
23
+ };
24
+ jest
25
+ .spyOn(fs, 'stat')
26
+ .mockImplementation(() => Promise.resolve(mockStat));
27
+ });
28
+ afterEach(async () => {
29
+ // Clean up test output
30
+ await fs.remove(testOutputDir);
31
+ // Restore console.log
32
+ jest.restoreAllMocks();
33
+ });
34
+ it('should bundle minimal config successfully', async () => {
35
+ // Inline minimal configuration to avoid path dependencies
36
+ const rawConfig = {
37
+ flow: {
38
+ platform: 'web',
39
+ },
40
+ build: {
41
+ packages: {
42
+ '@walkeros/core': {
43
+ imports: ['getId'],
44
+ },
45
+ },
46
+ code: 'export const test = getId(8);',
47
+ platform: 'browser',
48
+ format: 'esm',
49
+ output: path.join(testOutputDir, 'minimal.js'),
50
+ },
51
+ };
52
+ const { flowConfig, buildOptions } = parseBundleConfig(rawConfig);
53
+ // Run bundler with real dependencies
54
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
55
+ });
56
+ it('should bundle server config with ESM format', async () => {
57
+ // Inline server configuration
58
+ const rawConfig = {
59
+ flow: {
60
+ platform: 'server',
61
+ },
62
+ build: {
63
+ packages: {
64
+ '@walkeros/core': {
65
+ imports: ['trim', 'isString'],
66
+ },
67
+ },
68
+ code: 'export default { processText: (text) => trim(text) };',
69
+ platform: 'node',
70
+ format: 'esm',
71
+ output: path.join(testOutputDir, 'server-bundle.mjs'),
72
+ },
73
+ };
74
+ const { flowConfig, buildOptions } = parseBundleConfig(rawConfig);
75
+ // Run bundler with real dependencies
76
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
77
+ });
78
+ it('should bundle advanced config with minification', async () => {
79
+ // Inline advanced configuration
80
+ const rawConfig = {
81
+ flow: {
82
+ platform: 'web',
83
+ },
84
+ build: {
85
+ packages: {
86
+ '@walkeros/core': {
87
+ imports: ['getId', 'getByPath', 'clone', 'trim', 'isObject'],
88
+ },
89
+ },
90
+ code: "export function processData(data) {\n return data.map(item => ({\n ...item,\n id: getId(8),\n timestamp: new Date().toISOString().split('T')[0],\n processed: true\n }));\n}\n\nexport function extractNestedValues(data, path) {\n return data.map(item => getByPath(item, path, null)).filter(val => val !== null);\n}\n\nexport function deepCloneData(data) {\n return clone(data);\n}\n\nexport function cleanStringData(data) {\n return data.map(item => ({\n ...item,\n name: typeof item.name === 'string' ? trim(item.name) : item.name\n }));\n}\n\n// Re-export walkerOS utilities\nexport { getId, getByPath, clone, trim, isObject };",
91
+ platform: 'browser',
92
+ format: 'esm',
93
+ target: 'es2020',
94
+ minify: true,
95
+ sourcemap: true,
96
+ output: path.join(testOutputDir, 'advanced-bundle.js'),
97
+ },
98
+ };
99
+ const { flowConfig, buildOptions } = parseBundleConfig(rawConfig);
100
+ // Run bundler with real dependencies
101
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
102
+ });
103
+ describe('Stats Collection', () => {
104
+ it('should collect bundle stats when requested', async () => {
105
+ const rawConfig = {
106
+ flow: {
107
+ platform: 'web',
108
+ },
109
+ build: {
110
+ packages: {
111
+ '@walkeros/core': {
112
+ imports: ['getId'],
113
+ },
114
+ },
115
+ code: 'export const test = getId(8);',
116
+ output: path.join(testOutputDir, 'stats-test.js'),
117
+ },
118
+ };
119
+ const { flowConfig, buildOptions } = parseBundleConfig(rawConfig);
120
+ const stats = await bundle(flowConfig, buildOptions, logger, true);
121
+ expect(stats).toBeDefined();
122
+ expect(stats.totalSize).toBe(1024); // From mocked fs.stat
123
+ expect(stats.buildTime).toBeGreaterThanOrEqual(0);
124
+ expect(stats.treeshakingEffective).toBe(true);
125
+ expect(stats.packages).toHaveLength(1);
126
+ expect(stats.packages[0].name).toBe('@walkeros/core@latest');
127
+ });
128
+ it('should detect ineffective tree-shaking with wildcard imports', async () => {
129
+ const { flowConfig, buildOptions } = parseBundleConfig({
130
+ flow: {
131
+ platform: 'web',
132
+ },
133
+ build: {
134
+ packages: { '@walkeros/core': {} },
135
+ code: 'import * as walkerCore from "@walkeros/core";\nexport const test = walkerCore.getId;',
136
+ output: path.join(testOutputDir, 'test.js'),
137
+ },
138
+ });
139
+ const stats = await bundle(flowConfig, buildOptions, logger, true);
140
+ expect(stats.treeshakingEffective).toBe(false);
141
+ });
142
+ it('should return undefined when stats not requested', async () => {
143
+ const rawConfig = {
144
+ flow: {
145
+ platform: 'web',
146
+ },
147
+ build: {
148
+ packages: {
149
+ '@walkeros/core': {
150
+ imports: ['getId'],
151
+ },
152
+ },
153
+ code: 'export const test = getId(8);',
154
+ output: path.join(testOutputDir, 'no-stats.js'),
155
+ },
156
+ };
157
+ const { flowConfig, buildOptions } = parseBundleConfig(rawConfig);
158
+ const result = await bundle(flowConfig, buildOptions, logger, false);
159
+ expect(result).toBeUndefined();
160
+ });
161
+ });
162
+ describe('Template System', () => {
163
+ it('should handle template configuration', async () => {
164
+ // Create a test template file
165
+ const templatePath = path.join(testOutputDir, 'test.hbs');
166
+ await fs.writeFile(templatePath, '{{{CODE}}}\n// Template footer');
167
+ const { flowConfig, buildOptions } = parseBundleConfig({
168
+ flow: {
169
+ platform: 'web',
170
+ },
171
+ build: {
172
+ packages: {
173
+ '@walkeros/core': { imports: ['getId'] },
174
+ },
175
+ code: 'export const generateId = () => getId(8);',
176
+ template: templatePath,
177
+ output: path.join(testOutputDir, 'template-test.js'),
178
+ },
179
+ });
180
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
181
+ });
182
+ it('should handle missing template variables gracefully', async () => {
183
+ const { flowConfig, buildOptions } = parseBundleConfig({
184
+ flow: {
185
+ platform: 'web',
186
+ },
187
+ build: {
188
+ packages: {
189
+ '@walkeros/core': { imports: ['trim'] },
190
+ },
191
+ code: 'export const test = trim("hello");',
192
+ output: path.join(testOutputDir, 'missing-vars.js'),
193
+ },
194
+ });
195
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
196
+ });
197
+ it('should append bundle code when placeholder not found', async () => {
198
+ const { flowConfig, buildOptions } = parseBundleConfig({
199
+ flow: {
200
+ platform: 'web',
201
+ },
202
+ build: {
203
+ packages: {
204
+ '@walkeros/core': { imports: ['getId'] },
205
+ },
206
+ code: 'export const test = getId(6);',
207
+ output: path.join(testOutputDir, 'append-test.js'),
208
+ },
209
+ });
210
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
211
+ });
212
+ });
213
+ describe('Configuration Scenarios', () => {
214
+ it('should handle custom temp directory configuration', async () => {
215
+ const { flowConfig, buildOptions } = parseBundleConfig({
216
+ flow: {
217
+ platform: 'web',
218
+ },
219
+ build: {
220
+ packages: {
221
+ '@walkeros/core': { imports: ['getId'] },
222
+ },
223
+ code: 'export const test = getId();',
224
+ tempDir: '/tmp/my-custom-bundler-temp',
225
+ output: path.join(testOutputDir, 'custom-temp-example.js'),
226
+ },
227
+ });
228
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
229
+ });
230
+ it('should handle version pinning correctly', async () => {
231
+ const { flowConfig, buildOptions } = parseBundleConfig({
232
+ flow: {
233
+ platform: 'web',
234
+ },
235
+ build: {
236
+ packages: {
237
+ '@walkeros/core': { version: '0.0.7', imports: ['getId'] },
238
+ },
239
+ code: '// Test version pinning\nexport const test = getId();',
240
+ platform: 'browser',
241
+ format: 'esm',
242
+ target: 'es2020',
243
+ output: path.join(testOutputDir, 'version-test.js'),
244
+ },
245
+ });
246
+ await expect(bundle(flowConfig, buildOptions, logger)).resolves.not.toThrow();
247
+ });
248
+ });
249
+ describe('Error Handling', () => {
250
+ it('should validate configuration properly', async () => {
251
+ // Test configuration validation instead of runtime errors
252
+ expect(() => {
253
+ parseBundleConfig({
254
+ flow: {
255
+ platform: 'web',
256
+ },
257
+ build: {
258
+ packages: 'invalid', // should be object
259
+ code: 'test',
260
+ output: path.join(testOutputDir, 'test.js'),
261
+ },
262
+ });
263
+ }).toThrow();
264
+ });
265
+ it('should require content field', async () => {
266
+ expect(() => {
267
+ parseBundleConfig({
268
+ flow: {
269
+ platform: 'web',
270
+ },
271
+ build: {
272
+ packages: {},
273
+ // missing code field
274
+ output: path.join(testOutputDir, 'test.js'),
275
+ },
276
+ });
277
+ }).toThrow();
278
+ });
279
+ });
280
+ });
281
+ //# sourceMappingURL=bundler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler.test.js","sourceRoot":"","sources":["../../../src/__tests__/bundle/bundler.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=programmatic.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bundle/programmatic.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { bundle } from '../../commands/bundle';
4
+ import { getId } from '@walkeros/core';
5
+ describe('Programmatic Bundle API', () => {
6
+ const testOutputDir = path.join('.tmp', `programmatic-${Date.now()}-${getId()}`);
7
+ beforeEach(async () => {
8
+ await fs.ensureDir(testOutputDir);
9
+ // Mock console.log to suppress output during tests
10
+ jest.spyOn(console, 'log').mockImplementation(() => { });
11
+ // Mock fs.stat for bundle stats
12
+ const mockStat = {
13
+ size: 2048,
14
+ isFile: () => true,
15
+ isDirectory: () => false,
16
+ };
17
+ jest
18
+ .spyOn(fs, 'stat')
19
+ .mockImplementation(() => Promise.resolve(mockStat));
20
+ });
21
+ afterEach(async () => {
22
+ await fs.remove(testOutputDir);
23
+ jest.restoreAllMocks();
24
+ });
25
+ it('should bundle with config object', async () => {
26
+ const config = {
27
+ flow: {
28
+ platform: 'web',
29
+ },
30
+ build: {
31
+ packages: {
32
+ '@walkeros/core': {
33
+ imports: ['getId', 'trim'],
34
+ },
35
+ },
36
+ code: 'export const test = getId(8); export const clean = (s) => trim(s);',
37
+ platform: 'browser',
38
+ format: 'esm',
39
+ output: path.join(testOutputDir, 'config-object.js'),
40
+ },
41
+ };
42
+ await expect(bundle(config, { silent: true })).resolves.not.toThrow();
43
+ });
44
+ it('should bundle with config file path', async () => {
45
+ const configPath = path.resolve(__dirname, '../../../examples/web-serve.json');
46
+ await expect(bundle(configPath, { silent: true })).resolves.not.toThrow();
47
+ });
48
+ it('should return stats when requested', async () => {
49
+ const config = {
50
+ flow: {
51
+ platform: 'web',
52
+ },
53
+ build: {
54
+ packages: {
55
+ '@walkeros/core': { imports: ['getId'] },
56
+ },
57
+ code: 'export const test = getId(8);',
58
+ output: path.join(testOutputDir, 'with-stats.js'),
59
+ },
60
+ };
61
+ const stats = await bundle(config, { silent: true, stats: true });
62
+ expect(stats).toBeDefined();
63
+ expect(stats.totalSize).toBe(2048); // From mocked fs.stat
64
+ expect(stats.buildTime).toBeGreaterThanOrEqual(0);
65
+ expect(stats.packages).toHaveLength(1);
66
+ });
67
+ it('should return undefined when stats not requested', async () => {
68
+ const config = {
69
+ flow: {
70
+ platform: 'web',
71
+ },
72
+ build: {
73
+ packages: {
74
+ '@walkeros/core': { imports: ['getId'] },
75
+ },
76
+ code: 'export const test = getId(8);',
77
+ output: path.join(testOutputDir, 'no-stats.js'),
78
+ },
79
+ };
80
+ const result = await bundle(config, { silent: true, stats: false });
81
+ expect(result).toBeUndefined();
82
+ });
83
+ it('should handle cache option', async () => {
84
+ const config = {
85
+ flow: {
86
+ platform: 'web',
87
+ },
88
+ build: {
89
+ packages: {
90
+ '@walkeros/core': { imports: ['getId'] },
91
+ },
92
+ code: 'export const test = getId(8);',
93
+ output: path.join(testOutputDir, 'with-cache.js'),
94
+ },
95
+ };
96
+ await expect(bundle(config, { silent: true, cache: false })).resolves.not.toThrow();
97
+ });
98
+ it('should handle verbose option', async () => {
99
+ const config = {
100
+ flow: {
101
+ platform: 'web',
102
+ },
103
+ build: {
104
+ packages: {
105
+ '@walkeros/core': { imports: ['getId'] },
106
+ },
107
+ code: 'export const test = getId(8);',
108
+ output: path.join(testOutputDir, 'verbose.js'),
109
+ },
110
+ };
111
+ await expect(bundle(config, { silent: false, verbose: true })).resolves.not.toThrow();
112
+ });
113
+ it('should handle errors gracefully', async () => {
114
+ const invalidConfigPath = path.join(testOutputDir, 'nonexistent.json');
115
+ await expect(bundle(invalidConfigPath, { silent: true })).rejects.toThrow('Configuration file not found');
116
+ });
117
+ });
118
+ //# sourceMappingURL=programmatic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic.test.js","sourceRoot":"","sources":["../../../src/__tests__/bundle/programmatic.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serializer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bundle/serializer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,173 @@
1
+ import { serializeToJS, serializeConfig, processTemplateVariables, } from '../../commands/bundle/serializer';
2
+ describe('Serializer', () => {
3
+ describe('serializeToJS', () => {
4
+ it('should serialize primitives correctly', () => {
5
+ expect(serializeToJS(null)).toBe('null');
6
+ expect(serializeToJS(undefined)).toBe('undefined');
7
+ expect(serializeToJS(true)).toBe('true');
8
+ expect(serializeToJS(false)).toBe('false');
9
+ expect(serializeToJS(42)).toBe('42');
10
+ expect(serializeToJS('hello')).toBe('"hello"');
11
+ });
12
+ it('should serialize strings with single quotes when specified', () => {
13
+ expect(serializeToJS('test', { singleQuotes: true })).toBe("'test'");
14
+ });
15
+ it('should detect and preserve arrow functions', () => {
16
+ const fn1 = '(x) => x * 2';
17
+ const fn2 = 'entity => entity.type === "product"';
18
+ const fn3 = '() => { return true; }';
19
+ expect(serializeToJS(fn1)).toBe(fn1);
20
+ expect(serializeToJS(fn2)).toBe(fn2);
21
+ expect(serializeToJS(fn3)).toBe(fn3);
22
+ });
23
+ it('should serialize arrays correctly', () => {
24
+ expect(serializeToJS([])).toBe('[]');
25
+ expect(serializeToJS([1, 2, 3])).toBe('[\n 1,\n 2,\n 3\n]');
26
+ expect(serializeToJS(['a', 'b'])).toBe('[\n "a",\n "b"\n]');
27
+ });
28
+ it('should serialize objects correctly', () => {
29
+ expect(serializeToJS({})).toBe('{}');
30
+ const simple = { name: 'test', value: 42 };
31
+ expect(serializeToJS(simple)).toBe('{\n name: "test",\n value: 42\n}');
32
+ });
33
+ it('should handle nested objects and arrays', () => {
34
+ const complex = {
35
+ settings: {
36
+ ga4: {
37
+ measurementId: 'G-123',
38
+ enabled: true,
39
+ },
40
+ },
41
+ items: [
42
+ { id: 1, name: 'item1' },
43
+ { id: 2, name: 'item2' },
44
+ ],
45
+ };
46
+ const result = serializeToJS(complex);
47
+ expect(result).toContain('settings: {');
48
+ expect(result).toContain('ga4: {');
49
+ expect(result).toContain('measurementId: "G-123"');
50
+ expect(result).toContain('items: [');
51
+ });
52
+ it('should handle keys that need quotes', () => {
53
+ const obj = {
54
+ 'key-with-dash': 'value1',
55
+ '123numeric': 'value2',
56
+ 'key with space': 'value3',
57
+ normalKey: 'value4',
58
+ };
59
+ const result = serializeToJS(obj);
60
+ expect(result).toContain('"key-with-dash": "value1"');
61
+ expect(result).toContain('"123numeric": "value2"');
62
+ expect(result).toContain('"key with space": "value3"');
63
+ expect(result).toContain('normalKey: "value4"');
64
+ });
65
+ });
66
+ describe('serializeConfig', () => {
67
+ it('should handle empty config', () => {
68
+ expect(serializeConfig({})).toBe('{}');
69
+ });
70
+ it('should serialize config with single quotes', () => {
71
+ const config = {
72
+ settings: {
73
+ endpoint: 'https://api.example.com',
74
+ },
75
+ };
76
+ const result = serializeConfig(config);
77
+ expect(result).toContain("endpoint: 'https://api.example.com'");
78
+ });
79
+ it('should handle complex mapping configurations', () => {
80
+ const config = {
81
+ mapping: {
82
+ order: {
83
+ complete: {
84
+ name: 'purchase',
85
+ data: {
86
+ map: {
87
+ transaction_id: 'data.id',
88
+ condition: '(entity) => entity.entity === "product"',
89
+ },
90
+ },
91
+ },
92
+ },
93
+ },
94
+ };
95
+ const result = serializeConfig(config);
96
+ expect(result).toContain("name: 'purchase'");
97
+ expect(result).toContain("transaction_id: 'data.id'");
98
+ expect(result).toContain('(entity) => entity.entity === "product"');
99
+ });
100
+ });
101
+ describe('processTemplateVariables', () => {
102
+ it('should process sources and destinations config objects', () => {
103
+ const variables = {
104
+ sources: {
105
+ browser: {
106
+ code: 'sourceBrowser',
107
+ config: { debug: true },
108
+ },
109
+ },
110
+ destinations: {
111
+ gtag: {
112
+ code: 'destinationGtag',
113
+ config: {
114
+ settings: {
115
+ ga4: { measurementId: 'G-123' },
116
+ },
117
+ },
118
+ },
119
+ },
120
+ };
121
+ const result = processTemplateVariables(variables);
122
+ expect(result.sources?.browser?.config).toBe('{\n debug: true\n}');
123
+ expect(result.destinations?.gtag?.config).toContain("measurementId: 'G-123'");
124
+ });
125
+ it('should handle string configs (pass through)', () => {
126
+ const variables = {
127
+ sources: {
128
+ test: {
129
+ code: 'source',
130
+ config: '{ debug: true }',
131
+ },
132
+ },
133
+ };
134
+ const result = processTemplateVariables(variables);
135
+ expect(result.sources?.test?.config).toBe('{ debug: true }');
136
+ });
137
+ it('should handle undefined env values', () => {
138
+ const variables = {
139
+ sources: {
140
+ test: {
141
+ code: 'source',
142
+ config: {},
143
+ env: undefined,
144
+ },
145
+ },
146
+ };
147
+ const result = processTemplateVariables(variables);
148
+ expect(result.sources?.test?.env).toBeUndefined();
149
+ expect('env' in result.sources.test).toBe(false);
150
+ });
151
+ it('should handle collector configuration', () => {
152
+ const variables = {
153
+ collector: {
154
+ settings: {
155
+ debug: true,
156
+ },
157
+ },
158
+ };
159
+ const result = processTemplateVariables(variables);
160
+ expect(result.collector).toContain('debug: true');
161
+ });
162
+ it('should preserve other variables', () => {
163
+ const variables = {
164
+ title: 'My App',
165
+ version: '1.0.0',
166
+ };
167
+ const result = processTemplateVariables(variables);
168
+ expect(result.title).toBe('My App');
169
+ expect(result.version).toBe('1.0.0');
170
+ });
171
+ });
172
+ });
173
+ //# sourceMappingURL=serializer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.test.js","sourceRoot":"","sources":["../../../src/__tests__/bundle/serializer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=template-engine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bundle/template-engine.test.ts"],"names":[],"mappings":""}