@walkeros/cli 0.3.5 → 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 +22 -0
- package/README.md +22 -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/index.d.ts.map +1 -1
- package/dist/commands/bundle/index.js +2 -2
- package/dist/commands/bundle/index.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/run/index.d.ts.map +1 -1
- package/dist/commands/run/index.js +8 -3
- package/dist/commands/run/index.js.map +1 -1
- package/dist/commands/run/types.d.ts +8 -4
- package/dist/commands/run/types.d.ts.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 +80 -4
- package/dist/config/utils.d.ts.map +1 -1
- package/dist/config/utils.js +197 -7
- package/dist/config/utils.js.map +1 -1
- package/dist/core/docker.d.ts +8 -4
- package/dist/core/docker.d.ts.map +1 -1
- package/dist/core/docker.js +50 -15
- package/dist/core/docker.js.map +1 -1
- package/dist/index.d.ts +34 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +123 -2017
- 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 +330 -0
- 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.json +53 -0
- package/examples/server-collect.mjs +13370 -0
- package/examples/test.html +43 -0
- package/examples/web-serve.js +45 -0
- package/examples/web-serve.json +75 -0
- package/package.json +3 -2
- package/templates/server.hbs +2 -2
- package/templates/web.hbs +12 -11
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":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAqB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,sBAAsB;IACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,wCAAwC;YACtC,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,yCAAyC;YACvC,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAA+B,CAAC;IACtD,IACE,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC;QACzB,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAC/D,CAAC;QACD,MAAM,IAAI,KAAK,CACb,iEAAiE,QAAQ,CAAC,QAAQ,GAAG,CACtF,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAgC,CAAC;IACxD,IAAI,UAAU,IAAI,SAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,yDAAyD,OAAO,SAAS,CAAC,QAAQ,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAoC,CAAC;IACpD,OAAO,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IAKjD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAEuD,EACvD,UAAmB;IAEnB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,MAAM,QAAQ,GAAI,UAAwD;SACvE,QAAQ,CAAC;IAEZ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,+BAA+B,CAC7D,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,MAAM,aAAa,GACjB,QAAQ,KAAK,KAAK;QAChB,CAAC,CAAC;YACE,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,IAAI;SACZ;QACH,CAAC,CAAC;YACE,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,IAAI;SACZ,CAAC;IAER,qBAAqB;IACrB,MAAM,WAAW,GAA0B;QACzC,GAAG,aAAa;QAChB,GAAG,MAAM,CAAC,KAAK;KAChB,CAAC;IAEF,kEAAkE;IAClE,0FAA0F;IAC1F,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;IAED,sFAAsF;IACtF,IACE,UAAU;QACV,WAAW,CAAC,QAAQ;QACpB,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,EACtC,CAAC;QACD,IACE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YACrC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EACtC,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE/D,OAAO;QACL,UAAU;QACV,YAAY;KACb,CAAC;AACJ,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
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration Utility Functions
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a string is a valid URL
|
|
6
|
+
*
|
|
7
|
+
* @param str - String to check
|
|
8
|
+
* @returns True if string is a valid HTTP/HTTPS URL
|
|
9
|
+
*/
|
|
10
|
+
export declare function isUrl(str: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Download a file from a URL to a temporary location
|
|
13
|
+
*
|
|
14
|
+
* @param url - HTTP/HTTPS URL to download
|
|
15
|
+
* @returns Path to downloaded temporary file
|
|
16
|
+
* @throws Error if download fails or response is not OK
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const tempPath = await downloadFromUrl('https://example.com/config.json')
|
|
21
|
+
* // Returns: "/tmp/walkeros-download-1647261462000-abc123.json"
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function downloadFromUrl(url: string): Promise<string>;
|
|
4
25
|
/**
|
|
5
26
|
* Substitute environment variables in a string.
|
|
6
27
|
*
|
|
@@ -15,11 +36,20 @@
|
|
|
15
36
|
*/
|
|
16
37
|
export declare function substituteEnvVariables(value: string): string;
|
|
17
38
|
/**
|
|
18
|
-
* Load and parse JSON configuration file.
|
|
39
|
+
* Load and parse JSON configuration file from local path or URL.
|
|
40
|
+
*
|
|
41
|
+
* @param configPath - Path to JSON file or HTTP/HTTPS URL
|
|
42
|
+
* @returns Parsed configuration object and cleanup function
|
|
43
|
+
* @throws Error if file not found, download fails, or invalid JSON
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Local file
|
|
48
|
+
* const config = await loadJsonConfig('./config.json')
|
|
19
49
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
50
|
+
* // Remote URL
|
|
51
|
+
* const config = await loadJsonConfig('https://example.com/config.json')
|
|
52
|
+
* ```
|
|
23
53
|
*/
|
|
24
54
|
export declare function loadJsonConfig<T>(configPath: string): Promise<T>;
|
|
25
55
|
/**
|
|
@@ -35,4 +65,50 @@ export declare function loadJsonConfig<T>(configPath: string): Promise<T>;
|
|
|
35
65
|
* ```
|
|
36
66
|
*/
|
|
37
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>;
|
|
38
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;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"}
|
package/dist/config/utils.js
CHANGED
|
@@ -3,6 +3,63 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
5
|
import path from 'path';
|
|
6
|
+
import os from 'os';
|
|
7
|
+
/**
|
|
8
|
+
* Check if a string is a valid URL
|
|
9
|
+
*
|
|
10
|
+
* @param str - String to check
|
|
11
|
+
* @returns True if string is a valid HTTP/HTTPS URL
|
|
12
|
+
*/
|
|
13
|
+
export function isUrl(str) {
|
|
14
|
+
try {
|
|
15
|
+
const url = new URL(str);
|
|
16
|
+
return url.protocol === 'http:' || url.protocol === 'https:';
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Download a file from a URL to a temporary location
|
|
24
|
+
*
|
|
25
|
+
* @param url - HTTP/HTTPS URL to download
|
|
26
|
+
* @returns Path to downloaded temporary file
|
|
27
|
+
* @throws Error if download fails or response is not OK
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const tempPath = await downloadFromUrl('https://example.com/config.json')
|
|
32
|
+
* // Returns: "/tmp/walkeros-download-1647261462000-abc123.json"
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export async function downloadFromUrl(url) {
|
|
36
|
+
if (!isUrl(url)) {
|
|
37
|
+
throw new Error(`Invalid URL: ${url}`);
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const response = await fetch(url);
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`Failed to download ${url}: ${response.status} ${response.statusText}`);
|
|
43
|
+
}
|
|
44
|
+
const content = await response.text();
|
|
45
|
+
// Extract filename from URL or generate one
|
|
46
|
+
const urlObj = new URL(url);
|
|
47
|
+
const urlFilename = path.basename(urlObj.pathname);
|
|
48
|
+
const extension = path.extname(urlFilename) || '.json';
|
|
49
|
+
const randomId = Math.random().toString(36).substring(2, 11);
|
|
50
|
+
const filename = `walkeros-download-${Date.now()}-${randomId}${extension}`;
|
|
51
|
+
// Write to system temp directory
|
|
52
|
+
const tempPath = path.join(os.tmpdir(), filename);
|
|
53
|
+
await fs.writeFile(tempPath, content, 'utf-8');
|
|
54
|
+
return tempPath;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error instanceof Error) {
|
|
58
|
+
throw new Error(`Failed to download from URL: ${error.message}`);
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
6
63
|
/**
|
|
7
64
|
* Substitute environment variables in a string.
|
|
8
65
|
*
|
|
@@ -25,16 +82,36 @@ export function substituteEnvVariables(value) {
|
|
|
25
82
|
});
|
|
26
83
|
}
|
|
27
84
|
/**
|
|
28
|
-
* Load and parse JSON configuration file.
|
|
85
|
+
* Load and parse JSON configuration file from local path or URL.
|
|
29
86
|
*
|
|
30
|
-
* @param configPath - Path to JSON file
|
|
31
|
-
* @returns Parsed configuration object
|
|
32
|
-
* @throws Error if file not found or invalid JSON
|
|
87
|
+
* @param configPath - Path to JSON file or HTTP/HTTPS URL
|
|
88
|
+
* @returns Parsed configuration object and cleanup function
|
|
89
|
+
* @throws Error if file not found, download fails, or invalid JSON
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* // Local file
|
|
94
|
+
* const config = await loadJsonConfig('./config.json')
|
|
95
|
+
*
|
|
96
|
+
* // Remote URL
|
|
97
|
+
* const config = await loadJsonConfig('https://example.com/config.json')
|
|
98
|
+
* ```
|
|
33
99
|
*/
|
|
34
100
|
export async function loadJsonConfig(configPath) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
101
|
+
let absolutePath;
|
|
102
|
+
let isTemporary = false;
|
|
103
|
+
// Check if input is a URL
|
|
104
|
+
if (isUrl(configPath)) {
|
|
105
|
+
// Download from URL to temp location
|
|
106
|
+
absolutePath = await downloadFromUrl(configPath);
|
|
107
|
+
isTemporary = true;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Local file path
|
|
111
|
+
absolutePath = path.resolve(configPath);
|
|
112
|
+
if (!(await fs.pathExists(absolutePath))) {
|
|
113
|
+
throw new Error(`Configuration file not found: ${absolutePath}`);
|
|
114
|
+
}
|
|
38
115
|
}
|
|
39
116
|
try {
|
|
40
117
|
const rawConfig = await fs.readJson(absolutePath);
|
|
@@ -43,6 +120,17 @@ export async function loadJsonConfig(configPath) {
|
|
|
43
120
|
catch (error) {
|
|
44
121
|
throw new Error(`Invalid JSON in config file: ${configPath}. ${error instanceof Error ? error.message : error}`);
|
|
45
122
|
}
|
|
123
|
+
finally {
|
|
124
|
+
// Clean up temporary downloaded file
|
|
125
|
+
if (isTemporary) {
|
|
126
|
+
try {
|
|
127
|
+
await fs.remove(absolutePath);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Ignore cleanup errors
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
46
134
|
}
|
|
47
135
|
/**
|
|
48
136
|
* Generate a unique temporary directory path.
|
|
@@ -63,4 +151,106 @@ export function getTempDir(tempDir = '.tmp') {
|
|
|
63
151
|
: path.join(process.cwd(), tempDir);
|
|
64
152
|
return path.join(basePath, `cli-${Date.now()}-${randomId}`);
|
|
65
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Load JSON from inline string, file path, or URL.
|
|
156
|
+
*
|
|
157
|
+
* Supports three input formats:
|
|
158
|
+
* 1. Inline JSON string - parsed directly
|
|
159
|
+
* 2. Local file path - read and parsed
|
|
160
|
+
* 3. HTTP/HTTPS URL - downloaded and parsed
|
|
161
|
+
*
|
|
162
|
+
* Detection priority:
|
|
163
|
+
* 1. URL (http://, https://) → download and parse
|
|
164
|
+
* 2. Existing file path → read and parse
|
|
165
|
+
* 3. Valid JSON string → parse directly
|
|
166
|
+
* 4. Simple string → treat as {name: string} for backward compatibility
|
|
167
|
+
*
|
|
168
|
+
* @param source - JSON string, file path, or URL
|
|
169
|
+
* @param options - Optional configuration
|
|
170
|
+
* @param options.name - Parameter name for error messages (e.g., "event", "config")
|
|
171
|
+
* @param options.required - Throw error if source is empty (default: false)
|
|
172
|
+
* @param options.fallback - Default value if source is empty
|
|
173
|
+
* @returns Parsed JSON object
|
|
174
|
+
* @throws Error if source is required but empty, or if loading/parsing fails
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* // Inline JSON
|
|
179
|
+
* await loadJsonFromSource('{"name":"order complete","data":{}}')
|
|
180
|
+
*
|
|
181
|
+
* // File path
|
|
182
|
+
* await loadJsonFromSource('./examples/event.json')
|
|
183
|
+
*
|
|
184
|
+
* // URL
|
|
185
|
+
* await loadJsonFromSource('https://example.com/event.json')
|
|
186
|
+
*
|
|
187
|
+
* // With options
|
|
188
|
+
* await loadJsonFromSource(input, {
|
|
189
|
+
* name: 'event',
|
|
190
|
+
* required: true,
|
|
191
|
+
* fallback: { name: 'default' }
|
|
192
|
+
* })
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export async function loadJsonFromSource(source, options) {
|
|
196
|
+
const paramName = options?.name || 'input';
|
|
197
|
+
// Handle empty/undefined input
|
|
198
|
+
if (!source || source.trim() === '') {
|
|
199
|
+
if (options?.required) {
|
|
200
|
+
throw new Error(`${paramName} is required`);
|
|
201
|
+
}
|
|
202
|
+
if (options?.fallback !== undefined) {
|
|
203
|
+
return options.fallback;
|
|
204
|
+
}
|
|
205
|
+
return {};
|
|
206
|
+
}
|
|
207
|
+
const trimmedSource = source.trim();
|
|
208
|
+
// 1. Check if URL
|
|
209
|
+
if (isUrl(trimmedSource)) {
|
|
210
|
+
try {
|
|
211
|
+
const tempPath = await downloadFromUrl(trimmedSource);
|
|
212
|
+
try {
|
|
213
|
+
const data = await fs.readJson(tempPath);
|
|
214
|
+
return data;
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
// Clean up temp file
|
|
218
|
+
try {
|
|
219
|
+
await fs.remove(tempPath);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Ignore cleanup errors
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
throw new Error(`Failed to load ${paramName} from URL ${trimmedSource}: ${error instanceof Error ? error.message : String(error)}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// 2. Check if file path exists
|
|
231
|
+
const resolvedPath = path.resolve(trimmedSource);
|
|
232
|
+
if (await fs.pathExists(resolvedPath)) {
|
|
233
|
+
try {
|
|
234
|
+
const data = await fs.readJson(resolvedPath);
|
|
235
|
+
return data;
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
throw new Error(`Failed to parse ${paramName} from file ${trimmedSource}: ${error instanceof Error ? error.message : String(error)}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// 3. Try to parse as inline JSON
|
|
242
|
+
try {
|
|
243
|
+
const parsed = JSON.parse(trimmedSource);
|
|
244
|
+
return parsed;
|
|
245
|
+
}
|
|
246
|
+
catch (jsonError) {
|
|
247
|
+
// 4. Fallback: treat as event name string for backward compatibility
|
|
248
|
+
// This allows simple strings like "page view" to work
|
|
249
|
+
if (!trimmedSource.startsWith('{') && !trimmedSource.startsWith('[')) {
|
|
250
|
+
return { name: trimmedSource };
|
|
251
|
+
}
|
|
252
|
+
// If it looks like JSON but failed to parse, throw helpful error
|
|
253
|
+
throw new Error(`Failed to parse ${paramName}. Input appears to be JSON but contains errors: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
66
256
|
//# 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;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/core/docker.d.ts
CHANGED
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
import type { GlobalOptions } from '../types/global';
|
|
7
7
|
/**
|
|
8
8
|
* Docker image for CLI/build tools (bundle, simulate)
|
|
9
|
+
* Uses explicit version by default, can be overridden with env var
|
|
9
10
|
*/
|
|
10
11
|
export declare const CLI_DOCKER_IMAGE: string;
|
|
11
12
|
/**
|
|
12
13
|
* Docker image for production runtime (run command)
|
|
14
|
+
* Uses explicit version by default, can be overridden with env var
|
|
13
15
|
*/
|
|
14
16
|
export declare const RUNTIME_DOCKER_IMAGE: string;
|
|
15
17
|
/**
|
|
@@ -53,27 +55,29 @@ export declare function imageExists(image?: string): Promise<boolean>;
|
|
|
53
55
|
* Build Docker command for run command (production runtime)
|
|
54
56
|
*
|
|
55
57
|
* @param mode - Run mode (collect | serve)
|
|
56
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
58
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
57
59
|
* @param options - Runtime options
|
|
58
60
|
* @returns Docker command array
|
|
59
61
|
*/
|
|
60
62
|
export declare function buildDockerRunCommand(mode: 'collect' | 'serve', flowPath: string | null, options?: {
|
|
61
63
|
port?: number;
|
|
62
64
|
host?: string;
|
|
63
|
-
|
|
65
|
+
serveName?: string;
|
|
66
|
+
servePath?: string;
|
|
64
67
|
}): string[];
|
|
65
68
|
/**
|
|
66
69
|
* Execute run command in Docker container (production runtime)
|
|
67
70
|
*
|
|
68
71
|
* @param mode - Run mode (collect | serve)
|
|
69
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
72
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
70
73
|
* @param options - Runtime and global options
|
|
71
74
|
* @returns Promise that resolves when command completes
|
|
72
75
|
*/
|
|
73
76
|
export declare function executeRunInDocker(mode: 'collect' | 'serve', flowPath: string | null, options?: {
|
|
74
77
|
port?: number;
|
|
75
78
|
host?: string;
|
|
76
|
-
|
|
79
|
+
serveName?: string;
|
|
80
|
+
servePath?: string;
|
|
77
81
|
silent?: boolean;
|
|
78
82
|
}): Promise<void>;
|
|
79
83
|
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4BrD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAC2C,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAEI,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,YAAY,QAAmB,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,aAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,EAAE,CAiDV;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,aAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS1D;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,GAAE,MAAyB,GAC/B,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,GAAG,OAAO,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,MAAM,EAAE,CA0DV;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,GAAG,OAAO,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/core/docker.js
CHANGED
|
@@ -5,14 +5,41 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { spawn } from 'child_process';
|
|
7
7
|
import path from 'path';
|
|
8
|
+
import { readFileSync } from 'fs';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { VERSION as DOCKER_VERSION } from '@walkeros/docker';
|
|
11
|
+
import { isUrl } from '../config/utils';
|
|
12
|
+
// Read CLI version from own package.json
|
|
13
|
+
// Handle both development (src/) and production (dist/) paths
|
|
14
|
+
function readPackageVersion() {
|
|
15
|
+
// Get the directory of this module (ESM-compatible)
|
|
16
|
+
const moduleFilename = fileURLToPath(import.meta.url);
|
|
17
|
+
const moduleDir = path.dirname(moduleFilename);
|
|
18
|
+
// Try production path first (dist/index.js -> ../package.json)
|
|
19
|
+
const prodPath = path.join(moduleDir, '../package.json');
|
|
20
|
+
try {
|
|
21
|
+
const pkg = JSON.parse(readFileSync(prodPath, 'utf-8'));
|
|
22
|
+
return pkg.version;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Fall back to development path (src/core/docker.ts -> ../../package.json)
|
|
26
|
+
const devPath = path.join(moduleDir, '../../package.json');
|
|
27
|
+
const pkg = JSON.parse(readFileSync(devPath, 'utf-8'));
|
|
28
|
+
return pkg.version;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const CLI_VERSION = readPackageVersion();
|
|
8
32
|
/**
|
|
9
33
|
* Docker image for CLI/build tools (bundle, simulate)
|
|
34
|
+
* Uses explicit version by default, can be overridden with env var
|
|
10
35
|
*/
|
|
11
|
-
export const CLI_DOCKER_IMAGE = process.env.WALKEROS_CLI_DOCKER_IMAGE ||
|
|
36
|
+
export const CLI_DOCKER_IMAGE = process.env.WALKEROS_CLI_DOCKER_IMAGE || `walkeros/cli:${CLI_VERSION}`;
|
|
12
37
|
/**
|
|
13
38
|
* Docker image for production runtime (run command)
|
|
39
|
+
* Uses explicit version by default, can be overridden with env var
|
|
14
40
|
*/
|
|
15
|
-
export const RUNTIME_DOCKER_IMAGE = process.env.WALKEROS_RUNTIME_DOCKER_IMAGE ||
|
|
41
|
+
export const RUNTIME_DOCKER_IMAGE = process.env.WALKEROS_RUNTIME_DOCKER_IMAGE ||
|
|
42
|
+
`walkeros/docker:${DOCKER_VERSION}`;
|
|
16
43
|
/**
|
|
17
44
|
* @deprecated Use CLI_DOCKER_IMAGE or RUNTIME_DOCKER_IMAGE instead
|
|
18
45
|
*/
|
|
@@ -29,14 +56,15 @@ export const DOCKER_IMAGE = CLI_DOCKER_IMAGE;
|
|
|
29
56
|
export function buildDockerCommand(command, args, options = {}, configFile) {
|
|
30
57
|
const cwd = process.cwd();
|
|
31
58
|
const cmd = ['docker', 'run', '--rm'];
|
|
32
|
-
// Mount config file if provided
|
|
33
|
-
if (configFile) {
|
|
59
|
+
// Mount config file if provided (only for local files, not URLs)
|
|
60
|
+
if (configFile && !isUrl(configFile)) {
|
|
34
61
|
const configPath = path.resolve(cwd, configFile);
|
|
35
62
|
// Mount config file at /config/flow.json (read-only, separate from workspace)
|
|
36
63
|
cmd.push('-v', `${configPath}:/config/flow.json:ro`);
|
|
37
64
|
// Update args to use container path - replace first occurrence of config file path
|
|
38
65
|
args = args.map((arg) => (arg === configFile ? '/config/flow.json' : arg));
|
|
39
66
|
}
|
|
67
|
+
// For URLs, pass them through as-is - container will download them
|
|
40
68
|
// Mount current directory for output files
|
|
41
69
|
cmd.push('-v', `${cwd}:/workspace`);
|
|
42
70
|
cmd.push('-w', '/workspace');
|
|
@@ -132,7 +160,7 @@ export async function imageExists(image = CLI_DOCKER_IMAGE) {
|
|
|
132
160
|
* Build Docker command for run command (production runtime)
|
|
133
161
|
*
|
|
134
162
|
* @param mode - Run mode (collect | serve)
|
|
135
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
163
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
136
164
|
* @param options - Runtime options
|
|
137
165
|
* @returns Docker command array
|
|
138
166
|
*/
|
|
@@ -147,20 +175,27 @@ export function buildDockerRunCommand(mode, flowPath, options = {}) {
|
|
|
147
175
|
cmd.push('-v', `${absoluteFlowPath}:/app/flow.mjs:ro`);
|
|
148
176
|
cmd.push('-e', 'FLOW=/app/flow.mjs');
|
|
149
177
|
}
|
|
150
|
-
//
|
|
151
|
-
if (
|
|
152
|
-
|
|
153
|
-
cmd.push('-
|
|
178
|
+
// Mount custom file for serve mode
|
|
179
|
+
if (mode === 'serve' && flowPath) {
|
|
180
|
+
const absoluteFilePath = path.resolve(cwd, flowPath);
|
|
181
|
+
cmd.push('-v', `${absoluteFilePath}:/app/bundle.mjs:ro`);
|
|
182
|
+
cmd.push('-e', 'FILE_PATH=/app/bundle.mjs');
|
|
154
183
|
}
|
|
184
|
+
// Port mapping - always map port for serve mode, use default if not specified
|
|
185
|
+
const port = options.port !== undefined ? options.port : 8080;
|
|
186
|
+
cmd.push('-p', `${port}:${port}`);
|
|
187
|
+
cmd.push('-e', `PORT=${port}`);
|
|
155
188
|
// Host
|
|
156
189
|
if (options.host) {
|
|
157
190
|
cmd.push('-e', `HOST=${options.host}`);
|
|
158
191
|
}
|
|
159
|
-
//
|
|
160
|
-
if (
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
192
|
+
// Serve name (filename in URL)
|
|
193
|
+
if (options.serveName) {
|
|
194
|
+
cmd.push('-e', `SERVE_NAME=${options.serveName}`);
|
|
195
|
+
}
|
|
196
|
+
// Serve path (URL directory path)
|
|
197
|
+
if (options.servePath) {
|
|
198
|
+
cmd.push('-e', `SERVE_PATH=${options.servePath}`);
|
|
164
199
|
}
|
|
165
200
|
// Add user mapping on Linux/Mac to prevent permission issues
|
|
166
201
|
if (process.platform !== 'win32') {
|
|
@@ -183,7 +218,7 @@ export function buildDockerRunCommand(mode, flowPath, options = {}) {
|
|
|
183
218
|
* Execute run command in Docker container (production runtime)
|
|
184
219
|
*
|
|
185
220
|
* @param mode - Run mode (collect | serve)
|
|
186
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
221
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
187
222
|
* @param options - Runtime and global options
|
|
188
223
|
* @returns Promise that resolves when command completes
|
|
189
224
|
*/
|
package/dist/core/docker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"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"}
|