@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.
- package/CHANGELOG.md +45 -0
- package/README.md +285 -0
- package/dist/__tests__/bundle/bundler-integration.test.d.ts +2 -0
- package/dist/__tests__/bundle/bundler-integration.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/bundler-integration.test.js +106 -0
- package/dist/__tests__/bundle/bundler-integration.test.js.map +1 -0
- package/dist/__tests__/bundle/bundler.test.d.ts +2 -0
- package/dist/__tests__/bundle/bundler.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/bundler.test.js +281 -0
- package/dist/__tests__/bundle/bundler.test.js.map +1 -0
- package/dist/__tests__/bundle/programmatic.test.d.ts +2 -0
- package/dist/__tests__/bundle/programmatic.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/programmatic.test.js +118 -0
- package/dist/__tests__/bundle/programmatic.test.js.map +1 -0
- package/dist/__tests__/bundle/serializer.test.d.ts +2 -0
- package/dist/__tests__/bundle/serializer.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/serializer.test.js +173 -0
- package/dist/__tests__/bundle/serializer.test.js.map +1 -0
- package/dist/__tests__/bundle/template-engine.test.d.ts +2 -0
- package/dist/__tests__/bundle/template-engine.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/template-engine.test.js +107 -0
- package/dist/__tests__/bundle/template-engine.test.js.map +1 -0
- package/dist/__tests__/cli-e2e.test.d.ts +8 -0
- package/dist/__tests__/cli-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/cli-e2e.test.js +144 -0
- package/dist/__tests__/cli-e2e.test.js.map +1 -0
- package/dist/__tests__/cli.test.d.ts +2 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +255 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/__tests__/config-loader.test.d.ts +7 -0
- package/dist/__tests__/config-loader.test.d.ts.map +1 -0
- package/dist/__tests__/config-loader.test.js +393 -0
- package/dist/__tests__/config-loader.test.js.map +1 -0
- package/dist/__tests__/core/config.test.d.ts +2 -0
- package/dist/__tests__/core/config.test.d.ts.map +1 -0
- package/dist/__tests__/core/config.test.js +72 -0
- package/dist/__tests__/core/config.test.js.map +1 -0
- package/dist/__tests__/core/logger.test.d.ts +2 -0
- package/dist/__tests__/core/logger.test.d.ts.map +1 -0
- package/dist/__tests__/core/logger.test.js +53 -0
- package/dist/__tests__/core/logger.test.js.map +1 -0
- package/dist/__tests__/simulate/programmatic.test.d.ts +2 -0
- package/dist/__tests__/simulate/programmatic.test.d.ts.map +1 -0
- package/dist/__tests__/simulate/programmatic.test.js +51 -0
- package/dist/__tests__/simulate/programmatic.test.js.map +1 -0
- package/dist/__tests__/simulate/simulator.test.d.ts +2 -0
- package/dist/__tests__/simulate/simulator.test.d.ts.map +1 -0
- package/dist/__tests__/simulate/simulator.test.js +29 -0
- package/dist/__tests__/simulate/simulator.test.js.map +1 -0
- package/dist/commands/bundle/bundler.d.ts +14 -0
- package/dist/commands/bundle/bundler.d.ts.map +1 -0
- package/dist/commands/bundle/bundler.js +372 -0
- package/dist/commands/bundle/bundler.js.map +1 -0
- package/dist/commands/bundle/index.d.ts +51 -0
- package/dist/commands/bundle/index.d.ts.map +1 -0
- package/dist/commands/bundle/index.js +200 -0
- package/dist/commands/bundle/index.js.map +1 -0
- package/dist/commands/bundle/package-manager.d.ts +7 -0
- package/dist/commands/bundle/package-manager.d.ts.map +1 -0
- package/dist/commands/bundle/package-manager.js +170 -0
- package/dist/commands/bundle/package-manager.js.map +1 -0
- package/dist/commands/bundle/serializer.d.ts +23 -0
- package/dist/commands/bundle/serializer.d.ts.map +1 -0
- package/dist/commands/bundle/serializer.js +127 -0
- package/dist/commands/bundle/serializer.js.map +1 -0
- package/dist/commands/bundle/stats.d.ts +23 -0
- package/dist/commands/bundle/stats.d.ts.map +1 -0
- package/dist/commands/bundle/stats.js +52 -0
- package/dist/commands/bundle/stats.js.map +1 -0
- package/dist/commands/bundle/template-engine.d.ts +18 -0
- package/dist/commands/bundle/template-engine.d.ts.map +1 -0
- package/dist/commands/bundle/template-engine.js +49 -0
- package/dist/commands/bundle/template-engine.js.map +1 -0
- package/dist/commands/run/__tests__/run.integration.test.d.ts +8 -0
- package/dist/commands/run/__tests__/run.integration.test.d.ts.map +1 -0
- package/dist/commands/run/__tests__/run.integration.test.js +53 -0
- package/dist/commands/run/__tests__/run.integration.test.js.map +1 -0
- package/dist/commands/run/__tests__/validators.test.d.ts +2 -0
- package/dist/commands/run/__tests__/validators.test.d.ts.map +1 -0
- package/dist/commands/run/__tests__/validators.test.js +80 -0
- package/dist/commands/run/__tests__/validators.test.js.map +1 -0
- package/dist/commands/run/index.d.ts +39 -0
- package/dist/commands/run/index.d.ts.map +1 -0
- package/dist/commands/run/index.js +251 -0
- package/dist/commands/run/index.js.map +1 -0
- package/dist/commands/run/types.d.ts +56 -0
- package/dist/commands/run/types.d.ts.map +1 -0
- package/dist/commands/run/types.js +7 -0
- package/dist/commands/run/types.js.map +1 -0
- package/dist/commands/run/validators.d.ts +29 -0
- package/dist/commands/run/validators.d.ts.map +1 -0
- package/dist/commands/run/validators.js +54 -0
- package/dist/commands/run/validators.js.map +1 -0
- package/dist/commands/simulate/index.d.ts +47 -0
- package/dist/commands/simulate/index.d.ts.map +1 -0
- package/dist/commands/simulate/index.js +121 -0
- package/dist/commands/simulate/index.js.map +1 -0
- package/dist/commands/simulate/simulator.d.ts +18 -0
- package/dist/commands/simulate/simulator.d.ts.map +1 -0
- package/dist/commands/simulate/simulator.js +236 -0
- package/dist/commands/simulate/simulator.js.map +1 -0
- package/dist/commands/simulate/tracker.d.ts +30 -0
- package/dist/commands/simulate/tracker.d.ts.map +1 -0
- package/dist/commands/simulate/tracker.js +96 -0
- package/dist/commands/simulate/tracker.js.map +1 -0
- package/dist/commands/simulate/types.d.ts +18 -0
- package/dist/commands/simulate/types.d.ts.map +1 -0
- package/dist/commands/simulate/types.js +2 -0
- package/dist/commands/simulate/types.js.map +1 -0
- package/dist/config/defaults.d.ts +33 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +73 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +14 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +16 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +74 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +136 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/parser.d.ts +64 -0
- package/dist/config/parser.d.ts.map +1 -0
- package/dist/config/parser.js +137 -0
- package/dist/config/parser.js.map +1 -0
- package/dist/config/utils.d.ts +38 -0
- package/dist/config/utils.d.ts.map +1 -0
- package/dist/config/utils.js +66 -0
- package/dist/config/utils.js.map +1 -0
- package/dist/config/validators.d.ts +23 -0
- package/dist/config/validators.d.ts.map +1 -0
- package/dist/config/validators.js +45 -0
- package/dist/config/validators.js.map +1 -0
- package/dist/core/docker.d.ts +42 -0
- package/dist/core/docker.d.ts.map +1 -0
- package/dist/core/docker.js +114 -0
- package/dist/core/docker.js.map +1 -0
- package/dist/core/execution.d.ts +33 -0
- package/dist/core/execution.d.ts.map +1 -0
- package/dist/core/execution.js +57 -0
- package/dist/core/execution.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +17 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +74 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/output.d.ts +30 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +46 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/timer.d.ts +14 -0
- package/dist/core/timer.d.ts.map +1 -0
- package/dist/core/timer.js +29 -0
- package/dist/core/timer.js.map +1 -0
- package/dist/index.d.ts +614 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1940 -0
- package/dist/index.js.map +1 -0
- package/dist/types/bundle.d.ts +251 -0
- package/dist/types/bundle.d.ts.map +1 -0
- package/dist/types/bundle.js +10 -0
- package/dist/types/bundle.js.map +1 -0
- package/dist/types/global.d.ts +51 -0
- package/dist/types/global.d.ts.map +1 -0
- package/dist/types/global.js +30 -0
- package/dist/types/global.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/template.d.ts +108 -0
- package/dist/types/template.d.ts.map +1 -0
- package/dist/types/template.js +10 -0
- package/dist/types/template.js.map +1 -0
- package/package.json +59 -0
- package/templates/base.hbs +44 -0
- 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 @@
|
|
|
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"}
|