@walkeros/cli 0.3.6 → 0.4.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 +22 -0
- package/dist/__tests__/bundle/bundler-helpers.test.d.ts +2 -0
- package/dist/__tests__/bundle/bundler-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/bundler-helpers.test.js +285 -0
- package/dist/__tests__/bundle/bundler-helpers.test.js.map +1 -0
- package/dist/__tests__/bundle/bundler.test.js +9 -3
- package/dist/__tests__/bundle/bundler.test.js.map +1 -1
- package/dist/__tests__/bundle/programmatic.test.js +5 -1
- package/dist/__tests__/bundle/programmatic.test.js.map +1 -1
- package/dist/__tests__/bundle/serializer.test.js +1 -1
- package/dist/__tests__/bundle/serializer.test.js.map +1 -1
- package/dist/__tests__/bundle/template-engine.test.js +1 -1
- package/dist/__tests__/bundle/template-engine.test.js.map +1 -1
- package/dist/__tests__/cli.test.js +6 -71
- package/dist/__tests__/cli.test.js.map +1 -1
- package/dist/__tests__/config-loader.test.js +8 -5
- package/dist/__tests__/config-loader.test.js.map +1 -1
- package/dist/__tests__/core/config.test.js +1 -1
- package/dist/__tests__/core/config.test.js.map +1 -1
- package/dist/__tests__/core/logger.test.js +1 -1
- package/dist/__tests__/core/logger.test.js.map +1 -1
- package/dist/__tests__/integration/bundle-run.integration.test.d.ts +8 -0
- package/dist/__tests__/integration/bundle-run.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/bundle-run.integration.test.js +50 -0
- package/dist/__tests__/integration/bundle-run.integration.test.js.map +1 -0
- package/dist/__tests__/push/push.test.d.ts +7 -0
- package/dist/__tests__/push/push.test.d.ts.map +1 -0
- package/dist/__tests__/push/push.test.js +197 -0
- package/dist/__tests__/push/push.test.js.map +1 -0
- package/dist/__tests__/simulate/env-loader.test.d.ts +2 -0
- package/dist/__tests__/simulate/env-loader.test.d.ts.map +1 -0
- package/dist/__tests__/simulate/env-loader.test.js +47 -0
- package/dist/__tests__/simulate/env-loader.test.js.map +1 -0
- package/dist/__tests__/smoke/production.smoke.test.d.ts +8 -0
- package/dist/__tests__/smoke/production.smoke.test.d.ts.map +1 -0
- package/dist/__tests__/smoke/production.smoke.test.js +58 -0
- package/dist/__tests__/smoke/production.smoke.test.js.map +1 -0
- package/dist/commands/bundle/bundler.d.ts +2 -2
- package/dist/commands/bundle/bundler.d.ts.map +1 -1
- package/dist/commands/bundle/bundler.js +70 -58
- package/dist/commands/bundle/bundler.js.map +1 -1
- package/dist/commands/bundle/index.d.ts +1 -1
- package/dist/commands/bundle/index.d.ts.map +1 -1
- package/dist/commands/bundle/index.js +11 -23
- package/dist/commands/bundle/index.js.map +1 -1
- package/dist/commands/bundle/package-manager.d.ts +1 -1
- package/dist/commands/bundle/package-manager.d.ts.map +1 -1
- package/dist/commands/bundle/serializer.d.ts +1 -1
- package/dist/commands/bundle/serializer.d.ts.map +1 -1
- package/dist/commands/bundle/serializer.js +1 -1
- package/dist/commands/bundle/serializer.js.map +1 -1
- package/dist/commands/bundle/stats.d.ts +2 -2
- package/dist/commands/bundle/stats.d.ts.map +1 -1
- package/dist/commands/bundle/stats.js +1 -1
- package/dist/commands/bundle/stats.js.map +1 -1
- package/dist/commands/bundle/template-engine.d.ts +1 -1
- package/dist/commands/bundle/template-engine.d.ts.map +1 -1
- package/dist/commands/bundle/template-engine.js +4 -2
- package/dist/commands/bundle/template-engine.js.map +1 -1
- package/dist/commands/push/index.d.ts +7 -0
- package/dist/commands/push/index.d.ts.map +1 -0
- package/dist/commands/push/index.js +252 -0
- package/dist/commands/push/index.js.map +1 -0
- package/dist/commands/push/types.d.ts +21 -0
- package/dist/commands/push/types.d.ts.map +1 -0
- package/dist/commands/push/types.js +2 -0
- package/dist/commands/push/types.js.map +1 -0
- package/dist/commands/run/__tests__/run.integration.test.js +1 -1
- package/dist/commands/run/__tests__/run.integration.test.js.map +1 -1
- package/dist/commands/run/__tests__/validators.test.js +1 -1
- package/dist/commands/run/__tests__/validators.test.js.map +1 -1
- package/dist/commands/run/execution.d.ts +14 -0
- package/dist/commands/run/execution.d.ts.map +1 -0
- package/dist/commands/run/execution.js +37 -0
- package/dist/commands/run/execution.js.map +1 -0
- package/dist/commands/run/index.d.ts +1 -1
- package/dist/commands/run/index.d.ts.map +1 -1
- package/dist/commands/run/index.js +33 -107
- package/dist/commands/run/index.js.map +1 -1
- package/dist/commands/run/types.d.ts +1 -1
- package/dist/commands/run/types.d.ts.map +1 -1
- package/dist/commands/run/utils.d.ts +26 -0
- package/dist/commands/run/utils.d.ts.map +1 -0
- package/dist/commands/run/utils.js +58 -0
- package/dist/commands/run/utils.js.map +1 -0
- package/dist/commands/run/validators.d.ts +1 -1
- package/dist/commands/run/validators.d.ts.map +1 -1
- package/dist/commands/run/validators.js +1 -1
- package/dist/commands/run/validators.js.map +1 -1
- package/dist/commands/simulate/env-loader.d.ts +19 -0
- package/dist/commands/simulate/env-loader.d.ts.map +1 -0
- package/dist/commands/simulate/env-loader.js +46 -0
- package/dist/commands/simulate/env-loader.js.map +1 -0
- package/dist/commands/simulate/index.d.ts +3 -3
- package/dist/commands/simulate/index.d.ts.map +1 -1
- package/dist/commands/simulate/index.js +14 -20
- package/dist/commands/simulate/index.js.map +1 -1
- package/dist/commands/simulate/jsdom-executor.d.ts +37 -0
- package/dist/commands/simulate/jsdom-executor.d.ts.map +1 -0
- package/dist/commands/simulate/jsdom-executor.js +137 -0
- package/dist/commands/simulate/jsdom-executor.js.map +1 -0
- package/dist/commands/simulate/simulator.d.ts +1 -5
- package/dist/commands/simulate/simulator.d.ts.map +1 -1
- package/dist/commands/simulate/simulator.js +33 -111
- package/dist/commands/simulate/simulator.js.map +1 -1
- package/dist/commands/simulate/types.d.ts +2 -2
- package/dist/commands/simulate/types.d.ts.map +1 -1
- package/dist/config/defaults.d.ts +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +0 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +8 -8
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -5
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +23 -19
- package/dist/config/loader.js.map +1 -1
- package/dist/config/parser.d.ts +65 -1
- package/dist/config/parser.d.ts.map +1 -1
- package/dist/config/parser.js +176 -62
- package/dist/config/parser.js.map +1 -1
- package/dist/config/utils.d.ts +46 -0
- package/dist/config/utils.d.ts.map +1 -1
- package/dist/config/utils.js +103 -0
- package/dist/config/utils.js.map +1 -1
- package/dist/config/validators.d.ts +4 -1
- package/dist/config/validators.d.ts.map +1 -1
- package/dist/config/validators.js +4 -2
- package/dist/config/validators.js.map +1 -1
- package/dist/core/asset-resolver.d.ts.map +1 -1
- package/dist/core/asset-resolver.js +10 -3
- package/dist/core/asset-resolver.js.map +1 -1
- package/dist/core/docker.d.ts +17 -1
- package/dist/core/docker.d.ts.map +1 -1
- package/dist/core/docker.js +22 -1
- package/dist/core/docker.js.map +1 -1
- package/dist/core/execution.d.ts +2 -2
- package/dist/core/execution.d.ts.map +1 -1
- package/dist/core/execution.js +1 -1
- package/dist/core/execution.js.map +1 -1
- package/dist/core/index.d.ts +8 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts +11 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +14 -0
- package/dist/core/logger.js.map +1 -1
- package/dist/core/temp-manager.d.ts +51 -0
- package/dist/core/temp-manager.d.ts.map +1 -0
- package/dist/core/temp-manager.js +73 -0
- package/dist/core/temp-manager.js.map +1 -0
- package/dist/core/utils.d.ts +10 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +12 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/index.d.ts +42 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +827 -397
- package/dist/index.js.map +1 -1
- package/dist/types/bundle.d.ts +26 -12
- package/dist/types/bundle.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/examples/.npm-cache/content-v2/sha512/0d/2d/7581c288670eaf8538ddd9df145b78756ce3be0791c6e0b9cd33429b3bae894525b9bda287a3cedffbcdd2c7b3107bafc03f2b0367eea489eee1cc042abb +1 -0
- package/examples/.npm-cache/content-v2/sha512/12/20/bc4f5acca143809f7e07da1fdafb38137d93243de4d5b403e6e10b92d0d3a6e51eab24fe9dbc9d3ed1cd72e8f7a406085e99c422bb2c7d1166cf9f1f564e +0 -0
- package/examples/.npm-cache/content-v2/sha512/22/ee/fb2695b01871c1d36946bdcfb49f1b520a57200d0a0b221b1e7d5f047ab38a8b2ab0e5f0e25a00acde1f3f2f9d24430a18f1092d438bc1a9e9891cc45f75 +0 -0
- package/examples/.npm-cache/content-v2/sha512/24/89/da1ce6a61bca6de7e132f241a675c01c83738bf6b78af25b5cce01d3030361332b3fe938571e2b721f1555da9ddf930fdcf8c02f0471556071590e68cc09 +0 -0
- package/examples/.npm-cache/content-v2/sha512/47/fd/c6be997da99228c3e279b95d4a46d6913947078a178f54ac71795a159f3513b1483232f4c2d0a1f403178bf9f96bb19615de32a9e2133e949880c6bc15e2 +0 -0
- package/examples/.npm-cache/content-v2/sha512/4b/1c/c1cb7f8b32102071a89fef97158daa32080ebaedfbbd596880d2213d84e305abc76d2a95a412ded55c1c3d487adcb1ceff87fc2c85d7e2856ebd9d3f16f3 +0 -0
- package/examples/.npm-cache/content-v2/sha512/6e/53/ff864769671f44f39d8a3bf904cd646535b745cc4824a8bb3189193b474678049f43b5178ba15cad7f0289046105e70f1565afc84e907120b35a466690fd +1 -0
- package/examples/.npm-cache/content-v2/sha512/70/4c/4c8837d446965c5551b4ea527e95fa011744fb727581d82cf35bb5599ea0b57d18baa490f7af93ef9a16e8e45e5c0802737da20575f4056a4a5c9a3cd288 +0 -0
- package/examples/.npm-cache/content-v2/sha512/96/ad/05de3bbb12d7de8ea353f962bdaea7d2eb44f707f2973462a6635daf537c67b46cca7764fed7d464fe62152c3f783a07aba1ceb35e09ad446bff05a4b466 +1 -0
- package/examples/.npm-cache/content-v2/sha512/b5/20/52dde94e6cef7170f6089c64a4843e57be18be450d956f4e455905aed047ae6a368451c93035e6ac3ee59576b600f03f815afba0836b3a16e10a9aaca4ba +1 -0
- package/examples/.npm-cache/content-v2/sha512/c7/a9/d166a1c39f97df312c59261319ba1cf9aac178bda0a0cb697d5ddd78bd8dd38ef1bf40017bcc8633c2049896c2d70696d9bff9280851f270792ff38bb3a0 +1 -0
- package/examples/.npm-cache/content-v2/sha512/e0/d0/8c14083b633e6adbd3c6a93da5fc0f6bbd456c5512ef276920bedd8d85d551052adff992de977aff326616a211aaa2d6ddcc801149e9b7f914f566359b6a +1 -0
- package/examples/.npm-cache/content-v2/sha512/e7/c5/06ad3fd79ac4f1031fe0b16ea5e54e232ca397bbcd7592c679021cbfb027276099f8c848f3f7a7691f0102ad53aa64f9141e61d729b037a678bd60440d17 +1 -0
- package/examples/.npm-cache/content-v2/sha512/f3/28/d5d32329604ed7d471a4949105daa2cc98858cf24f45b0b97c41d0eb0d5a9fe7bf1f69c792161cc6693e4fc1b52e886ac41875ebfb8fe47fafe417ca3e6e +0 -0
- package/examples/.npm-cache/index-v5/04/5a/2b5d7a7c407d85d746baa0f5c9388a333e35a717a8a0a81943daa6cb1364 +3 -0
- package/examples/.npm-cache/index-v5/12/9a/eba560cbace295d8ee04cf283015377bd77b379e70968fb6bc407c7fc410 +15 -0
- package/examples/.npm-cache/index-v5/2f/a2/7b047564b0ee21ac835ec609e89153dd6549be554d098584d5bfd19fe043 +15 -0
- package/examples/.npm-cache/index-v5/32/8e/322d58dd8d1e000be248ada51385bf96288e56039de9feec1a4c6a467653 +3 -0
- package/examples/.npm-cache/index-v5/57/93/d1d7cd1402e3e26468db03f2870822bb2c9018a506cdfb3b405f38cd3e1c +3 -0
- package/examples/.npm-cache/index-v5/5d/f8/0a1f4fa7149e4ff33e09eb6aea41ac8d1730c868a5d3ace91f762698acff +3 -0
- package/examples/.npm-cache/index-v5/69/a4/a92c72d838259b051cdf8e0acfb2bc680b6d4cfc642314a7836c3f7b2c50 +15 -0
- package/examples/.npm-cache/index-v5/71/31/6da3423bb203f3de5eb16c942431073f89be2cfcb40058ec91dcb5ce0abc +15 -0
- package/examples/.npm-cache/index-v5/7b/94/72b6bffa050d9ef52a558dd220663695bc606f756be0dfa196ef4f3913ba +3 -0
- package/examples/.npm-cache/index-v5/85/9e/99e97fdd562517e56285337db91d1a8f2f416b8d631cf4d7d754fa671299 +15 -0
- package/examples/.npm-cache/index-v5/92/4c/9416ada81a9b3c679539fd1ab53f8de3d41ff268f35eba7a194389a85b06 +3 -0
- package/examples/.npm-cache/index-v5/c1/5a/13df76b218deed8a6ef12961116af5183db98c53fad1b922fd9edc075247 +3 -0
- package/examples/.npm-cache/index-v5/cb/11/253c55410a8ab7c4a9ea9d6e1bf8ef1450a581da64c478074dfd82c8bff6 +3 -0
- package/examples/.npm-cache/index-v5/d5/ae/b57fad3a62b5ba2dbdf24b042a9e7b70820f3db00e5a630f02e1fea020dc +3 -0
- package/examples/.npm-cache/index-v5/d6/32/2f620f83c7d14451de98de8298c2408e05a16cc0829bd16c891ac19d7a67 +3 -0
- package/examples/.npm-cache/index-v5/dd/b5/01dc7a3cd8b6a03a69aee9af500d51ae19cb0aa12631a4aafd152148b8e5 +15 -0
- package/examples/.npm-cache/index-v5/e0/cf/6b862c15d74630d3871cd813d305210ab741311deb10baf8813014e0bc30 +3 -0
- package/examples/.npm-cache/index-v5/e2/be/e880ccd35950a814d3c1dded34d3938ac61b15a195321dc51357f801aad4 +15 -0
- package/examples/.npm-cache/index-v5/e5/1f/f4affe0b392cd03288f23cc03abcb274ff11a2c8f8965299de681914abb2 +3 -0
- package/examples/.npm-cache/index-v5/f3/5b/9ebe450958ff0d7cc44ab0a00080cb8a3ff1389744b5eab5f97b68a6a6af +3 -0
- package/examples/.npm-cache/index-v5/fb/c1/0de405e902866d53e7c30cf36a97dc2578838622b261816f44dc377c9a80 +3 -0
- package/examples/README.md +4 -4
- package/examples/event.json +53 -0
- package/examples/flow-order-complete.json +68 -0
- package/examples/flow-simple.json +32 -0
- package/examples/flow.json +82 -0
- package/examples/server-collect.mjs +1360 -1190
- package/examples/test.html +43 -0
- package/examples/web-serve.js +25503 -0
- package/examples/web-serve.json +4 -3
- package/package.json +3 -2
- package/templates/server.hbs +2 -2
- package/templates/web.hbs +12 -11
- package/dist/__tests__/bundle/bundler-integration.test.d.ts +0 -2
- package/dist/__tests__/bundle/bundler-integration.test.d.ts.map +0 -1
- package/dist/__tests__/bundle/bundler-integration.test.js +0 -106
- package/dist/__tests__/bundle/bundler-integration.test.js.map +0 -1
- package/dist/__tests__/simulate/programmatic.test.d.ts +0 -2
- package/dist/__tests__/simulate/programmatic.test.d.ts.map +0 -1
- package/dist/__tests__/simulate/programmatic.test.js +0 -51
- package/dist/__tests__/simulate/programmatic.test.js.map +0 -1
- package/dist/__tests__/simulate/simulator.test.d.ts +0 -2
- package/dist/__tests__/simulate/simulator.test.d.ts.map +0 -1
- package/dist/__tests__/simulate/simulator.test.js +0 -29
- package/dist/__tests__/simulate/simulator.test.js.map +0 -1
- package/examples/web-serve.mjs +0 -19456
package/dist/config/parser.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Parsing and normalization logic for configurations.
|
|
5
5
|
*/
|
|
6
6
|
import type { Flow } from '@walkeros/core';
|
|
7
|
-
import type { BuildOptions, EnvironmentConfig } from '../types/bundle';
|
|
7
|
+
import type { BuildOptions, EnvironmentConfig } from '../types/bundle.js';
|
|
8
8
|
/**
|
|
9
9
|
* Result of parsing bundle configuration.
|
|
10
10
|
*/
|
|
@@ -12,6 +12,65 @@ export interface ParsedConfig {
|
|
|
12
12
|
flowConfig: Flow.Config;
|
|
13
13
|
buildOptions: BuildOptions;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Result of config structure parsing (before validation).
|
|
17
|
+
*/
|
|
18
|
+
export interface ParsedStructure {
|
|
19
|
+
/** Raw flow config (not yet validated) */
|
|
20
|
+
flowConfig: unknown;
|
|
21
|
+
/** Raw build options (not yet validated) */
|
|
22
|
+
buildOptions: unknown;
|
|
23
|
+
/** Metadata about the config */
|
|
24
|
+
metadata: {
|
|
25
|
+
/** Selected environment name */
|
|
26
|
+
environment: string;
|
|
27
|
+
/** Whether this is a multi-environment setup */
|
|
28
|
+
isMultiEnvironment: boolean;
|
|
29
|
+
/** All available environment names (for multi-env setups) */
|
|
30
|
+
availableEnvironments?: string[];
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Options for parsing config structure.
|
|
35
|
+
*/
|
|
36
|
+
export interface ParseStructureOptions {
|
|
37
|
+
/** Config file path (for error messages) */
|
|
38
|
+
configPath?: string;
|
|
39
|
+
/** Environment to select (for multi-env configs) */
|
|
40
|
+
environment?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse config structure and extract environment-specific configuration.
|
|
44
|
+
*
|
|
45
|
+
* @param rawConfig - Raw configuration object
|
|
46
|
+
* @param options - Parsing options
|
|
47
|
+
* @returns Extracted flow config, build options, and metadata
|
|
48
|
+
* @throws Error if config format is invalid or environment is missing
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* **Level 1 of 3-level config loading**:
|
|
52
|
+
* - Detects multi-env vs single-env format
|
|
53
|
+
* - Extracts the appropriate environment config
|
|
54
|
+
* - No validation performed (happens in normalizeAndValidate)
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseConfigStructure(rawConfig: unknown, options?: ParseStructureOptions): ParsedStructure;
|
|
57
|
+
/**
|
|
58
|
+
* Normalize and validate flow and build configurations.
|
|
59
|
+
*
|
|
60
|
+
* @param flowConfig - Raw flow configuration
|
|
61
|
+
* @param buildOptions - Raw build options
|
|
62
|
+
* @param configPath - Path to config file (for relative template resolution)
|
|
63
|
+
* @returns Validated and normalized configuration
|
|
64
|
+
* @throws Error if validation fails
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
* **Level 2 of 3-level config loading**:
|
|
68
|
+
* - Validates platform (once!)
|
|
69
|
+
* - Applies platform-specific defaults (single pass)
|
|
70
|
+
* - Resolves relative template paths
|
|
71
|
+
* - Ensures all required fields are present
|
|
72
|
+
*/
|
|
73
|
+
export declare function normalizeAndValidate(flowConfig: unknown, buildOptions: unknown, configPath?: string): ParsedConfig;
|
|
15
74
|
/**
|
|
16
75
|
* Parse and normalize bundle configuration.
|
|
17
76
|
*
|
|
@@ -53,6 +112,11 @@ export declare function safeParseBundleConfig(data: unknown): {
|
|
|
53
112
|
* @param config - Environment configuration or flow+build object
|
|
54
113
|
* @param configPath - Path to config file (for relative template resolution)
|
|
55
114
|
* @returns Normalized flow and build configurations
|
|
115
|
+
*
|
|
116
|
+
* @deprecated Use normalizeAndValidate() instead (simpler, single-pass validation)
|
|
117
|
+
*
|
|
118
|
+
* @remarks
|
|
119
|
+
* Kept for backward compatibility. Internally delegates to normalizeAndValidate().
|
|
56
120
|
*/
|
|
57
121
|
export declare function normalizeConfigs(config: EnvironmentConfig | {
|
|
58
122
|
flow: Flow.Config;
|
|
@@ -1 +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,
|
|
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,EACV,YAAY,EACZ,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAQ5B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,QAAQ,EAAE;QACR,gCAAgC;QAChC,WAAW,EAAE,MAAM,CAAC;QACpB,gDAAgD;QAChD,kBAAkB,EAAE,OAAO,CAAC;QAC5B,6DAA6D;QAC7D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,qBAA0B,GAClC,eAAe,CAiEjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,OAAO,EACnB,YAAY,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,YAAY,CA4Gd;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CA+B7D;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;;;;;;;;;;;GAWG;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,CAGzD"}
|
package/dist/config/parser.js
CHANGED
|
@@ -4,9 +4,173 @@
|
|
|
4
4
|
* Parsing and normalization logic for configurations.
|
|
5
5
|
*/
|
|
6
6
|
import path from 'path';
|
|
7
|
-
import { isObject } from './validators';
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import { isObject, isSingleEnvConfig, isMultiEnvConfig, validatePlatform, } from './validators.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parse config structure and extract environment-specific configuration.
|
|
10
|
+
*
|
|
11
|
+
* @param rawConfig - Raw configuration object
|
|
12
|
+
* @param options - Parsing options
|
|
13
|
+
* @returns Extracted flow config, build options, and metadata
|
|
14
|
+
* @throws Error if config format is invalid or environment is missing
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* **Level 1 of 3-level config loading**:
|
|
18
|
+
* - Detects multi-env vs single-env format
|
|
19
|
+
* - Extracts the appropriate environment config
|
|
20
|
+
* - No validation performed (happens in normalizeAndValidate)
|
|
21
|
+
*/
|
|
22
|
+
export function parseConfigStructure(rawConfig, options = {}) {
|
|
23
|
+
// Multi-environment format
|
|
24
|
+
if (isMultiEnvConfig(rawConfig)) {
|
|
25
|
+
const setup = rawConfig;
|
|
26
|
+
const availableEnvironments = Object.keys(setup.environments);
|
|
27
|
+
// Validate environment selection
|
|
28
|
+
if (!options.environment) {
|
|
29
|
+
throw new Error(`Multi-environment configuration detected. Please specify an environment using --env flag.\n` +
|
|
30
|
+
`Available environments: ${availableEnvironments.join(', ')}`);
|
|
31
|
+
}
|
|
32
|
+
const selectedEnv = options.environment;
|
|
33
|
+
if (!setup.environments[selectedEnv]) {
|
|
34
|
+
throw new Error(`Environment "${selectedEnv}" not found in configuration.\n` +
|
|
35
|
+
`Available environments: ${availableEnvironments.join(', ')}`);
|
|
36
|
+
}
|
|
37
|
+
const envConfig = setup.environments[selectedEnv];
|
|
38
|
+
return {
|
|
39
|
+
flowConfig: envConfig.flow,
|
|
40
|
+
buildOptions: envConfig.build,
|
|
41
|
+
metadata: {
|
|
42
|
+
environment: selectedEnv,
|
|
43
|
+
isMultiEnvironment: true,
|
|
44
|
+
availableEnvironments,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Single-environment format
|
|
49
|
+
if (isSingleEnvConfig(rawConfig)) {
|
|
50
|
+
const config = rawConfig;
|
|
51
|
+
return {
|
|
52
|
+
flowConfig: config.flow,
|
|
53
|
+
buildOptions: config.build,
|
|
54
|
+
metadata: {
|
|
55
|
+
environment: 'default',
|
|
56
|
+
isMultiEnvironment: false,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Invalid format - provide helpful error
|
|
61
|
+
const configPath = options.configPath || 'configuration';
|
|
62
|
+
const configType = isObject(rawConfig)
|
|
63
|
+
? 'platform' in rawConfig
|
|
64
|
+
? `invalid platform value: "${rawConfig.platform}"`
|
|
65
|
+
: 'missing "flow" and "build" fields'
|
|
66
|
+
: `not an object (got ${typeof rawConfig})`;
|
|
67
|
+
throw new Error(`Invalid configuration format at ${configPath}.\n` +
|
|
68
|
+
`Configuration ${configType}.\n\n` +
|
|
69
|
+
`Expected either:\n` +
|
|
70
|
+
` 1. Multi-environment: { version: 1, environments: { prod: { flow: {...}, build: {...} } } }\n` +
|
|
71
|
+
` 2. Single-environment: { flow: { platform: "web" | "server", ... }, build: { packages: {...}, ... } }`);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Normalize and validate flow and build configurations.
|
|
75
|
+
*
|
|
76
|
+
* @param flowConfig - Raw flow configuration
|
|
77
|
+
* @param buildOptions - Raw build options
|
|
78
|
+
* @param configPath - Path to config file (for relative template resolution)
|
|
79
|
+
* @returns Validated and normalized configuration
|
|
80
|
+
* @throws Error if validation fails
|
|
81
|
+
*
|
|
82
|
+
* @remarks
|
|
83
|
+
* **Level 2 of 3-level config loading**:
|
|
84
|
+
* - Validates platform (once!)
|
|
85
|
+
* - Applies platform-specific defaults (single pass)
|
|
86
|
+
* - Resolves relative template paths
|
|
87
|
+
* - Ensures all required fields are present
|
|
88
|
+
*/
|
|
89
|
+
export function normalizeAndValidate(flowConfig, buildOptions, configPath) {
|
|
90
|
+
// Extract and validate platform (ONCE - not in type guards)
|
|
91
|
+
if (!isObject(flowConfig) || !('platform' in flowConfig)) {
|
|
92
|
+
throw new Error(`Invalid flow config: missing "platform" field. Expected "web" or "server".`);
|
|
93
|
+
}
|
|
94
|
+
const platform = flowConfig.platform;
|
|
95
|
+
if (!validatePlatform(platform)) {
|
|
96
|
+
throw new Error(`Invalid platform "${platform}". Must be "web" or "server".`);
|
|
97
|
+
}
|
|
98
|
+
// Validate build options structure
|
|
99
|
+
if (!isObject(buildOptions)) {
|
|
100
|
+
throw new Error(`Invalid build options: expected object, got ${typeof buildOptions}`);
|
|
101
|
+
}
|
|
102
|
+
// Apply platform-specific defaults (single pass merge)
|
|
103
|
+
const platformDefaults = platform === 'web'
|
|
104
|
+
? {
|
|
105
|
+
platform: 'browser',
|
|
106
|
+
format: 'iife',
|
|
107
|
+
target: 'es2020',
|
|
108
|
+
minify: false,
|
|
109
|
+
sourcemap: false,
|
|
110
|
+
tempDir: '.tmp',
|
|
111
|
+
cache: true,
|
|
112
|
+
}
|
|
113
|
+
: {
|
|
114
|
+
platform: 'node',
|
|
115
|
+
format: 'esm',
|
|
116
|
+
target: 'node20',
|
|
117
|
+
minify: false,
|
|
118
|
+
sourcemap: false,
|
|
119
|
+
tempDir: '.tmp',
|
|
120
|
+
cache: true,
|
|
121
|
+
};
|
|
122
|
+
// Single merge: defaults + user config + conditional defaults
|
|
123
|
+
const merged = {
|
|
124
|
+
...platformDefaults,
|
|
125
|
+
...buildOptions,
|
|
126
|
+
};
|
|
127
|
+
// Auto-select default template based on platform if not specified
|
|
128
|
+
if (merged.template === undefined) {
|
|
129
|
+
merged.template = platform === 'server' ? 'server.hbs' : 'web.hbs';
|
|
130
|
+
}
|
|
131
|
+
// Apply window assignment defaults for browser IIFE
|
|
132
|
+
if (merged.format === 'iife' && merged.platform === 'browser') {
|
|
133
|
+
if (merged.windowCollector === undefined) {
|
|
134
|
+
merged.windowCollector = 'collector';
|
|
135
|
+
}
|
|
136
|
+
if (merged.windowElb === undefined) {
|
|
137
|
+
merged.windowElb = 'elb';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Resolve template path relative to config file directory if it starts with ./ or ../
|
|
141
|
+
if (configPath &&
|
|
142
|
+
merged.template &&
|
|
143
|
+
!path.isAbsolute(merged.template) &&
|
|
144
|
+
(merged.template.startsWith('./') || merged.template.startsWith('../'))) {
|
|
145
|
+
const configDir = path.dirname(configPath);
|
|
146
|
+
merged.template = path.resolve(configDir, merged.template);
|
|
147
|
+
}
|
|
148
|
+
// Apply platform-specific defaults for required fields
|
|
149
|
+
if (!merged.output || merged.output === '') {
|
|
150
|
+
merged.output =
|
|
151
|
+
platform === 'web' ? './dist/walker.js' : './dist/bundle.js';
|
|
152
|
+
}
|
|
153
|
+
// Resolve output path relative to config file directory if it's relative
|
|
154
|
+
// Skip resolution for placeholder paths used in tests/programmatic API
|
|
155
|
+
if (configPath &&
|
|
156
|
+
configPath !== '/unknown/path' &&
|
|
157
|
+
merged.output &&
|
|
158
|
+
!path.isAbsolute(merged.output)) {
|
|
159
|
+
const configDir = path.dirname(configPath);
|
|
160
|
+
merged.output = path.resolve(configDir, merged.output);
|
|
161
|
+
}
|
|
162
|
+
if (!merged.packages) {
|
|
163
|
+
merged.packages = {};
|
|
164
|
+
}
|
|
165
|
+
if (merged.code === undefined || merged.code === '') {
|
|
166
|
+
merged.code = '';
|
|
167
|
+
}
|
|
168
|
+
// Return fully validated config
|
|
169
|
+
return {
|
|
170
|
+
flowConfig: flowConfig,
|
|
171
|
+
buildOptions: merged,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
10
174
|
/**
|
|
11
175
|
* Parse and normalize bundle configuration.
|
|
12
176
|
*
|
|
@@ -44,18 +208,13 @@ export function parseBundleConfig(data) {
|
|
|
44
208
|
throw new Error(`Invalid config: missing "build" field. ` +
|
|
45
209
|
`Expected format: { flow: { platform: "web" | "server", ... }, build: { ... } }`);
|
|
46
210
|
}
|
|
47
|
-
const flowData = data.flow;
|
|
48
|
-
if (!('platform' in flowData) ||
|
|
49
|
-
(flowData.platform !== 'web' && flowData.platform !== 'server')) {
|
|
50
|
-
throw new Error(`Invalid config: flow.platform must be "web" or "server", got "${flowData.platform}"`);
|
|
51
|
-
}
|
|
52
211
|
// Validate build.packages field
|
|
53
212
|
const buildData = data.build;
|
|
54
213
|
if ('packages' in buildData && !isObject(buildData.packages)) {
|
|
55
214
|
throw new Error(`Invalid config: build.packages must be an object, got ${typeof buildData.packages}`);
|
|
56
215
|
}
|
|
57
|
-
|
|
58
|
-
return
|
|
216
|
+
// Use new simplified validation
|
|
217
|
+
return normalizeAndValidate(data.flow, data.build, '/unknown/path');
|
|
59
218
|
}
|
|
60
219
|
/**
|
|
61
220
|
* Safely parse bundle configuration without throwing.
|
|
@@ -84,59 +243,14 @@ export function safeParseBundleConfig(data) {
|
|
|
84
243
|
* @param config - Environment configuration or flow+build object
|
|
85
244
|
* @param configPath - Path to config file (for relative template resolution)
|
|
86
245
|
* @returns Normalized flow and build configurations
|
|
246
|
+
*
|
|
247
|
+
* @deprecated Use normalizeAndValidate() instead (simpler, single-pass validation)
|
|
248
|
+
*
|
|
249
|
+
* @remarks
|
|
250
|
+
* Kept for backward compatibility. Internally delegates to normalizeAndValidate().
|
|
87
251
|
*/
|
|
88
252
|
export function normalizeConfigs(config, configPath) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
.platform;
|
|
92
|
-
if (!validatePlatform(platform)) {
|
|
93
|
-
throw new Error(`Invalid platform "${platform}". Must be "web" or "server".`);
|
|
94
|
-
}
|
|
95
|
-
// Apply platform-specific build defaults
|
|
96
|
-
const buildDefaults = platform === 'web'
|
|
97
|
-
? {
|
|
98
|
-
platform: 'browser',
|
|
99
|
-
format: 'iife',
|
|
100
|
-
target: 'es2020',
|
|
101
|
-
minify: false,
|
|
102
|
-
sourcemap: false,
|
|
103
|
-
tempDir: '.tmp',
|
|
104
|
-
cache: true,
|
|
105
|
-
}
|
|
106
|
-
: {
|
|
107
|
-
platform: 'node',
|
|
108
|
-
format: 'esm',
|
|
109
|
-
target: 'node20',
|
|
110
|
-
minify: false,
|
|
111
|
-
sourcemap: false,
|
|
112
|
-
tempDir: '.tmp',
|
|
113
|
-
cache: true,
|
|
114
|
-
};
|
|
115
|
-
// Merge build config
|
|
116
|
-
const buildConfig = {
|
|
117
|
-
...buildDefaults,
|
|
118
|
-
...config.build,
|
|
119
|
-
};
|
|
120
|
-
// Auto-select default template based on platform if not specified
|
|
121
|
-
// Only auto-select if template is undefined (not explicitly set to empty string or false)
|
|
122
|
-
if (buildConfig.template === undefined) {
|
|
123
|
-
buildConfig.template = platform === 'server' ? 'server.hbs' : 'web.hbs';
|
|
124
|
-
}
|
|
125
|
-
// Resolve template path relative to config file directory if it starts with ./ or ../
|
|
126
|
-
if (configPath &&
|
|
127
|
-
buildConfig.template &&
|
|
128
|
-
!path.isAbsolute(buildConfig.template)) {
|
|
129
|
-
if (buildConfig.template.startsWith('./') ||
|
|
130
|
-
buildConfig.template.startsWith('../')) {
|
|
131
|
-
const configDir = path.dirname(configPath);
|
|
132
|
-
buildConfig.template = path.resolve(configDir, buildConfig.template);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Ensure all required build fields are present
|
|
136
|
-
const buildOptions = ensureBuildOptions(buildConfig, platform);
|
|
137
|
-
return {
|
|
138
|
-
flowConfig,
|
|
139
|
-
buildOptions,
|
|
140
|
-
};
|
|
253
|
+
// Delegate to new simplified function
|
|
254
|
+
return normalizeAndValidate(config.flow, config.build, configPath);
|
|
141
255
|
}
|
|
142
256
|
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/config/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/config/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/config/utils.d.ts
CHANGED
|
@@ -65,4 +65,50 @@ export declare function loadJsonConfig<T>(configPath: string): Promise<T>;
|
|
|
65
65
|
* ```
|
|
66
66
|
*/
|
|
67
67
|
export declare function getTempDir(tempDir?: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Load JSON from inline string, file path, or URL.
|
|
70
|
+
*
|
|
71
|
+
* Supports three input formats:
|
|
72
|
+
* 1. Inline JSON string - parsed directly
|
|
73
|
+
* 2. Local file path - read and parsed
|
|
74
|
+
* 3. HTTP/HTTPS URL - downloaded and parsed
|
|
75
|
+
*
|
|
76
|
+
* Detection priority:
|
|
77
|
+
* 1. URL (http://, https://) → download and parse
|
|
78
|
+
* 2. Existing file path → read and parse
|
|
79
|
+
* 3. Valid JSON string → parse directly
|
|
80
|
+
* 4. Simple string → treat as {name: string} for backward compatibility
|
|
81
|
+
*
|
|
82
|
+
* @param source - JSON string, file path, or URL
|
|
83
|
+
* @param options - Optional configuration
|
|
84
|
+
* @param options.name - Parameter name for error messages (e.g., "event", "config")
|
|
85
|
+
* @param options.required - Throw error if source is empty (default: false)
|
|
86
|
+
* @param options.fallback - Default value if source is empty
|
|
87
|
+
* @returns Parsed JSON object
|
|
88
|
+
* @throws Error if source is required but empty, or if loading/parsing fails
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Inline JSON
|
|
93
|
+
* await loadJsonFromSource('{"name":"order complete","data":{}}')
|
|
94
|
+
*
|
|
95
|
+
* // File path
|
|
96
|
+
* await loadJsonFromSource('./examples/event.json')
|
|
97
|
+
*
|
|
98
|
+
* // URL
|
|
99
|
+
* await loadJsonFromSource('https://example.com/event.json')
|
|
100
|
+
*
|
|
101
|
+
* // With options
|
|
102
|
+
* await loadJsonFromSource(input, {
|
|
103
|
+
* name: 'event',
|
|
104
|
+
* required: true,
|
|
105
|
+
* fallback: { name: 'default' }
|
|
106
|
+
* })
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function loadJsonFromSource<T = unknown>(source: string | undefined, options?: {
|
|
110
|
+
name?: string;
|
|
111
|
+
required?: boolean;
|
|
112
|
+
fallback?: T;
|
|
113
|
+
}): Promise<T>;
|
|
68
114
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO1C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkClE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAmCtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAAS,GAAG,MAAM,CAMnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAClD,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,CAAC;CACd,GACA,OAAO,CAAC,CAAC,CAAC,CAmEZ"}
|
package/dist/config/utils.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import os from 'os';
|
|
7
|
+
import { getErrorMessage } from '../core/index.js';
|
|
7
8
|
/**
|
|
8
9
|
* Check if a string is a valid URL
|
|
9
10
|
*
|
|
@@ -151,4 +152,106 @@ export function getTempDir(tempDir = '.tmp') {
|
|
|
151
152
|
: path.join(process.cwd(), tempDir);
|
|
152
153
|
return path.join(basePath, `cli-${Date.now()}-${randomId}`);
|
|
153
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Load JSON from inline string, file path, or URL.
|
|
157
|
+
*
|
|
158
|
+
* Supports three input formats:
|
|
159
|
+
* 1. Inline JSON string - parsed directly
|
|
160
|
+
* 2. Local file path - read and parsed
|
|
161
|
+
* 3. HTTP/HTTPS URL - downloaded and parsed
|
|
162
|
+
*
|
|
163
|
+
* Detection priority:
|
|
164
|
+
* 1. URL (http://, https://) → download and parse
|
|
165
|
+
* 2. Existing file path → read and parse
|
|
166
|
+
* 3. Valid JSON string → parse directly
|
|
167
|
+
* 4. Simple string → treat as {name: string} for backward compatibility
|
|
168
|
+
*
|
|
169
|
+
* @param source - JSON string, file path, or URL
|
|
170
|
+
* @param options - Optional configuration
|
|
171
|
+
* @param options.name - Parameter name for error messages (e.g., "event", "config")
|
|
172
|
+
* @param options.required - Throw error if source is empty (default: false)
|
|
173
|
+
* @param options.fallback - Default value if source is empty
|
|
174
|
+
* @returns Parsed JSON object
|
|
175
|
+
* @throws Error if source is required but empty, or if loading/parsing fails
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```typescript
|
|
179
|
+
* // Inline JSON
|
|
180
|
+
* await loadJsonFromSource('{"name":"order complete","data":{}}')
|
|
181
|
+
*
|
|
182
|
+
* // File path
|
|
183
|
+
* await loadJsonFromSource('./examples/event.json')
|
|
184
|
+
*
|
|
185
|
+
* // URL
|
|
186
|
+
* await loadJsonFromSource('https://example.com/event.json')
|
|
187
|
+
*
|
|
188
|
+
* // With options
|
|
189
|
+
* await loadJsonFromSource(input, {
|
|
190
|
+
* name: 'event',
|
|
191
|
+
* required: true,
|
|
192
|
+
* fallback: { name: 'default' }
|
|
193
|
+
* })
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
export async function loadJsonFromSource(source, options) {
|
|
197
|
+
const paramName = options?.name || 'input';
|
|
198
|
+
// Handle empty/undefined input
|
|
199
|
+
if (!source || source.trim() === '') {
|
|
200
|
+
if (options?.required) {
|
|
201
|
+
throw new Error(`${paramName} is required`);
|
|
202
|
+
}
|
|
203
|
+
if (options?.fallback !== undefined) {
|
|
204
|
+
return options.fallback;
|
|
205
|
+
}
|
|
206
|
+
return {};
|
|
207
|
+
}
|
|
208
|
+
const trimmedSource = source.trim();
|
|
209
|
+
// 1. Check if URL
|
|
210
|
+
if (isUrl(trimmedSource)) {
|
|
211
|
+
try {
|
|
212
|
+
const tempPath = await downloadFromUrl(trimmedSource);
|
|
213
|
+
try {
|
|
214
|
+
const data = await fs.readJson(tempPath);
|
|
215
|
+
return data;
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
// Clean up temp file
|
|
219
|
+
try {
|
|
220
|
+
await fs.remove(tempPath);
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// Ignore cleanup errors
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
throw new Error(`Failed to load ${paramName} from URL ${trimmedSource}: ${getErrorMessage(error)}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// 2. Check if file path exists
|
|
232
|
+
const resolvedPath = path.resolve(trimmedSource);
|
|
233
|
+
if (await fs.pathExists(resolvedPath)) {
|
|
234
|
+
try {
|
|
235
|
+
const data = await fs.readJson(resolvedPath);
|
|
236
|
+
return data;
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
throw new Error(`Failed to parse ${paramName} from file ${trimmedSource}: ${getErrorMessage(error)}`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// 3. Try to parse as inline JSON
|
|
243
|
+
try {
|
|
244
|
+
const parsed = JSON.parse(trimmedSource);
|
|
245
|
+
return parsed;
|
|
246
|
+
}
|
|
247
|
+
catch (jsonError) {
|
|
248
|
+
// 4. Fallback: treat as event name string for backward compatibility
|
|
249
|
+
// This allows simple strings like "page view" to work
|
|
250
|
+
if (!trimmedSource.startsWith('{') && !trimmedSource.startsWith('[')) {
|
|
251
|
+
return { name: trimmedSource };
|
|
252
|
+
}
|
|
253
|
+
// If it looks like JSON but failed to parse, throw helpful error
|
|
254
|
+
throw new Error(`Failed to parse ${paramName}. Input appears to be JSON but contains errors: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
154
257
|
//# sourceMappingURL=utils.js.map
|
package/dist/config/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Type checking utilities for configuration validation.
|
|
5
5
|
*/
|
|
6
|
-
import type { Setup, EnvironmentConfig } from '../types/bundle';
|
|
6
|
+
import type { Setup, EnvironmentConfig } from '../types/bundle.js';
|
|
7
7
|
/**
|
|
8
8
|
* Type guard: Check if value is a plain object.
|
|
9
9
|
*/
|
|
@@ -18,6 +18,9 @@ export declare function validatePlatform(platform: unknown): platform is 'web' |
|
|
|
18
18
|
export declare function isMultiEnvConfig(data: unknown): data is Setup;
|
|
19
19
|
/**
|
|
20
20
|
* Type guard: Check if config is single-environment format.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* Only checks structural shape. Platform validation happens later in normalization.
|
|
21
24
|
*/
|
|
22
25
|
export declare function isSingleEnvConfig(data: unknown): data is EnvironmentConfig;
|
|
23
26
|
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAE9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,KAAK,CAQ7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAS1E"}
|
|
@@ -30,6 +30,9 @@ export function isMultiEnvConfig(data) {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Type guard: Check if config is single-environment format.
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* Only checks structural shape. Platform validation happens later in normalization.
|
|
33
36
|
*/
|
|
34
37
|
export function isSingleEnvConfig(data) {
|
|
35
38
|
return (isObject(data) &&
|
|
@@ -37,8 +40,7 @@ export function isSingleEnvConfig(data) {
|
|
|
37
40
|
'build' in data &&
|
|
38
41
|
isObject(data.flow) &&
|
|
39
42
|
isObject(data.build) &&
|
|
40
|
-
'platform' in data.flow
|
|
41
|
-
validatePlatform(data.flow.platform));
|
|
43
|
+
'platform' in data.flow);
|
|
42
44
|
}
|
|
43
45
|
// Legacy format support removed in v0.3.0
|
|
44
46
|
// See docs/MIGRATION.md for migration guide
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAiB;IAEjB,OAAO,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC;QACd,SAAS,IAAI,IAAI;QACjB,IAAI,CAAC,OAAO,KAAK,CAAC;QAClB,cAAc,IAAI,IAAI;QACtB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAiB;IAEjB,OAAO,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC;QACd,SAAS,IAAI,IAAI;QACjB,IAAI,CAAC,OAAO,KAAK,CAAC;QAClB,cAAc,IAAI,IAAI;QACtB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC;QACd,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,IAAI;QACf,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,UAAU,IAAI,IAAI,CAAC,IAAI,CACxB,CAAC;AACJ,CAAC;AAED,0CAA0C;AAC1C,4CAA4C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-resolver.d.ts","sourceRoot":"","sources":["../../src/core/asset-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"asset-resolver.d.ts","sourceRoot":"","sources":["../../src/core/asset-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAuBvC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAoBR"}
|