@walkeros/cli 0.3.6 → 0.4.0
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 +12 -0
- package/dist/__tests__/bundle/bundler.test.js +6 -0
- package/dist/__tests__/bundle/bundler.test.js.map +1 -1
- package/dist/__tests__/bundle/programmatic.test.js +4 -0
- package/dist/__tests__/bundle/programmatic.test.js.map +1 -1
- package/dist/__tests__/cli-e2e.test.js +1 -1
- package/dist/__tests__/cli-e2e.test.js.map +1 -1
- package/dist/__tests__/cli.test.js +6 -2
- package/dist/__tests__/cli.test.js.map +1 -1
- package/dist/__tests__/simulate/programmatic.test.js +1 -1
- package/dist/__tests__/simulate/programmatic.test.js.map +1 -1
- package/dist/__tests__/simulate/simulator.test.js +1 -1
- package/dist/__tests__/simulate/simulator.test.js.map +1 -1
- package/dist/commands/bundle/bundler.js +20 -20
- package/dist/commands/bundle/bundler.js.map +1 -1
- package/dist/commands/bundle/template-engine.d.ts.map +1 -1
- package/dist/commands/bundle/template-engine.js +2 -0
- package/dist/commands/bundle/template-engine.js.map +1 -1
- package/dist/commands/simulate/index.d.ts.map +1 -1
- package/dist/commands/simulate/index.js +6 -3
- package/dist/commands/simulate/index.js.map +1 -1
- package/dist/commands/simulate/jsdom-executor.d.ts +32 -0
- package/dist/commands/simulate/jsdom-executor.d.ts.map +1 -0
- package/dist/commands/simulate/jsdom-executor.js +160 -0
- package/dist/commands/simulate/jsdom-executor.js.map +1 -0
- package/dist/commands/simulate/simulator.d.ts +0 -4
- package/dist/commands/simulate/simulator.d.ts.map +1 -1
- package/dist/commands/simulate/simulator.js +22 -104
- package/dist/commands/simulate/simulator.js.map +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 +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/parser.d.ts.map +1 -1
- package/dist/config/parser.js +9 -0
- 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 +102 -0
- package/dist/config/utils.js.map +1 -1
- package/dist/index.d.ts +26 -12
- package/dist/index.js +123 -2103
- 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/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/test.html +43 -0
- package/examples/web-serve.js +45 -0
- package/examples/web-serve.json +4 -3
- package/package.json +2 -2
- package/templates/server.hbs +2 -2
- package/templates/web.hbs +12 -11
- package/examples/web-serve.mjs +0 -19456
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSDOM-based executor for simulating IIFE bundles
|
|
3
|
+
*
|
|
4
|
+
* Executes actual production IIFE bundles in a virtual DOM environment
|
|
5
|
+
* with env-based mocking from destination examples.
|
|
6
|
+
*/
|
|
7
|
+
import { JSDOM, VirtualConsole } from 'jsdom';
|
|
8
|
+
import fs from 'fs-extra';
|
|
9
|
+
/**
|
|
10
|
+
* Build sandbox from destination-provided examples
|
|
11
|
+
*
|
|
12
|
+
* Merges env mocks from each destination's examples, wrapping
|
|
13
|
+
* specified paths with CallTracker for API call tracking.
|
|
14
|
+
*/
|
|
15
|
+
function buildSandboxFromExamples(examples, destinations, tracker) {
|
|
16
|
+
// Base browser APIs (not provided by destinations)
|
|
17
|
+
const baseBrowserMocks = {
|
|
18
|
+
Image: class MockImage {
|
|
19
|
+
src = '';
|
|
20
|
+
onload = (() => { });
|
|
21
|
+
onerror = (() => { });
|
|
22
|
+
},
|
|
23
|
+
fetch: async () => ({ ok: true, json: async () => ({}) }),
|
|
24
|
+
location: { href: 'http://localhost' },
|
|
25
|
+
navigator: { userAgent: 'Mozilla/5.0 (walkerOS Simulation)' },
|
|
26
|
+
};
|
|
27
|
+
const sandbox = {
|
|
28
|
+
window: { ...baseBrowserMocks },
|
|
29
|
+
document: {},
|
|
30
|
+
};
|
|
31
|
+
// Add destination-specific env mocks
|
|
32
|
+
for (const [destKey, destConfig] of Object.entries(destinations)) {
|
|
33
|
+
const destExamples = examples[destKey];
|
|
34
|
+
if (!destExamples?.env?.push)
|
|
35
|
+
continue;
|
|
36
|
+
const mockEnv = destExamples.env.push;
|
|
37
|
+
const trackPaths = destExamples.env.simulation || [];
|
|
38
|
+
// Use existing CallTracker to wrap env
|
|
39
|
+
const trackedEnv = tracker.wrapEnv(mockEnv, trackPaths.map((p) => `${destKey}:${p}`));
|
|
40
|
+
// Merge window properties
|
|
41
|
+
if (trackedEnv.window && typeof trackedEnv.window === 'object') {
|
|
42
|
+
Object.assign(sandbox.window, trackedEnv.window);
|
|
43
|
+
}
|
|
44
|
+
// Merge document properties
|
|
45
|
+
if (trackedEnv.document && typeof trackedEnv.document === 'object') {
|
|
46
|
+
Object.assign(sandbox.document, trackedEnv.document);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return sandbox;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Wait for async window property assignment
|
|
53
|
+
*
|
|
54
|
+
* IIFE bundles execute asynchronously and assign to window.
|
|
55
|
+
* This helper polls until the property appears or timeout occurs.
|
|
56
|
+
*/
|
|
57
|
+
function waitForWindowProperty(window, prop, timeout = 5000) {
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
const start = Date.now();
|
|
60
|
+
const check = () => {
|
|
61
|
+
if (window[prop] !== undefined) {
|
|
62
|
+
resolve();
|
|
63
|
+
}
|
|
64
|
+
else if (Date.now() - start > timeout) {
|
|
65
|
+
reject(new Error(`Timeout waiting for window.${prop}. ` +
|
|
66
|
+
`IIFE may have failed to execute or assign to window.`));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
setImmediate(check);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
check();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Execute production IIFE bundle in JSDOM with env-based mocking
|
|
77
|
+
*
|
|
78
|
+
* Main orchestration function that:
|
|
79
|
+
* 1. Creates JSDOM virtual DOM
|
|
80
|
+
* 2. Loads bundle and extracts examples
|
|
81
|
+
* 3. Builds sandbox from destination examples
|
|
82
|
+
* 4. Executes IIFE in JSDOM
|
|
83
|
+
* 5. Waits for window.collector/elb assignment
|
|
84
|
+
* 6. Runs event through elb
|
|
85
|
+
* 7. Returns tracked API calls
|
|
86
|
+
*/
|
|
87
|
+
export async function executeInJSDOM(bundlePath, destinations, event, tracker, timeout = 10000) {
|
|
88
|
+
const start = Date.now();
|
|
89
|
+
// 1. Create JSDOM virtual DOM with console suppression
|
|
90
|
+
const virtualConsole = new VirtualConsole();
|
|
91
|
+
// Silent mode - don't pipe console output to process stdout/stderr
|
|
92
|
+
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
|
|
93
|
+
url: 'http://localhost',
|
|
94
|
+
runScripts: 'dangerously', // Allow script execution
|
|
95
|
+
resources: 'usable',
|
|
96
|
+
virtualConsole,
|
|
97
|
+
});
|
|
98
|
+
const { window } = dom;
|
|
99
|
+
// 2. Load bundle code
|
|
100
|
+
const bundleCode = await fs.readFile(bundlePath, 'utf8');
|
|
101
|
+
// 3. Split bundle into setup (examples) and IIFE parts
|
|
102
|
+
// Look for the IIFE pattern: (async () => {
|
|
103
|
+
const iifeMatch = bundleCode.match(/(\(async\s*\(\)\s*=>\s*\{[\s\S]*\}\)\(\);?)/);
|
|
104
|
+
if (!iifeMatch) {
|
|
105
|
+
throw new Error('Could not find IIFE pattern in bundle');
|
|
106
|
+
}
|
|
107
|
+
const iifeStart = iifeMatch.index;
|
|
108
|
+
const setupPart = bundleCode.substring(0, iifeStart);
|
|
109
|
+
const iifePart = bundleCode.substring(iifeStart);
|
|
110
|
+
// 4. Execute setup part to get examples
|
|
111
|
+
const setupScript = window.document.createElement('script');
|
|
112
|
+
setupScript.textContent = setupPart;
|
|
113
|
+
try {
|
|
114
|
+
window.document.body.appendChild(setupScript);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
throw new Error(`Failed to execute bundle setup: ${error instanceof Error ? error.message : String(error)}`);
|
|
118
|
+
}
|
|
119
|
+
// 5. Extract examples from window (should be set by setup part)
|
|
120
|
+
const examples = window.__walkerOS_examples || {};
|
|
121
|
+
// 6. Build sandbox from examples and inject into window
|
|
122
|
+
const sandbox = buildSandboxFromExamples(examples, destinations, tracker);
|
|
123
|
+
Object.assign(window, sandbox.window);
|
|
124
|
+
Object.assign(window.document, sandbox.document);
|
|
125
|
+
// 7. Execute IIFE part with sandbox in place
|
|
126
|
+
const iifeScript = window.document.createElement('script');
|
|
127
|
+
iifeScript.textContent = iifePart;
|
|
128
|
+
try {
|
|
129
|
+
window.document.body.appendChild(iifeScript);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
throw new Error(`Failed to execute IIFE: ${error instanceof Error ? error.message : String(error)}`);
|
|
133
|
+
}
|
|
134
|
+
// 8. Wait for window.collector and window.elb assignments
|
|
135
|
+
try {
|
|
136
|
+
await waitForWindowProperty(window, 'collector', timeout);
|
|
137
|
+
await waitForWindowProperty(window, 'elb', timeout);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
throw new Error(`Window property assignment failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
141
|
+
}
|
|
142
|
+
const { collector, elb } = window;
|
|
143
|
+
// 9. Run event through elb
|
|
144
|
+
let elbResult;
|
|
145
|
+
try {
|
|
146
|
+
elbResult = await elb(event.name, event.data);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
throw new Error(`Event execution failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
150
|
+
}
|
|
151
|
+
// 10. Return results with tracked calls
|
|
152
|
+
return {
|
|
153
|
+
collector,
|
|
154
|
+
elb,
|
|
155
|
+
elbResult,
|
|
156
|
+
usage: tracker.getCalls(),
|
|
157
|
+
duration: Date.now() - start,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=jsdom-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsdom-executor.js","sourceRoot":"","sources":["../../../src/commands/simulate/jsdom-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,6 @@ import type { SimulateCommandOptions, SimulationResult } from './types';
|
|
|
3
3
|
* Main simulation orchestrator
|
|
4
4
|
*/
|
|
5
5
|
export declare function simulateCore(configPath: string, event: unknown, options?: Pick<SimulateCommandOptions, 'json' | 'verbose' | 'silent'>): Promise<SimulationResult>;
|
|
6
|
-
/**
|
|
7
|
-
* Parse event input - handles both strings and JSON objects
|
|
8
|
-
*/
|
|
9
|
-
export declare function parseEventInput(eventString?: string): unknown;
|
|
10
6
|
/**
|
|
11
7
|
* Simple result formatting
|
|
12
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/simulator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/simulator.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AASxE;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAM,GACxE,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAM,GACjD,MAAM,CAeR;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAsH3B"}
|
|
@@ -5,6 +5,7 @@ import { loadJsonConfig, getTempDir, isObject, parseBundleConfig, } from '../../
|
|
|
5
5
|
import { bundleCore } from '../bundle/bundler';
|
|
6
6
|
import { downloadPackages } from '../bundle/package-manager';
|
|
7
7
|
import { CallTracker } from './tracker';
|
|
8
|
+
import { executeInJSDOM } from './jsdom-executor';
|
|
8
9
|
/**
|
|
9
10
|
* Generate a unique ID for temp files
|
|
10
11
|
*/
|
|
@@ -48,23 +49,6 @@ export async function simulateCore(configPath, event, options = {}) {
|
|
|
48
49
|
};
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Parse event input - handles both strings and JSON objects
|
|
53
|
-
*/
|
|
54
|
-
export function parseEventInput(eventString = '') {
|
|
55
|
-
if (!eventString) {
|
|
56
|
-
return {};
|
|
57
|
-
}
|
|
58
|
-
// Try to parse as JSON first
|
|
59
|
-
try {
|
|
60
|
-
const parsed = JSON.parse(eventString);
|
|
61
|
-
return isObject(parsed) ? parsed : {};
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// If JSON parsing fails, treat as event name string
|
|
65
|
-
return { name: eventString };
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
52
|
/**
|
|
69
53
|
* Simple result formatting
|
|
70
54
|
*/
|
|
@@ -92,6 +76,13 @@ export async function executeSimulation(event, configPath) {
|
|
|
92
76
|
let bundlePath;
|
|
93
77
|
const tempDir = getTempDir();
|
|
94
78
|
try {
|
|
79
|
+
// Validate event format
|
|
80
|
+
if (!isObject(event) ||
|
|
81
|
+
!('name' in event) ||
|
|
82
|
+
typeof event.name !== 'string') {
|
|
83
|
+
throw new Error('Event must be an object with a "name" property of type string');
|
|
84
|
+
}
|
|
85
|
+
const typedEvent = event;
|
|
95
86
|
// Ensure temp directory exists
|
|
96
87
|
await fs.ensureDir(tempDir);
|
|
97
88
|
// 1. Load config
|
|
@@ -112,97 +103,27 @@ export async function executeSimulation(event, configPath) {
|
|
|
112
103
|
createLogger({ silent: true }), buildOptions.cache);
|
|
113
104
|
// 3. Create tracker
|
|
114
105
|
const tracker = new CallTracker();
|
|
115
|
-
// 4.
|
|
116
|
-
|
|
117
|
-
const envSetupCode = [];
|
|
106
|
+
// 4. Create temporary bundle as production IIFE (not ESM!)
|
|
107
|
+
const tempOutput = path.join(tempDir, `simulation-bundle-${generateId()}.js`);
|
|
118
108
|
const destinations = flowConfig.destinations;
|
|
119
|
-
|
|
120
|
-
for (const [key, dest] of Object.entries(destinations)) {
|
|
121
|
-
// Generate code to wrap env using examples imported IN THE BUNDLE
|
|
122
|
-
const destName = key.replace(/-/g, '_');
|
|
123
|
-
envSetupCode.push(`
|
|
124
|
-
// Inject tracked env for destination '${key}' using examples from bundle
|
|
125
|
-
if (examples && examples['${key}'] && examples['${key}'].env) {
|
|
126
|
-
const mockEnv = examples['${key}'].env.push;
|
|
127
|
-
const trackPaths = examples['${key}'].env.simulation || [];
|
|
128
|
-
if (mockEnv) {
|
|
129
|
-
const wrappedPaths = trackPaths.map((p) => '${key}:' + p);
|
|
130
|
-
const trackedEnv = __simulationTracker.wrapEnv(mockEnv, wrappedPaths);
|
|
131
|
-
if (config.destinations && config.destinations['${key}']) {
|
|
132
|
-
config.destinations['${key}'].env = trackedEnv;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// 5. Inject env setup code BEFORE startFlow
|
|
140
|
-
// Note: __simulationTracker will be provided via factory function parameter
|
|
141
|
-
const modifiedCode = `
|
|
142
|
-
// Inject tracked envs into destination configs
|
|
143
|
-
${envSetupCode.join('\n')}
|
|
144
|
-
|
|
145
|
-
${buildOptions.code || ''}
|
|
146
|
-
`;
|
|
147
|
-
// 7. Create temporary bundle with downloaded packages
|
|
148
|
-
const tempOutput = path.join(tempDir, `simulation-bundle-${generateId()}.mjs`);
|
|
149
|
-
// Create modified build options for simulation
|
|
109
|
+
// Create build options for simulation - bundle as IIFE to test actual production code
|
|
150
110
|
const simulationBuildOptions = {
|
|
151
111
|
...buildOptions,
|
|
152
|
-
code:
|
|
112
|
+
code: buildOptions.code || '', // No code modification - use original
|
|
153
113
|
output: tempOutput,
|
|
154
114
|
tempDir, // Use same temp dir for bundle
|
|
155
|
-
format: '
|
|
156
|
-
//
|
|
157
|
-
|
|
115
|
+
format: 'iife', // ← Test actual production format!
|
|
116
|
+
platform: 'browser', // ← Browser platform for IIFE
|
|
117
|
+
windowCollector: 'collector', // ← Ensure window assignment
|
|
118
|
+
windowElb: 'elb',
|
|
158
119
|
};
|
|
159
|
-
//
|
|
120
|
+
// 5. Bundle with downloaded packages (they're already in tempDir/node_modules)
|
|
160
121
|
await bundleCore(flowConfig, simulationBuildOptions, createLogger({ silent: true }), false);
|
|
161
122
|
bundlePath = tempOutput;
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
globalWithSim.window = {};
|
|
167
|
-
}
|
|
168
|
-
if (!globalWithSim.document) {
|
|
169
|
-
globalWithSim.document = {};
|
|
170
|
-
}
|
|
171
|
-
// 10. Dynamic import the bundle
|
|
172
|
-
const timestamp = Date.now();
|
|
173
|
-
const moduleUrl = `file://${bundlePath}?t=${timestamp}`;
|
|
174
|
-
const module = await import(moduleUrl);
|
|
175
|
-
// 11. Populate globals with destination-specific mocks from examples
|
|
176
|
-
// This happens AFTER import so we can access the exported examples
|
|
177
|
-
const importedExamples = module.examples;
|
|
178
|
-
const destinations2 = flowConfig.destinations;
|
|
179
|
-
if (importedExamples && destinations2) {
|
|
180
|
-
for (const [key, dest] of Object.entries(destinations2)) {
|
|
181
|
-
const destEnv = importedExamples[key]?.env?.push;
|
|
182
|
-
if (destEnv) {
|
|
183
|
-
if (destEnv.window &&
|
|
184
|
-
typeof globalWithSim.window === 'object' &&
|
|
185
|
-
globalWithSim.window !== null) {
|
|
186
|
-
Object.assign(globalWithSim.window, destEnv.window);
|
|
187
|
-
}
|
|
188
|
-
if (destEnv.document &&
|
|
189
|
-
typeof globalWithSim.document === 'object' &&
|
|
190
|
-
globalWithSim.document !== null) {
|
|
191
|
-
Object.assign(globalWithSim.document, destEnv.document);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
// 12. Call bundle factory function with tracker
|
|
197
|
-
const flowResult = await module.default({ tracker });
|
|
198
|
-
if (!flowResult || typeof flowResult.elb !== 'function') {
|
|
199
|
-
throw new Error('Bundle did not export valid flow object with elb function');
|
|
200
|
-
}
|
|
201
|
-
const { elb } = flowResult;
|
|
202
|
-
// 13. Execute the event
|
|
203
|
-
const elbResult = await elb(event);
|
|
204
|
-
// 14. Retrieve tracked calls from tracker instance
|
|
205
|
-
const usage = tracker.getCalls();
|
|
123
|
+
// 6. Execute IIFE in JSDOM with env-based mocking
|
|
124
|
+
const result = await executeInJSDOM(tempOutput, destinations || {}, typedEvent, tracker, 10000);
|
|
125
|
+
const elbResult = result.elbResult;
|
|
126
|
+
const usage = result.usage;
|
|
206
127
|
const duration = Date.now() - startTime;
|
|
207
128
|
return {
|
|
208
129
|
success: true,
|
|
@@ -227,10 +148,7 @@ ${buildOptions.code || ''}
|
|
|
227
148
|
// Ignore cleanup errors - temp dirs will be cleaned eventually
|
|
228
149
|
});
|
|
229
150
|
}
|
|
230
|
-
//
|
|
231
|
-
const globalWithSim = globalThis;
|
|
232
|
-
delete globalWithSim.window;
|
|
233
|
-
delete globalWithSim.document;
|
|
151
|
+
// Note: JSDOM automatically cleans up its own isolated environment
|
|
234
152
|
}
|
|
235
153
|
}
|
|
236
154
|
//# sourceMappingURL=simulator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../src/commands/simulate/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,UAAU,EACV,QAAQ,EACR,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../src/commands/simulate/simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CA0BvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,EACnC,YAAY,EAAE,KAAK,GAAG,QAAQ,GAC7B,YAAY,CAmBd"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -1 +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;
|
|
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;SACrC,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,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,IAAI,IAAI,EAAE;QAC9C,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAO;QAC/C,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAS;KACtC,CAAC;AACpB,CAAC"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Unified configuration loading, parsing, and validation.
|
|
5
5
|
*/
|
|
6
6
|
export { isObject, validatePlatform, isMultiEnvConfig, isSingleEnvConfig, } from './validators';
|
|
7
|
-
export { substituteEnvVariables, loadJsonConfig, getTempDir } from './utils';
|
|
7
|
+
export { substituteEnvVariables, loadJsonConfig, loadJsonFromSource, getTempDir, } from './utils';
|
|
8
8
|
export { getDefaultBuildOptions, ensureBuildOptions } from './defaults';
|
|
9
9
|
export { parseBundleConfig, safeParseBundleConfig, normalizeConfigs, } from './parser';
|
|
10
10
|
export type { ParsedConfig } from './parser';
|
|
@@ -1 +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,
|
|
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,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,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"}
|
package/dist/config/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// Type guards and validators
|
|
7
7
|
export { isObject, validatePlatform, isMultiEnvConfig, isSingleEnvConfig, } from './validators';
|
|
8
8
|
// Utility functions
|
|
9
|
-
export { substituteEnvVariables, loadJsonConfig, getTempDir } from './utils';
|
|
9
|
+
export { substituteEnvVariables, loadJsonConfig, loadJsonFromSource, getTempDir, } from './utils';
|
|
10
10
|
// Platform defaults
|
|
11
11
|
export { getDefaultBuildOptions, ensureBuildOptions } from './defaults';
|
|
12
12
|
// Parser
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +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,
|
|
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,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,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"}
|
|
@@ -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,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,
|
|
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,CA6EzD"}
|
package/dist/config/parser.js
CHANGED
|
@@ -122,6 +122,15 @@ export function normalizeConfigs(config, configPath) {
|
|
|
122
122
|
if (buildConfig.template === undefined) {
|
|
123
123
|
buildConfig.template = platform === 'server' ? 'server.hbs' : 'web.hbs';
|
|
124
124
|
}
|
|
125
|
+
// Apply window assignment defaults for browser IIFE
|
|
126
|
+
if (buildConfig.format === 'iife' && buildConfig.platform === 'browser') {
|
|
127
|
+
if (buildConfig.windowCollector === undefined) {
|
|
128
|
+
buildConfig.windowCollector = 'collector';
|
|
129
|
+
}
|
|
130
|
+
if (buildConfig.windowElb === undefined) {
|
|
131
|
+
buildConfig.windowElb = 'elb';
|
|
132
|
+
}
|
|
133
|
+
}
|
|
125
134
|
// Resolve template path relative to config file directory if it starts with ./ or ../
|
|
126
135
|
if (configPath &&
|
|
127
136
|
buildConfig.template &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/config/parser.ts"],"names":[],"mappings":"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"}
|
|
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;AAMH;;;;;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"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;;;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"}
|