@jahia/jahia-cli 0.1.4 → 0.3.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.
Files changed (348) hide show
  1. package/README.md +271 -56
  2. package/bin/dev.js +5 -1
  3. package/dist/commands/config/init.d.ts +12 -0
  4. package/dist/commands/config/init.d.ts.map +1 -0
  5. package/dist/commands/config/init.js +76 -0
  6. package/dist/commands/config/init.js.map +1 -0
  7. package/dist/commands/environment/create.d.ts +27 -0
  8. package/dist/commands/environment/create.d.ts.map +1 -0
  9. package/dist/commands/environment/create.js +192 -0
  10. package/dist/commands/environment/create.js.map +1 -0
  11. package/dist/commands/environment/delete.d.ts +12 -0
  12. package/dist/commands/environment/delete.d.ts.map +1 -0
  13. package/dist/commands/environment/delete.js +69 -0
  14. package/dist/commands/environment/delete.js.map +1 -0
  15. package/dist/commands/environment/doctor.d.ts +13 -0
  16. package/dist/commands/environment/doctor.d.ts.map +1 -0
  17. package/dist/commands/environment/doctor.js +63 -0
  18. package/dist/commands/environment/doctor.js.map +1 -0
  19. package/dist/commands/environment/export.d.ts +35 -0
  20. package/dist/commands/environment/export.d.ts.map +1 -0
  21. package/dist/commands/environment/export.js +127 -0
  22. package/dist/commands/environment/export.js.map +1 -0
  23. package/dist/commands/environment/list.d.ts +11 -0
  24. package/dist/commands/environment/list.d.ts.map +1 -0
  25. package/dist/commands/environment/list.js +70 -0
  26. package/dist/commands/environment/list.js.map +1 -0
  27. package/dist/commands/environment/logs.d.ts +13 -0
  28. package/dist/commands/environment/logs.d.ts.map +1 -0
  29. package/dist/commands/environment/logs.js +77 -0
  30. package/dist/commands/environment/logs.js.map +1 -0
  31. package/dist/commands/environment/start.d.ts +12 -0
  32. package/dist/commands/environment/start.d.ts.map +1 -0
  33. package/dist/commands/environment/start.js +71 -0
  34. package/dist/commands/environment/start.js.map +1 -0
  35. package/dist/commands/environment/stop.d.ts +12 -0
  36. package/dist/commands/environment/stop.d.ts.map +1 -0
  37. package/dist/commands/environment/stop.js +71 -0
  38. package/dist/commands/environment/stop.js.map +1 -0
  39. package/dist/commands/init.d.ts +39 -0
  40. package/dist/commands/init.d.ts.map +1 -0
  41. package/dist/commands/init.js +178 -0
  42. package/dist/commands/init.js.map +1 -0
  43. package/dist/commands/jahia/alive.d.ts +18 -0
  44. package/dist/commands/jahia/alive.d.ts.map +1 -0
  45. package/dist/commands/jahia/alive.js +118 -0
  46. package/dist/commands/jahia/alive.js.map +1 -0
  47. package/dist/commands/jahia/provision.d.ts +68 -0
  48. package/dist/commands/jahia/provision.d.ts.map +1 -0
  49. package/dist/commands/jahia/provision.js +352 -0
  50. package/dist/commands/jahia/provision.js.map +1 -0
  51. package/dist/commands/tests/artifacts.d.ts +25 -0
  52. package/dist/commands/tests/artifacts.d.ts.map +1 -0
  53. package/dist/commands/tests/artifacts.js +112 -0
  54. package/dist/commands/tests/artifacts.js.map +1 -0
  55. package/dist/commands/tests/build.d.ts +30 -0
  56. package/dist/commands/tests/build.d.ts.map +1 -0
  57. package/dist/commands/tests/build.js +90 -0
  58. package/dist/commands/tests/build.js.map +1 -0
  59. package/dist/commands/tests/init.d.ts +56 -0
  60. package/dist/commands/tests/init.d.ts.map +1 -0
  61. package/dist/commands/tests/init.js +195 -0
  62. package/dist/commands/tests/init.js.map +1 -0
  63. package/dist/commands/tests/run.d.ts +28 -0
  64. package/dist/commands/tests/run.d.ts.map +1 -0
  65. package/dist/commands/tests/run.js +166 -0
  66. package/dist/commands/tests/run.js.map +1 -0
  67. package/dist/commands/workflow/init.d.ts +21 -0
  68. package/dist/commands/workflow/init.d.ts.map +1 -0
  69. package/dist/commands/workflow/init.js +84 -0
  70. package/dist/commands/workflow/init.js.map +1 -0
  71. package/dist/commands/workflow/run.d.ts +22 -0
  72. package/dist/commands/workflow/run.d.ts.map +1 -0
  73. package/dist/commands/workflow/run.js +111 -0
  74. package/dist/commands/workflow/run.js.map +1 -0
  75. package/dist/lib/artifacts/collect-all.d.ts +17 -0
  76. package/dist/lib/artifacts/collect-all.d.ts.map +1 -0
  77. package/dist/lib/artifacts/collect-all.js +107 -0
  78. package/dist/lib/artifacts/collect-all.js.map +1 -0
  79. package/dist/lib/artifacts/copy-container-artifacts.d.ts +13 -0
  80. package/dist/lib/artifacts/copy-container-artifacts.d.ts.map +1 -0
  81. package/dist/lib/artifacts/copy-container-artifacts.js +48 -0
  82. package/dist/lib/artifacts/copy-container-artifacts.js.map +1 -0
  83. package/dist/lib/artifacts/fetch-container-logs.d.ts +17 -0
  84. package/dist/lib/artifacts/fetch-container-logs.d.ts.map +1 -0
  85. package/dist/lib/artifacts/fetch-container-logs.js +36 -0
  86. package/dist/lib/artifacts/fetch-container-logs.js.map +1 -0
  87. package/dist/lib/artifacts/index.d.ts +6 -0
  88. package/dist/lib/artifacts/index.d.ts.map +1 -0
  89. package/dist/lib/artifacts/index.js +5 -0
  90. package/dist/lib/artifacts/index.js.map +1 -0
  91. package/dist/lib/artifacts/query-vlogs.d.ts +14 -0
  92. package/dist/lib/artifacts/query-vlogs.d.ts.map +1 -0
  93. package/dist/lib/artifacts/query-vlogs.js +33 -0
  94. package/dist/lib/artifacts/query-vlogs.js.map +1 -0
  95. package/dist/lib/artifacts/types.d.ts +28 -0
  96. package/dist/lib/artifacts/types.d.ts.map +1 -0
  97. package/dist/lib/artifacts/types.js +2 -0
  98. package/dist/lib/artifacts/types.js.map +1 -0
  99. package/dist/lib/components/cypress.d.ts +16 -0
  100. package/dist/lib/components/cypress.d.ts.map +1 -0
  101. package/dist/lib/components/cypress.js +35 -0
  102. package/dist/lib/components/cypress.js.map +1 -0
  103. package/dist/lib/components/index.d.ts +59 -0
  104. package/dist/lib/components/index.d.ts.map +1 -0
  105. package/dist/lib/components/index.js +114 -0
  106. package/dist/lib/components/index.js.map +1 -0
  107. package/dist/lib/components/jahia.d.ts +3 -0
  108. package/dist/lib/components/jahia.d.ts.map +1 -0
  109. package/dist/lib/components/jahia.js +38 -0
  110. package/dist/lib/components/jahia.js.map +1 -0
  111. package/dist/lib/components/smtp-server.d.ts +3 -0
  112. package/dist/lib/components/smtp-server.d.ts.map +1 -0
  113. package/dist/lib/components/smtp-server.js +30 -0
  114. package/dist/lib/components/smtp-server.js.map +1 -0
  115. package/dist/lib/components/types.d.ts +101 -0
  116. package/dist/lib/components/types.d.ts.map +1 -0
  117. package/dist/lib/components/types.js +2 -0
  118. package/dist/lib/components/types.js.map +1 -0
  119. package/dist/lib/components/victorialogs.d.ts +3 -0
  120. package/dist/lib/components/victorialogs.d.ts.map +1 -0
  121. package/dist/lib/components/victorialogs.js +29 -0
  122. package/dist/lib/components/victorialogs.js.map +1 -0
  123. package/dist/lib/config/build-blank-config.d.ts +6 -0
  124. package/dist/lib/config/build-blank-config.d.ts.map +1 -0
  125. package/dist/lib/config/build-blank-config.js +19 -0
  126. package/dist/lib/config/build-blank-config.js.map +1 -0
  127. package/dist/lib/config/config-to-yaml-with-comments.d.ts +11 -0
  128. package/dist/lib/config/config-to-yaml-with-comments.d.ts.map +1 -0
  129. package/dist/lib/config/config-to-yaml-with-comments.js +87 -0
  130. package/dist/lib/config/config-to-yaml-with-comments.js.map +1 -0
  131. package/dist/lib/config/config-to-yaml.d.ts +7 -0
  132. package/dist/lib/config/config-to-yaml.d.ts.map +1 -0
  133. package/dist/lib/config/config-to-yaml.js +37 -0
  134. package/dist/lib/config/config-to-yaml.js.map +1 -0
  135. package/dist/lib/config/defaults.d.ts +15 -0
  136. package/dist/lib/config/defaults.d.ts.map +1 -0
  137. package/dist/lib/config/defaults.js +19 -0
  138. package/dist/lib/config/defaults.js.map +1 -0
  139. package/dist/lib/config/export-config.d.ts +15 -0
  140. package/dist/lib/config/export-config.d.ts.map +1 -0
  141. package/dist/lib/config/export-config.js +27 -0
  142. package/dist/lib/config/export-config.js.map +1 -0
  143. package/dist/lib/config/initialize-config-file.d.ts +12 -0
  144. package/dist/lib/config/initialize-config-file.d.ts.map +1 -0
  145. package/dist/lib/config/initialize-config-file.js +16 -0
  146. package/dist/lib/config/initialize-config-file.js.map +1 -0
  147. package/dist/lib/config/parser.d.ts +59 -0
  148. package/dist/lib/config/parser.d.ts.map +1 -0
  149. package/dist/lib/config/parser.js +281 -0
  150. package/dist/lib/config/parser.js.map +1 -0
  151. package/dist/lib/config/resolve-env-vars.d.ts +29 -0
  152. package/dist/lib/config/resolve-env-vars.d.ts.map +1 -0
  153. package/dist/lib/config/resolve-env-vars.js +47 -0
  154. package/dist/lib/config/resolve-env-vars.js.map +1 -0
  155. package/dist/lib/config/types.d.ts +120 -0
  156. package/dist/lib/config/types.d.ts.map +1 -0
  157. package/dist/lib/config/types.js +2 -0
  158. package/dist/lib/config/types.js.map +1 -0
  159. package/dist/lib/config/with-tests-version.d.ts +6 -0
  160. package/dist/lib/config/with-tests-version.d.ts.map +1 -0
  161. package/dist/lib/config/with-tests-version.js +11 -0
  162. package/dist/lib/config/with-tests-version.js.map +1 -0
  163. package/dist/lib/output/formatter.d.ts +38 -0
  164. package/dist/lib/output/formatter.d.ts.map +1 -0
  165. package/dist/lib/output/formatter.js +172 -0
  166. package/dist/lib/output/formatter.js.map +1 -0
  167. package/dist/lib/providers/docker/container.d.ts +63 -0
  168. package/dist/lib/providers/docker/container.d.ts.map +1 -0
  169. package/dist/lib/providers/docker/container.js +105 -0
  170. package/dist/lib/providers/docker/container.js.map +1 -0
  171. package/dist/lib/providers/docker/get-container-logs.d.ts +5 -0
  172. package/dist/lib/providers/docker/get-container-logs.d.ts.map +1 -0
  173. package/dist/lib/providers/docker/get-container-logs.js +17 -0
  174. package/dist/lib/providers/docker/get-container-logs.js.map +1 -0
  175. package/dist/lib/providers/docker/index.d.ts +8 -0
  176. package/dist/lib/providers/docker/index.d.ts.map +1 -0
  177. package/dist/lib/providers/docker/index.js +424 -0
  178. package/dist/lib/providers/docker/index.js.map +1 -0
  179. package/dist/lib/providers/docker/network.d.ts +17 -0
  180. package/dist/lib/providers/docker/network.d.ts.map +1 -0
  181. package/dist/lib/providers/docker/network.js +36 -0
  182. package/dist/lib/providers/docker/network.js.map +1 -0
  183. package/dist/lib/providers/docker/start-container.d.ts +5 -0
  184. package/dist/lib/providers/docker/start-container.d.ts.map +1 -0
  185. package/dist/lib/providers/docker/start-container.js +10 -0
  186. package/dist/lib/providers/docker/start-container.js.map +1 -0
  187. package/dist/lib/providers/docker/stop-container.d.ts +5 -0
  188. package/dist/lib/providers/docker/stop-container.d.ts.map +1 -0
  189. package/dist/lib/providers/docker/stop-container.js +10 -0
  190. package/dist/lib/providers/docker/stop-container.js.map +1 -0
  191. package/dist/lib/providers/docker/volume.d.ts +13 -0
  192. package/dist/lib/providers/docker/volume.d.ts.map +1 -0
  193. package/dist/lib/providers/docker/volume.js +23 -0
  194. package/dist/lib/providers/docker/volume.js.map +1 -0
  195. package/dist/lib/providers/index.d.ts +13 -0
  196. package/dist/lib/providers/index.d.ts.map +1 -0
  197. package/dist/lib/providers/index.js +22 -0
  198. package/dist/lib/providers/index.js.map +1 -0
  199. package/dist/lib/providers/jahiacloudv1/index.d.ts +7 -0
  200. package/dist/lib/providers/jahiacloudv1/index.d.ts.map +1 -0
  201. package/dist/lib/providers/jahiacloudv1/index.js +16 -0
  202. package/dist/lib/providers/jahiacloudv1/index.js.map +1 -0
  203. package/dist/lib/providers/types.d.ts +84 -0
  204. package/dist/lib/providers/types.d.ts.map +1 -0
  205. package/dist/lib/providers/types.js +2 -0
  206. package/dist/lib/providers/types.js.map +1 -0
  207. package/dist/lib/provisioning/detect-manifest-source.d.ts +7 -0
  208. package/dist/lib/provisioning/detect-manifest-source.d.ts.map +1 -0
  209. package/dist/lib/provisioning/detect-manifest-source.js +6 -0
  210. package/dist/lib/provisioning/detect-manifest-source.js.map +1 -0
  211. package/dist/lib/provisioning/fetch-manifest.d.ts +9 -0
  212. package/dist/lib/provisioning/fetch-manifest.d.ts.map +1 -0
  213. package/dist/lib/provisioning/fetch-manifest.js +17 -0
  214. package/dist/lib/provisioning/fetch-manifest.js.map +1 -0
  215. package/dist/lib/provisioning/filter-files.d.ts +7 -0
  216. package/dist/lib/provisioning/filter-files.d.ts.map +1 -0
  217. package/dist/lib/provisioning/filter-files.js +14 -0
  218. package/dist/lib/provisioning/filter-files.js.map +1 -0
  219. package/dist/lib/provisioning/read-manifest.d.ts +9 -0
  220. package/dist/lib/provisioning/read-manifest.d.ts.map +1 -0
  221. package/dist/lib/provisioning/read-manifest.js +12 -0
  222. package/dist/lib/provisioning/read-manifest.js.map +1 -0
  223. package/dist/lib/provisioning/resolve-asset-paths.d.ts +7 -0
  224. package/dist/lib/provisioning/resolve-asset-paths.d.ts.map +1 -0
  225. package/dist/lib/provisioning/resolve-asset-paths.js +22 -0
  226. package/dist/lib/provisioning/resolve-asset-paths.js.map +1 -0
  227. package/dist/lib/provisioning/submit-file-action.d.ts +29 -0
  228. package/dist/lib/provisioning/submit-file-action.d.ts.map +1 -0
  229. package/dist/lib/provisioning/submit-file-action.js +75 -0
  230. package/dist/lib/provisioning/submit-file-action.js.map +1 -0
  231. package/dist/lib/provisioning/submit-provisioning.d.ts +12 -0
  232. package/dist/lib/provisioning/submit-provisioning.d.ts.map +1 -0
  233. package/dist/lib/provisioning/submit-provisioning.js +70 -0
  234. package/dist/lib/provisioning/submit-provisioning.js.map +1 -0
  235. package/dist/lib/provisioning/types.d.ts +45 -0
  236. package/dist/lib/provisioning/types.d.ts.map +1 -0
  237. package/dist/lib/provisioning/types.js +2 -0
  238. package/dist/lib/provisioning/types.js.map +1 -0
  239. package/dist/lib/sam/index.d.ts +4 -0
  240. package/dist/lib/sam/index.d.ts.map +1 -0
  241. package/dist/lib/sam/index.js +3 -0
  242. package/dist/lib/sam/index.js.map +1 -0
  243. package/dist/lib/sam/query-sam-status.d.ts +6 -0
  244. package/dist/lib/sam/query-sam-status.d.ts.map +1 -0
  245. package/dist/lib/sam/query-sam-status.js +54 -0
  246. package/dist/lib/sam/query-sam-status.js.map +1 -0
  247. package/dist/lib/sam/types.d.ts +41 -0
  248. package/dist/lib/sam/types.d.ts.map +1 -0
  249. package/dist/lib/sam/types.js +2 -0
  250. package/dist/lib/sam/types.js.map +1 -0
  251. package/dist/lib/sam/wait-for-sam.d.ts +7 -0
  252. package/dist/lib/sam/wait-for-sam.d.ts.map +1 -0
  253. package/dist/lib/sam/wait-for-sam.js +31 -0
  254. package/dist/lib/sam/wait-for-sam.js.map +1 -0
  255. package/dist/lib/state/delete-state.d.ts +6 -0
  256. package/dist/lib/state/delete-state.d.ts.map +1 -0
  257. package/dist/lib/state/delete-state.js +16 -0
  258. package/dist/lib/state/delete-state.js.map +1 -0
  259. package/dist/lib/state/get-active-environment.d.ts +6 -0
  260. package/dist/lib/state/get-active-environment.d.ts.map +1 -0
  261. package/dist/lib/state/get-active-environment.js +9 -0
  262. package/dist/lib/state/get-active-environment.js.map +1 -0
  263. package/dist/lib/state/get-jahia-connection-defaults.d.ts +16 -0
  264. package/dist/lib/state/get-jahia-connection-defaults.d.ts.map +1 -0
  265. package/dist/lib/state/get-jahia-connection-defaults.js +28 -0
  266. package/dist/lib/state/get-jahia-connection-defaults.js.map +1 -0
  267. package/dist/lib/state/has-active-environment.d.ts +5 -0
  268. package/dist/lib/state/has-active-environment.d.ts.map +1 -0
  269. package/dist/lib/state/has-active-environment.js +9 -0
  270. package/dist/lib/state/has-active-environment.js.map +1 -0
  271. package/dist/lib/state/index.d.ts +11 -0
  272. package/dist/lib/state/index.d.ts.map +1 -0
  273. package/dist/lib/state/index.js +9 -0
  274. package/dist/lib/state/index.js.map +1 -0
  275. package/dist/lib/state/load-state.d.ts +7 -0
  276. package/dist/lib/state/load-state.d.ts.map +1 -0
  277. package/dist/lib/state/load-state.js +17 -0
  278. package/dist/lib/state/load-state.js.map +1 -0
  279. package/dist/lib/state/reconcile-with-docker.d.ts +19 -0
  280. package/dist/lib/state/reconcile-with-docker.d.ts.map +1 -0
  281. package/dist/lib/state/reconcile-with-docker.js +36 -0
  282. package/dist/lib/state/reconcile-with-docker.js.map +1 -0
  283. package/dist/lib/state/save-state.d.ts +7 -0
  284. package/dist/lib/state/save-state.d.ts.map +1 -0
  285. package/dist/lib/state/save-state.js +13 -0
  286. package/dist/lib/state/save-state.js.map +1 -0
  287. package/dist/lib/state/state-file-path.d.ts +8 -0
  288. package/dist/lib/state/state-file-path.d.ts.map +1 -0
  289. package/dist/lib/state/state-file-path.js +14 -0
  290. package/dist/lib/state/state-file-path.js.map +1 -0
  291. package/dist/lib/state/state-flag.d.ts +6 -0
  292. package/dist/lib/state/state-flag.d.ts.map +1 -0
  293. package/dist/lib/state/state-flag.js +12 -0
  294. package/dist/lib/state/state-flag.js.map +1 -0
  295. package/dist/lib/state/types.d.ts +30 -0
  296. package/dist/lib/state/types.d.ts.map +1 -0
  297. package/dist/lib/state/types.js +2 -0
  298. package/dist/lib/state/types.js.map +1 -0
  299. package/dist/lib/tests/build-image.d.ts +33 -0
  300. package/dist/lib/tests/build-image.d.ts.map +1 -0
  301. package/dist/lib/tests/build-image.js +59 -0
  302. package/dist/lib/tests/build-image.js.map +1 -0
  303. package/dist/lib/tests/clone-scaffolding.d.ts +16 -0
  304. package/dist/lib/tests/clone-scaffolding.d.ts.map +1 -0
  305. package/dist/lib/tests/clone-scaffolding.js +64 -0
  306. package/dist/lib/tests/clone-scaffolding.js.map +1 -0
  307. package/dist/lib/tests/exclusion-list.d.ts +11 -0
  308. package/dist/lib/tests/exclusion-list.d.ts.map +1 -0
  309. package/dist/lib/tests/exclusion-list.js +19 -0
  310. package/dist/lib/tests/exclusion-list.js.map +1 -0
  311. package/dist/lib/tests/gitignore-manager.d.ts +21 -0
  312. package/dist/lib/tests/gitignore-manager.d.ts.map +1 -0
  313. package/dist/lib/tests/gitignore-manager.js +47 -0
  314. package/dist/lib/tests/gitignore-manager.js.map +1 -0
  315. package/dist/lib/tests/index.d.ts +6 -0
  316. package/dist/lib/tests/index.d.ts.map +1 -0
  317. package/dist/lib/tests/index.js +5 -0
  318. package/dist/lib/tests/index.js.map +1 -0
  319. package/dist/lib/tests/sync-missing-files.d.ts +3 -0
  320. package/dist/lib/tests/sync-missing-files.d.ts.map +1 -0
  321. package/dist/lib/tests/sync-missing-files.js +65 -0
  322. package/dist/lib/tests/sync-missing-files.js.map +1 -0
  323. package/dist/lib/tests/types.d.ts +26 -0
  324. package/dist/lib/tests/types.d.ts.map +1 -0
  325. package/dist/lib/tests/types.js +2 -0
  326. package/dist/lib/tests/types.js.map +1 -0
  327. package/dist/lib/workflow/build-sample-workflow.d.ts +8 -0
  328. package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -0
  329. package/dist/lib/workflow/build-sample-workflow.js +39 -0
  330. package/dist/lib/workflow/build-sample-workflow.js.map +1 -0
  331. package/dist/lib/workflow/executor.d.ts +23 -0
  332. package/dist/lib/workflow/executor.d.ts.map +1 -0
  333. package/dist/lib/workflow/executor.js +129 -0
  334. package/dist/lib/workflow/executor.js.map +1 -0
  335. package/dist/lib/workflow/merge-workflow-into-config.d.ts +7 -0
  336. package/dist/lib/workflow/merge-workflow-into-config.d.ts.map +1 -0
  337. package/dist/lib/workflow/merge-workflow-into-config.js +9 -0
  338. package/dist/lib/workflow/merge-workflow-into-config.js.map +1 -0
  339. package/dist/lib/workflow/resolve-workflow.d.ts +20 -0
  340. package/dist/lib/workflow/resolve-workflow.d.ts.map +1 -0
  341. package/dist/lib/workflow/resolve-workflow.js +38 -0
  342. package/dist/lib/workflow/resolve-workflow.js.map +1 -0
  343. package/dist/lib/workflow/types.d.ts +30 -0
  344. package/dist/lib/workflow/types.d.ts.map +1 -0
  345. package/dist/lib/workflow/types.js +25 -0
  346. package/dist/lib/workflow/types.js.map +1 -0
  347. package/oclif.manifest.json +1057 -1
  348. package/package.json +11 -4
@@ -0,0 +1,281 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import yaml from 'js-yaml';
3
+ import { getComponent, resolveComponent } from '../components/index.js';
4
+ import { DEFAULT_PROVIDER, DEFAULT_SCAFFOLDING_PATH, DEFAULT_SCAFFOLDING_REPOSITORY, DEFAULT_SCAFFOLDING_VERSION, generateEnvName, } from './defaults.js';
5
+ import { resolveEnvVars, resolveEnvVarsInRecord } from './resolve-env-vars.js';
6
+ /**
7
+ * Parses and validates the optional scaffolding section within tests.
8
+ */
9
+ export const parseScaffoldingConfig = (rawScaffolding) => {
10
+ if (typeof rawScaffolding !== 'object' || rawScaffolding === null || Array.isArray(rawScaffolding)) {
11
+ throw new Error('Configuration "tests.scaffolding" must be an object when provided.');
12
+ }
13
+ const record = rawScaffolding;
14
+ if (record['repository'] !== undefined && typeof record['repository'] !== 'string') {
15
+ throw new Error('Configuration "tests.scaffolding.repository" must be a string when provided.');
16
+ }
17
+ if (record['path'] !== undefined && typeof record['path'] !== 'string') {
18
+ throw new Error('Configuration "tests.scaffolding.path" must be a string when provided.');
19
+ }
20
+ if (record['version'] !== undefined && typeof record['version'] !== 'string') {
21
+ throw new Error('Configuration "tests.scaffolding.version" must be a string when provided.');
22
+ }
23
+ return {
24
+ repository: typeof record['repository'] === 'string' ? record['repository'] : DEFAULT_SCAFFOLDING_REPOSITORY,
25
+ path: typeof record['path'] === 'string' ? record['path'] : DEFAULT_SCAFFOLDING_PATH,
26
+ version: typeof record['version'] === 'string' ? record['version'] : DEFAULT_SCAFFOLDING_VERSION,
27
+ };
28
+ };
29
+ /**
30
+ * Parses and validates the optional tests.container section.
31
+ * All fields are optional — only provided values are included.
32
+ * String values support ${VAR:-default} env var resolution.
33
+ */
34
+ export const parseTestContainerConfig = (rawContainer) => {
35
+ if (rawContainer === undefined) {
36
+ return undefined;
37
+ }
38
+ if (typeof rawContainer !== 'object' || rawContainer === null || Array.isArray(rawContainer)) {
39
+ throw new Error('Configuration "tests.container" must be an object when provided.');
40
+ }
41
+ const record = rawContainer;
42
+ if (record['dockerfile'] !== undefined && typeof record['dockerfile'] !== 'string') {
43
+ throw new Error('Configuration "tests.container.dockerfile" must be a string when provided.');
44
+ }
45
+ if (record['image'] !== undefined && typeof record['image'] !== 'string') {
46
+ throw new Error('Configuration "tests.container.image" must be a string when provided.');
47
+ }
48
+ if (record['tag'] !== undefined && typeof record['tag'] !== 'string') {
49
+ throw new Error('Configuration "tests.container.tag" must be a string when provided.');
50
+ }
51
+ if (record['platform'] !== undefined && typeof record['platform'] !== 'string') {
52
+ throw new Error('Configuration "tests.container.platform" must be a string when provided.');
53
+ }
54
+ if (record['buildArgs'] !== undefined) {
55
+ if (typeof record['buildArgs'] !== 'object' || record['buildArgs'] === null || Array.isArray(record['buildArgs'])) {
56
+ throw new Error('Configuration "tests.container.buildArgs" must be an object when provided.');
57
+ }
58
+ }
59
+ const config = {
60
+ ...(record['dockerfile'] !== undefined ? { dockerfile: record['dockerfile'] } : {}),
61
+ ...(record['image'] !== undefined ? { image: resolveEnvVars(record['image']) } : {}),
62
+ ...(record['tag'] !== undefined ? { tag: resolveEnvVars(record['tag']) } : {}),
63
+ ...(record['platform'] !== undefined ? { platform: record['platform'] } : {}),
64
+ ...(record['buildArgs'] !== undefined ? { buildArgs: resolveEnvVarsInRecord(record['buildArgs']) } : {}),
65
+ };
66
+ return Object.keys(config).length > 0 ? config : undefined;
67
+ };
68
+ /**
69
+ * Parses and validates the optional tests section.
70
+ */
71
+ export const parseTestsConfig = (rawTests) => {
72
+ if (rawTests === undefined) {
73
+ return undefined;
74
+ }
75
+ if (typeof rawTests !== 'object' || rawTests === null || Array.isArray(rawTests)) {
76
+ throw new Error('Configuration "tests" field must be an object when provided.');
77
+ }
78
+ const testsRecord = rawTests;
79
+ const jahiaCypress = testsRecord['jahia-cypress'];
80
+ if (jahiaCypress !== undefined && typeof jahiaCypress !== 'string') {
81
+ throw new Error('Configuration "tests.jahia-cypress" must be a string when provided.');
82
+ }
83
+ const scaffolding = testsRecord['scaffolding'] !== undefined
84
+ ? parseScaffoldingConfig(testsRecord['scaffolding'])
85
+ : undefined;
86
+ const container = parseTestContainerConfig(testsRecord['container']);
87
+ return {
88
+ ...(jahiaCypress === undefined ? {} : { 'jahia-cypress': jahiaCypress }),
89
+ ...(scaffolding === undefined ? {} : { scaffolding }),
90
+ ...(container === undefined ? {} : { container }),
91
+ };
92
+ };
93
+ /**
94
+ * Resolves environment variable substitution in component overrides.
95
+ * Applies `${VAR}` and `${VAR:-default}` resolution to `image`, `tag`,
96
+ * and `env` values — the same env vars available in workflow `run:` steps.
97
+ */
98
+ export const resolveComponentOverrides = (rawOverrides) => {
99
+ const result = { ...rawOverrides };
100
+ if (typeof result['image'] === 'string') {
101
+ result['image'] = resolveEnvVars(result['image']);
102
+ }
103
+ if (typeof result['tag'] === 'string') {
104
+ result['tag'] = resolveEnvVars(result['tag']);
105
+ }
106
+ if (result['env'] !== undefined &&
107
+ typeof result['env'] === 'object' &&
108
+ result['env'] !== null &&
109
+ !Array.isArray(result['env'])) {
110
+ result['env'] = resolveEnvVarsInRecord(result['env']);
111
+ }
112
+ return result;
113
+ };
114
+ /**
115
+ * Validates and parses a raw environment section into a typed EnvironmentConfig.
116
+ * Throws descriptive errors for invalid configurations.
117
+ */
118
+ export const validateEnvironmentConfig = (raw) => {
119
+ const name = typeof raw.name === 'string' ? raw.name : generateEnvName();
120
+ const provider = typeof raw.provider === 'string' ? raw.provider : DEFAULT_PROVIDER;
121
+ if (!Array.isArray(raw.components) || raw.components.length === 0) {
122
+ throw new Error('Configuration "environment" must include at least one component in the "components" array.');
123
+ }
124
+ const components = raw.components.map((entry, index) => {
125
+ if (typeof entry === 'string') {
126
+ return { name: entry };
127
+ }
128
+ if (typeof entry === 'object' && entry !== null && 'name' in entry) {
129
+ const obj = entry;
130
+ if (typeof obj['name'] !== 'string') {
131
+ throw new Error(`Component at index ${String(index)} must have a string "name" field.`);
132
+ }
133
+ const rawOverrides = obj['overrides'];
134
+ const resolvedOverrides = rawOverrides !== undefined
135
+ ? resolveComponentOverrides(rawOverrides)
136
+ : undefined;
137
+ return {
138
+ name: obj['name'],
139
+ overrides: resolvedOverrides,
140
+ };
141
+ }
142
+ throw new Error(`Component at index ${String(index)} must be a string or an object with a "name" field.`);
143
+ });
144
+ return { name, provider, components };
145
+ };
146
+ /**
147
+ * Validates a single workflow step entry.
148
+ * Each step must have either `run` (shell command) or `uses` (CLI command), not both.
149
+ */
150
+ export const validateWorkflowStep = (raw, index) => {
151
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
152
+ throw new Error(`Workflow step at index ${String(index)} must be an object.`);
153
+ }
154
+ const record = raw;
155
+ const name = typeof record['name'] === 'string' ? record['name'] : undefined;
156
+ const run = typeof record['run'] === 'string' ? record['run'] : undefined;
157
+ const uses = typeof record['uses'] === 'string' ? record['uses'] : undefined;
158
+ const workingDir = typeof record['working_dir'] === 'string' ? record['working_dir'] : undefined;
159
+ if (run === undefined && uses === undefined) {
160
+ throw new Error(`Workflow step at index ${String(index)} must have either "run" (shell command) or "uses" (CLI command).`);
161
+ }
162
+ if (run !== undefined && uses !== undefined) {
163
+ throw new Error(`Workflow step at index ${String(index)} must have either "run" or "uses", not both.`);
164
+ }
165
+ const withRecord = record['with'] !== undefined && typeof record['with'] === 'object' && record['with'] !== null && !Array.isArray(record['with'])
166
+ ? record['with']
167
+ : undefined;
168
+ return {
169
+ ...(name === undefined ? {} : { name }),
170
+ ...(run === undefined ? {} : { run }),
171
+ ...(uses === undefined ? {} : { uses }),
172
+ ...(withRecord === undefined ? {} : { with: withRecord }),
173
+ ...(workingDir === undefined ? {} : { working_dir: workingDir }),
174
+ };
175
+ };
176
+ /**
177
+ * Parses and validates a single named workflow entry (the value under a workflow name key).
178
+ */
179
+ export const parseSingleWorkflow = (rawWorkflow, name) => {
180
+ if (typeof rawWorkflow !== 'object' || rawWorkflow === null || Array.isArray(rawWorkflow)) {
181
+ throw new Error(`Workflow "${name}" must be an object.`);
182
+ }
183
+ const record = rawWorkflow;
184
+ if (!Array.isArray(record['steps'])) {
185
+ throw new Error(`Workflow "${name}" must include a "steps" array.`);
186
+ }
187
+ if (record['steps'].length === 0) {
188
+ throw new Error(`Workflow "${name}.steps" must contain at least one step.`);
189
+ }
190
+ const steps = record['steps'].map((entry, index) => validateWorkflowStep(entry, index));
191
+ const isDefault = record['default'] === true ? true : undefined;
192
+ return {
193
+ ...(isDefault === undefined ? {} : { default: isDefault }),
194
+ steps,
195
+ };
196
+ };
197
+ /**
198
+ * Parses and validates the optional workflows section.
199
+ * Expects a map of named workflows. At most one may have `default: true`.
200
+ */
201
+ export const parseWorkflowsConfig = (rawWorkflows) => {
202
+ if (rawWorkflows === undefined) {
203
+ return undefined;
204
+ }
205
+ if (typeof rawWorkflows !== 'object' || rawWorkflows === null || Array.isArray(rawWorkflows)) {
206
+ throw new Error('Configuration "workflows" field must be a map of named workflows.');
207
+ }
208
+ const entries = Object.entries(rawWorkflows);
209
+ if (entries.length === 0) {
210
+ throw new Error('Configuration "workflows" must contain at least one named workflow.');
211
+ }
212
+ const workflows = {};
213
+ const defaultNames = [];
214
+ entries.forEach(([name, value]) => {
215
+ const workflow = parseSingleWorkflow(value, name);
216
+ workflows[name] = workflow;
217
+ if (workflow.default === true) {
218
+ defaultNames.push(name);
219
+ }
220
+ });
221
+ if (defaultNames.length > 1) {
222
+ throw new Error(`Only one workflow may have "default: true". Found ${String(defaultNames.length)}: ${defaultNames.join(', ')}`);
223
+ }
224
+ return workflows;
225
+ };
226
+ /**
227
+ * Validates and parses a raw YAML object into a typed JahiaCliConfig.
228
+ * All sections (environment, tests, workflows) are optional — commands validate
229
+ * the presence of the sections they need.
230
+ *
231
+ * Detects the legacy `workflow:` key and provides a migration error.
232
+ */
233
+ export const validateConfig = (raw) => {
234
+ if (raw.workflow !== undefined) {
235
+ throw new Error('Configuration uses the deprecated "workflow:" key.\n' +
236
+ 'Rename it to "workflows:" and wrap your workflow in a named entry.\n\n' +
237
+ ' Before:\n' +
238
+ ' workflow:\n' +
239
+ ' steps: [...]\n\n' +
240
+ ' After:\n' +
241
+ ' workflows:\n' +
242
+ ' main:\n' +
243
+ ' default: true\n' +
244
+ ' steps: [...]');
245
+ }
246
+ const rawEnv = raw.environment !== undefined && typeof raw.environment === 'object' && raw.environment !== null
247
+ ? raw.environment
248
+ : undefined;
249
+ // Only validate environment if it has a non-empty components array.
250
+ // Commands that require environment will check for its presence themselves.
251
+ const environment = rawEnv !== undefined && Array.isArray(rawEnv.components) && rawEnv.components.length > 0
252
+ ? validateEnvironmentConfig(rawEnv)
253
+ : undefined;
254
+ const tests = parseTestsConfig(raw.tests);
255
+ const workflows = parseWorkflowsConfig(raw.workflows);
256
+ return {
257
+ ...(environment === undefined ? {} : { environment }),
258
+ ...(tests === undefined ? {} : { tests }),
259
+ ...(workflows === undefined ? {} : { workflows }),
260
+ };
261
+ };
262
+ /**
263
+ * Loads and parses a YAML config file from disk.
264
+ */
265
+ export const loadConfigFile = async (filePath) => {
266
+ const content = await readFile(filePath, 'utf-8');
267
+ const raw = yaml.load(content);
268
+ return validateConfig(raw);
269
+ };
270
+ /**
271
+ * Resolves all components in a config to their full definitions with overrides applied.
272
+ * Throws if any component name is not found in the registry.
273
+ */
274
+ export const resolveConfigComponents = (config) => config.components.map((entry) => {
275
+ const definition = getComponent(entry.name);
276
+ if (!definition) {
277
+ throw new Error(`Unknown component "${entry.name}". Use "jahia-cli environment create --help" to see available components.`);
278
+ }
279
+ return resolveComponent(definition, entry.overrides);
280
+ });
281
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/lib/config/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Environment variable substitution for config values.
3
+ *
4
+ * Supports two patterns:
5
+ * - `${VAR}` — resolves to the value of VAR; throws if VAR is not set
6
+ * - `${VAR:-default}` — resolves to VAR if set, otherwise uses the default value
7
+ *
8
+ * This is consistent with bash variable expansion and with how the workflow
9
+ * engine passes environment variables to `run:` steps via `process.env`.
10
+ * All env vars come from the same source: the shell session's environment.
11
+ *
12
+ * Bare `$` characters and malformed patterns are left as-is.
13
+ */
14
+ /**
15
+ * Resolves `${VAR}` and `${VAR:-default}` patterns in a string
16
+ * using `process.env`.
17
+ *
18
+ * - `${VAR}` with no default throws if VAR is not defined in the environment.
19
+ * - `${VAR:-default}` falls back to `default` when VAR is not defined.
20
+ * - Patterns are resolved in a single pass (no nested resolution).
21
+ * - Bare `$` characters and malformed patterns are left unchanged.
22
+ */
23
+ export declare const resolveEnvVars: (value: string) => string;
24
+ /**
25
+ * Applies `resolveEnvVars` to every value in a string record.
26
+ * Returns a new record with all values resolved.
27
+ */
28
+ export declare const resolveEnvVarsInRecord: (record: Readonly<Record<string, string>>) => Readonly<Record<string, string>>;
29
+ //# sourceMappingURL=resolve-env-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-env-vars.d.ts","sourceRoot":"","sources":["../../../src/lib/config/resolve-env-vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAiB3C,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACvC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG/B,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Environment variable substitution for config values.
3
+ *
4
+ * Supports two patterns:
5
+ * - `${VAR}` — resolves to the value of VAR; throws if VAR is not set
6
+ * - `${VAR:-default}` — resolves to VAR if set, otherwise uses the default value
7
+ *
8
+ * This is consistent with bash variable expansion and with how the workflow
9
+ * engine passes environment variables to `run:` steps via `process.env`.
10
+ * All env vars come from the same source: the shell session's environment.
11
+ *
12
+ * Bare `$` characters and malformed patterns are left as-is.
13
+ */
14
+ /**
15
+ * Regex matching `${VAR}` and `${VAR:-default}` patterns.
16
+ * Captures:
17
+ * [1] = variable name (letters, digits, underscores)
18
+ * [2] = default value (everything after `:-`, may be empty string)
19
+ */
20
+ const ENV_VAR_PATTERN = /\$\{([A-Za-z_]\w*)(?::-(.*?))?\}/g;
21
+ /**
22
+ * Resolves `${VAR}` and `${VAR:-default}` patterns in a string
23
+ * using `process.env`.
24
+ *
25
+ * - `${VAR}` with no default throws if VAR is not defined in the environment.
26
+ * - `${VAR:-default}` falls back to `default` when VAR is not defined.
27
+ * - Patterns are resolved in a single pass (no nested resolution).
28
+ * - Bare `$` characters and malformed patterns are left unchanged.
29
+ */
30
+ export const resolveEnvVars = (value) => value.replace(ENV_VAR_PATTERN, (match, varName, defaultValue) => {
31
+ const envValue = process.env[varName];
32
+ if (envValue !== undefined) {
33
+ return envValue;
34
+ }
35
+ if (defaultValue !== undefined) {
36
+ return defaultValue;
37
+ }
38
+ throw new Error(`Environment variable "${varName}" is not set and no default was provided. ` +
39
+ `Use \${${varName}:-default_value} to provide a fallback, ` +
40
+ `or set the variable in your shell: export ${varName}=value`);
41
+ });
42
+ /**
43
+ * Applies `resolveEnvVars` to every value in a string record.
44
+ * Returns a new record with all values resolved.
45
+ */
46
+ export const resolveEnvVarsInRecord = (record) => Object.fromEntries(Object.entries(record).map(([key, value]) => [key, resolveEnvVars(value)]));
47
+ //# sourceMappingURL=resolve-env-vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-env-vars.js","sourceRoot":"","sources":["../../../src/lib/config/resolve-env-vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CACtD,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,YAAgC,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,4CAA4C;QAC5E,UAAU,OAAO,0CAA0C;QAC3D,6CAA6C,OAAO,QAAQ,CAC7D,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAwC,EACN,EAAE,CACpC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E,CAAC"}
@@ -0,0 +1,120 @@
1
+ import type { ComponentOverrides } from '../components/types.js';
2
+ /**
3
+ * A component entry in a YAML config file.
4
+ */
5
+ export interface ConfigComponent {
6
+ readonly name: string;
7
+ readonly overrides?: ComponentOverrides | undefined;
8
+ }
9
+ /**
10
+ * Scaffolding source configuration for test initialization.
11
+ */
12
+ export interface ScaffoldingConfig {
13
+ readonly repository: string;
14
+ readonly path: string;
15
+ readonly version: string;
16
+ }
17
+ /**
18
+ * Test framework configuration metadata.
19
+ */
20
+ export interface TestsConfig {
21
+ readonly 'jahia-cypress'?: string | undefined;
22
+ readonly scaffolding?: ScaffoldingConfig | undefined;
23
+ /**
24
+ * Test container build and run configuration.
25
+ *
26
+ * All fields are optional — sensible defaults are used when omitted.
27
+ * This keeps config files minimal while allowing full control when needed.
28
+ *
29
+ * Available options:
30
+ * dockerfile — Path to the Dockerfile (default: "docker/Dockerfile.local")
31
+ * image — Image name for the built test image (default: "jahia-tests")
32
+ * Supports ${VAR:-default} env var substitution.
33
+ * tag — Image tag (default: scaffolding version from tests.scaffolding.version)
34
+ * Supports ${VAR:-default} env var substitution.
35
+ * platform — Target platform for buildx (e.g. "linux/amd64").
36
+ * Defaults to current platform when omitted.
37
+ * buildArgs — Extra Docker build args as key-value pairs.
38
+ * Values support ${VAR:-default} env var substitution.
39
+ *
40
+ * Example in YAML:
41
+ * tests:
42
+ * container:
43
+ * image: "${TEST_IMAGE:-jahia-tests}"
44
+ * tag: "${TEST_TAG:-latest}"
45
+ * platform: linux/amd64
46
+ * buildArgs:
47
+ * CYPRESS_VERSION: "13.0.0"
48
+ */
49
+ readonly container?: TestContainerConfig | undefined;
50
+ }
51
+ /**
52
+ * Configuration for the test container image build and execution.
53
+ * All fields are optional — defaults from the cypress component and
54
+ * build-image module are used when omitted.
55
+ */
56
+ export interface TestContainerConfig {
57
+ readonly dockerfile?: string | undefined;
58
+ readonly image?: string | undefined;
59
+ readonly tag?: string | undefined;
60
+ readonly platform?: string | undefined;
61
+ readonly buildArgs?: Readonly<Record<string, string>> | undefined;
62
+ }
63
+ /**
64
+ * The environment section of the configuration file.
65
+ */
66
+ export interface EnvironmentConfig {
67
+ readonly name: string;
68
+ readonly provider: string;
69
+ readonly components: readonly ConfigComponent[];
70
+ }
71
+ /**
72
+ * A single step in a workflow.
73
+ * Either `run` (shell command) or `uses` (jahia-cli command) must be provided.
74
+ */
75
+ export interface WorkflowStep {
76
+ readonly name?: string | undefined;
77
+ readonly run?: string | undefined;
78
+ readonly uses?: string | undefined;
79
+ readonly with?: Readonly<Record<string, string>> | undefined;
80
+ readonly working_dir?: string | undefined;
81
+ }
82
+ /**
83
+ * A single named workflow in the configuration file.
84
+ * May be marked as the default workflow to run when --name is omitted.
85
+ */
86
+ export interface WorkflowConfig {
87
+ readonly default?: boolean | undefined;
88
+ readonly steps: readonly WorkflowStep[];
89
+ }
90
+ /**
91
+ * A map of named workflows keyed by workflow name.
92
+ */
93
+ export type WorkflowsMap = Readonly<Record<string, WorkflowConfig>>;
94
+ /**
95
+ * The top-level Jahia CLI configuration file structure.
96
+ * Contains `environment`, `tests`, and `workflows` as distinct top-level sections.
97
+ */
98
+ export interface JahiaCliConfig {
99
+ readonly environment?: EnvironmentConfig | undefined;
100
+ readonly tests?: TestsConfig | undefined;
101
+ readonly workflows?: WorkflowsMap | undefined;
102
+ }
103
+ /**
104
+ * Raw YAML structure before validation (loose types for parsing).
105
+ */
106
+ export interface RawConfig {
107
+ readonly environment?: unknown;
108
+ readonly tests?: unknown;
109
+ readonly workflows?: unknown;
110
+ readonly workflow?: unknown;
111
+ }
112
+ /**
113
+ * Raw environment section before validation.
114
+ */
115
+ export interface RawEnvironmentConfig {
116
+ readonly name?: unknown;
117
+ readonly provider?: unknown;
118
+ readonly components?: unknown;
119
+ }
120
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { JahiaCliConfig } from './types.js';
2
+ /**
3
+ * Returns a config enriched with the jahia-cypress tests version metadata.
4
+ */
5
+ export declare const withTestsVersion: (config: JahiaCliConfig, version: string) => JahiaCliConfig;
6
+ //# sourceMappingURL=with-tests-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-tests-version.d.ts","sourceRoot":"","sources":["../../../src/lib/config/with-tests-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,cAAc,EAAE,SAAS,MAAM,KAAG,cAMzE,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Returns a config enriched with the jahia-cypress tests version metadata.
3
+ */
4
+ export const withTestsVersion = (config, version) => ({
5
+ ...config,
6
+ tests: {
7
+ ...(config.tests ?? {}),
8
+ 'jahia-cypress': version,
9
+ },
10
+ });
11
+ //# sourceMappingURL=with-tests-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-tests-version.js","sourceRoot":"","sources":["../../../src/lib/config/with-tests-version.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAAE,OAAe,EAAkB,EAAE,CAAC,CAAC;IAC5F,GAAG,MAAM;IACT,KAAK,EAAE;QACL,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACvB,eAAe,EAAE,OAAO;KACzB;CACF,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { CreateResult, HealthCheckResult } from '../providers/types.js';
2
+ /**
3
+ * Formats a create result for human-readable terminal output.
4
+ */
5
+ export declare const formatCreateResultHuman: (result: CreateResult) => string;
6
+ /**
7
+ * Formats a create result as structured JSON for AI agent consumption.
8
+ * Includes stateFile path when provided.
9
+ */
10
+ export declare const formatCreateResultJson: (result: CreateResult, stateFile?: string) => string;
11
+ /**
12
+ * Formats a health check result for human-readable terminal output.
13
+ */
14
+ export declare const formatHealthCheckHuman: (result: HealthCheckResult) => string;
15
+ /**
16
+ * Formats a health check result as structured JSON for AI agent consumption.
17
+ * Includes stateFile path when provided.
18
+ */
19
+ export declare const formatHealthCheckJson: (result: HealthCheckResult, stateFile?: string) => string;
20
+ /**
21
+ * Formats a list of reconciled components for human-readable terminal output.
22
+ * Used by the `environment list` command.
23
+ */
24
+ export declare const formatEnvironmentListHuman: (params: {
25
+ readonly name: string;
26
+ readonly provider: string;
27
+ readonly network: string;
28
+ readonly createdAt: string;
29
+ readonly status: string;
30
+ readonly components: readonly {
31
+ readonly name: string;
32
+ readonly image: string;
33
+ readonly tag: string;
34
+ readonly containerId: string;
35
+ readonly liveStatus: string;
36
+ }[];
37
+ }) => string;
38
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/lib/output/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA+E9F;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,YAAY,KAAG,MAiD9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,YAAY,EAAE,YAAY,MAAM,KAAG,MAsBjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,iBAAiB,KAAG,MAwBlE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,iBAAiB,EAAE,YAAY,MAAM,KAAG,MAUnF,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS;QAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,EAAE,CAAC;CACL,KAAG,MAmBH,CAAC"}