@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,96 @@
1
+ /**
2
+ * Call Tracker for Simulation
3
+ *
4
+ * Wraps mock environment functions to track API calls.
5
+ * Used with destination-provided examples/env.ts mocks.
6
+ */
7
+ export class CallTracker {
8
+ calls = new Map();
9
+ /**
10
+ * Wrap a function to track its calls
11
+ */
12
+ wrapFunction(name, fn) {
13
+ const self = this;
14
+ const targetFn = fn || (() => { });
15
+ return new Proxy(targetFn, {
16
+ apply(_target, thisArg, args) {
17
+ self.logCall(name, args);
18
+ return targetFn.apply(thisArg, args);
19
+ },
20
+ });
21
+ }
22
+ /**
23
+ * Wrap an environment object, tracking specified paths
24
+ *
25
+ * @param env - Environment object (from destination's examples/env.ts)
26
+ * @param paths - Paths to track (e.g., ['gtag:window.gtag', 'gtag:window.dataLayer.push'])
27
+ */
28
+ wrapEnv(env, paths) {
29
+ const wrapped = {};
30
+ // Deep clone the env object first
31
+ for (const [key, value] of Object.entries(env)) {
32
+ if (typeof value === 'object' && value !== null) {
33
+ wrapped[key] = Array.isArray(value)
34
+ ? [...value]
35
+ : { ...value };
36
+ }
37
+ else {
38
+ wrapped[key] = value;
39
+ }
40
+ }
41
+ // Wrap specified paths
42
+ for (const fullPath of paths) {
43
+ // Parse path: "gtag:window.gtag" → destKey="gtag", path="window.gtag"
44
+ const [destKey, ...pathParts] = fullPath.split(':');
45
+ const path = pathParts.join(':');
46
+ if (!path)
47
+ continue;
48
+ // Remove "call:" prefix if present (from simulation array)
49
+ const cleanPath = path.replace(/^call:/, '');
50
+ const parts = cleanPath.split('.');
51
+ let current = wrapped;
52
+ let source = env;
53
+ // Navigate to parent object
54
+ for (let i = 0; i < parts.length - 1; i++) {
55
+ const part = parts[i];
56
+ if (!current[part]) {
57
+ current[part] = {};
58
+ }
59
+ current = current[part];
60
+ source =
61
+ source && typeof source[part] === 'object' && source[part] !== null
62
+ ? source[part]
63
+ : undefined;
64
+ }
65
+ // Wrap the final property
66
+ const finalKey = parts[parts.length - 1];
67
+ const originalFn = source?.[finalKey];
68
+ // Wrap with full path for tracking
69
+ current[finalKey] = this.wrapFunction(`${destKey}:${cleanPath}`, typeof originalFn === 'function'
70
+ ? originalFn
71
+ : undefined);
72
+ }
73
+ return wrapped;
74
+ }
75
+ logCall(fullPath, args) {
76
+ // Parse "destKey:api.path" → destKey and apiPath
77
+ const [destKey, ...pathParts] = fullPath.split(':');
78
+ const apiPath = pathParts.join(':');
79
+ if (!this.calls.has(destKey)) {
80
+ this.calls.set(destKey, []);
81
+ }
82
+ this.calls.get(destKey).push({
83
+ type: 'call',
84
+ path: apiPath,
85
+ args,
86
+ timestamp: Date.now(),
87
+ });
88
+ }
89
+ getCalls() {
90
+ return Object.fromEntries(this.calls);
91
+ }
92
+ reset() {
93
+ this.calls.clear();
94
+ }
95
+ }
96
+ //# sourceMappingURL=tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/commands/simulate/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Elb } from '@walkeros/core';
2
+ import type { GlobalOptions } from '../../types';
3
+ import type { ApiCall } from './tracker';
4
+ export interface SimulateCommandOptions extends GlobalOptions {
5
+ config: string;
6
+ event?: string;
7
+ json?: boolean;
8
+ }
9
+ export interface SimulationResult {
10
+ success: boolean;
11
+ error?: string;
12
+ collector?: unknown;
13
+ elbResult?: Elb.PushResult;
14
+ logs?: unknown[];
15
+ usage?: Record<string, ApiCall[]>;
16
+ duration?: number;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/simulate/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Configuration Defaults
3
+ *
4
+ * Platform-specific default build options.
5
+ */
6
+ import type { BuildOptions } from '../types/bundle';
7
+ /**
8
+ * Get default build configuration for platform.
9
+ *
10
+ * @param platform - Target platform ('web' or 'server')
11
+ * @param code - User code to include (required for BuildOptions)
12
+ * @param output - Output file path (optional, uses platform default)
13
+ * @returns Platform-specific default build options
14
+ *
15
+ * @remarks
16
+ * Provides sensible defaults for each platform:
17
+ * - web: IIFE format for browser, ES2020 target
18
+ * - server: ESM format for Node.js, Node18 target
19
+ */
20
+ export declare function getDefaultBuildOptions(platform: 'web' | 'server', code: string, output?: string): Partial<BuildOptions>;
21
+ /**
22
+ * Ensure build options have all required fields.
23
+ *
24
+ * @param buildOptions - Build options (possibly incomplete)
25
+ * @param flowPlatform - Platform from Flow.Config
26
+ * @returns Complete build options with defaults filled in
27
+ *
28
+ * @remarks
29
+ * Validates and fills in missing required fields using platform-specific defaults.
30
+ * Throws error if critical fields (code, output) are missing.
31
+ */
32
+ export declare function ensureBuildOptions(buildOptions: Partial<BuildOptions>, flowPlatform: 'web' | 'server'): BuildOptions;
33
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,KAAK,GAAG,QAAQ,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,EACnC,YAAY,EAAE,KAAK,GAAG,QAAQ,GAC7B,YAAY,CAsBd"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Configuration Defaults
3
+ *
4
+ * Platform-specific default build options.
5
+ */
6
+ /**
7
+ * Get default build configuration for platform.
8
+ *
9
+ * @param platform - Target platform ('web' or 'server')
10
+ * @param code - User code to include (required for BuildOptions)
11
+ * @param output - Output file path (optional, uses platform default)
12
+ * @returns Platform-specific default build options
13
+ *
14
+ * @remarks
15
+ * Provides sensible defaults for each platform:
16
+ * - web: IIFE format for browser, ES2020 target
17
+ * - server: ESM format for Node.js, Node18 target
18
+ */
19
+ export function getDefaultBuildOptions(platform, code, output) {
20
+ const common = {
21
+ code,
22
+ packages: {},
23
+ minify: false,
24
+ sourcemap: false,
25
+ cache: true,
26
+ };
27
+ if (platform === 'web') {
28
+ return {
29
+ ...common,
30
+ platform: 'browser',
31
+ format: 'iife',
32
+ target: 'es2020',
33
+ output: output || './dist/walker.js',
34
+ globalName: 'walkerOS',
35
+ };
36
+ }
37
+ return {
38
+ ...common,
39
+ platform: 'node',
40
+ format: 'esm',
41
+ target: 'node18',
42
+ output: output || './dist/bundle.js',
43
+ };
44
+ }
45
+ /**
46
+ * Ensure build options have all required fields.
47
+ *
48
+ * @param buildOptions - Build options (possibly incomplete)
49
+ * @param flowPlatform - Platform from Flow.Config
50
+ * @returns Complete build options with defaults filled in
51
+ *
52
+ * @remarks
53
+ * Validates and fills in missing required fields using platform-specific defaults.
54
+ * Throws error if critical fields (code, output) are missing.
55
+ */
56
+ export function ensureBuildOptions(buildOptions, flowPlatform) {
57
+ const defaults = getDefaultBuildOptions(flowPlatform, buildOptions.code || '', buildOptions.output);
58
+ // Validate required fields
59
+ if (!buildOptions.code && !defaults.code) {
60
+ throw new Error('BuildOptions.code is required');
61
+ }
62
+ if (!buildOptions.output && !defaults.output) {
63
+ throw new Error('BuildOptions.output is required');
64
+ }
65
+ return {
66
+ ...defaults,
67
+ ...buildOptions,
68
+ code: buildOptions.code || defaults.code,
69
+ output: buildOptions.output || defaults.output,
70
+ packages: buildOptions.packages || defaults.packages,
71
+ };
72
+ }
73
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAA0B,EAC1B,IAAY,EACZ,MAAe;IAEf,MAAM,MAAM,GAAG;QACb,IAAI;QACJ,QAAQ,EAAE,EAA8D;QACxE,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM,IAAI,kBAAkB;YACpC,UAAU,EAAE,UAAU;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,MAAM,IAAI,kBAAkB;KACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAmC,EACnC,YAA8B;IAE9B,MAAM,QAAQ,GAAG,sBAAsB,CACrC,YAAY,EACZ,YAAY,CAAC,IAAI,IAAI,EAAE,EACvB,YAAY,CAAC,MAAM,CACpB,CAAC;IAEF,2BAA2B;IAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,YAAY;QACf,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAK;QACzC,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAO;QAC/C,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAS;KACtC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Configuration Module
3
+ *
4
+ * Unified configuration loading, parsing, and validation.
5
+ */
6
+ export { isObject, validatePlatform, isMultiEnvConfig, isSingleEnvConfig, } from './validators';
7
+ export { substituteEnvVariables, loadJsonConfig, getTempDir } from './utils';
8
+ export { getDefaultBuildOptions, ensureBuildOptions } from './defaults';
9
+ export { parseBundleConfig, safeParseBundleConfig, normalizeConfigs, } from './parser';
10
+ export type { ParsedConfig } from './parser';
11
+ export { loadBundleConfig, loadAllEnvironments, getAvailableEnvironments, } from './loader';
12
+ export type { LoadConfigResult, LoadConfigOptions } from './loader';
13
+ export type { BuildOptions, MinifyOptions, EnvironmentConfig, Setup, } from '../types/bundle';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG7E,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGpE,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,GACN,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Configuration Module
3
+ *
4
+ * Unified configuration loading, parsing, and validation.
5
+ */
6
+ // Type guards and validators
7
+ export { isObject, validatePlatform, isMultiEnvConfig, isSingleEnvConfig, } from './validators';
8
+ // Utility functions
9
+ export { substituteEnvVariables, loadJsonConfig, getTempDir } from './utils';
10
+ // Platform defaults
11
+ export { getDefaultBuildOptions, ensureBuildOptions } from './defaults';
12
+ // Parser
13
+ export { parseBundleConfig, safeParseBundleConfig, normalizeConfigs, } from './parser';
14
+ // Loader
15
+ export { loadBundleConfig, loadAllEnvironments, getAvailableEnvironments, } from './loader';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6BAA6B;AAC7B,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7E,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAGlB,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Configuration Loader
3
+ *
4
+ * Loads and parses configurations with support for:
5
+ * - Single-environment configs
6
+ * - Multi-environment setups
7
+ * - Environment selection
8
+ */
9
+ import type { Flow } from '@walkeros/core';
10
+ import type { BuildOptions } from '../types/bundle';
11
+ /**
12
+ * Result of configuration loading.
13
+ */
14
+ export interface LoadConfigResult {
15
+ /** Runtime event processing configuration */
16
+ flowConfig: Flow.Config;
17
+ /** Build-time configuration */
18
+ buildOptions: BuildOptions;
19
+ /** Name of the selected environment (or 'default' for single configs) */
20
+ environment: string;
21
+ /** Whether this is a multi-environment setup */
22
+ isMultiEnvironment: boolean;
23
+ /** All available environment names (for multi-environment setups) */
24
+ availableEnvironments?: string[];
25
+ }
26
+ /**
27
+ * Options for loading configuration.
28
+ */
29
+ export interface LoadConfigOptions {
30
+ /** Path to config file */
31
+ configPath: string;
32
+ /** Environment name to load (for multi-environment configs) */
33
+ environment?: string;
34
+ /** Logger for warnings */
35
+ logger?: {
36
+ warn: (message: string) => void;
37
+ info: (message: string) => void;
38
+ };
39
+ }
40
+ /**
41
+ * Load and parse bundle configuration.
42
+ *
43
+ * @remarks
44
+ * Automatically detects whether the config is:
45
+ * - New format: { flow: {...}, build: {...} }
46
+ * - Multi-environment format: { version: 1, environments: {...} }
47
+ * - Legacy format: { platform, sources, destinations, packages, ... } (with deprecation warning)
48
+ *
49
+ * For multi-environment configs, requires `environment` option.
50
+ *
51
+ * @param rawConfig - Raw configuration object from JSON file
52
+ * @param options - Loading options
53
+ * @returns Parsed configuration with flow and build separated
54
+ */
55
+ export declare function loadBundleConfig(rawConfig: unknown, options: LoadConfigOptions): LoadConfigResult;
56
+ /**
57
+ * Load all environments from a multi-environment configuration.
58
+ *
59
+ * @remarks
60
+ * Used by the --all flag to build all environments.
61
+ *
62
+ * @param rawConfig - Raw configuration object
63
+ * @param options - Loading options
64
+ * @returns Array of loaded configurations for all environments
65
+ */
66
+ export declare function loadAllEnvironments(rawConfig: unknown, options: Omit<LoadConfigOptions, 'environment'>): LoadConfigResult[];
67
+ /**
68
+ * Get list of available environments from configuration.
69
+ *
70
+ * @param rawConfig - Raw configuration object
71
+ * @returns Array of environment names, or empty array for single-environment configs
72
+ */
73
+ export declare function getAvailableEnvironments(rawConfig: unknown): string[];
74
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,iBAAiB,CAAC;AAS9E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,+BAA+B;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACjC,CAAC;CACH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAyBlB;AAoFD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAC9C,gBAAgB,EAAE,CAyBpB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAMrE"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Configuration Loader
3
+ *
4
+ * Loads and parses configurations with support for:
5
+ * - Single-environment configs
6
+ * - Multi-environment setups
7
+ * - Environment selection
8
+ */
9
+ import { isMultiEnvConfig, isSingleEnvConfig, isObject, } from './validators';
10
+ import { normalizeConfigs } from './parser';
11
+ /**
12
+ * Load and parse bundle configuration.
13
+ *
14
+ * @remarks
15
+ * Automatically detects whether the config is:
16
+ * - New format: { flow: {...}, build: {...} }
17
+ * - Multi-environment format: { version: 1, environments: {...} }
18
+ * - Legacy format: { platform, sources, destinations, packages, ... } (with deprecation warning)
19
+ *
20
+ * For multi-environment configs, requires `environment` option.
21
+ *
22
+ * @param rawConfig - Raw configuration object from JSON file
23
+ * @param options - Loading options
24
+ * @returns Parsed configuration with flow and build separated
25
+ */
26
+ export function loadBundleConfig(rawConfig, options) {
27
+ // Check if multi-environment format
28
+ if (isMultiEnvConfig(rawConfig)) {
29
+ return loadMultiEnvironmentConfig(rawConfig, options);
30
+ }
31
+ // Check if new single-environment format
32
+ if (isSingleEnvConfig(rawConfig)) {
33
+ return loadSingleEnvironmentConfig(rawConfig, options);
34
+ }
35
+ // Invalid format - provide helpful error
36
+ const configType = isObject(rawConfig)
37
+ ? 'platform' in rawConfig
38
+ ? `invalid platform value: "${rawConfig.platform}"`
39
+ : 'missing "flow" and "build" fields'
40
+ : `not an object (got ${typeof rawConfig})`;
41
+ throw new Error(`Invalid configuration format at ${options.configPath}.\n` +
42
+ `Configuration ${configType}.\n\n` +
43
+ `Expected either:\n` +
44
+ ` 1. Multi-environment: { version: 1, environments: { prod: { flow: {...}, build: {...} } } }\n` +
45
+ ` 2. Single-environment: { flow: { platform: "web" | "server", ... }, build: { packages: {...}, ... } }`);
46
+ }
47
+ /**
48
+ * Load multi-environment configuration.
49
+ */
50
+ function loadMultiEnvironmentConfig(setup, options) {
51
+ const availableEnvironments = Object.keys(setup.environments);
52
+ // Validate environment selection
53
+ if (!options.environment) {
54
+ throw new Error(`Multi-environment configuration detected. Please specify an environment using --env flag.\n` +
55
+ `Available environments: ${availableEnvironments.join(', ')}`);
56
+ }
57
+ const selectedEnv = options.environment;
58
+ if (!setup.environments[selectedEnv]) {
59
+ throw new Error(`Environment "${selectedEnv}" not found in configuration.\n` +
60
+ `Available environments: ${availableEnvironments.join(', ')}`);
61
+ }
62
+ // Get the environment config
63
+ const envConfig = setup.environments[selectedEnv];
64
+ // Normalize flow and build configs separately
65
+ const { flowConfig, buildOptions } = normalizeConfigs(envConfig, options.configPath);
66
+ if (options.logger) {
67
+ options.logger.info(`📦 Using environment: ${selectedEnv} (${availableEnvironments.length} total)`);
68
+ }
69
+ return {
70
+ flowConfig,
71
+ buildOptions,
72
+ environment: selectedEnv,
73
+ isMultiEnvironment: true,
74
+ availableEnvironments,
75
+ };
76
+ }
77
+ /**
78
+ * Load single-environment configuration.
79
+ */
80
+ function loadSingleEnvironmentConfig(config, options) {
81
+ // Normalize the configs
82
+ const { flowConfig, buildOptions } = normalizeConfigs(config, options.configPath);
83
+ if (options.logger && options.environment) {
84
+ options.logger.warn(`--env flag specified but configuration is single-environment. Ignoring flag.`);
85
+ }
86
+ return {
87
+ flowConfig,
88
+ buildOptions,
89
+ environment: 'default',
90
+ isMultiEnvironment: false,
91
+ };
92
+ }
93
+ // Legacy format support removed in v0.3.0
94
+ // Migration: Convert old format { platform, sources, destinations, packages, code, output }
95
+ // To new format: { flow: { platform, sources, destinations }, build: { packages, code, output } }
96
+ // See docs/MIGRATION.md for details
97
+ /**
98
+ * Load all environments from a multi-environment configuration.
99
+ *
100
+ * @remarks
101
+ * Used by the --all flag to build all environments.
102
+ *
103
+ * @param rawConfig - Raw configuration object
104
+ * @param options - Loading options
105
+ * @returns Array of loaded configurations for all environments
106
+ */
107
+ export function loadAllEnvironments(rawConfig, options) {
108
+ // Must be a multi-environment config
109
+ if (!isMultiEnvConfig(rawConfig)) {
110
+ throw new Error(`--all flag requires a multi-environment configuration (Setup format).\n` +
111
+ `Your configuration appears to be single-environment.`);
112
+ }
113
+ const setup = rawConfig;
114
+ const environments = Object.keys(setup.environments);
115
+ if (options.logger) {
116
+ options.logger.info(`📦 Loading all ${environments.length} environments: ${environments.join(', ')}`);
117
+ }
118
+ // Load each environment
119
+ return environments.map((envName) => loadMultiEnvironmentConfig(setup, {
120
+ ...options,
121
+ environment: envName,
122
+ }));
123
+ }
124
+ /**
125
+ * Get list of available environments from configuration.
126
+ *
127
+ * @param rawConfig - Raw configuration object
128
+ * @returns Array of environment names, or empty array for single-environment configs
129
+ */
130
+ export function getAvailableEnvironments(rawConfig) {
131
+ if (isMultiEnvConfig(rawConfig)) {
132
+ return Object.keys(rawConfig.environments);
133
+ }
134
+ return [];
135
+ }
136
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Configuration Parser
3
+ *
4
+ * Parsing and normalization logic for configurations.
5
+ */
6
+ import type { Flow } from '@walkeros/core';
7
+ import type { BuildOptions, EnvironmentConfig } from '../types/bundle';
8
+ /**
9
+ * Result of parsing bundle configuration.
10
+ */
11
+ export interface ParsedConfig {
12
+ flowConfig: Flow.Config;
13
+ buildOptions: BuildOptions;
14
+ }
15
+ /**
16
+ * Parse and normalize bundle configuration.
17
+ *
18
+ * @param data - Raw configuration data (EnvironmentConfig format: { flow, build })
19
+ * @returns Normalized flowConfig and buildOptions with platform-specific defaults
20
+ * @throws Error if validation fails
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const { flowConfig, buildOptions } = parseBundleConfig({
25
+ * flow: {
26
+ * platform: 'web',
27
+ * sources: { browser: {...} },
28
+ * destinations: { gtag: {...} }
29
+ * },
30
+ * build: {
31
+ * packages: { '@walkeros/core': {...} },
32
+ * code: '...',
33
+ * output: './dist/bundle.js'
34
+ * }
35
+ * });
36
+ * ```
37
+ */
38
+ export declare function parseBundleConfig(data: unknown): ParsedConfig;
39
+ /**
40
+ * Safely parse bundle configuration without throwing.
41
+ *
42
+ * @param data - Raw configuration data
43
+ * @returns Success result with normalized configs or error result
44
+ */
45
+ export declare function safeParseBundleConfig(data: unknown): {
46
+ success: boolean;
47
+ data?: ParsedConfig;
48
+ error?: Error;
49
+ };
50
+ /**
51
+ * Normalize flow and build configurations with platform-specific defaults.
52
+ *
53
+ * @param config - Environment configuration or flow+build object
54
+ * @param configPath - Path to config file (for relative template resolution)
55
+ * @returns Normalized flow and build configurations
56
+ */
57
+ export declare function normalizeConfigs(config: EnvironmentConfig | {
58
+ flow: Flow.Config;
59
+ build: Partial<BuildOptions>;
60
+ }, configPath?: string): {
61
+ flowConfig: Flow.Config;
62
+ buildOptions: BuildOptions;
63
+ };
64
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/config/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKvE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAyC7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAaA;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EACF,iBAAiB,GACjB;IAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,EACvD,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,CA6DzD"}