@eudiplo/cli 7.1.1 → 7.2.0-main.20c3901

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 (268) hide show
  1. package/README.md +259 -15
  2. package/dist/commands/commands/index.d.ts +4 -0
  3. package/dist/commands/commands/index.d.ts.map +1 -0
  4. package/dist/commands/commands/index.js +13 -0
  5. package/dist/commands/commands/index.js.map +1 -0
  6. package/dist/commands/commands/render.d.ts +4 -0
  7. package/dist/commands/commands/render.d.ts.map +1 -0
  8. package/dist/commands/commands/render.js +52 -0
  9. package/dist/commands/commands/render.js.map +1 -0
  10. package/dist/commands/completion/action.d.ts +6 -0
  11. package/dist/commands/completion/action.d.ts.map +1 -0
  12. package/dist/commands/completion/action.js +133 -0
  13. package/dist/commands/completion/action.js.map +1 -0
  14. package/dist/commands/completion/index.d.ts +6 -0
  15. package/dist/commands/completion/index.d.ts.map +1 -0
  16. package/dist/commands/completion/index.js +23 -0
  17. package/dist/commands/completion/index.js.map +1 -0
  18. package/dist/commands/config/action.d.ts +4 -0
  19. package/dist/commands/config/action.d.ts.map +1 -0
  20. package/dist/commands/config/action.js +33 -0
  21. package/dist/commands/config/action.js.map +1 -0
  22. package/dist/commands/config/editor/action.d.ts +3 -0
  23. package/dist/commands/config/editor/action.d.ts.map +1 -0
  24. package/dist/commands/config/editor/action.js +112 -0
  25. package/dist/commands/config/editor/action.js.map +1 -0
  26. package/dist/commands/config/editor/index.d.ts +5 -0
  27. package/dist/commands/config/editor/index.d.ts.map +1 -0
  28. package/dist/commands/config/editor/index.js +20 -0
  29. package/dist/commands/config/editor/index.js.map +1 -0
  30. package/dist/commands/config/index.d.ts +5 -0
  31. package/dist/commands/config/index.d.ts.map +1 -0
  32. package/dist/commands/config/index.js +37 -0
  33. package/dist/commands/config/index.js.map +1 -0
  34. package/dist/commands/config/portability/action.d.ts +5 -0
  35. package/dist/commands/config/portability/action.d.ts.map +1 -0
  36. package/dist/commands/config/portability/action.js +164 -0
  37. package/dist/commands/config/portability/action.js.map +1 -0
  38. package/dist/commands/config/portability/index.d.ts +5 -0
  39. package/dist/commands/config/portability/index.d.ts.map +1 -0
  40. package/dist/commands/config/portability/index.js +44 -0
  41. package/dist/commands/config/portability/index.js.map +1 -0
  42. package/dist/commands/config/portability/migrations.d.ts +24 -0
  43. package/dist/commands/config/portability/migrations.d.ts.map +1 -0
  44. package/dist/commands/config/portability/migrations.js +95 -0
  45. package/dist/commands/config/portability/migrations.js.map +1 -0
  46. package/dist/commands/config/portability/migrations.spec.d.ts +2 -0
  47. package/dist/commands/config/portability/migrations.spec.d.ts.map +1 -0
  48. package/dist/commands/config/portability/migrations.spec.js +32 -0
  49. package/dist/commands/config/portability/migrations.spec.js.map +1 -0
  50. package/dist/commands/config/tenant/action.d.ts +3 -0
  51. package/dist/commands/config/tenant/action.d.ts.map +1 -0
  52. package/dist/commands/config/tenant/action.js +301 -0
  53. package/dist/commands/config/tenant/action.js.map +1 -0
  54. package/dist/commands/config/tenant/index.d.ts +5 -0
  55. package/dist/commands/config/tenant/index.d.ts.map +1 -0
  56. package/dist/commands/config/tenant/index.js +61 -0
  57. package/dist/commands/config/tenant/index.js.map +1 -0
  58. package/dist/commands/config/validate/action.d.ts +4 -0
  59. package/dist/commands/config/validate/action.d.ts.map +1 -0
  60. package/dist/commands/config/validate/action.js +47 -0
  61. package/dist/commands/config/validate/action.js.map +1 -0
  62. package/dist/commands/config/validate/index.d.ts +5 -0
  63. package/dist/commands/config/validate/index.d.ts.map +1 -0
  64. package/dist/commands/config/validate/index.js +18 -0
  65. package/dist/commands/config/validate/index.js.map +1 -0
  66. package/dist/commands/config/validate/registry.d.ts +6 -0
  67. package/dist/commands/config/validate/registry.d.ts.map +1 -0
  68. package/dist/{config-validate → commands/config/validate}/registry.js +2 -2
  69. package/dist/commands/config/validate/registry.js.map +1 -0
  70. package/dist/{config-validate → commands/config/validate}/registry.json +11 -22
  71. package/dist/commands/config/validate/report.d.ts.map +1 -0
  72. package/dist/{config-validate → commands/config/validate}/report.js +6 -1
  73. package/dist/commands/config/validate/report.js.map +1 -0
  74. package/dist/commands/config/validate/schemas.d.ts +3 -0
  75. package/dist/commands/config/validate/schemas.d.ts.map +1 -0
  76. package/dist/commands/config/validate/schemas.js +35 -0
  77. package/dist/commands/config/validate/schemas.js.map +1 -0
  78. package/dist/{config-validate → commands/config/validate}/types.d.ts +1 -1
  79. package/dist/commands/config/validate/types.d.ts.map +1 -0
  80. package/dist/commands/config/validate/types.js.map +1 -0
  81. package/dist/commands/config/validate/validator.d.ts.map +1 -0
  82. package/dist/{config-validate → commands/config/validate}/validator.js +17 -9
  83. package/dist/commands/config/validate/validator.js.map +1 -0
  84. package/dist/commands/demo/action.d.ts +3 -0
  85. package/dist/commands/demo/action.d.ts.map +1 -0
  86. package/dist/commands/demo/action.js +73 -0
  87. package/dist/commands/demo/action.js.map +1 -0
  88. package/dist/commands/demo/index.d.ts +5 -0
  89. package/dist/commands/demo/index.d.ts.map +1 -0
  90. package/dist/commands/demo/index.js +19 -0
  91. package/dist/commands/demo/index.js.map +1 -0
  92. package/dist/commands/deployment/action.d.ts +3 -0
  93. package/dist/commands/deployment/action.d.ts.map +1 -0
  94. package/dist/commands/deployment/action.js +23 -0
  95. package/dist/commands/deployment/action.js.map +1 -0
  96. package/dist/commands/deployment/index.d.ts +5 -0
  97. package/dist/commands/deployment/index.d.ts.map +1 -0
  98. package/dist/commands/deployment/index.js +19 -0
  99. package/dist/commands/deployment/index.js.map +1 -0
  100. package/dist/commands/doctor/action.d.ts +3 -0
  101. package/dist/commands/doctor/action.d.ts.map +1 -0
  102. package/dist/commands/doctor/action.js +12 -0
  103. package/dist/commands/doctor/action.js.map +1 -0
  104. package/dist/commands/doctor/index.d.ts +5 -0
  105. package/dist/commands/doctor/index.d.ts.map +1 -0
  106. package/dist/commands/doctor/index.js +13 -0
  107. package/dist/commands/doctor/index.js.map +1 -0
  108. package/dist/commands/init/action.d.ts +3 -0
  109. package/dist/commands/init/action.d.ts.map +1 -0
  110. package/dist/commands/init/action.js +255 -0
  111. package/dist/commands/init/action.js.map +1 -0
  112. package/dist/commands/init/index.d.ts +5 -0
  113. package/dist/commands/init/index.d.ts.map +1 -0
  114. package/dist/commands/init/index.js +35 -0
  115. package/dist/commands/init/index.js.map +1 -0
  116. package/dist/commands/instance/action.d.ts +7 -0
  117. package/dist/commands/instance/action.d.ts.map +1 -0
  118. package/dist/commands/instance/action.js +85 -0
  119. package/dist/commands/instance/action.js.map +1 -0
  120. package/dist/commands/instance/index.d.ts +5 -0
  121. package/dist/commands/instance/index.d.ts.map +1 -0
  122. package/dist/commands/instance/index.js +53 -0
  123. package/dist/commands/instance/index.js.map +1 -0
  124. package/dist/commands/shared.d.ts +14 -0
  125. package/dist/commands/shared.d.ts.map +1 -0
  126. package/dist/commands/shared.js +39 -0
  127. package/dist/commands/shared.js.map +1 -0
  128. package/dist/commands/status/action.d.ts +3 -0
  129. package/dist/commands/status/action.d.ts.map +1 -0
  130. package/dist/commands/status/action.js +13 -0
  131. package/dist/commands/status/action.js.map +1 -0
  132. package/dist/commands/status/index.d.ts +5 -0
  133. package/dist/commands/status/index.d.ts.map +1 -0
  134. package/dist/commands/status/index.js +13 -0
  135. package/dist/commands/status/index.js.map +1 -0
  136. package/dist/commands/version/action.d.ts +4 -0
  137. package/dist/commands/version/action.d.ts.map +1 -0
  138. package/dist/commands/version/action.js +70 -0
  139. package/dist/commands/version/action.js.map +1 -0
  140. package/dist/commands/version/index.d.ts +6 -0
  141. package/dist/commands/version/index.d.ts.map +1 -0
  142. package/dist/commands/version/index.js +12 -0
  143. package/dist/commands/version/index.js.map +1 -0
  144. package/dist/index.js +0 -0
  145. package/dist/options.d.ts +2 -0
  146. package/dist/options.d.ts.map +1 -0
  147. package/dist/options.js +5 -0
  148. package/dist/options.js.map +1 -0
  149. package/dist/runtime.d.ts +2 -0
  150. package/dist/runtime.d.ts.map +1 -1
  151. package/dist/runtime.js +61 -465
  152. package/dist/runtime.js.map +1 -1
  153. package/dist/sea-assets.d.ts +4 -2
  154. package/dist/sea-assets.d.ts.map +1 -1
  155. package/dist/sea-assets.js +6 -3
  156. package/dist/sea-assets.js.map +1 -1
  157. package/dist/{config.d.ts → services/cli-config.d.ts} +4 -2
  158. package/dist/services/cli-config.d.ts.map +1 -0
  159. package/dist/{config.js → services/cli-config.js} +30 -4
  160. package/dist/services/cli-config.js.map +1 -0
  161. package/dist/{compose-template.d.ts → services/compose-project.d.ts} +14 -4
  162. package/dist/services/compose-project.d.ts.map +1 -0
  163. package/dist/services/compose-project.js +189 -0
  164. package/dist/services/compose-project.js.map +1 -0
  165. package/dist/{drivers.d.ts → services/deployment-drivers.d.ts} +16 -3
  166. package/dist/services/deployment-drivers.d.ts.map +1 -0
  167. package/dist/services/deployment-drivers.js +288 -0
  168. package/dist/services/deployment-drivers.js.map +1 -0
  169. package/dist/services/deployment-target.d.ts +3 -0
  170. package/dist/services/deployment-target.d.ts.map +1 -0
  171. package/dist/services/deployment-target.js +7 -0
  172. package/dist/services/deployment-target.js.map +1 -0
  173. package/dist/{doctor.d.ts → services/diagnostics.d.ts} +2 -2
  174. package/dist/services/diagnostics.d.ts.map +1 -0
  175. package/dist/{doctor.js → services/diagnostics.js} +4 -2
  176. package/dist/services/diagnostics.js.map +1 -0
  177. package/dist/services/instance-selection.d.ts +3 -0
  178. package/dist/services/instance-selection.d.ts.map +1 -0
  179. package/dist/services/instance-selection.js +13 -0
  180. package/dist/services/instance-selection.js.map +1 -0
  181. package/dist/services/project-directory.d.ts +3 -0
  182. package/dist/services/project-directory.d.ts.map +1 -0
  183. package/dist/services/project-directory.js +14 -0
  184. package/dist/services/project-directory.js.map +1 -0
  185. package/dist/types.d.ts +4 -0
  186. package/dist/types.d.ts.map +1 -1
  187. package/package.json +7 -4
  188. package/templates/demo-config/issuance/issuance.json +20 -12
  189. package/templates/demo-config/key-chains/access.json +13 -2
  190. package/templates/demo-config/key-chains/attestation.json +15 -4
  191. package/templates/demo-config/key-chains/status-list.json +15 -4
  192. package/templates/demo-config/key-chains/trust-list.json +13 -2
  193. package/templates/demo-config/presentation/age-over-18.json +46 -53
  194. package/templates/demo-config/presentation/pid.json +44 -0
  195. package/templates/demo-config.manifest.json +1 -0
  196. package/templates/docker-compose.yml +5 -4
  197. package/templates/schemas/AttributeProviderAuth.schema.json +60 -0
  198. package/templates/schemas/AttributeProviderConfigFile.schema.json +37 -0
  199. package/templates/schemas/CertImportDto.schema.json +35 -0
  200. package/templates/schemas/ClientConfigFile.schema.json +37 -0
  201. package/templates/schemas/ConfigDocumentMetadata.schema.json +25 -0
  202. package/templates/schemas/CreateClientDto.schema.json +1 -0
  203. package/templates/schemas/CreateStatusListDto.schema.json +46 -0
  204. package/templates/schemas/CreateTenantDto.schema.json +116 -0
  205. package/templates/schemas/CredentialConfigCreate.schema.json +55 -0
  206. package/templates/schemas/CredentialConfigFile.schema.json +37 -0
  207. package/templates/schemas/DCQL.schema.json +401 -0
  208. package/templates/schemas/EmbeddedDisclosurePolicy.schema.json +106 -0
  209. package/templates/schemas/ImportTenantDto.schema.json +69 -0
  210. package/templates/schemas/IssuanceConfig.schema.json +26 -6
  211. package/templates/schemas/IssuanceConfigFile.schema.json +32 -0
  212. package/templates/schemas/KeyChainConfigFile.schema.json +101 -0
  213. package/templates/schemas/KeyChainCreateDto.schema.json +66 -0
  214. package/templates/schemas/KeyChainUpdateDto.schema.json +40 -0
  215. package/templates/schemas/KmsConfigFile.schema.json +37 -0
  216. package/templates/schemas/PresentationConfigFile.schema.json +32 -0
  217. package/templates/schemas/RegistrarConfigFile.schema.json +37 -0
  218. package/templates/schemas/RotationPolicyCreateDto.schema.json +28 -0
  219. package/templates/schemas/RotationPolicyUpdateDto.schema.json +25 -0
  220. package/templates/schemas/SessionStorageConfig.schema.json +24 -0
  221. package/templates/schemas/StatusListConfig.schema.json +51 -0
  222. package/templates/schemas/StatusListConfigFile.schema.json +37 -0
  223. package/templates/schemas/TransactionData.schema.json +24 -0
  224. package/templates/schemas/TrustListConfigFile.schema.json +37 -0
  225. package/templates/schemas/UpdateAttributeProviderDto.schema.json +93 -0
  226. package/templates/schemas/UpdateClientDto.schema.json +62 -0
  227. package/templates/schemas/UpdateStatusListConfigDto.schema.json +85 -0
  228. package/templates/schemas/UpdateStatusListDto.schema.json +33 -0
  229. package/templates/schemas/UpdateTenantDto.schema.json +96 -0
  230. package/templates/schemas/UpdateWebhookEndpointDto.schema.json +93 -0
  231. package/templates/schemas/VCT.schema.json +37 -0
  232. package/templates/schemas/WebhookConfig.schema.json +80 -0
  233. package/templates/schemas/WebhookEndpointConfigFile.schema.json +37 -0
  234. package/templates/schemas.manifest.json +34 -1
  235. package/dist/args.d.ts +0 -4
  236. package/dist/args.d.ts.map +0 -1
  237. package/dist/args.js +0 -46
  238. package/dist/args.js.map +0 -1
  239. package/dist/compose-template.d.ts.map +0 -1
  240. package/dist/compose-template.js +0 -105
  241. package/dist/compose-template.js.map +0 -1
  242. package/dist/config-validate/index.d.ts +0 -4
  243. package/dist/config-validate/index.d.ts.map +0 -1
  244. package/dist/config-validate/index.js +0 -4
  245. package/dist/config-validate/index.js.map +0 -1
  246. package/dist/config-validate/registry.d.ts +0 -5
  247. package/dist/config-validate/registry.d.ts.map +0 -1
  248. package/dist/config-validate/registry.js.map +0 -1
  249. package/dist/config-validate/report.d.ts.map +0 -1
  250. package/dist/config-validate/report.js.map +0 -1
  251. package/dist/config-validate/schemas.d.ts +0 -2
  252. package/dist/config-validate/schemas.d.ts.map +0 -1
  253. package/dist/config-validate/schemas.js +0 -24
  254. package/dist/config-validate/schemas.js.map +0 -1
  255. package/dist/config-validate/types.d.ts.map +0 -1
  256. package/dist/config-validate/types.js.map +0 -1
  257. package/dist/config-validate/validator.d.ts.map +0 -1
  258. package/dist/config-validate/validator.js.map +0 -1
  259. package/dist/config.d.ts.map +0 -1
  260. package/dist/config.js.map +0 -1
  261. package/dist/doctor.d.ts.map +0 -1
  262. package/dist/doctor.js.map +0 -1
  263. package/dist/drivers.d.ts.map +0 -1
  264. package/dist/drivers.js +0 -170
  265. package/dist/drivers.js.map +0 -1
  266. /package/dist/{config-validate → commands/config/validate}/report.d.ts +0 -0
  267. /package/dist/{config-validate → commands/config/validate}/types.js +0 -0
  268. /package/dist/{config-validate → commands/config/validate}/validator.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAC/B,OAAuB,EACvB,WAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACvB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,WAAW,CACP,MAAM,gBAAgB,CAClB,MAAM,EACN,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAC5C,OAAO,CACV,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliConfig, CommandContext, ParsedArgs } from "../../types.js";
2
+ export declare function runInit(configPath: string, config: CliConfig, parsed: ParsedArgs, context: CommandContext): Promise<number>;
3
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/init/action.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAiB5E,wBAAsB,OAAO,CACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CAiGjB"}
@@ -0,0 +1,255 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { readStringFlag } from "../../options.js";
3
+ import { saveConfig, upsertInstance } from "../../services/cli-config.js";
4
+ import { drivers, ensureComposeProject, } from "../../services/deployment-drivers.js";
5
+ import { parseTarget } from "../../services/deployment-target.js";
6
+ import { resolveProjectDirectory } from "../../services/project-directory.js";
7
+ import { createPrompter } from "../shared.js";
8
+ export async function runInit(configPath, config, parsed, context) {
9
+ const target = parseTarget(readStringFlag(parsed.flags, "target") ?? "compose");
10
+ const name = readStringFlag(parsed.flags, "instance") ?? "local";
11
+ const url = readStringFlag(parsed.flags, "url");
12
+ const useDemoMode = parsed.flags.demo === true;
13
+ const force = parsed.flags.force === true;
14
+ const imageTagOverride = readStringFlag(parsed.flags, "image-tag") ??
15
+ context.env.EUDIPLO_IMAGE_TAG;
16
+ if (target === "compose") {
17
+ const shouldPrompt = shouldOpenWizard(parsed, context);
18
+ const prompter = createPrompter(context);
19
+ let projectDirectory;
20
+ let initOptions;
21
+ try {
22
+ const directoryAnswer = shouldPrompt && !hasProjectDirectory(parsed)
23
+ ? await prompter.ask("Project directory [./]: ")
24
+ : undefined;
25
+ projectDirectory = resolveProjectDirectory(parsed, context, directoryAnswer?.trim() || undefined);
26
+ initOptions = useDemoMode
27
+ ? demoInitOptions(parsed)
28
+ : await resolveComposeInitOptions(parsed, prompter, shouldPrompt);
29
+ }
30
+ finally {
31
+ prompter.close();
32
+ }
33
+ const instance = await ensureComposeProject(projectDirectory, {
34
+ mode: useDemoMode ? "demo" : "standard",
35
+ ...initOptions,
36
+ force,
37
+ imageTagOverride,
38
+ });
39
+ const nextConfig = upsertInstance(config, name, {
40
+ ...instance,
41
+ url: url ?? initOptions.publicUrl,
42
+ });
43
+ await saveConfig(configPath, nextConfig);
44
+ context.stdout.write(`Initialized compose instance ${name}.\n`);
45
+ context.stdout.write(`Configuration: database=${initOptions.database}, storage=${initOptions.storage}, kms=${initOptions.kms}, client=${initOptions.noClient ? "disabled" : "enabled"}, demo-tenant=${initOptions.demoTenant ? "included" : "disabled"}\n`);
46
+ context.stdout.write(`Project directory: ${projectDirectory}\n`);
47
+ context.stdout.write(`Environment: ${projectDirectory}/${instance.envFile}\n`);
48
+ context.stdout.write(`Auth client ID: ${initOptions.authClientId}\n`);
49
+ context.stdout.write("Auth client secret: saved in the environment file\n");
50
+ if (initOptions.demoTenant && initOptions.kms === "vault") {
51
+ context.stdout.write("Note: bundled demo private keys explicitly use the db provider; Vault remains the default for new keys.\n");
52
+ }
53
+ if (initOptions.start) {
54
+ context.stdout.write("Starting EUDIPLO with the Compose runtime...\n");
55
+ return ((await drivers.compose.up?.({
56
+ instanceName: name,
57
+ instance: nextConfig.instances[name],
58
+ args: [],
59
+ context,
60
+ })) ?? 1);
61
+ }
62
+ context.stdout.write("Run npx @eudiplo/cli up to start it.\n");
63
+ return 0;
64
+ }
65
+ if (parsed.subject || readStringFlag(parsed.flags, "directory")) {
66
+ throw new Error("Project directories are available only for compose instances.");
67
+ }
68
+ if (!url) {
69
+ throw new Error("External instances require --url.");
70
+ }
71
+ const nextConfig = upsertInstance(config, name, { target, url });
72
+ await saveConfig(configPath, nextConfig);
73
+ context.stdout.write(`Initialized external instance ${name}.\n`);
74
+ return 0;
75
+ }
76
+ function demoInitOptions(parsed) {
77
+ if (parsed.flags.client === true && parsed.flags["no-client"] === true) {
78
+ throw new Error("Use either --client or --no-client, not both.");
79
+ }
80
+ return {
81
+ database: "sqlite",
82
+ storage: "local",
83
+ kms: "db",
84
+ publicUrl: "http://localhost:3000",
85
+ authClientId: "root",
86
+ authClientSecret: "root",
87
+ demoTenant: true,
88
+ noClient: parsed.flags["no-client"] === true,
89
+ start: parsed.flags.start === true,
90
+ };
91
+ }
92
+ async function resolveComposeInitOptions(parsed, prompter, shouldPrompt) {
93
+ if (parsed.flags.client === true && parsed.flags["no-client"] === true) {
94
+ throw new Error("Use either --client or --no-client, not both.");
95
+ }
96
+ if (parsed.flags["demo-tenant"] === true &&
97
+ parsed.flags["no-demo-tenant"] === true) {
98
+ throw new Error("Use either --demo-tenant or --no-demo-tenant, not both.");
99
+ }
100
+ const presetFlag = readChoiceFlag(parsed, "preset", [
101
+ "minimal",
102
+ "standard",
103
+ "full",
104
+ ]);
105
+ let database = readChoiceFlag(parsed, "database", ["sqlite", "postgres"]);
106
+ let storage = readChoiceFlag(parsed, "storage", ["local", "s3"]);
107
+ let kms = readChoiceFlag(parsed, "kms", ["db", "vault"]);
108
+ let publicUrl = readStringFlag(parsed.flags, "public-url");
109
+ let authClientId = readStringFlag(parsed.flags, "auth-client-id");
110
+ let authClientSecret = readStringFlag(parsed.flags, "auth-client-secret");
111
+ let demoTenant = parsed.flags["demo-tenant"] === true ? true : undefined;
112
+ if (parsed.flags["no-demo-tenant"] === true) {
113
+ demoTenant = false;
114
+ }
115
+ let noClient = parsed.flags["no-client"] === true ? true : undefined;
116
+ if (parsed.flags.client === true) {
117
+ noClient = false;
118
+ }
119
+ let start = parsed.flags.start === true ? true : undefined;
120
+ const hasComponentFlag = database !== undefined || storage !== undefined || kms !== undefined;
121
+ let preset = presetFlag;
122
+ if (shouldPrompt && !preset && !hasComponentFlag) {
123
+ const answer = (await prompter.ask("Deployment preset (minimal/standard/full/custom) [minimal]: "))
124
+ .trim()
125
+ .toLowerCase();
126
+ if (answer && answer !== "custom") {
127
+ preset = parseChoice(answer, "preset", [
128
+ "minimal",
129
+ "standard",
130
+ "full",
131
+ ]);
132
+ }
133
+ }
134
+ const presetOptions = presetValues(preset ?? "minimal");
135
+ if (shouldPrompt && !preset) {
136
+ database ??= await promptChoice(prompter.ask, "Database", ["sqlite", "postgres"], "sqlite");
137
+ storage ??= await promptChoice(prompter.ask, "Storage", ["local", "s3"], "local");
138
+ kms ??= await promptChoice(prompter.ask, "Key management", ["db", "vault"], "db");
139
+ }
140
+ database ??= presetOptions.database;
141
+ storage ??= presetOptions.storage;
142
+ kms ??= presetOptions.kms;
143
+ if (shouldPrompt && demoTenant === undefined) {
144
+ demoTenant = await promptBoolean(prompter.ask, "Add the bundled demo tenant? Its private keys use the db provider.", false);
145
+ }
146
+ demoTenant ??= false;
147
+ if (shouldPrompt && !publicUrl) {
148
+ publicUrl = await promptWithDefault(prompter.ask, "Public URL", "http://localhost:3000");
149
+ }
150
+ publicUrl ??= "http://localhost:3000";
151
+ if (shouldPrompt && !authClientId) {
152
+ authClientId = await promptWithDefault(prompter.ask, "Auth client ID", "root");
153
+ }
154
+ authClientId ??= "root";
155
+ if (shouldPrompt && !authClientSecret) {
156
+ const answer = await prompter.ask("Auth client secret (leave blank to generate): ");
157
+ authClientSecret = answer.trim() || undefined;
158
+ }
159
+ authClientSecret ??= randomBytes(24).toString("base64url");
160
+ if (shouldPrompt && noClient === undefined) {
161
+ noClient = !(await promptBoolean(prompter.ask, "Include the web client?", true));
162
+ }
163
+ noClient ??= false;
164
+ if (shouldPrompt && start === undefined) {
165
+ start = await promptBoolean(prompter.ask, "Start the deployment now?", true);
166
+ }
167
+ start ??= false;
168
+ validateHttpUrl(publicUrl, "Public URL");
169
+ validateEnvInput(publicUrl, "Public URL");
170
+ validateEnvInput(authClientId, "Auth client ID");
171
+ validateEnvInput(authClientSecret, "Auth client secret");
172
+ return {
173
+ database,
174
+ storage,
175
+ kms,
176
+ publicUrl,
177
+ authClientId,
178
+ authClientSecret,
179
+ demoTenant,
180
+ noClient,
181
+ start,
182
+ };
183
+ }
184
+ function shouldOpenWizard(parsed, context) {
185
+ return (context.interactive === true &&
186
+ parsed.flags.yes !== true &&
187
+ parsed.flags["no-interactive"] !== true);
188
+ }
189
+ function hasProjectDirectory(parsed) {
190
+ return Boolean(parsed.subject || readStringFlag(parsed.flags, "directory"));
191
+ }
192
+ function presetValues(preset) {
193
+ if (preset === "standard") {
194
+ return { database: "postgres", storage: "s3", kms: "db" };
195
+ }
196
+ if (preset === "full") {
197
+ return { database: "postgres", storage: "s3", kms: "vault" };
198
+ }
199
+ return { database: "sqlite", storage: "local", kms: "db" };
200
+ }
201
+ function readChoiceFlag(parsed, name, values) {
202
+ const value = readStringFlag(parsed.flags, name);
203
+ return value ? parseChoice(value, name, values) : undefined;
204
+ }
205
+ function parseChoice(value, name, values) {
206
+ if (values.includes(value)) {
207
+ return value;
208
+ }
209
+ throw new Error(`Unsupported --${name} value: ${value}. Use ${values.join(" or ")}.`);
210
+ }
211
+ async function promptChoice(prompt, label, values, defaultValue) {
212
+ const answer = (await prompt(`${label} (${values.join("/")}) [${defaultValue}]: `))
213
+ .trim()
214
+ .toLowerCase();
215
+ return answer
216
+ ? parseChoice(answer, label.toLowerCase(), values)
217
+ : defaultValue;
218
+ }
219
+ async function promptWithDefault(prompt, label, defaultValue) {
220
+ const answer = (await prompt(`${label} [${defaultValue}]: `)).trim();
221
+ return answer || defaultValue;
222
+ }
223
+ async function promptBoolean(prompt, label, defaultValue) {
224
+ const suffix = defaultValue ? "Y/n" : "y/N";
225
+ const answer = (await prompt(`${label} [${suffix}]: `))
226
+ .trim()
227
+ .toLowerCase();
228
+ if (!answer) {
229
+ return defaultValue;
230
+ }
231
+ if (answer === "y" || answer === "yes") {
232
+ return true;
233
+ }
234
+ if (answer === "n" || answer === "no") {
235
+ return false;
236
+ }
237
+ throw new Error(`Answer ${label.toLowerCase()} with yes or no.`);
238
+ }
239
+ function validateHttpUrl(value, label) {
240
+ try {
241
+ const url = new URL(value);
242
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
243
+ throw new Error("Unsupported URL protocol.");
244
+ }
245
+ }
246
+ catch {
247
+ throw new Error(`${label} must be an absolute HTTP(S) URL.`);
248
+ }
249
+ }
250
+ function validateEnvInput(value, label) {
251
+ if (!value || /[\r\n]/.test(value)) {
252
+ throw new Error(`${label} must be non-empty and cannot contain line breaks.`);
253
+ }
254
+ }
255
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/init/action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ import type { CommandContext } from "../../types.js";
3
+ import { type SetExitCode } from "../shared.js";
4
+ export declare function createInitCommand(context: CommandContext, setExitCode: SetExitCode): Command;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1E,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CA2CT"}
@@ -0,0 +1,35 @@
1
+ import { Command, Option } from "commander";
2
+ import { loadCliState, parsedArgs } from "../shared.js";
3
+ import { runInit } from "./action.js";
4
+ export function createInitCommand(context, setExitCode) {
5
+ return new Command("init")
6
+ .description("Configure a local deployment")
7
+ .argument("[directory]", "project directory")
8
+ .option("--directory <path>", "set the project directory")
9
+ .option("--target <compose|external>", "deployment target")
10
+ .option("--instance <name>", "instance name", "local")
11
+ .option("--preset <minimal|standard|full>", "deployment preset")
12
+ .option("--database <sqlite|postgres>", "database")
13
+ .option("--storage <local|s3>", "storage")
14
+ .option("--kms <db|vault>", "key management")
15
+ .option("--public-url <url>", "public EUDIPLO URL")
16
+ .option("--auth-client-id <id>", "authentication client ID")
17
+ .option("--auth-client-secret <secret>", "authentication client secret")
18
+ .option("--demo-tenant", "include the bundled demo tenant")
19
+ .option("--no-demo-tenant", "do not include the bundled demo tenant")
20
+ .option("--client", "include the web client")
21
+ .option("--no-client", "omit the web client")
22
+ .addOption(new Option("--interactive").hideHelp())
23
+ .option("--no-interactive", "disable the setup wizard")
24
+ .option("--start", "start the deployment after initialization")
25
+ .option("--yes", "accept defaults without opening the wizard")
26
+ .option("--image-tag <tag>", "override the backend and client image tag")
27
+ .option("--demo", "generate demo-compatible assets without starting them")
28
+ .option("--force", "replace CLI-managed files")
29
+ .option("--url <url>", "override the instance API URL")
30
+ .action(async (directory, options) => {
31
+ const { configPath, config } = await loadCliState(context);
32
+ setExitCode(await runInit(configPath, config, parsedArgs("init", directory, [], options), context));
33
+ });
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,UAAU,iBAAiB,CAC7B,OAAuB,EACvB,WAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACrB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;SACzD,MAAM,CAAC,6BAA6B,EAAE,mBAAmB,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,OAAO,CAAC;SACrD,MAAM,CAAC,kCAAkC,EAAE,mBAAmB,CAAC;SAC/D,MAAM,CAAC,8BAA8B,EAAE,UAAU,CAAC;SAClD,MAAM,CAAC,sBAAsB,EAAE,SAAS,CAAC;SACzC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;SAC5C,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;SAClD,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC;SAC3D,MAAM,CAAC,+BAA+B,EAAE,8BAA8B,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;SAC1D,MAAM,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;SACpE,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC;SAC5C,MAAM,CAAC,aAAa,EAAE,qBAAqB,CAAC;SAC5C,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;SACtD,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;SAC9D,MAAM,CAAC,OAAO,EAAE,4CAA4C,CAAC;SAC7D,MAAM,CACH,mBAAmB,EACnB,2CAA2C,CAC9C;SACA,MAAM,CACH,QAAQ,EACR,uDAAuD,CAC1D;SACA,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC;SAC9C,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3D,WAAW,CACP,MAAM,OAAO,CACT,UAAU,EACV,MAAM,EACN,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAC1C,OAAO,CACV,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { CliConfig, CommandContext, ParsedArgs } from "../../types.js";
2
+ export declare function runInstanceAdd(configPath: string, config: CliConfig, parsed: ParsedArgs, context: CommandContext): Promise<number>;
3
+ export declare function runInstanceList(config: CliConfig, context: CommandContext): number;
4
+ export declare function runInstanceShow(config: CliConfig, parsed: ParsedArgs, context: CommandContext): number;
5
+ export declare function runInstanceUse(configPath: string, config: CliConfig, parsed: ParsedArgs, context: CommandContext): Promise<number>;
6
+ export declare function runInstanceRemove(configPath: string, config: CliConfig, parsed: ParsedArgs, context: CommandContext): Promise<number>;
7
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/instance/action.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5E,wBAAsB,cAAc,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAiBlF;AAED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,MAAM,CAsBR;AAED,wBAAsB,cAAc,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,iBAAiB,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -0,0 +1,85 @@
1
+ import { readStringFlag } from "../../options.js";
2
+ import { removeInstance, saveConfig, setDefaultInstance, upsertInstance, } from "../../services/cli-config.js";
3
+ import { parseTarget } from "../../services/deployment-target.js";
4
+ export async function runInstanceAdd(configPath, config, parsed, context) {
5
+ const name = parsed.positionals[0];
6
+ if (!name) {
7
+ throw new Error("Instance name is required.");
8
+ }
9
+ const url = readStringFlag(parsed.flags, "url");
10
+ if (!url) {
11
+ throw new Error("--url is required.");
12
+ }
13
+ const target = parseTarget(readStringFlag(parsed.flags, "target") ?? "external");
14
+ const clientUrl = readStringFlag(parsed.flags, "client-url");
15
+ const nextConfig = upsertInstance(config, name, { target, url, clientUrl });
16
+ await saveConfig(configPath, nextConfig);
17
+ context.stdout.write(`Added ${target} instance ${name}.\n`);
18
+ return 0;
19
+ }
20
+ export function runInstanceList(config, context) {
21
+ const instances = Object.entries(config.instances).sort(([left], [right]) => left.localeCompare(right));
22
+ if (instances.length === 0) {
23
+ context.stdout.write("No configured instances.\n");
24
+ return 0;
25
+ }
26
+ context.stdout.write("Configured instances:\n");
27
+ for (const [name, instance] of instances) {
28
+ const defaultLabel = name === config.defaultInstance ? " (default)" : "";
29
+ context.stdout.write(`- ${name}${defaultLabel}: ${instance.target} ${instance.url}\n`);
30
+ }
31
+ return 0;
32
+ }
33
+ export function runInstanceShow(config, parsed, context) {
34
+ const name = parsed.positionals[0] ?? config.defaultInstance;
35
+ if (!name) {
36
+ throw new Error("No instance selected. Specify a name or add an instance first.");
37
+ }
38
+ const instance = config.instances[name];
39
+ if (!instance) {
40
+ throw new Error(`Unknown instance: ${name}`);
41
+ }
42
+ const defaultLabel = name === config.defaultInstance ? " (default)" : "";
43
+ context.stdout.write(`Instance ${name}${defaultLabel}\n`);
44
+ context.stdout.write(`Target: ${instance.target}\n`);
45
+ context.stdout.write(`API URL: ${instance.url}\n`);
46
+ writeOptionalValue(context, "Client URL", instance.clientUrl);
47
+ writeOptionalValue(context, "Project directory", instance.projectDirectory);
48
+ writeOptionalValue(context, "Compose file", instance.composeFile);
49
+ writeOptionalList(context, "Compose files", instance.composeFiles);
50
+ writeOptionalList(context, "Compose profiles", instance.composeProfiles);
51
+ writeOptionalValue(context, "Environment file", instance.envFile);
52
+ writeOptionalValue(context, "Project name", instance.projectName);
53
+ return 0;
54
+ }
55
+ export async function runInstanceUse(configPath, config, parsed, context) {
56
+ const name = requireInstanceName(parsed);
57
+ await saveConfig(configPath, setDefaultInstance(config, name));
58
+ context.stdout.write(`Default instance set to ${name}.\n`);
59
+ return 0;
60
+ }
61
+ export async function runInstanceRemove(configPath, config, parsed, context) {
62
+ const name = requireInstanceName(parsed);
63
+ await saveConfig(configPath, removeInstance(config, name));
64
+ context.stdout.write(`Unregistered instance ${name}.\n`);
65
+ context.stdout.write("Deployment resources were not removed.\n");
66
+ return 0;
67
+ }
68
+ function requireInstanceName(parsed) {
69
+ const name = parsed.positionals[0];
70
+ if (!name) {
71
+ throw new Error("Instance name is required.");
72
+ }
73
+ return name;
74
+ }
75
+ function writeOptionalValue(context, label, value) {
76
+ if (value !== undefined) {
77
+ context.stdout.write(`${label}: ${value}\n`);
78
+ }
79
+ }
80
+ function writeOptionalList(context, label, value) {
81
+ if (value !== undefined) {
82
+ context.stdout.write(`${label}: ${value.join(", ")}\n`);
83
+ }
84
+ }
85
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/instance/action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ import type { CommandContext } from "../../types.js";
3
+ import { type SetExitCode } from "../shared.js";
4
+ export declare function createInstanceCommand(context: CommandContext, setExitCode: SetExitCode): Command;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/instance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAS1E,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CA2ET"}
@@ -0,0 +1,53 @@
1
+ import { Command } from "commander";
2
+ import { loadCliState, parsedArgs } from "../shared.js";
3
+ import { runInstanceAdd, runInstanceList, runInstanceRemove, runInstanceShow, runInstanceUse, } from "./action.js";
4
+ export function createInstanceCommand(context, setExitCode) {
5
+ const instance = new Command("instance")
6
+ .description("Manage configured EUDIPLO instances")
7
+ .helpCommand(true);
8
+ instance
9
+ .command("list")
10
+ .alias("ls")
11
+ .description("List configured EUDIPLO instances")
12
+ .action(async () => {
13
+ const { config } = await loadCliState(context);
14
+ setExitCode(runInstanceList(config, context));
15
+ });
16
+ instance
17
+ .command("show [name]")
18
+ .description("Show configured instance details")
19
+ .action(async (name) => {
20
+ const { config } = await loadCliState(context);
21
+ setExitCode(runInstanceShow(config, parsedArgs("instance", "show", name ? [name] : [], {}), context));
22
+ });
23
+ instance
24
+ .command("use <name>")
25
+ .description("Set the default EUDIPLO instance")
26
+ .action(async (name) => {
27
+ const { configPath, config } = await loadCliState(context);
28
+ setExitCode(await runInstanceUse(configPath, config, parsedArgs("instance", "use", [name], {}), context));
29
+ });
30
+ instance
31
+ .command("remove <name>")
32
+ .alias("rm")
33
+ .description("Unregister an EUDIPLO instance")
34
+ .action(async (name) => {
35
+ const { configPath, config } = await loadCliState(context);
36
+ setExitCode(await runInstanceRemove(configPath, config, parsedArgs("instance", "remove", [name], {}), context));
37
+ });
38
+ instance
39
+ .command("add <name>")
40
+ .description("Register an existing EUDIPLO deployment")
41
+ .requiredOption("--url <url>", "EUDIPLO API URL")
42
+ .option("--target <compose|external>", "deployment target", "external")
43
+ .option("--client-url <url>", "optional web client URL")
44
+ .action(async (name, options) => {
45
+ const { configPath, config } = await loadCliState(context);
46
+ setExitCode(await runInstanceAdd(configPath, config, parsedArgs("instance", "add", [name], options), context));
47
+ });
48
+ instance.action(function showInstanceHelp() {
49
+ this.outputHelp();
50
+ });
51
+ return instance;
52
+ }
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/instance/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { OptionValues } from "commander";
2
+ import type { CliConfig, CommandContext, ParsedArgs } from "../types.js";
3
+ export type SetExitCode = (exitCode: number) => void;
4
+ export interface Prompter {
5
+ ask(question: string): Promise<string>;
6
+ close(): void;
7
+ }
8
+ export declare function createPrompter(context: CommandContext): Prompter;
9
+ export declare function loadCliState(context: CommandContext): Promise<{
10
+ configPath: string;
11
+ config: CliConfig;
12
+ }>;
13
+ export declare function parsedArgs(command: string, subject: string | undefined, positionals: string[], options: OptionValues): ParsedArgs;
14
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD,MAAM,WAAW,QAAQ;IACrB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,QAAQ,CAgBhE;AAED,wBAAsB,YAAY,CAC9B,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,CAGpD;AAED,wBAAgB,UAAU,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,YAAY,GACtB,UAAU,CAiBZ"}
@@ -0,0 +1,39 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import { loadConfig, resolveConfigPath } from "../services/cli-config.js";
3
+ export function createPrompter(context) {
4
+ let promptInterface;
5
+ return {
6
+ ask: async (question) => {
7
+ if (context.prompt) {
8
+ return context.prompt(question);
9
+ }
10
+ promptInterface ??= createInterface({
11
+ input: process.stdin,
12
+ output: process.stdout,
13
+ });
14
+ return promptInterface.question(question);
15
+ },
16
+ close: () => promptInterface?.close(),
17
+ };
18
+ }
19
+ export async function loadCliState(context) {
20
+ const configPath = resolveConfigPath(context.env);
21
+ return { configPath, config: await loadConfig(configPath) };
22
+ }
23
+ export function parsedArgs(command, subject, positionals, options) {
24
+ const flags = {};
25
+ for (const [name, value] of Object.entries(options)) {
26
+ if (value === undefined) {
27
+ continue;
28
+ }
29
+ const flagName = name.replace(/[A-Z]/g, (character) => `-${character.toLowerCase()}`);
30
+ if (value === false) {
31
+ flags[`no-${flagName}`] = true;
32
+ }
33
+ else if (typeof value === "string" || typeof value === "boolean") {
34
+ flags[flagName] = value;
35
+ }
36
+ }
37
+ return { command, subject, positionals, flags };
38
+ }
39
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU1E,MAAM,UAAU,cAAc,CAAC,OAAuB;IAClD,IAAI,eAA+D,CAAC;IAEpE,OAAO;QACH,GAAG,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;YAC5B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YACD,eAAe,KAAK,eAAe,CAAC;gBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE;KACxC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,OAAuB;IAEvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,OAAe,EACf,OAA2B,EAC3B,WAAqB,EACrB,OAAqB;IAErB,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CACzB,QAAQ,EACR,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAC/C,CAAC;QACF,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;QACnC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACjE,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliConfig, CommandContext, ParsedArgs } from "../../types.js";
2
+ export declare function runStatusCommand(config: CliConfig, parsed: ParsedArgs, context: CommandContext): Promise<number>;
3
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/status/action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5E,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -0,0 +1,13 @@
1
+ import { runDoctor } from "../../services/diagnostics.js";
2
+ import { resolveInstance } from "../../services/instance-selection.js";
3
+ export async function runStatusCommand(config, parsed, context) {
4
+ const [instanceName, instance] = resolveInstance(config, parsed);
5
+ const checks = await runDoctor(instance, context, []);
6
+ const health = checks.find((check) => check.name === "health endpoint");
7
+ context.stdout.write(`${instanceName} (${instance.target}) ${instance.url}\n`);
8
+ if (health) {
9
+ context.stdout.write(`${health.status.toUpperCase()} ${health.message}\n`);
10
+ }
11
+ return health?.status === "fail" ? 1 : 0;
12
+ }
13
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/status/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAGvE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAiB,EACjB,MAAkB,EAClB,OAAuB;IAEvB,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IACxE,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,GAAG,YAAY,KAAK,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,IAAI,CAC3D,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,CACvD,CAAC;IACN,CAAC;IACD,OAAO,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ import type { CommandContext } from "../../types.js";
3
+ import { type SetExitCode } from "../shared.js";
4
+ export declare function createStatusCommand(context: CommandContext, setExitCode: SetExitCode): Command;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1E,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CAcT"}