@walkeros/cli 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +112 -42
  3. package/dist/__tests__/bundle/bundler-helpers.test.d.ts +2 -0
  4. package/dist/__tests__/bundle/bundler-helpers.test.d.ts.map +1 -0
  5. package/dist/__tests__/bundle/bundler-helpers.test.js +285 -0
  6. package/dist/__tests__/bundle/bundler-helpers.test.js.map +1 -0
  7. package/dist/__tests__/bundle/bundler.test.js +176 -166
  8. package/dist/__tests__/bundle/bundler.test.js.map +1 -1
  9. package/dist/__tests__/bundle/programmatic.test.js +77 -54
  10. package/dist/__tests__/bundle/programmatic.test.js.map +1 -1
  11. package/dist/__tests__/bundle/serializer.test.js +1 -1
  12. package/dist/__tests__/bundle/serializer.test.js.map +1 -1
  13. package/dist/__tests__/bundle/template-engine.test.js +1 -1
  14. package/dist/__tests__/bundle/template-engine.test.js.map +1 -1
  15. package/dist/__tests__/cli-e2e.test.js +1 -1
  16. package/dist/__tests__/cli-e2e.test.js.map +1 -1
  17. package/dist/__tests__/cli.test.js +60 -117
  18. package/dist/__tests__/cli.test.js.map +1 -1
  19. package/dist/__tests__/config-loader.test.d.ts +1 -1
  20. package/dist/__tests__/config-loader.test.js +234 -212
  21. package/dist/__tests__/config-loader.test.js.map +1 -1
  22. package/dist/__tests__/core/build-cache.test.d.ts +2 -0
  23. package/dist/__tests__/core/build-cache.test.d.ts.map +1 -0
  24. package/dist/__tests__/core/build-cache.test.js +55 -0
  25. package/dist/__tests__/core/build-cache.test.js.map +1 -0
  26. package/dist/__tests__/core/cache-utils.test.d.ts +2 -0
  27. package/dist/__tests__/core/cache-utils.test.d.ts.map +1 -0
  28. package/dist/__tests__/core/cache-utils.test.js +70 -0
  29. package/dist/__tests__/core/cache-utils.test.js.map +1 -0
  30. package/dist/__tests__/core/config.test.js +1 -1
  31. package/dist/__tests__/core/config.test.js.map +1 -1
  32. package/dist/__tests__/core/logger.test.js +1 -1
  33. package/dist/__tests__/core/logger.test.js.map +1 -1
  34. package/dist/__tests__/integration/bundle-run.integration.test.d.ts +8 -0
  35. package/dist/__tests__/integration/bundle-run.integration.test.d.ts.map +1 -0
  36. package/dist/__tests__/integration/bundle-run.integration.test.js +54 -0
  37. package/dist/__tests__/integration/bundle-run.integration.test.js.map +1 -0
  38. package/dist/__tests__/push/push.test.d.ts +7 -0
  39. package/dist/__tests__/push/push.test.d.ts.map +1 -0
  40. package/dist/__tests__/push/push.test.js +197 -0
  41. package/dist/__tests__/push/push.test.js.map +1 -0
  42. package/dist/__tests__/simulate/env-loader.test.d.ts +2 -0
  43. package/dist/__tests__/simulate/env-loader.test.d.ts.map +1 -0
  44. package/dist/__tests__/simulate/env-loader.test.js +47 -0
  45. package/dist/__tests__/simulate/env-loader.test.js.map +1 -0
  46. package/dist/__tests__/simulate/node-executor.test.d.ts +5 -0
  47. package/dist/__tests__/simulate/node-executor.test.d.ts.map +1 -0
  48. package/dist/__tests__/simulate/node-executor.test.js +25 -0
  49. package/dist/__tests__/simulate/node-executor.test.js.map +1 -0
  50. package/dist/__tests__/simulate/server-simulate.integration.test.d.ts +5 -0
  51. package/dist/__tests__/simulate/server-simulate.integration.test.d.ts.map +1 -0
  52. package/dist/__tests__/simulate/server-simulate.integration.test.js +59 -0
  53. package/dist/__tests__/simulate/server-simulate.integration.test.js.map +1 -0
  54. package/dist/__tests__/smoke/production.smoke.test.d.ts +8 -0
  55. package/dist/__tests__/smoke/production.smoke.test.d.ts.map +1 -0
  56. package/dist/__tests__/smoke/production.smoke.test.js +65 -0
  57. package/dist/__tests__/smoke/production.smoke.test.js.map +1 -0
  58. package/dist/commands/bundle/bundler.d.ts +2 -2
  59. package/dist/commands/bundle/bundler.d.ts.map +1 -1
  60. package/dist/commands/bundle/bundler.js +156 -54
  61. package/dist/commands/bundle/bundler.js.map +1 -1
  62. package/dist/commands/bundle/index.d.ts +17 -11
  63. package/dist/commands/bundle/index.d.ts.map +1 -1
  64. package/dist/commands/bundle/index.js +53 -53
  65. package/dist/commands/bundle/index.js.map +1 -1
  66. package/dist/commands/bundle/package-manager.d.ts +3 -2
  67. package/dist/commands/bundle/package-manager.d.ts.map +1 -1
  68. package/dist/commands/bundle/package-manager.js +34 -7
  69. package/dist/commands/bundle/package-manager.js.map +1 -1
  70. package/dist/commands/bundle/serializer.d.ts +1 -1
  71. package/dist/commands/bundle/serializer.d.ts.map +1 -1
  72. package/dist/commands/bundle/serializer.js +1 -1
  73. package/dist/commands/bundle/serializer.js.map +1 -1
  74. package/dist/commands/bundle/stats.d.ts +2 -2
  75. package/dist/commands/bundle/stats.d.ts.map +1 -1
  76. package/dist/commands/bundle/stats.js +1 -1
  77. package/dist/commands/bundle/stats.js.map +1 -1
  78. package/dist/commands/bundle/template-engine.d.ts +1 -1
  79. package/dist/commands/bundle/template-engine.d.ts.map +1 -1
  80. package/dist/commands/bundle/template-engine.js +2 -2
  81. package/dist/commands/bundle/template-engine.js.map +1 -1
  82. package/dist/commands/cache.d.ts +3 -0
  83. package/dist/commands/cache.d.ts.map +1 -0
  84. package/dist/commands/cache.js +44 -0
  85. package/dist/commands/cache.js.map +1 -0
  86. package/dist/commands/push/index.d.ts +7 -0
  87. package/dist/commands/push/index.d.ts.map +1 -0
  88. package/dist/commands/push/index.js +257 -0
  89. package/dist/commands/push/index.js.map +1 -0
  90. package/dist/commands/push/types.d.ts +21 -0
  91. package/dist/commands/push/types.d.ts.map +1 -0
  92. package/dist/commands/push/types.js +2 -0
  93. package/dist/commands/push/types.js.map +1 -0
  94. package/dist/commands/run/__tests__/run.integration.test.js +15 -16
  95. package/dist/commands/run/__tests__/run.integration.test.js.map +1 -1
  96. package/dist/commands/run/__tests__/validators.test.js +1 -1
  97. package/dist/commands/run/__tests__/validators.test.js.map +1 -1
  98. package/dist/commands/run/execution.d.ts +14 -0
  99. package/dist/commands/run/execution.d.ts.map +1 -0
  100. package/dist/commands/run/execution.js +37 -0
  101. package/dist/commands/run/execution.js.map +1 -0
  102. package/dist/commands/run/index.d.ts +1 -1
  103. package/dist/commands/run/index.d.ts.map +1 -1
  104. package/dist/commands/run/index.js +33 -107
  105. package/dist/commands/run/index.js.map +1 -1
  106. package/dist/commands/run/types.d.ts +1 -1
  107. package/dist/commands/run/types.d.ts.map +1 -1
  108. package/dist/commands/run/utils.d.ts +29 -0
  109. package/dist/commands/run/utils.d.ts.map +1 -0
  110. package/dist/commands/run/utils.js +52 -0
  111. package/dist/commands/run/utils.js.map +1 -0
  112. package/dist/commands/run/validators.d.ts +9 -5
  113. package/dist/commands/run/validators.d.ts.map +1 -1
  114. package/dist/commands/run/validators.js +15 -12
  115. package/dist/commands/run/validators.js.map +1 -1
  116. package/dist/commands/simulate/env-loader.d.ts +19 -0
  117. package/dist/commands/simulate/env-loader.d.ts.map +1 -0
  118. package/dist/commands/simulate/env-loader.js +46 -0
  119. package/dist/commands/simulate/env-loader.js.map +1 -0
  120. package/dist/commands/simulate/index.d.ts +4 -3
  121. package/dist/commands/simulate/index.d.ts.map +1 -1
  122. package/dist/commands/simulate/index.js +11 -19
  123. package/dist/commands/simulate/index.js.map +1 -1
  124. package/dist/commands/simulate/jsdom-executor.d.ts +13 -8
  125. package/dist/commands/simulate/jsdom-executor.d.ts.map +1 -1
  126. package/dist/commands/simulate/jsdom-executor.js +26 -49
  127. package/dist/commands/simulate/jsdom-executor.js.map +1 -1
  128. package/dist/commands/simulate/node-executor.d.ts +28 -0
  129. package/dist/commands/simulate/node-executor.d.ts.map +1 -0
  130. package/dist/commands/simulate/node-executor.js +94 -0
  131. package/dist/commands/simulate/node-executor.js.map +1 -0
  132. package/dist/commands/simulate/simulator.d.ts +1 -1
  133. package/dist/commands/simulate/simulator.d.ts.map +1 -1
  134. package/dist/commands/simulate/simulator.js +44 -36
  135. package/dist/commands/simulate/simulator.js.map +1 -1
  136. package/dist/commands/simulate/types.d.ts +2 -2
  137. package/dist/commands/simulate/types.d.ts.map +1 -1
  138. package/dist/config/build-defaults.d.ts +49 -0
  139. package/dist/config/build-defaults.d.ts.map +1 -0
  140. package/dist/config/build-defaults.js +72 -0
  141. package/dist/config/build-defaults.js.map +1 -0
  142. package/dist/config/index.d.ts +8 -9
  143. package/dist/config/index.d.ts.map +1 -1
  144. package/dist/config/index.js +7 -8
  145. package/dist/config/index.js.map +1 -1
  146. package/dist/config/loader.d.ts +35 -28
  147. package/dist/config/loader.d.ts.map +1 -1
  148. package/dist/config/loader.js +108 -89
  149. package/dist/config/loader.js.map +1 -1
  150. package/dist/config/utils.d.ts.map +1 -1
  151. package/dist/config/utils.js +3 -2
  152. package/dist/config/utils.js.map +1 -1
  153. package/dist/config/validators.d.ts +36 -7
  154. package/dist/config/validators.d.ts.map +1 -1
  155. package/dist/config/validators.js +61 -21
  156. package/dist/config/validators.js.map +1 -1
  157. package/dist/core/asset-resolver.d.ts +8 -15
  158. package/dist/core/asset-resolver.d.ts.map +1 -1
  159. package/dist/core/asset-resolver.js +30 -30
  160. package/dist/core/asset-resolver.js.map +1 -1
  161. package/dist/core/build-cache.d.ts +23 -0
  162. package/dist/core/build-cache.d.ts.map +1 -0
  163. package/dist/core/build-cache.js +43 -0
  164. package/dist/core/build-cache.js.map +1 -0
  165. package/dist/core/cache-utils.d.ts +27 -0
  166. package/dist/core/cache-utils.d.ts.map +1 -0
  167. package/dist/core/cache-utils.js +60 -0
  168. package/dist/core/cache-utils.js.map +1 -0
  169. package/dist/core/docker.d.ts +17 -1
  170. package/dist/core/docker.d.ts.map +1 -1
  171. package/dist/core/docker.js +30 -26
  172. package/dist/core/docker.js.map +1 -1
  173. package/dist/core/execution.d.ts +2 -2
  174. package/dist/core/execution.d.ts.map +1 -1
  175. package/dist/core/execution.js +1 -1
  176. package/dist/core/execution.js.map +1 -1
  177. package/dist/core/index.d.ts +9 -6
  178. package/dist/core/index.d.ts.map +1 -1
  179. package/dist/core/index.js +9 -6
  180. package/dist/core/index.js.map +1 -1
  181. package/dist/core/local-packages.d.ts +19 -0
  182. package/dist/core/local-packages.d.ts.map +1 -0
  183. package/dist/core/local-packages.js +60 -0
  184. package/dist/core/local-packages.js.map +1 -0
  185. package/dist/core/logger.d.ts +11 -0
  186. package/dist/core/logger.d.ts.map +1 -1
  187. package/dist/core/logger.js +14 -0
  188. package/dist/core/logger.js.map +1 -1
  189. package/dist/core/temp-manager.d.ts +51 -0
  190. package/dist/core/temp-manager.d.ts.map +1 -0
  191. package/dist/core/temp-manager.js +73 -0
  192. package/dist/core/temp-manager.js.map +1 -0
  193. package/dist/core/utils.d.ts +10 -0
  194. package/dist/core/utils.d.ts.map +1 -0
  195. package/dist/core/utils.js +12 -0
  196. package/dist/core/utils.js.map +1 -0
  197. package/dist/examples/.npm-cache/content-v2/sha512/0d/2d/7581c288670eaf8538ddd9df145b78756ce3be0791c6e0b9cd33429b3bae894525b9bda287a3cedffbcdd2c7b3107bafc03f2b0367eea489eee1cc042abb +1 -0
  198. package/dist/examples/.npm-cache/content-v2/sha512/12/20/bc4f5acca143809f7e07da1fdafb38137d93243de4d5b403e6e10b92d0d3a6e51eab24fe9dbc9d3ed1cd72e8f7a406085e99c422bb2c7d1166cf9f1f564e +0 -0
  199. package/dist/examples/.npm-cache/content-v2/sha512/22/ee/fb2695b01871c1d36946bdcfb49f1b520a57200d0a0b221b1e7d5f047ab38a8b2ab0e5f0e25a00acde1f3f2f9d24430a18f1092d438bc1a9e9891cc45f75 +0 -0
  200. package/dist/examples/.npm-cache/content-v2/sha512/24/89/da1ce6a61bca6de7e132f241a675c01c83738bf6b78af25b5cce01d3030361332b3fe938571e2b721f1555da9ddf930fdcf8c02f0471556071590e68cc09 +0 -0
  201. package/dist/examples/.npm-cache/content-v2/sha512/47/fd/c6be997da99228c3e279b95d4a46d6913947078a178f54ac71795a159f3513b1483232f4c2d0a1f403178bf9f96bb19615de32a9e2133e949880c6bc15e2 +0 -0
  202. package/dist/examples/.npm-cache/content-v2/sha512/4b/1c/c1cb7f8b32102071a89fef97158daa32080ebaedfbbd596880d2213d84e305abc76d2a95a412ded55c1c3d487adcb1ceff87fc2c85d7e2856ebd9d3f16f3 +0 -0
  203. package/dist/examples/.npm-cache/content-v2/sha512/6e/53/ff864769671f44f39d8a3bf904cd646535b745cc4824a8bb3189193b474678049f43b5178ba15cad7f0289046105e70f1565afc84e907120b35a466690fd +1 -0
  204. package/dist/examples/.npm-cache/content-v2/sha512/70/4c/4c8837d446965c5551b4ea527e95fa011744fb727581d82cf35bb5599ea0b57d18baa490f7af93ef9a16e8e45e5c0802737da20575f4056a4a5c9a3cd288 +0 -0
  205. package/dist/examples/.npm-cache/content-v2/sha512/96/ad/05de3bbb12d7de8ea353f962bdaea7d2eb44f707f2973462a6635daf537c67b46cca7764fed7d464fe62152c3f783a07aba1ceb35e09ad446bff05a4b466 +1 -0
  206. package/dist/examples/.npm-cache/content-v2/sha512/b5/20/52dde94e6cef7170f6089c64a4843e57be18be450d956f4e455905aed047ae6a368451c93035e6ac3ee59576b600f03f815afba0836b3a16e10a9aaca4ba +1 -0
  207. package/dist/examples/.npm-cache/content-v2/sha512/c7/a9/d166a1c39f97df312c59261319ba1cf9aac178bda0a0cb697d5ddd78bd8dd38ef1bf40017bcc8633c2049896c2d70696d9bff9280851f270792ff38bb3a0 +1 -0
  208. package/dist/examples/.npm-cache/content-v2/sha512/e0/d0/8c14083b633e6adbd3c6a93da5fc0f6bbd456c5512ef276920bedd8d85d551052adff992de977aff326616a211aaa2d6ddcc801149e9b7f914f566359b6a +1 -0
  209. package/dist/examples/.npm-cache/content-v2/sha512/e7/c5/06ad3fd79ac4f1031fe0b16ea5e54e232ca397bbcd7592c679021cbfb027276099f8c848f3f7a7691f0102ad53aa64f9141e61d729b037a678bd60440d17 +1 -0
  210. package/dist/examples/.npm-cache/content-v2/sha512/f3/28/d5d32329604ed7d471a4949105daa2cc98858cf24f45b0b97c41d0eb0d5a9fe7bf1f69c792161cc6693e4fc1b52e886ac41875ebfb8fe47fafe417ca3e6e +0 -0
  211. package/dist/examples/.npm-cache/index-v5/04/5a/2b5d7a7c407d85d746baa0f5c9388a333e35a717a8a0a81943daa6cb1364 +3 -0
  212. package/dist/examples/.npm-cache/index-v5/12/9a/eba560cbace295d8ee04cf283015377bd77b379e70968fb6bc407c7fc410 +15 -0
  213. package/dist/examples/.npm-cache/index-v5/2f/a2/7b047564b0ee21ac835ec609e89153dd6549be554d098584d5bfd19fe043 +15 -0
  214. package/dist/examples/.npm-cache/index-v5/32/8e/322d58dd8d1e000be248ada51385bf96288e56039de9feec1a4c6a467653 +3 -0
  215. package/dist/examples/.npm-cache/index-v5/57/93/d1d7cd1402e3e26468db03f2870822bb2c9018a506cdfb3b405f38cd3e1c +3 -0
  216. package/dist/examples/.npm-cache/index-v5/5d/f8/0a1f4fa7149e4ff33e09eb6aea41ac8d1730c868a5d3ace91f762698acff +3 -0
  217. package/dist/examples/.npm-cache/index-v5/69/a4/a92c72d838259b051cdf8e0acfb2bc680b6d4cfc642314a7836c3f7b2c50 +15 -0
  218. package/dist/examples/.npm-cache/index-v5/71/31/6da3423bb203f3de5eb16c942431073f89be2cfcb40058ec91dcb5ce0abc +15 -0
  219. package/dist/examples/.npm-cache/index-v5/7b/94/72b6bffa050d9ef52a558dd220663695bc606f756be0dfa196ef4f3913ba +3 -0
  220. package/dist/examples/.npm-cache/index-v5/85/9e/99e97fdd562517e56285337db91d1a8f2f416b8d631cf4d7d754fa671299 +15 -0
  221. package/dist/examples/.npm-cache/index-v5/92/4c/9416ada81a9b3c679539fd1ab53f8de3d41ff268f35eba7a194389a85b06 +3 -0
  222. package/dist/examples/.npm-cache/index-v5/c1/5a/13df76b218deed8a6ef12961116af5183db98c53fad1b922fd9edc075247 +3 -0
  223. package/dist/examples/.npm-cache/index-v5/cb/11/253c55410a8ab7c4a9ea9d6e1bf8ef1450a581da64c478074dfd82c8bff6 +3 -0
  224. package/dist/examples/.npm-cache/index-v5/d5/ae/b57fad3a62b5ba2dbdf24b042a9e7b70820f3db00e5a630f02e1fea020dc +3 -0
  225. package/dist/examples/.npm-cache/index-v5/d6/32/2f620f83c7d14451de98de8298c2408e05a16cc0829bd16c891ac19d7a67 +3 -0
  226. package/dist/examples/.npm-cache/index-v5/dd/b5/01dc7a3cd8b6a03a69aee9af500d51ae19cb0aa12631a4aafd152148b8e5 +15 -0
  227. package/dist/examples/.npm-cache/index-v5/e0/cf/6b862c15d74630d3871cd813d305210ab741311deb10baf8813014e0bc30 +3 -0
  228. package/dist/examples/.npm-cache/index-v5/e2/be/e880ccd35950a814d3c1dded34d3938ac61b15a195321dc51357f801aad4 +15 -0
  229. package/dist/examples/.npm-cache/index-v5/e5/1f/f4affe0b392cd03288f23cc03abcb274ff11a2c8f8965299de681914abb2 +3 -0
  230. package/dist/examples/.npm-cache/index-v5/f3/5b/9ebe450958ff0d7cc44ab0a00080cb8a3ff1389744b5eab5f97b68a6a6af +3 -0
  231. package/dist/examples/.npm-cache/index-v5/fb/c1/0de405e902866d53e7c30cf36a97dc2578838622b261816f44dc377c9a80 +3 -0
  232. package/dist/examples/README.md +343 -0
  233. package/dist/examples/event.json +53 -0
  234. package/dist/examples/flow-order-complete.json +68 -0
  235. package/dist/examples/flow-simple.json +32 -0
  236. package/dist/examples/flow.json +82 -0
  237. package/dist/examples/server-collect.json +60 -0
  238. package/dist/examples/server-collect.mjs +13540 -0
  239. package/dist/examples/test.html +43 -0
  240. package/dist/examples/web-serve.js +25503 -0
  241. package/dist/examples/web-serve.json +74 -0
  242. package/dist/index.d.ts +98 -200
  243. package/dist/index.d.ts.map +1 -1
  244. package/dist/index.js +2783 -120
  245. package/dist/index.js.map +1 -1
  246. package/dist/schemas/index.d.ts +9 -0
  247. package/dist/schemas/index.d.ts.map +1 -0
  248. package/dist/schemas/index.js +9 -0
  249. package/dist/schemas/index.js.map +1 -0
  250. package/dist/schemas/primitives.d.ts +37 -0
  251. package/dist/schemas/primitives.d.ts.map +1 -0
  252. package/dist/schemas/primitives.js +43 -0
  253. package/dist/schemas/primitives.js.map +1 -0
  254. package/dist/schemas/run.d.ts +23 -0
  255. package/dist/schemas/run.d.ts.map +1 -0
  256. package/dist/schemas/run.js +20 -0
  257. package/dist/schemas/run.js.map +1 -0
  258. package/dist/templates/server.hbs +29 -0
  259. package/dist/templates/web.hbs +45 -0
  260. package/dist/types/bundle.d.ts +68 -190
  261. package/dist/types/bundle.d.ts.map +1 -1
  262. package/dist/types/bundle.js +2 -2
  263. package/dist/types/index.d.ts +2 -2
  264. package/dist/types/index.d.ts.map +1 -1
  265. package/dist/types/index.js +2 -2
  266. package/dist/types/index.js.map +1 -1
  267. package/dist/walker.js +1 -0
  268. package/examples/README.md +42 -29
  269. package/examples/event.json +1 -1
  270. package/examples/flow-order-complete.json +57 -57
  271. package/examples/flow-simple.json +25 -25
  272. package/examples/flow.json +69 -69
  273. package/examples/server-collect.json +51 -44
  274. package/examples/server-collect.mjs +1360 -1190
  275. package/examples/web-serve.js +25469 -11
  276. package/examples/web-serve.json +62 -63
  277. package/package.json +3 -2
  278. package/dist/__tests__/bundle/bundler-integration.test.d.ts +0 -2
  279. package/dist/__tests__/bundle/bundler-integration.test.d.ts.map +0 -1
  280. package/dist/__tests__/bundle/bundler-integration.test.js +0 -106
  281. package/dist/__tests__/bundle/bundler-integration.test.js.map +0 -1
  282. package/dist/__tests__/simulate/programmatic.test.d.ts +0 -2
  283. package/dist/__tests__/simulate/programmatic.test.d.ts.map +0 -1
  284. package/dist/__tests__/simulate/programmatic.test.js +0 -51
  285. package/dist/__tests__/simulate/programmatic.test.js.map +0 -1
  286. package/dist/__tests__/simulate/simulator.test.d.ts +0 -2
  287. package/dist/__tests__/simulate/simulator.test.d.ts.map +0 -1
  288. package/dist/__tests__/simulate/simulator.test.js +0 -29
  289. package/dist/__tests__/simulate/simulator.test.js.map +0 -1
  290. package/dist/config/defaults.d.ts +0 -33
  291. package/dist/config/defaults.d.ts.map +0 -1
  292. package/dist/config/defaults.js +0 -69
  293. package/dist/config/defaults.js.map +0 -1
  294. package/dist/config/parser.d.ts +0 -64
  295. package/dist/config/parser.d.ts.map +0 -1
  296. package/dist/config/parser.js +0 -151
  297. package/dist/config/parser.js.map +0 -1
@@ -1,55 +1,55 @@
1
1
  /**
2
2
  * Config Loader Tests
3
3
  *
4
- * Tests for multi-environment configuration loading.
4
+ * Tests for Flow.Setup configuration loading with the new format.
5
5
  */
6
- import { loadBundleConfig, loadAllEnvironments, getAvailableEnvironments, } from '../config';
6
+ import { loadBundleConfig, loadAllFlows, getAvailableFlows, } from '../config/index.js';
7
7
  describe('Config Loader', () => {
8
8
  // ========================================
9
- // Single Environment Tests
9
+ // Single Flow (Flow.Setup with one flow)
10
10
  // ========================================
11
- describe('Single Environment Config', () => {
12
- test('loads single-environment config successfully', () => {
11
+ describe('Single Flow (Flow.Setup)', () => {
12
+ test('loads Flow.Setup with single flow automatically', () => {
13
13
  const config = {
14
- flow: {
15
- platform: 'web',
16
- sources: {
17
- browser: {
18
- package: '@walkeros/web-source-browser',
14
+ version: 1,
15
+ flows: {
16
+ default: {
17
+ web: {},
18
+ packages: {
19
+ '@walkeros/core': { imports: ['getId'] },
19
20
  },
20
- },
21
- destinations: {
22
- gtag: {
23
- package: '@walkeros/web-destination-gtag',
24
- config: {
25
- settings: { ga4: { measurementId: 'G-123' } },
21
+ sources: {
22
+ browser: {
23
+ package: '@walkeros/web-source-browser',
24
+ },
25
+ },
26
+ destinations: {
27
+ gtag: {
28
+ package: '@walkeros/web-destination-gtag',
29
+ config: {
30
+ settings: { ga4: { measurementId: 'G-123' } },
31
+ },
26
32
  },
27
33
  },
28
34
  },
29
35
  },
30
- build: {
31
- packages: {},
32
- code: 'export {};',
33
- output: './dist/test.js',
34
- },
35
36
  };
36
37
  const result = loadBundleConfig(config, {
37
38
  configPath: '/test/config.json',
38
39
  });
39
- expect(result.environment).toBe('default');
40
- expect(result.isMultiEnvironment).toBe(false);
41
- expect(result.flowConfig.platform).toBe('web');
40
+ expect(result.flowName).toBe('default');
41
+ expect(result.isMultiFlow).toBe(false);
42
+ expect(result.flowConfig.web).toBeDefined();
42
43
  expect(result.flowConfig.sources).toBeDefined();
43
44
  });
44
45
  test('applies platform-specific defaults for web', () => {
45
46
  const config = {
46
- flow: {
47
- platform: 'web',
48
- },
49
- build: {
50
- packages: {},
51
- code: 'export {};',
52
- output: '',
47
+ version: 1,
48
+ flows: {
49
+ default: {
50
+ web: {},
51
+ packages: {},
52
+ },
53
53
  },
54
54
  };
55
55
  const result = loadBundleConfig(config, {
@@ -58,17 +58,19 @@ describe('Config Loader', () => {
58
58
  expect(result.buildOptions.platform).toBe('browser');
59
59
  expect(result.buildOptions.format).toBe('iife');
60
60
  expect(result.buildOptions.target).toBe('es2020');
61
- expect(result.buildOptions.output).toBe('./dist/walker.js');
61
+ expect(result.buildOptions.minify).toBe(true);
62
+ expect(result.buildOptions.template).toBe('web.hbs');
63
+ // Output path is resolved relative to config file directory
64
+ expect(result.buildOptions.output).toBe('/test/dist/walker.js');
62
65
  });
63
66
  test('applies platform-specific defaults for server', () => {
64
67
  const config = {
65
- flow: {
66
- platform: 'server',
67
- },
68
- build: {
69
- packages: {},
70
- code: 'export {};',
71
- output: '',
68
+ version: 1,
69
+ flows: {
70
+ default: {
71
+ server: {},
72
+ packages: {},
73
+ },
72
74
  },
73
75
  };
74
76
  const result = loadBundleConfig(config, {
@@ -77,265 +79,266 @@ describe('Config Loader', () => {
77
79
  expect(result.buildOptions.platform).toBe('node');
78
80
  expect(result.buildOptions.format).toBe('esm');
79
81
  expect(result.buildOptions.target).toBe('node20');
80
- expect(result.buildOptions.output).toBe('./dist/bundle.js');
82
+ expect(result.buildOptions.minify).toBe(true);
83
+ expect(result.buildOptions.template).toBe('server.hbs');
84
+ // Output path is resolved relative to config file directory
85
+ expect(result.buildOptions.output).toBe('/test/dist/bundle.mjs');
81
86
  });
82
- test('merges custom build options with defaults', () => {
87
+ test('extracts packages from flowConfig', () => {
83
88
  const config = {
84
- flow: {
85
- platform: 'web',
86
- },
87
- build: {
88
- packages: {},
89
- code: 'export {};',
90
- output: '',
91
- minify: true,
92
- format: 'esm',
89
+ version: 1,
90
+ flows: {
91
+ default: {
92
+ web: {},
93
+ packages: {
94
+ '@walkeros/core': { imports: ['getId', 'clone'] },
95
+ '@walkeros/destination-demo': { imports: ['destinationDemo'] },
96
+ },
97
+ },
93
98
  },
94
99
  };
95
100
  const result = loadBundleConfig(config, {
96
101
  configPath: '/test/config.json',
97
102
  });
98
- expect(result.buildOptions.minify).toBe(true);
99
- expect(result.buildOptions.format).toBe('esm'); // Custom overrides default
100
- expect(result.buildOptions.target).toBe('es2020'); // Default preserved
103
+ expect(result.buildOptions.packages).toEqual({
104
+ '@walkeros/core': { imports: ['getId', 'clone'] },
105
+ '@walkeros/destination-demo': { imports: ['destinationDemo'] },
106
+ });
101
107
  });
102
- test('auto-selects templates based on platform', () => {
108
+ test('respects build overrides from CLI', () => {
103
109
  const config = {
104
- flow: {
105
- platform: 'web',
106
- },
107
- build: {
108
- packages: {},
109
- code: 'export {};',
110
- output: '',
110
+ version: 1,
111
+ flows: {
112
+ default: {
113
+ web: {},
114
+ packages: {},
115
+ },
111
116
  },
112
117
  };
113
118
  const result = loadBundleConfig(config, {
114
119
  configPath: '/test/config.json',
120
+ buildOverrides: {
121
+ minify: false,
122
+ output: '/custom/output.js',
123
+ },
115
124
  });
116
- // Should auto-select web.hbs for web platform
117
- expect(result.buildOptions.template).toBe('web.hbs');
125
+ expect(result.buildOptions.minify).toBe(false);
126
+ expect(result.buildOptions.output).toBe('/custom/output.js');
118
127
  });
119
128
  });
120
129
  // ========================================
121
- // Multi-Environment Tests
130
+ // Multi-Flow Tests
122
131
  // ========================================
123
- describe('Multi-Environment Config', () => {
124
- const multiEnvConfig = {
132
+ describe('Multi-Flow Config', () => {
133
+ const multiFlowConfig = {
125
134
  version: 1,
126
- environments: {
135
+ flows: {
127
136
  web_prod: {
128
- flow: {
129
- platform: 'web',
130
- sources: {
131
- browser: {
132
- package: '@walkeros/web-source-browser',
133
- },
134
- },
135
- destinations: {
136
- gtag: {
137
- package: '@walkeros/web-destination-gtag',
138
- config: { settings: { ga4: { measurementId: 'G-PROD' } } },
139
- },
137
+ web: {},
138
+ packages: {},
139
+ sources: {
140
+ browser: {
141
+ package: '@walkeros/web-source-browser',
140
142
  },
141
143
  },
142
- build: {
143
- packages: {},
144
- code: 'export {};',
145
- output: './dist/prod.js',
144
+ destinations: {
145
+ gtag: {
146
+ package: '@walkeros/web-destination-gtag',
147
+ config: { settings: { ga4: { measurementId: 'G-PROD' } } },
148
+ },
146
149
  },
147
150
  },
148
151
  web_stage: {
149
- flow: {
150
- platform: 'web',
151
- sources: {
152
- browser: {
153
- package: '@walkeros/web-source-browser',
154
- },
155
- },
156
- destinations: {
157
- gtag: {
158
- package: '@walkeros/web-destination-gtag',
159
- config: { settings: { ga4: { measurementId: 'G-STAGE' } } },
160
- },
152
+ web: {},
153
+ packages: {},
154
+ sources: {
155
+ browser: {
156
+ package: '@walkeros/web-source-browser',
161
157
  },
162
158
  },
163
- build: {
164
- packages: {},
165
- code: 'export {};',
166
- output: './dist/stage.js',
159
+ destinations: {
160
+ gtag: {
161
+ package: '@walkeros/web-destination-gtag',
162
+ config: { settings: { ga4: { measurementId: 'G-STAGE' } } },
163
+ },
167
164
  },
168
165
  },
169
166
  server_prod: {
170
- flow: {
171
- platform: 'server',
172
- destinations: {
173
- api: {
174
- package: '@walkeros/server-destination-api',
175
- },
167
+ server: {},
168
+ packages: {},
169
+ destinations: {
170
+ api: {
171
+ package: '@walkeros/server-destination-api',
176
172
  },
177
173
  },
178
- build: {
179
- packages: {},
180
- code: 'export {};',
181
- output: './dist/server.js',
182
- },
183
174
  },
184
175
  },
185
176
  };
186
- test('loads specific environment from multi-environment config', () => {
187
- const result = loadBundleConfig(multiEnvConfig, {
177
+ test('loads specific flow from multi-flow config', () => {
178
+ const result = loadBundleConfig(multiFlowConfig, {
188
179
  configPath: '/test/config.json',
189
- environment: 'web_prod',
180
+ flowName: 'web_prod',
190
181
  });
191
- expect(result.environment).toBe('web_prod');
192
- expect(result.isMultiEnvironment).toBe(true);
193
- expect(result.availableEnvironments).toEqual([
182
+ expect(result.flowName).toBe('web_prod');
183
+ expect(result.isMultiFlow).toBe(true);
184
+ expect(result.availableFlows).toEqual([
194
185
  'web_prod',
195
186
  'web_stage',
196
187
  'server_prod',
197
188
  ]);
198
- expect(result.flowConfig.platform).toBe('web');
189
+ expect(result.flowConfig.web).toBeDefined();
199
190
  });
200
- test('throws error if environment not specified for multi-env config', () => {
201
- expect(() => loadBundleConfig(multiEnvConfig, {
191
+ test('throws error if flow not specified for multi-flow config', () => {
192
+ expect(() => loadBundleConfig(multiFlowConfig, {
202
193
  configPath: '/test/config.json',
203
- })).toThrow('Please specify an environment using --env flag');
194
+ })).toThrow('Please specify a flow using --flow flag');
204
195
  });
205
- test('throws error if specified environment not found', () => {
206
- expect(() => loadBundleConfig(multiEnvConfig, {
196
+ test('throws error if specified flow not found', () => {
197
+ expect(() => loadBundleConfig(multiFlowConfig, {
207
198
  configPath: '/test/config.json',
208
- environment: 'nonexistent',
209
- })).toThrow('Environment "nonexistent" not found');
199
+ flowName: 'nonexistent',
200
+ })).toThrow('Flow "nonexistent" not found');
210
201
  });
211
- test('loads all environments', () => {
212
- const results = loadAllEnvironments(multiEnvConfig, {
202
+ test('loads all flows', () => {
203
+ const results = loadAllFlows(multiFlowConfig, {
213
204
  configPath: '/test/config.json',
214
205
  });
215
206
  expect(results).toHaveLength(3);
216
- expect(results.map((r) => r.environment)).toEqual([
207
+ expect(results.map((r) => r.flowName)).toEqual([
217
208
  'web_prod',
218
209
  'web_stage',
219
210
  'server_prod',
220
211
  ]);
221
- expect(results[0].flowConfig.platform).toBe('web');
222
- expect(results[2].flowConfig.platform).toBe('server');
223
- });
224
- test('throws error if --all used with single-environment config', () => {
225
- const singleConfig = {
226
- flow: { platform: 'web' },
227
- build: { packages: {}, code: 'export {};', output: '' },
228
- };
229
- expect(() => loadAllEnvironments(singleConfig, {
230
- configPath: '/test/config.json',
231
- })).toThrow('--all flag requires a multi-environment configuration');
212
+ expect(results[0].flowConfig.web).toBeDefined();
213
+ expect(results[2].flowConfig.server).toBeDefined();
232
214
  });
233
- test('gets available environments from multi-env config', () => {
234
- const environments = getAvailableEnvironments(multiEnvConfig);
235
- expect(environments).toEqual(['web_prod', 'web_stage', 'server_prod']);
236
- });
237
- test('returns empty array for single-env config', () => {
238
- const singleConfig = {
239
- flow: { platform: 'web' },
240
- build: { packages: {}, code: 'export {};', output: '' },
241
- };
242
- const environments = getAvailableEnvironments(singleConfig);
243
- expect(environments).toEqual([]);
215
+ test('gets available flows from multi-flow config', () => {
216
+ const flows = getAvailableFlows(multiFlowConfig);
217
+ expect(flows).toEqual(['web_prod', 'web_stage', 'server_prod']);
244
218
  });
245
219
  });
246
220
  // ========================================
247
221
  // Error Handling Tests
248
222
  // ========================================
249
223
  describe('Error Handling', () => {
250
- test('throws detailed error for invalid config format', () => {
224
+ test('throws error for invalid config format (missing version)', () => {
251
225
  const invalidConfig = {
252
- flow: {
253
- platform: 'invalid',
226
+ flows: {
227
+ default: { web: {} },
254
228
  },
255
- build: { packages: {}, code: 'export {};', output: '' },
256
229
  };
257
230
  expect(() => loadBundleConfig(invalidConfig, {
258
231
  configPath: '/test/config.json',
259
- })).toThrow('Invalid configuration format');
232
+ })).toThrow(/Invalid configuration[\s\S]*version/);
260
233
  });
261
- test('throws error for missing required fields', () => {
262
- const invalidConfig = {};
234
+ test('throws error for invalid config format (wrong version)', () => {
235
+ const invalidConfig = {
236
+ version: 2,
237
+ flows: {
238
+ default: { web: {} },
239
+ },
240
+ };
263
241
  expect(() => loadBundleConfig(invalidConfig, {
264
242
  configPath: '/test/config.json',
265
- })).toThrow();
243
+ })).toThrow(/Invalid configuration[\s\S]*version/);
266
244
  });
267
- test('throws error for invalid version in multi-env config', () => {
245
+ test('throws error for invalid config format (missing flows)', () => {
268
246
  const invalidConfig = {
269
- version: 2,
270
- environments: {
271
- prod: {
272
- flow: { platform: 'web' },
273
- build: { packages: {}, code: 'export {};', output: '' },
247
+ version: 1,
248
+ };
249
+ expect(() => loadBundleConfig(invalidConfig, {
250
+ configPath: '/test/config.json',
251
+ })).toThrow(/Invalid configuration[\s\S]*flows/);
252
+ });
253
+ test('throws error for empty flows', () => {
254
+ const invalidConfig = {
255
+ version: 1,
256
+ flows: {},
257
+ };
258
+ expect(() => loadBundleConfig(invalidConfig, {
259
+ configPath: '/test/config.json',
260
+ })).toThrow(/at least one flow/i);
261
+ });
262
+ test('throws error for flow without web/server key', () => {
263
+ const invalidConfig = {
264
+ version: 1,
265
+ flows: {
266
+ default: {
267
+ packages: {},
274
268
  },
275
269
  },
276
270
  };
277
271
  expect(() => loadBundleConfig(invalidConfig, {
278
272
  configPath: '/test/config.json',
279
- environment: 'prod',
280
- })).toThrow();
273
+ })).toThrow(/web.*or.*server|Exactly one of/i);
274
+ });
275
+ test('returns empty array for non-Flow.Setup config', () => {
276
+ const oldFormatConfig = {
277
+ flow: { platform: 'web' },
278
+ build: { packages: {} },
279
+ };
280
+ const flows = getAvailableFlows(oldFormatConfig);
281
+ expect(flows).toEqual([]);
281
282
  });
282
283
  });
283
284
  // ========================================
284
285
  // Logger Integration Tests
285
286
  // ========================================
286
287
  describe('Logger Integration', () => {
287
- test('logs info message for multi-environment config', () => {
288
+ test('logs info message for multi-flow config', () => {
288
289
  const logger = {
289
290
  info: jest.fn(),
290
291
  warn: jest.fn(),
291
292
  };
292
293
  const config = {
293
294
  version: 1,
294
- environments: {
295
+ flows: {
295
296
  prod: {
296
- flow: { platform: 'web' },
297
- build: { packages: {}, code: 'export {};', output: '' },
297
+ web: {},
298
+ packages: {},
299
+ },
300
+ stage: {
301
+ web: {},
302
+ packages: {},
298
303
  },
299
304
  },
300
305
  };
301
306
  loadBundleConfig(config, {
302
307
  configPath: '/test/config.json',
303
- environment: 'prod',
308
+ flowName: 'prod',
304
309
  logger,
305
310
  });
306
- expect(logger.info).toHaveBeenCalledWith(expect.stringContaining('Using environment: prod'));
311
+ expect(logger.info).toHaveBeenCalledWith(expect.stringContaining('Using flow: prod'));
307
312
  });
308
- test('logs warning for ignored --env flag on single-env config', () => {
313
+ test('does not log for single-flow config', () => {
309
314
  const logger = {
310
315
  info: jest.fn(),
311
316
  warn: jest.fn(),
312
317
  };
313
318
  const config = {
314
- flow: {
315
- platform: 'web',
316
- },
317
- build: {
318
- packages: {},
319
- code: 'export {};',
320
- output: '',
319
+ version: 1,
320
+ flows: {
321
+ default: {
322
+ web: {},
323
+ packages: {},
324
+ },
321
325
  },
322
326
  };
323
327
  loadBundleConfig(config, {
324
328
  configPath: '/test/config.json',
325
- environment: 'ignored',
326
329
  logger,
327
330
  });
328
- expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('configuration is single-environment'));
331
+ // Should not log flow selection for single-flow
332
+ expect(logger.info).not.toHaveBeenCalled();
329
333
  });
330
334
  });
331
335
  // ========================================
332
336
  // Real-World Scenario Tests
333
337
  // ========================================
334
338
  describe('Real-World Scenarios', () => {
335
- test('loads complex multi-environment setup', () => {
339
+ test('loads complex multi-flow setup', () => {
336
340
  const complexConfig = {
337
341
  version: 1,
338
- $schema: 'https://walkeros.io/schema/flow/v1.json',
339
342
  variables: {
340
343
  CURRENCY: 'USD',
341
344
  },
@@ -344,50 +347,69 @@ describe('Config Loader', () => {
344
347
  page: { view: { name: 'page_view' } },
345
348
  },
346
349
  },
347
- environments: {
350
+ flows: {
348
351
  web_production: {
349
- flow: {
350
- platform: 'web',
351
- sources: {
352
- browser: {
353
- package: '@walkeros/web-source-browser@2.0.0',
354
- config: {
355
- settings: { pageview: true },
356
- },
357
- primary: true,
358
- },
352
+ web: {},
353
+ packages: {
354
+ '@walkeros/collector': { imports: ['startFlow'] },
355
+ '@walkeros/web-source-browser': { imports: ['sourceBrowser'] },
356
+ '@walkeros/web-destination-gtag': {
357
+ imports: ['destinationGtag'],
359
358
  },
360
- destinations: {
361
- gtag: {
362
- package: '@walkeros/web-destination-gtag@2.0.0',
363
- config: {
364
- settings: { ga4: { measurementId: 'G-PROD' } },
365
- },
359
+ },
360
+ sources: {
361
+ browser: {
362
+ package: '@walkeros/web-source-browser@2.0.0',
363
+ config: {
364
+ settings: { pageview: true },
366
365
  },
366
+ primary: true,
367
367
  },
368
- collector: {
369
- run: true,
370
- tagging: 1,
368
+ },
369
+ destinations: {
370
+ gtag: {
371
+ package: '@walkeros/web-destination-gtag@2.0.0',
372
+ config: {
373
+ settings: { ga4: { measurementId: 'G-PROD' } },
374
+ },
371
375
  },
372
376
  },
373
- build: {
374
- packages: {},
375
- code: 'export {};',
376
- minify: true,
377
- sourcemap: false,
378
- output: './dist/walker.min.js',
377
+ collector: {
378
+ run: true,
379
+ tagging: 1,
379
380
  },
380
381
  },
381
382
  },
382
383
  };
383
384
  const result = loadBundleConfig(complexConfig, {
384
385
  configPath: '/test/config.json',
385
- environment: 'web_production',
386
+ flowName: 'web_production',
386
387
  });
387
- expect(result.flowConfig.platform).toBe('web');
388
+ expect(result.flowConfig.web).toBeDefined();
388
389
  expect(result.flowConfig.sources?.browser?.package).toBe('@walkeros/web-source-browser@2.0.0');
389
390
  expect(result.buildOptions.minify).toBe(true);
390
- expect(result.buildOptions.output).toBe('./dist/walker.min.js');
391
+ // Output uses convention default
392
+ expect(result.buildOptions.output).toBe('/test/dist/walker.js');
393
+ });
394
+ test('extracts windowCollector and windowElb from web config', () => {
395
+ const config = {
396
+ version: 1,
397
+ flows: {
398
+ default: {
399
+ web: {
400
+ windowCollector: 'myCollector',
401
+ windowElb: 'myElb',
402
+ },
403
+ packages: {},
404
+ },
405
+ },
406
+ };
407
+ const result = loadBundleConfig(config, {
408
+ configPath: '/test/config.json',
409
+ });
410
+ // Web config values should be in flowConfig
411
+ expect(result.flowConfig.web.windowCollector).toBe('myCollector');
412
+ expect(result.flowConfig.web.windowElb).toBe('myElb');
391
413
  });
392
414
  });
393
415
  });