@jahia/jahia-cli 0.1.3 → 0.2.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 (292) 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 +33 -0
  48. package/dist/commands/jahia/provision.d.ts.map +1 -0
  49. package/dist/commands/jahia/provision.js +164 -0
  50. package/dist/commands/jahia/provision.js.map +1 -0
  51. package/dist/commands/tests/init.d.ts +56 -0
  52. package/dist/commands/tests/init.d.ts.map +1 -0
  53. package/dist/commands/tests/init.js +195 -0
  54. package/dist/commands/tests/init.js.map +1 -0
  55. package/dist/commands/workflow/init.d.ts +21 -0
  56. package/dist/commands/workflow/init.d.ts.map +1 -0
  57. package/dist/commands/workflow/init.js +83 -0
  58. package/dist/commands/workflow/init.js.map +1 -0
  59. package/dist/commands/workflow/run.d.ts +21 -0
  60. package/dist/commands/workflow/run.d.ts.map +1 -0
  61. package/dist/commands/workflow/run.js +97 -0
  62. package/dist/commands/workflow/run.js.map +1 -0
  63. package/dist/lib/components/index.d.ts +59 -0
  64. package/dist/lib/components/index.d.ts.map +1 -0
  65. package/dist/lib/components/index.js +111 -0
  66. package/dist/lib/components/index.js.map +1 -0
  67. package/dist/lib/components/jahia.d.ts +3 -0
  68. package/dist/lib/components/jahia.d.ts.map +1 -0
  69. package/dist/lib/components/jahia.js +37 -0
  70. package/dist/lib/components/jahia.js.map +1 -0
  71. package/dist/lib/components/smtp-server.d.ts +3 -0
  72. package/dist/lib/components/smtp-server.d.ts.map +1 -0
  73. package/dist/lib/components/smtp-server.js +29 -0
  74. package/dist/lib/components/smtp-server.js.map +1 -0
  75. package/dist/lib/components/types.d.ts +89 -0
  76. package/dist/lib/components/types.d.ts.map +1 -0
  77. package/dist/lib/components/types.js +2 -0
  78. package/dist/lib/components/types.js.map +1 -0
  79. package/dist/lib/components/victorialogs.d.ts +3 -0
  80. package/dist/lib/components/victorialogs.d.ts.map +1 -0
  81. package/dist/lib/components/victorialogs.js +29 -0
  82. package/dist/lib/components/victorialogs.js.map +1 -0
  83. package/dist/lib/config/build-blank-config.d.ts +6 -0
  84. package/dist/lib/config/build-blank-config.d.ts.map +1 -0
  85. package/dist/lib/config/build-blank-config.js +19 -0
  86. package/dist/lib/config/build-blank-config.js.map +1 -0
  87. package/dist/lib/config/config-to-yaml-with-comments.d.ts +11 -0
  88. package/dist/lib/config/config-to-yaml-with-comments.d.ts.map +1 -0
  89. package/dist/lib/config/config-to-yaml-with-comments.js +75 -0
  90. package/dist/lib/config/config-to-yaml-with-comments.js.map +1 -0
  91. package/dist/lib/config/config-to-yaml.d.ts +7 -0
  92. package/dist/lib/config/config-to-yaml.d.ts.map +1 -0
  93. package/dist/lib/config/config-to-yaml.js +26 -0
  94. package/dist/lib/config/config-to-yaml.js.map +1 -0
  95. package/dist/lib/config/defaults.d.ts +15 -0
  96. package/dist/lib/config/defaults.d.ts.map +1 -0
  97. package/dist/lib/config/defaults.js +19 -0
  98. package/dist/lib/config/defaults.js.map +1 -0
  99. package/dist/lib/config/export-config.d.ts +15 -0
  100. package/dist/lib/config/export-config.d.ts.map +1 -0
  101. package/dist/lib/config/export-config.js +27 -0
  102. package/dist/lib/config/export-config.js.map +1 -0
  103. package/dist/lib/config/initialize-config-file.d.ts +12 -0
  104. package/dist/lib/config/initialize-config-file.d.ts.map +1 -0
  105. package/dist/lib/config/initialize-config-file.js +16 -0
  106. package/dist/lib/config/initialize-config-file.js.map +1 -0
  107. package/dist/lib/config/parser.d.ts +46 -0
  108. package/dist/lib/config/parser.d.ts.map +1 -0
  109. package/dist/lib/config/parser.js +196 -0
  110. package/dist/lib/config/parser.js.map +1 -0
  111. package/dist/lib/config/resolve-env-vars.d.ts +29 -0
  112. package/dist/lib/config/resolve-env-vars.d.ts.map +1 -0
  113. package/dist/lib/config/resolve-env-vars.js +47 -0
  114. package/dist/lib/config/resolve-env-vars.js.map +1 -0
  115. package/dist/lib/config/types.d.ts +74 -0
  116. package/dist/lib/config/types.d.ts.map +1 -0
  117. package/dist/lib/config/types.js +2 -0
  118. package/dist/lib/config/types.js.map +1 -0
  119. package/dist/lib/config/with-tests-version.d.ts +6 -0
  120. package/dist/lib/config/with-tests-version.d.ts.map +1 -0
  121. package/dist/lib/config/with-tests-version.js +11 -0
  122. package/dist/lib/config/with-tests-version.js.map +1 -0
  123. package/dist/lib/output/formatter.d.ts +38 -0
  124. package/dist/lib/output/formatter.d.ts.map +1 -0
  125. package/dist/lib/output/formatter.js +172 -0
  126. package/dist/lib/output/formatter.js.map +1 -0
  127. package/dist/lib/providers/docker/container.d.ts +61 -0
  128. package/dist/lib/providers/docker/container.d.ts.map +1 -0
  129. package/dist/lib/providers/docker/container.js +101 -0
  130. package/dist/lib/providers/docker/container.js.map +1 -0
  131. package/dist/lib/providers/docker/get-container-logs.d.ts +5 -0
  132. package/dist/lib/providers/docker/get-container-logs.d.ts.map +1 -0
  133. package/dist/lib/providers/docker/get-container-logs.js +17 -0
  134. package/dist/lib/providers/docker/get-container-logs.js.map +1 -0
  135. package/dist/lib/providers/docker/index.d.ts +8 -0
  136. package/dist/lib/providers/docker/index.d.ts.map +1 -0
  137. package/dist/lib/providers/docker/index.js +424 -0
  138. package/dist/lib/providers/docker/index.js.map +1 -0
  139. package/dist/lib/providers/docker/network.d.ts +17 -0
  140. package/dist/lib/providers/docker/network.d.ts.map +1 -0
  141. package/dist/lib/providers/docker/network.js +36 -0
  142. package/dist/lib/providers/docker/network.js.map +1 -0
  143. package/dist/lib/providers/docker/start-container.d.ts +5 -0
  144. package/dist/lib/providers/docker/start-container.d.ts.map +1 -0
  145. package/dist/lib/providers/docker/start-container.js +10 -0
  146. package/dist/lib/providers/docker/start-container.js.map +1 -0
  147. package/dist/lib/providers/docker/stop-container.d.ts +5 -0
  148. package/dist/lib/providers/docker/stop-container.d.ts.map +1 -0
  149. package/dist/lib/providers/docker/stop-container.js +10 -0
  150. package/dist/lib/providers/docker/stop-container.js.map +1 -0
  151. package/dist/lib/providers/docker/volume.d.ts +13 -0
  152. package/dist/lib/providers/docker/volume.d.ts.map +1 -0
  153. package/dist/lib/providers/docker/volume.js +23 -0
  154. package/dist/lib/providers/docker/volume.js.map +1 -0
  155. package/dist/lib/providers/index.d.ts +13 -0
  156. package/dist/lib/providers/index.d.ts.map +1 -0
  157. package/dist/lib/providers/index.js +22 -0
  158. package/dist/lib/providers/index.js.map +1 -0
  159. package/dist/lib/providers/jahiacloudv1/index.d.ts +7 -0
  160. package/dist/lib/providers/jahiacloudv1/index.d.ts.map +1 -0
  161. package/dist/lib/providers/jahiacloudv1/index.js +16 -0
  162. package/dist/lib/providers/jahiacloudv1/index.js.map +1 -0
  163. package/dist/lib/providers/types.d.ts +84 -0
  164. package/dist/lib/providers/types.d.ts.map +1 -0
  165. package/dist/lib/providers/types.js +2 -0
  166. package/dist/lib/providers/types.js.map +1 -0
  167. package/dist/lib/provisioning/detect-manifest-source.d.ts +7 -0
  168. package/dist/lib/provisioning/detect-manifest-source.d.ts.map +1 -0
  169. package/dist/lib/provisioning/detect-manifest-source.js +6 -0
  170. package/dist/lib/provisioning/detect-manifest-source.js.map +1 -0
  171. package/dist/lib/provisioning/fetch-manifest.d.ts +9 -0
  172. package/dist/lib/provisioning/fetch-manifest.d.ts.map +1 -0
  173. package/dist/lib/provisioning/fetch-manifest.js +17 -0
  174. package/dist/lib/provisioning/fetch-manifest.js.map +1 -0
  175. package/dist/lib/provisioning/read-manifest.d.ts +9 -0
  176. package/dist/lib/provisioning/read-manifest.d.ts.map +1 -0
  177. package/dist/lib/provisioning/read-manifest.js +12 -0
  178. package/dist/lib/provisioning/read-manifest.js.map +1 -0
  179. package/dist/lib/provisioning/resolve-asset-paths.d.ts +7 -0
  180. package/dist/lib/provisioning/resolve-asset-paths.d.ts.map +1 -0
  181. package/dist/lib/provisioning/resolve-asset-paths.js +22 -0
  182. package/dist/lib/provisioning/resolve-asset-paths.js.map +1 -0
  183. package/dist/lib/provisioning/submit-provisioning.d.ts +12 -0
  184. package/dist/lib/provisioning/submit-provisioning.d.ts.map +1 -0
  185. package/dist/lib/provisioning/submit-provisioning.js +70 -0
  186. package/dist/lib/provisioning/submit-provisioning.js.map +1 -0
  187. package/dist/lib/provisioning/types.d.ts +34 -0
  188. package/dist/lib/provisioning/types.d.ts.map +1 -0
  189. package/dist/lib/provisioning/types.js +2 -0
  190. package/dist/lib/provisioning/types.js.map +1 -0
  191. package/dist/lib/sam/index.d.ts +4 -0
  192. package/dist/lib/sam/index.d.ts.map +1 -0
  193. package/dist/lib/sam/index.js +3 -0
  194. package/dist/lib/sam/index.js.map +1 -0
  195. package/dist/lib/sam/query-sam-status.d.ts +6 -0
  196. package/dist/lib/sam/query-sam-status.d.ts.map +1 -0
  197. package/dist/lib/sam/query-sam-status.js +54 -0
  198. package/dist/lib/sam/query-sam-status.js.map +1 -0
  199. package/dist/lib/sam/types.d.ts +41 -0
  200. package/dist/lib/sam/types.d.ts.map +1 -0
  201. package/dist/lib/sam/types.js +2 -0
  202. package/dist/lib/sam/types.js.map +1 -0
  203. package/dist/lib/sam/wait-for-sam.d.ts +7 -0
  204. package/dist/lib/sam/wait-for-sam.d.ts.map +1 -0
  205. package/dist/lib/sam/wait-for-sam.js +31 -0
  206. package/dist/lib/sam/wait-for-sam.js.map +1 -0
  207. package/dist/lib/state/delete-state.d.ts +6 -0
  208. package/dist/lib/state/delete-state.d.ts.map +1 -0
  209. package/dist/lib/state/delete-state.js +16 -0
  210. package/dist/lib/state/delete-state.js.map +1 -0
  211. package/dist/lib/state/get-active-environment.d.ts +6 -0
  212. package/dist/lib/state/get-active-environment.d.ts.map +1 -0
  213. package/dist/lib/state/get-active-environment.js +9 -0
  214. package/dist/lib/state/get-active-environment.js.map +1 -0
  215. package/dist/lib/state/get-jahia-connection-defaults.d.ts +16 -0
  216. package/dist/lib/state/get-jahia-connection-defaults.d.ts.map +1 -0
  217. package/dist/lib/state/get-jahia-connection-defaults.js +28 -0
  218. package/dist/lib/state/get-jahia-connection-defaults.js.map +1 -0
  219. package/dist/lib/state/has-active-environment.d.ts +5 -0
  220. package/dist/lib/state/has-active-environment.d.ts.map +1 -0
  221. package/dist/lib/state/has-active-environment.js +9 -0
  222. package/dist/lib/state/has-active-environment.js.map +1 -0
  223. package/dist/lib/state/index.d.ts +11 -0
  224. package/dist/lib/state/index.d.ts.map +1 -0
  225. package/dist/lib/state/index.js +9 -0
  226. package/dist/lib/state/index.js.map +1 -0
  227. package/dist/lib/state/load-state.d.ts +7 -0
  228. package/dist/lib/state/load-state.d.ts.map +1 -0
  229. package/dist/lib/state/load-state.js +17 -0
  230. package/dist/lib/state/load-state.js.map +1 -0
  231. package/dist/lib/state/reconcile-with-docker.d.ts +19 -0
  232. package/dist/lib/state/reconcile-with-docker.d.ts.map +1 -0
  233. package/dist/lib/state/reconcile-with-docker.js +36 -0
  234. package/dist/lib/state/reconcile-with-docker.js.map +1 -0
  235. package/dist/lib/state/save-state.d.ts +7 -0
  236. package/dist/lib/state/save-state.d.ts.map +1 -0
  237. package/dist/lib/state/save-state.js +13 -0
  238. package/dist/lib/state/save-state.js.map +1 -0
  239. package/dist/lib/state/state-file-path.d.ts +8 -0
  240. package/dist/lib/state/state-file-path.d.ts.map +1 -0
  241. package/dist/lib/state/state-file-path.js +14 -0
  242. package/dist/lib/state/state-file-path.js.map +1 -0
  243. package/dist/lib/state/state-flag.d.ts +6 -0
  244. package/dist/lib/state/state-flag.d.ts.map +1 -0
  245. package/dist/lib/state/state-flag.js +12 -0
  246. package/dist/lib/state/state-flag.js.map +1 -0
  247. package/dist/lib/state/types.d.ts +30 -0
  248. package/dist/lib/state/types.d.ts.map +1 -0
  249. package/dist/lib/state/types.js +2 -0
  250. package/dist/lib/state/types.js.map +1 -0
  251. package/dist/lib/tests/clone-scaffolding.d.ts +16 -0
  252. package/dist/lib/tests/clone-scaffolding.d.ts.map +1 -0
  253. package/dist/lib/tests/clone-scaffolding.js +64 -0
  254. package/dist/lib/tests/clone-scaffolding.js.map +1 -0
  255. package/dist/lib/tests/exclusion-list.d.ts +11 -0
  256. package/dist/lib/tests/exclusion-list.d.ts.map +1 -0
  257. package/dist/lib/tests/exclusion-list.js +19 -0
  258. package/dist/lib/tests/exclusion-list.js.map +1 -0
  259. package/dist/lib/tests/gitignore-manager.d.ts +21 -0
  260. package/dist/lib/tests/gitignore-manager.d.ts.map +1 -0
  261. package/dist/lib/tests/gitignore-manager.js +47 -0
  262. package/dist/lib/tests/gitignore-manager.js.map +1 -0
  263. package/dist/lib/tests/index.d.ts +6 -0
  264. package/dist/lib/tests/index.d.ts.map +1 -0
  265. package/dist/lib/tests/index.js +5 -0
  266. package/dist/lib/tests/index.js.map +1 -0
  267. package/dist/lib/tests/sync-missing-files.d.ts +3 -0
  268. package/dist/lib/tests/sync-missing-files.d.ts.map +1 -0
  269. package/dist/lib/tests/sync-missing-files.js +65 -0
  270. package/dist/lib/tests/sync-missing-files.js.map +1 -0
  271. package/dist/lib/tests/types.d.ts +26 -0
  272. package/dist/lib/tests/types.d.ts.map +1 -0
  273. package/dist/lib/tests/types.js +2 -0
  274. package/dist/lib/tests/types.js.map +1 -0
  275. package/dist/lib/workflow/build-sample-workflow.d.ts +7 -0
  276. package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -0
  277. package/dist/lib/workflow/build-sample-workflow.js +35 -0
  278. package/dist/lib/workflow/build-sample-workflow.js.map +1 -0
  279. package/dist/lib/workflow/executor.d.ts +21 -0
  280. package/dist/lib/workflow/executor.d.ts.map +1 -0
  281. package/dist/lib/workflow/executor.js +100 -0
  282. package/dist/lib/workflow/executor.js.map +1 -0
  283. package/dist/lib/workflow/merge-workflow-into-config.d.ts +7 -0
  284. package/dist/lib/workflow/merge-workflow-into-config.d.ts.map +1 -0
  285. package/dist/lib/workflow/merge-workflow-into-config.js +9 -0
  286. package/dist/lib/workflow/merge-workflow-into-config.js.map +1 -0
  287. package/dist/lib/workflow/types.d.ts +30 -0
  288. package/dist/lib/workflow/types.d.ts.map +1 -0
  289. package/dist/lib/workflow/types.js +25 -0
  290. package/dist/lib/workflow/types.js.map +1 -0
  291. package/oclif.manifest.json +856 -1
  292. package/package.json +9 -4
@@ -0,0 +1,83 @@
1
+ import { readFile, writeFile } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+ import { Command, Flags } from '@oclif/core';
4
+ import yaml from 'js-yaml';
5
+ import { configToYaml } from '../../lib/config/config-to-yaml.js';
6
+ import { validateConfig } from '../../lib/config/parser.js';
7
+ import { buildSampleWorkflow } from '../../lib/workflow/build-sample-workflow.js';
8
+ import { mergeWorkflowIntoConfig } from '../../lib/workflow/merge-workflow-into-config.js';
9
+ const DEFAULT_CONFIG_FILE = 'jahia-cli.config.yml';
10
+ /**
11
+ * Loads an existing config file if it exists, returning an empty config if not found.
12
+ */
13
+ export const loadExistingConfigForWorkflow = async (filePath) => {
14
+ try {
15
+ const content = await readFile(filePath, 'utf-8');
16
+ const raw = yaml.load(content);
17
+ return validateConfig(raw);
18
+ }
19
+ catch {
20
+ return {};
21
+ }
22
+ };
23
+ /**
24
+ * Builds a human-readable success message for the workflow init command.
25
+ */
26
+ export const buildWorkflowInitSuccessMessage = (outputPath) => `✓ Sample workflow added to ${outputPath}\n\n` +
27
+ ' Edit the workflow steps to match your needs, then run:\n' +
28
+ ` jahia-cli workflow run --config ${outputPath}`;
29
+ export default class WorkflowInit extends Command {
30
+ static description = 'Add a sample workflow section to a configuration file. ' +
31
+ 'Generates ~5 representative steps (init, create, alive, test, cleanup) ' +
32
+ 'to help get started. Preserves existing environment and tests sections.';
33
+ static examples = [
34
+ '<%= config.bin %> workflow init',
35
+ '<%= config.bin %> workflow init --config ./my-config.yml',
36
+ '<%= config.bin %> workflow init --force',
37
+ '<%= config.bin %> workflow init --json',
38
+ ];
39
+ static flags = {
40
+ config: Flags.string({
41
+ char: 'c',
42
+ description: 'Path to the YAML configuration file',
43
+ default: DEFAULT_CONFIG_FILE,
44
+ }),
45
+ force: Flags.boolean({
46
+ char: 'f',
47
+ description: 'Overwrite existing workflow section if already present',
48
+ default: false,
49
+ }),
50
+ json: Flags.boolean({
51
+ description: 'Output result as structured JSON (for AI agents and scripting)',
52
+ default: false,
53
+ }),
54
+ };
55
+ async run() {
56
+ const { flags } = await this.parse(WorkflowInit);
57
+ const configPath = resolve(flags.config);
58
+ const existingConfig = await loadExistingConfigForWorkflow(configPath);
59
+ if (existingConfig.workflow !== undefined && !flags.force) {
60
+ const msg = `Configuration file already has a workflow section.\n\n` +
61
+ ` File: ${configPath}\n\n` +
62
+ ' Use --force to overwrite the existing workflow.';
63
+ if (flags.json) {
64
+ this.log(JSON.stringify({ success: false, error: 'workflow_exists', file: configPath }));
65
+ }
66
+ else {
67
+ this.error(msg);
68
+ }
69
+ return;
70
+ }
71
+ const sampleWorkflow = buildSampleWorkflow();
72
+ const merged = mergeWorkflowIntoConfig(existingConfig, sampleWorkflow);
73
+ const yamlContent = configToYaml(merged);
74
+ await writeFile(configPath, yamlContent, 'utf-8');
75
+ if (flags.json) {
76
+ this.log(JSON.stringify({ success: true, file: configPath, workflow: sampleWorkflow }, undefined, 2));
77
+ }
78
+ else {
79
+ this.log(buildWorkflowInitSuccessMessage(configPath));
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/workflow/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Command } from '@oclif/core';
2
+ import type { StepResult } from '../../lib/workflow/types.js';
3
+ /**
4
+ * Formats a duration in milliseconds to a human-readable string.
5
+ */
6
+ export declare const formatDuration: (ms: number) => string;
7
+ /**
8
+ * Builds a formatted summary of workflow execution for human-readable output.
9
+ */
10
+ export declare const buildWorkflowSummary: (steps: readonly StepResult[], success: boolean, totalDurationMs: number) => string;
11
+ export default class WorkflowRun extends Command {
12
+ static description: string;
13
+ static examples: string[];
14
+ static flags: {
15
+ config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
16
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ state: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/workflow/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MAa3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,UAAU,EAAE,EAC5B,SAAS,OAAO,EAChB,iBAAiB,MAAM,KACtB,MAkBF,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,OAAgB,WAAW,SAGoC;IAE/D,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;;;MAcnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+ClC"}
@@ -0,0 +1,97 @@
1
+ import { resolve } from 'node:path';
2
+ import { Command, Flags } from '@oclif/core';
3
+ import { loadConfigFile } from '../../lib/config/parser.js';
4
+ import { executeWorkflow } from '../../lib/workflow/executor.js';
5
+ /**
6
+ * Formats a duration in milliseconds to a human-readable string.
7
+ */
8
+ export const formatDuration = (ms) => {
9
+ if (ms < 1000) {
10
+ return `${String(ms)}ms`;
11
+ }
12
+ const seconds = Math.floor(ms / 1000);
13
+ if (seconds < 60) {
14
+ return `${String(seconds)}s`;
15
+ }
16
+ const minutes = Math.floor(seconds / 60);
17
+ const remainingSeconds = seconds % 60;
18
+ return `${String(minutes)}m ${String(remainingSeconds)}s`;
19
+ };
20
+ /**
21
+ * Builds a formatted summary of workflow execution for human-readable output.
22
+ */
23
+ export const buildWorkflowSummary = (steps, success, totalDurationMs) => {
24
+ const header = success ? '✓ Workflow completed successfully' : '✗ Workflow failed';
25
+ const stepLines = steps.map((step) => ` ${step.success ? '✓' : '✗'} ${step.name} (${formatDuration(step.durationMs)})${step.error !== undefined ? `\n Error: ${step.error}` : ''}`);
26
+ return [
27
+ header,
28
+ '',
29
+ ' Steps:',
30
+ ...stepLines,
31
+ '',
32
+ ` Total time: ${formatDuration(totalDurationMs)}`,
33
+ ].join('\n');
34
+ };
35
+ export default class WorkflowRun extends Command {
36
+ static description = 'Execute a workflow defined in a configuration file. ' +
37
+ 'Runs steps sequentially — shell commands via execa, ' +
38
+ 'jahia-cli commands via subprocess. Stops on first failure.';
39
+ static examples = [
40
+ '<%= config.bin %> workflow run --config jahia-cli.config.yml',
41
+ '<%= config.bin %> workflow run --config ./my-config.yml --json',
42
+ ];
43
+ static flags = {
44
+ config: Flags.string({
45
+ char: 'c',
46
+ description: 'Path to the YAML configuration file',
47
+ required: true,
48
+ }),
49
+ json: Flags.boolean({
50
+ description: 'Output result as structured JSON (for AI agents and scripting)',
51
+ default: false,
52
+ }),
53
+ state: Flags.string({
54
+ char: 's',
55
+ description: 'Path to the state file (auto-passed to jahia-cli subcommands)',
56
+ }),
57
+ };
58
+ async run() {
59
+ const { flags } = await this.parse(WorkflowRun);
60
+ const configPath = resolve(flags.config);
61
+ const config = await loadConfigFile(configPath);
62
+ if (config.workflow === undefined) {
63
+ this.error('No workflow section found in configuration file.\n\n' +
64
+ ' Run "jahia-cli workflow init" to generate a sample workflow.');
65
+ return;
66
+ }
67
+ const { steps } = config.workflow;
68
+ if (!flags.json) {
69
+ this.log(`▶ Running workflow (${String(steps.length)} steps)\n`);
70
+ }
71
+ const cliEntryPoint = resolve(this.config.root, 'bin', 'run.js');
72
+ const result = await executeWorkflow({
73
+ steps,
74
+ configPath,
75
+ statePath: flags.state,
76
+ cwd: process.cwd(),
77
+ cliEntryPoint,
78
+ onStepStart: flags.json
79
+ ? undefined
80
+ : (name, index) => {
81
+ this.log(` [${String(index + 1)}/${String(steps.length)}] ${name}...`);
82
+ },
83
+ onStepComplete: undefined,
84
+ });
85
+ if (flags.json) {
86
+ this.log(JSON.stringify(result, undefined, 2));
87
+ }
88
+ else {
89
+ this.log('');
90
+ this.log(buildWorkflowSummary(result.steps, result.success, result.totalDurationMs));
91
+ }
92
+ if (!result.success) {
93
+ this.exit(1);
94
+ }
95
+ }
96
+ }
97
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/workflow/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { ComponentCategory, ComponentDefinition, ComponentOverrides, ResolvedComponent } from './types.js';
2
+ /**
3
+ * Registry of all available components.
4
+ * To add a new component: create a file, define the ComponentDefinition, import and add here.
5
+ */
6
+ export declare const COMPONENT_REGISTRY: Readonly<Record<string, ComponentDefinition>>;
7
+ /**
8
+ * Returns all registered component names.
9
+ */
10
+ export declare const listComponentNames: () => readonly string[];
11
+ /**
12
+ * Returns all registered component definitions.
13
+ */
14
+ export declare const listComponents: () => readonly ComponentDefinition[];
15
+ /**
16
+ * Returns components that are user-selectable (not transparent infrastructure).
17
+ */
18
+ export declare const listUserSelectableComponents: () => readonly ComponentDefinition[];
19
+ /**
20
+ * Returns transparent infrastructure components (auto-deployed).
21
+ */
22
+ export declare const listTransparentComponents: () => readonly ComponentDefinition[];
23
+ /**
24
+ * Returns components matching a specific category.
25
+ */
26
+ export declare const listComponentsByCategory: (category: ComponentCategory) => readonly ComponentDefinition[];
27
+ /**
28
+ * Retrieves a component definition by name.
29
+ * Returns undefined if the component is not found.
30
+ */
31
+ export declare const getComponent: (name: string) => ComponentDefinition | undefined;
32
+ /**
33
+ * Parses a Docker image reference that may include a tag (e.g. "jahia/jahia-ee:8.3.0.0").
34
+ * Returns the image name and optional embedded tag separately.
35
+ */
36
+ export declare const parseImageReference: (ref: string) => {
37
+ readonly image: string;
38
+ readonly tag: string | undefined;
39
+ };
40
+ /**
41
+ * Resolves a component by merging its definition with user-provided overrides.
42
+ *
43
+ * The `image` override accepts the full `image:tag` format (e.g. "jahia/jahia-ee:8.3.0.0").
44
+ * When it contains a tag, that tag is used unless a separate `tag` override is also provided.
45
+ *
46
+ * Environment variables in both definition and override values support `${VAR}` and
47
+ * `${VAR:-default}` substitution from `process.env`, consistent with the workflow engine.
48
+ * This allows component definitions to reference host environment variables
49
+ * (e.g. `JAHIA_LICENSE: '${JAHIA_LICENSE:-}'`) that are resolved at container creation time.
50
+ */
51
+ export declare const resolveComponent: (definition: ComponentDefinition, overrides?: ComponentOverrides) => ResolvedComponent;
52
+ /**
53
+ * Applies envInjections from all selected components to their target components.
54
+ * Returns a new array of ResolvedComponents with injected env vars merged in.
55
+ * Dependencies are an implementation detail — callers just pass all selected components.
56
+ */
57
+ export declare const applyEnvInjections: (components: readonly ResolvedComponent[]) => readonly ResolvedComponent[];
58
+ export type { ComponentCategory, ComponentDefinition, ComponentOverrides, ResolvedComponent } from './types.js';
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMhH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAI5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,SAAS,MAAM,EAAqC,CAAC;AAE3F;;GAEG;AACH,eAAO,MAAM,cAAc,QAAO,SAAS,mBAAmB,EAC3B,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,SAAS,mBAAmB,EACT,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAO,SAAS,mBAAmB,EACP,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,UAAU,iBAAiB,KAAG,SAAS,mBAAmB,EACzB,CAAC;AAE3E;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,mBAAmB,GAAG,SACxC,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,KAAK,MAAM,KACV;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAgB5D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAC3B,YAAY,mBAAmB,EAC/B,YAAW,kBAAuB,KACjC,iBAeF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,SAAS,iBAAiB,EAAE,KACvC,SAAS,iBAAiB,EAsB5B,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { resolveEnvVarsInRecord } from '../config/resolve-env-vars.js';
2
+ import { jahia } from './jahia.js';
3
+ import { smtpServer } from './smtp-server.js';
4
+ import { victorialogs } from './victorialogs.js';
5
+ /**
6
+ * Registry of all available components.
7
+ * To add a new component: create a file, define the ComponentDefinition, import and add here.
8
+ */
9
+ export const COMPONENT_REGISTRY = {
10
+ jahia,
11
+ 'smtp-server': smtpServer,
12
+ victorialogs,
13
+ };
14
+ /**
15
+ * Returns all registered component names.
16
+ */
17
+ export const listComponentNames = () => Object.keys(COMPONENT_REGISTRY);
18
+ /**
19
+ * Returns all registered component definitions.
20
+ */
21
+ export const listComponents = () => Object.values(COMPONENT_REGISTRY);
22
+ /**
23
+ * Returns components that are user-selectable (not transparent infrastructure).
24
+ */
25
+ export const listUserSelectableComponents = () => Object.values(COMPONENT_REGISTRY).filter((c) => !c.isTransparent);
26
+ /**
27
+ * Returns transparent infrastructure components (auto-deployed).
28
+ */
29
+ export const listTransparentComponents = () => Object.values(COMPONENT_REGISTRY).filter((c) => c.isTransparent);
30
+ /**
31
+ * Returns components matching a specific category.
32
+ */
33
+ export const listComponentsByCategory = (category) => Object.values(COMPONENT_REGISTRY).filter((c) => c.category === category);
34
+ /**
35
+ * Retrieves a component definition by name.
36
+ * Returns undefined if the component is not found.
37
+ */
38
+ export const getComponent = (name) => COMPONENT_REGISTRY[name];
39
+ /**
40
+ * Parses a Docker image reference that may include a tag (e.g. "jahia/jahia-ee:8.3.0.0").
41
+ * Returns the image name and optional embedded tag separately.
42
+ */
43
+ export const parseImageReference = (ref) => {
44
+ // A colon after a slash-separated path segment indicates a tag.
45
+ // We split on the *last* colon that isn't part of a registry port (registry:port/repo).
46
+ // Simple heuristic: if the part after the last colon contains '/' it's not a tag.
47
+ const lastColon = ref.lastIndexOf(':');
48
+ if (lastColon === -1) {
49
+ return { image: ref, tag: undefined };
50
+ }
51
+ const afterColon = ref.slice(lastColon + 1);
52
+ // If afterColon contains '/' it's likely a registry:port/repo pattern, not a tag
53
+ if (afterColon.includes('/')) {
54
+ return { image: ref, tag: undefined };
55
+ }
56
+ return { image: ref.slice(0, lastColon), tag: afterColon };
57
+ };
58
+ /**
59
+ * Resolves a component by merging its definition with user-provided overrides.
60
+ *
61
+ * The `image` override accepts the full `image:tag` format (e.g. "jahia/jahia-ee:8.3.0.0").
62
+ * When it contains a tag, that tag is used unless a separate `tag` override is also provided.
63
+ *
64
+ * Environment variables in both definition and override values support `${VAR}` and
65
+ * `${VAR:-default}` substitution from `process.env`, consistent with the workflow engine.
66
+ * This allows component definitions to reference host environment variables
67
+ * (e.g. `JAHIA_LICENSE: '${JAHIA_LICENSE:-}'`) that are resolved at container creation time.
68
+ */
69
+ export const resolveComponent = (definition, overrides = {}) => {
70
+ const parsed = overrides.image !== undefined
71
+ ? parseImageReference(overrides.image)
72
+ : undefined;
73
+ const mergedEnv = { ...definition.env, ...overrides.env };
74
+ return {
75
+ definition,
76
+ overrides,
77
+ effectiveImage: parsed?.image ?? definition.image,
78
+ effectiveTag: overrides.tag ?? parsed?.tag ?? definition.defaultTag,
79
+ effectiveEnv: resolveEnvVarsInRecord(mergedEnv),
80
+ effectivePorts: overrides.ports ?? definition.ports,
81
+ };
82
+ };
83
+ /**
84
+ * Applies envInjections from all selected components to their target components.
85
+ * Returns a new array of ResolvedComponents with injected env vars merged in.
86
+ * Dependencies are an implementation detail — callers just pass all selected components.
87
+ */
88
+ export const applyEnvInjections = (components) => {
89
+ const injections = new Map();
90
+ // Collect all injections from selected components
91
+ components.forEach((c) => {
92
+ const envInjections = c.definition.envInjections;
93
+ if (envInjections === undefined)
94
+ return;
95
+ Object.entries(envInjections).forEach(([targetName, vars]) => {
96
+ const existing = injections.get(targetName) ?? {};
97
+ injections.set(targetName, { ...existing, ...vars });
98
+ });
99
+ });
100
+ // Apply injections to target components
101
+ return components.map((c) => {
102
+ const extra = injections.get(c.definition.name);
103
+ if (extra === undefined)
104
+ return c;
105
+ return {
106
+ ...c,
107
+ effectiveEnv: resolveEnvVarsInRecord({ ...c.effectiveEnv, ...extra }),
108
+ };
109
+ });
110
+ };
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ComponentDefinition } from './types.js';
2
+ export declare const jahia: ComponentDefinition;
3
+ //# sourceMappingURL=jahia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jahia.d.ts","sourceRoot":"","sources":["../../../src/lib/components/jahia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,KAAK,EAAE,mBAmCnB,CAAC"}
@@ -0,0 +1,37 @@
1
+ export const jahia = {
2
+ name: 'jahia',
3
+ description: 'Jahia DXM (Digital Experience Manager) processing server',
4
+ image: 'jahia/jahia-ee',
5
+ defaultTag: '8.2.1.0',
6
+ ports: [
7
+ { container: 8080, host: 8080 },
8
+ { container: 8101, host: 8101 },
9
+ ],
10
+ env: {
11
+ SUPER_USER_PASSWORD: '${SUPER_USER_PASSWORD:-root1234}',
12
+ MAX_RAM_PERCENTAGE: '${MAX_RAM_PERCENTAGE:-80}',
13
+ PROCESSING_SERVER: 'true',
14
+ JAHIA_LICENSE: '${JAHIA_LICENSE:-}',
15
+ JPDA: '${JPDA:-}',
16
+ },
17
+ volumes: [
18
+ { name: 'jahia-data', containerPath: '/var/jahia/repository' },
19
+ ],
20
+ healthcheck: {
21
+ command: [
22
+ 'CMD-SHELL',
23
+ 'curl -f http://localhost:8080/modules/healthcheck || exit 1',
24
+ ],
25
+ intervalSeconds: 30,
26
+ timeoutSeconds: 10,
27
+ retries: 10,
28
+ startPeriodSeconds: 120,
29
+ },
30
+ dependsOn: [],
31
+ networkAliases: ['jahia'],
32
+ category: 'core',
33
+ isTransparent: false,
34
+ multiInstance: false,
35
+ providerSupport: ['docker', 'jahiacloudv1'],
36
+ };
37
+ //# sourceMappingURL=jahia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jahia.js","sourceRoot":"","sources":["../../../src/lib/components/jahia.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAwB;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,0DAA0D;IACvE,KAAK,EAAE,gBAAgB;IACvB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE;QACL,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/B,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;KAChC;IACD,GAAG,EAAE;QACH,mBAAmB,EAAE,kCAAkC;QACvD,kBAAkB,EAAE,2BAA2B;QAC/C,iBAAiB,EAAE,MAAM;QACzB,aAAa,EAAE,oBAAoB;QACnC,IAAI,EAAE,WAAW;KAClB;IACD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE;KAC/D;IACD,WAAW,EAAE;QACX,OAAO,EAAE;YACP,WAAW;YACX,6DAA6D;SAC9D;QACD,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,kBAAkB,EAAE,GAAG;KACxB;IACD,SAAS,EAAE,EAAE;IACb,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;CAC5C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ComponentDefinition } from './types.js';
2
+ export declare const smtpServer: ComponentDefinition;
3
+ //# sourceMappingURL=smtp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smtp-server.d.ts","sourceRoot":"","sources":["../../../src/lib/components/smtp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,UAAU,EAAE,mBA2BxB,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const smtpServer = {
2
+ name: 'smtp-server',
3
+ description: 'Mailpit SMTP server for email testing',
4
+ image: 'axllent/mailpit',
5
+ defaultTag: 'v1.27',
6
+ ports: [
7
+ { container: 1025, host: 1025 },
8
+ { container: 8025, host: 8025 },
9
+ ],
10
+ env: {},
11
+ volumes: [],
12
+ healthcheck: {
13
+ command: ['CMD-SHELL', 'wget -qO- http://localhost:8025/api/v1/info || exit 1'],
14
+ intervalSeconds: 10,
15
+ timeoutSeconds: 3,
16
+ retries: 3,
17
+ startPeriodSeconds: 5,
18
+ },
19
+ dependsOn: [],
20
+ networkAliases: ['smtp-server'],
21
+ category: 'utility',
22
+ isTransparent: false,
23
+ multiInstance: false,
24
+ providerSupport: ['docker'],
25
+ envInjections: {
26
+ jahia: { SMTP_SERVER_URL: '${SMTP_SERVER_URL:-smtp://smtp-server:1025}' },
27
+ },
28
+ };
29
+ //# sourceMappingURL=smtp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smtp-server.js","sourceRoot":"","sources":["../../../src/lib/components/smtp-server.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,uCAAuC;IACpD,KAAK,EAAE,iBAAiB;IACxB,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE;QACL,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/B,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;KAChC;IACD,GAAG,EAAE,EAAE;IACP,OAAO,EAAE,EAAE;IACX,WAAW,EAAE;QACX,OAAO,EAAE,CAAC,WAAW,EAAE,uDAAuD,CAAC;QAC/E,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,CAAC;KACtB;IACD,SAAS,EAAE,EAAE;IACb,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3B,aAAa,EAAE;QACb,KAAK,EAAE,EAAE,eAAe,EAAE,6CAA6C,EAAE;KAC1E;CACF,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Defines a port mapping from container port to host port.
3
+ */
4
+ export interface PortMapping {
5
+ readonly container: number;
6
+ readonly host: number;
7
+ readonly protocol?: 'tcp' | 'udp' | undefined;
8
+ }
9
+ /**
10
+ * Defines a named volume mount.
11
+ */
12
+ export interface VolumeMount {
13
+ readonly name: string;
14
+ readonly containerPath: string;
15
+ }
16
+ /**
17
+ * Defines a container healthcheck configuration.
18
+ */
19
+ export interface HealthcheckConfig {
20
+ readonly command: readonly string[];
21
+ readonly intervalSeconds: number;
22
+ readonly timeoutSeconds: number;
23
+ readonly retries: number;
24
+ readonly startPeriodSeconds: number;
25
+ }
26
+ /**
27
+ * Component categories for organizing the registry.
28
+ */
29
+ export type ComponentCategory = 'core' | 'infrastructure' | 'database' | 'search' | 'application' | 'utility' | 'custom';
30
+ /**
31
+ * Full definition of a component in the library.
32
+ * Contains all the information needed to start and manage a container.
33
+ */
34
+ export interface ComponentDefinition {
35
+ readonly name: string;
36
+ readonly description: string;
37
+ readonly image: string;
38
+ readonly defaultTag: string;
39
+ readonly ports: readonly PortMapping[];
40
+ readonly env: Readonly<Record<string, string>>;
41
+ readonly volumes: readonly VolumeMount[];
42
+ readonly healthcheck?: HealthcheckConfig | undefined;
43
+ readonly dependsOn: readonly string[];
44
+ readonly networkAliases: readonly string[];
45
+ readonly category: ComponentCategory;
46
+ readonly isTransparent: boolean;
47
+ readonly multiInstance: boolean;
48
+ readonly providerSupport: readonly ('docker' | 'jahiacloudv1')[];
49
+ readonly args?: readonly string[] | undefined;
50
+ /**
51
+ * Environment variables to inject into other components when this component is present.
52
+ * Keys are target component names, values are env var maps to merge into those components.
53
+ */
54
+ readonly envInjections?: Readonly<Record<string, Readonly<Record<string, string>>>> | undefined;
55
+ }
56
+ /**
57
+ * User-provided overrides for a component.
58
+ * Only the fields that differ from defaults need to be specified.
59
+ *
60
+ * The `image` field accepts the full Docker reference including tag
61
+ * (e.g. "jahia/jahia-ee:8.3.0.0" or "my-registry.example.com/jahia/jahia-ee:8.3.0.0").
62
+ * When `image` contains a tag, that tag is used unless a separate `tag` override
63
+ * is also provided — the explicit `tag` override always takes precedence.
64
+ *
65
+ * Both `image` and `tag` support environment variable substitution:
66
+ * - `${VAR}` — resolves from process.env; errors if not set
67
+ * - `${VAR:-default}` — resolves from process.env with a fallback
68
+ *
69
+ * Example:
70
+ * image: "${JAHIA_IMAGE:-jahia/jahia-ee:8.2.1.0}"
71
+ */
72
+ export interface ComponentOverrides {
73
+ readonly image?: string | undefined;
74
+ readonly tag?: string | undefined;
75
+ readonly env?: Readonly<Record<string, string>> | undefined;
76
+ readonly ports?: readonly PortMapping[] | undefined;
77
+ }
78
+ /**
79
+ * A component with its overrides applied, ready for deployment.
80
+ */
81
+ export interface ResolvedComponent {
82
+ readonly definition: ComponentDefinition;
83
+ readonly overrides: ComponentOverrides;
84
+ readonly effectiveImage: string;
85
+ readonly effectiveTag: string;
86
+ readonly effectiveEnv: Readonly<Record<string, string>>;
87
+ readonly effectivePorts: readonly PortMapping[];
88
+ }
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/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/components/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { ComponentDefinition } from './types.js';
2
+ export declare const victorialogs: ComponentDefinition;
3
+ //# sourceMappingURL=victorialogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"victorialogs.d.ts","sourceRoot":"","sources":["../../../src/lib/components/victorialogs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,YAAY,EAAE,mBA2B1B,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const victorialogs = {
2
+ name: 'victorialogs',
3
+ description: 'VictoriaLogs log aggregation for AI-friendly log consumption',
4
+ image: 'victoriametrics/victoria-logs',
5
+ defaultTag: 'v1.15.0-victorialogs',
6
+ ports: [
7
+ { container: 9428, host: 9428 },
8
+ { container: 5140, host: 5140 },
9
+ ],
10
+ env: {},
11
+ volumes: [
12
+ { name: 'victorialogs-data', containerPath: '/vlogs' },
13
+ ],
14
+ healthcheck: {
15
+ command: ['CMD-SHELL', 'wget -qO- http://0.0.0.0:9428/health || exit 1'],
16
+ intervalSeconds: 5,
17
+ timeoutSeconds: 3,
18
+ retries: 3,
19
+ startPeriodSeconds: 5,
20
+ },
21
+ dependsOn: [],
22
+ networkAliases: ['victorialogs', 'logs'],
23
+ category: 'infrastructure',
24
+ isTransparent: true,
25
+ multiInstance: false,
26
+ providerSupport: ['docker'],
27
+ args: ['-syslog.listenAddr.tcp=:5140', '-syslog.listenAddr.udp=:5140'],
28
+ };
29
+ //# sourceMappingURL=victorialogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"victorialogs.js","sourceRoot":"","sources":["../../../src/lib/components/victorialogs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAwB;IAC/C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,8DAA8D;IAC3E,KAAK,EAAE,+BAA+B;IACtC,UAAU,EAAE,sBAAsB;IAClC,KAAK,EAAE;QACL,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/B,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;KAChC;IACD,GAAG,EAAE,EAAE;IACP,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE;KACvD;IACD,WAAW,EAAE;QACX,OAAO,EAAE,CAAC,WAAW,EAAE,gDAAgD,CAAC;QACxE,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,CAAC;KACtB;IACD,SAAS,EAAE,EAAE;IACb,cAAc,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;IACxC,QAAQ,EAAE,gBAAgB;IAC1B,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3B,IAAI,EAAE,CAAC,8BAA8B,EAAE,8BAA8B,CAAC;CACvE,CAAC"}