@vendure/cloud 0.3.2 → 0.5.0-dev.20261014172655.g652e750

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 (530) hide show
  1. package/README.md +50 -11
  2. package/dist/cli/arguments.d.ts.map +1 -1
  3. package/dist/cli/arguments.js +9 -31
  4. package/dist/cli/arguments.js.map +1 -1
  5. package/dist/cli/command.d.ts.map +1 -1
  6. package/dist/cli/command.js +13 -30
  7. package/dist/cli/command.js.map +1 -1
  8. package/dist/cli/commands/deployment/arguments.d.ts.map +1 -1
  9. package/dist/cli/commands/deployment/arguments.js +1 -8
  10. package/dist/cli/commands/deployment/arguments.js.map +1 -1
  11. package/dist/cli/commands/deployment/build-logs.d.ts.map +1 -1
  12. package/dist/cli/commands/deployment/build-logs.js +14 -25
  13. package/dist/cli/commands/deployment/build-logs.js.map +1 -1
  14. package/dist/cli/commands/deployment/deploy.d.ts.map +1 -1
  15. package/dist/cli/commands/deployment/deploy.js +108 -95
  16. package/dist/cli/commands/deployment/deploy.js.map +1 -1
  17. package/dist/cli/commands/deployment/index.d.ts.map +1 -1
  18. package/dist/cli/commands/deployment/index.js +66 -53
  19. package/dist/cli/commands/deployment/index.js.map +1 -1
  20. package/dist/cli/commands/deployment/list.d.ts.map +1 -1
  21. package/dist/cli/commands/deployment/list.js +5 -5
  22. package/dist/cli/commands/deployment/list.js.map +1 -1
  23. package/dist/cli/commands/deployment/log-export.d.ts +13 -0
  24. package/dist/cli/commands/deployment/log-export.d.ts.map +1 -0
  25. package/dist/cli/commands/deployment/log-export.js +120 -0
  26. package/dist/cli/commands/deployment/log-export.js.map +1 -0
  27. package/dist/cli/commands/deployment/log-query-output.d.ts +13 -0
  28. package/dist/cli/commands/deployment/log-query-output.d.ts.map +1 -0
  29. package/dist/cli/commands/deployment/log-query-output.js +92 -0
  30. package/dist/cli/commands/deployment/log-query-output.js.map +1 -0
  31. package/dist/cli/commands/deployment/logs.d.ts +1 -0
  32. package/dist/cli/commands/deployment/logs.d.ts.map +1 -1
  33. package/dist/cli/commands/deployment/logs.js +331 -73
  34. package/dist/cli/commands/deployment/logs.js.map +1 -1
  35. package/dist/cli/commands/deployment/options.d.ts +2 -6
  36. package/dist/cli/commands/deployment/options.d.ts.map +1 -1
  37. package/dist/cli/commands/deployment/options.js +18 -15
  38. package/dist/cli/commands/deployment/options.js.map +1 -1
  39. package/dist/cli/commands/deployment/plan-format.d.ts.map +1 -1
  40. package/dist/cli/commands/deployment/plan-format.js +2 -2
  41. package/dist/cli/commands/deployment/plan-format.js.map +1 -1
  42. package/dist/cli/commands/deployment/plan.d.ts +1 -1
  43. package/dist/cli/commands/deployment/plan.d.ts.map +1 -1
  44. package/dist/cli/commands/deployment/plan.js +11 -14
  45. package/dist/cli/commands/deployment/plan.js.map +1 -1
  46. package/dist/cli/commands/deployment/recovery.d.ts +9 -0
  47. package/dist/cli/commands/deployment/recovery.d.ts.map +1 -0
  48. package/dist/cli/commands/deployment/recovery.js +76 -0
  49. package/dist/cli/commands/deployment/recovery.js.map +1 -0
  50. package/dist/cli/commands/deployment/rollback.d.ts.map +1 -1
  51. package/dist/cli/commands/deployment/rollback.js +61 -10
  52. package/dist/cli/commands/deployment/rollback.js.map +1 -1
  53. package/dist/cli/commands/deployment/shared.d.ts.map +1 -1
  54. package/dist/cli/commands/deployment/shared.js +4 -7
  55. package/dist/cli/commands/deployment/shared.js.map +1 -1
  56. package/dist/cli/commands/deployment/show.d.ts.map +1 -1
  57. package/dist/cli/commands/deployment/show.js +19 -9
  58. package/dist/cli/commands/deployment/show.js.map +1 -1
  59. package/dist/cli/commands/deployment/source.d.ts +1 -12
  60. package/dist/cli/commands/deployment/source.d.ts.map +1 -1
  61. package/dist/cli/commands/deployment/source.js +6 -14
  62. package/dist/cli/commands/deployment/source.js.map +1 -1
  63. package/dist/cli/commands/deployment/status.d.ts.map +1 -1
  64. package/dist/cli/commands/deployment/status.js +30 -29
  65. package/dist/cli/commands/deployment/status.js.map +1 -1
  66. package/dist/cli/commands/deployment/teardown.d.ts.map +1 -1
  67. package/dist/cli/commands/deployment/teardown.js +28 -26
  68. package/dist/cli/commands/deployment/teardown.js.map +1 -1
  69. package/dist/cli/commands/identity-context/context.d.ts.map +1 -1
  70. package/dist/cli/commands/identity-context/context.js +3 -4
  71. package/dist/cli/commands/identity-context/context.js.map +1 -1
  72. package/dist/cli/commands/identity-context/index.d.ts.map +1 -1
  73. package/dist/cli/commands/identity-context/index.js +16 -50
  74. package/dist/cli/commands/identity-context/index.js.map +1 -1
  75. package/dist/cli/commands/identity-context/keys.d.ts.map +1 -1
  76. package/dist/cli/commands/identity-context/keys.js +19 -20
  77. package/dist/cli/commands/identity-context/keys.js.map +1 -1
  78. package/dist/cli/commands/identity-context/use.d.ts.map +1 -1
  79. package/dist/cli/commands/identity-context/use.js +3 -4
  80. package/dist/cli/commands/identity-context/use.js.map +1 -1
  81. package/dist/cli/commands/index.d.ts.map +1 -1
  82. package/dist/cli/commands/index.js +9 -21
  83. package/dist/cli/commands/index.js.map +1 -1
  84. package/dist/cli/commands/project-config/config/build-fields.d.ts.map +1 -1
  85. package/dist/cli/commands/project-config/config/build-fields.js +2 -3
  86. package/dist/cli/commands/project-config/config/build-fields.js.map +1 -1
  87. package/dist/cli/commands/project-config/config/build.d.ts.map +1 -1
  88. package/dist/cli/commands/project-config/config/build.js +8 -9
  89. package/dist/cli/commands/project-config/config/build.js.map +1 -1
  90. package/dist/cli/commands/project-config/config/desired-state.d.ts +1 -1
  91. package/dist/cli/commands/project-config/config/desired-state.d.ts.map +1 -1
  92. package/dist/cli/commands/project-config/config/desired-state.js +12 -13
  93. package/dist/cli/commands/project-config/config/desired-state.js.map +1 -1
  94. package/dist/cli/commands/project-config/config/email/domain.d.ts +5 -0
  95. package/dist/cli/commands/project-config/config/email/domain.d.ts.map +1 -0
  96. package/dist/cli/commands/project-config/config/email/domain.js +83 -0
  97. package/dist/cli/commands/project-config/config/email/domain.js.map +1 -0
  98. package/dist/cli/commands/project-config/config/email/events.d.ts +4 -0
  99. package/dist/cli/commands/project-config/config/email/events.d.ts.map +1 -0
  100. package/dist/cli/commands/project-config/config/email/events.js +55 -0
  101. package/dist/cli/commands/project-config/config/email/events.js.map +1 -0
  102. package/dist/cli/commands/project-config/config/email/index.d.ts +2 -0
  103. package/dist/cli/commands/project-config/config/email/index.d.ts.map +1 -0
  104. package/dist/cli/commands/project-config/config/email/index.js +107 -0
  105. package/dist/cli/commands/project-config/config/email/index.js.map +1 -0
  106. package/dist/cli/commands/project-config/config/email/test-sending.d.ts +4 -0
  107. package/dist/cli/commands/project-config/config/email/test-sending.d.ts.map +1 -0
  108. package/dist/cli/commands/project-config/config/email/test-sending.js +69 -0
  109. package/dist/cli/commands/project-config/config/email/test-sending.js.map +1 -0
  110. package/dist/cli/commands/project-config/config/index.d.ts.map +1 -1
  111. package/dist/cli/commands/project-config/config/index.js +16 -13
  112. package/dist/cli/commands/project-config/config/index.js.map +1 -1
  113. package/dist/cli/commands/project-config/config/runtime.d.ts +2 -1
  114. package/dist/cli/commands/project-config/config/runtime.d.ts.map +1 -1
  115. package/dist/cli/commands/project-config/config/runtime.js +33 -30
  116. package/dist/cli/commands/project-config/config/runtime.js.map +1 -1
  117. package/dist/cli/commands/project-config/config/set.js +3 -3
  118. package/dist/cli/commands/project-config/config/set.js.map +1 -1
  119. package/dist/cli/commands/project-config/config/show.d.ts.map +1 -1
  120. package/dist/cli/commands/project-config/config/show.js +7 -7
  121. package/dist/cli/commands/project-config/config/show.js.map +1 -1
  122. package/dist/cli/commands/project-config/env/add.d.ts.map +1 -1
  123. package/dist/cli/commands/project-config/env/add.js +4 -3
  124. package/dist/cli/commands/project-config/env/add.js.map +1 -1
  125. package/dist/cli/commands/project-config/env/get.d.ts.map +1 -1
  126. package/dist/cli/commands/project-config/env/get.js +7 -2
  127. package/dist/cli/commands/project-config/env/get.js.map +1 -1
  128. package/dist/cli/commands/project-config/env/import.d.ts.map +1 -1
  129. package/dist/cli/commands/project-config/env/import.js +15 -8
  130. package/dist/cli/commands/project-config/env/import.js.map +1 -1
  131. package/dist/cli/commands/project-config/env/index.d.ts.map +1 -1
  132. package/dist/cli/commands/project-config/env/index.js +13 -8
  133. package/dist/cli/commands/project-config/env/index.js.map +1 -1
  134. package/dist/cli/commands/project-config/env/list.d.ts.map +1 -1
  135. package/dist/cli/commands/project-config/env/list.js +29 -8
  136. package/dist/cli/commands/project-config/env/list.js.map +1 -1
  137. package/dist/cli/commands/project-config/env/metadata-options.d.ts.map +1 -1
  138. package/dist/cli/commands/project-config/env/metadata-options.js +0 -1
  139. package/dist/cli/commands/project-config/env/metadata-options.js.map +1 -1
  140. package/dist/cli/commands/project-config/env/pull.d.ts.map +1 -1
  141. package/dist/cli/commands/project-config/env/pull.js +22 -8
  142. package/dist/cli/commands/project-config/env/pull.js.map +1 -1
  143. package/dist/cli/commands/project-config/env/read-value.d.ts.map +1 -1
  144. package/dist/cli/commands/project-config/env/read-value.js +8 -4
  145. package/dist/cli/commands/project-config/env/read-value.js.map +1 -1
  146. package/dist/cli/commands/project-config/env/rm.d.ts.map +1 -1
  147. package/dist/cli/commands/project-config/env/rm.js +4 -3
  148. package/dist/cli/commands/project-config/env/rm.js.map +1 -1
  149. package/dist/cli/commands/project-config/env/run.d.ts.map +1 -1
  150. package/dist/cli/commands/project-config/env/run.js +9 -8
  151. package/dist/cli/commands/project-config/env/run.js.map +1 -1
  152. package/dist/cli/commands/project-config/env/update.d.ts.map +1 -1
  153. package/dist/cli/commands/project-config/env/update.js +4 -3
  154. package/dist/cli/commands/project-config/env/update.js.map +1 -1
  155. package/dist/cli/commands/project-config/environment/create.d.ts.map +1 -1
  156. package/dist/cli/commands/project-config/environment/create.js +5 -6
  157. package/dist/cli/commands/project-config/environment/create.js.map +1 -1
  158. package/dist/cli/commands/project-config/environment/delete.d.ts.map +1 -1
  159. package/dist/cli/commands/project-config/environment/delete.js +6 -6
  160. package/dist/cli/commands/project-config/environment/delete.js.map +1 -1
  161. package/dist/cli/commands/project-config/environment/find.js +3 -3
  162. package/dist/cli/commands/project-config/environment/find.js.map +1 -1
  163. package/dist/cli/commands/project-config/environment/index.d.ts.map +1 -1
  164. package/dist/cli/commands/project-config/environment/index.js +18 -6
  165. package/dist/cli/commands/project-config/environment/index.js.map +1 -1
  166. package/dist/cli/commands/project-config/environment/initial-superadmin.d.ts.map +1 -1
  167. package/dist/cli/commands/project-config/environment/initial-superadmin.js +4 -5
  168. package/dist/cli/commands/project-config/environment/initial-superadmin.js.map +1 -1
  169. package/dist/cli/commands/project-config/environment/list.d.ts.map +1 -1
  170. package/dist/cli/commands/project-config/environment/list.js +5 -5
  171. package/dist/cli/commands/project-config/environment/list.js.map +1 -1
  172. package/dist/cli/commands/project-config/environment/regions.d.ts +6 -0
  173. package/dist/cli/commands/project-config/environment/regions.d.ts.map +1 -0
  174. package/dist/cli/commands/project-config/environment/regions.js +22 -0
  175. package/dist/cli/commands/project-config/environment/regions.js.map +1 -0
  176. package/dist/cli/commands/project-config/environment/show.d.ts.map +1 -1
  177. package/dist/cli/commands/project-config/environment/show.js +3 -4
  178. package/dist/cli/commands/project-config/environment/show.js.map +1 -1
  179. package/dist/cli/commands/project-config/environment/update.d.ts.map +1 -1
  180. package/dist/cli/commands/project-config/environment/update.js +3 -4
  181. package/dist/cli/commands/project-config/environment/update.js.map +1 -1
  182. package/dist/cli/commands/project-config/index.js +5 -5
  183. package/dist/cli/commands/project-config/index.js.map +1 -1
  184. package/dist/cli/commands/project-config/init/build-detection.d.ts.map +1 -1
  185. package/dist/cli/commands/project-config/init/build-detection.js +4 -4
  186. package/dist/cli/commands/project-config/init/build-detection.js.map +1 -1
  187. package/dist/cli/commands/project-config/init/index.d.ts.map +1 -1
  188. package/dist/cli/commands/project-config/init/index.js +4 -5
  189. package/dist/cli/commands/project-config/init/index.js.map +1 -1
  190. package/dist/cli/commands/project-config/init/init.d.ts.map +1 -1
  191. package/dist/cli/commands/project-config/init/init.js +39 -20
  192. package/dist/cli/commands/project-config/init/init.js.map +1 -1
  193. package/dist/cli/commands/project-config/options.d.ts.map +1 -1
  194. package/dist/cli/commands/project-config/options.js +9 -14
  195. package/dist/cli/commands/project-config/options.js.map +1 -1
  196. package/dist/cli/commands/project-config/project/create.d.ts.map +1 -1
  197. package/dist/cli/commands/project-config/project/create.js +3 -3
  198. package/dist/cli/commands/project-config/project/create.js.map +1 -1
  199. package/dist/cli/commands/project-config/project/delete.d.ts.map +1 -1
  200. package/dist/cli/commands/project-config/project/delete.js +4 -5
  201. package/dist/cli/commands/project-config/project/delete.js.map +1 -1
  202. package/dist/cli/commands/project-config/project/index.d.ts.map +1 -1
  203. package/dist/cli/commands/project-config/project/index.js +4 -5
  204. package/dist/cli/commands/project-config/project/index.js.map +1 -1
  205. package/dist/cli/commands/project-config/project/link.d.ts.map +1 -1
  206. package/dist/cli/commands/project-config/project/link.js +4 -4
  207. package/dist/cli/commands/project-config/project/link.js.map +1 -1
  208. package/dist/cli/commands/project-config/project/list.d.ts.map +1 -1
  209. package/dist/cli/commands/project-config/project/list.js +12 -5
  210. package/dist/cli/commands/project-config/project/list.js.map +1 -1
  211. package/dist/cli/commands/project-config/project/show.d.ts.map +1 -1
  212. package/dist/cli/commands/project-config/project/show.js +16 -7
  213. package/dist/cli/commands/project-config/project/show.js.map +1 -1
  214. package/dist/cli/commands/project-config/project/subscription-state.d.ts +5 -0
  215. package/dist/cli/commands/project-config/project/subscription-state.d.ts.map +1 -0
  216. package/dist/cli/commands/project-config/project/subscription-state.js +54 -0
  217. package/dist/cli/commands/project-config/project/subscription-state.js.map +1 -0
  218. package/dist/cli/commands/project-config/project/unlink.d.ts.map +1 -1
  219. package/dist/cli/commands/project-config/project/unlink.js +2 -3
  220. package/dist/cli/commands/project-config/project/unlink.js.map +1 -1
  221. package/dist/cli/commands/project-config/project/update.d.ts.map +1 -1
  222. package/dist/cli/commands/project-config/project/update.js +3 -4
  223. package/dist/cli/commands/project-config/project/update.js.map +1 -1
  224. package/dist/cli/commands/project-config/source/connect.d.ts.map +1 -1
  225. package/dist/cli/commands/project-config/source/connect.js +27 -29
  226. package/dist/cli/commands/project-config/source/connect.js.map +1 -1
  227. package/dist/cli/commands/project-config/source/disconnect.d.ts.map +1 -1
  228. package/dist/cli/commands/project-config/source/disconnect.js +4 -4
  229. package/dist/cli/commands/project-config/source/disconnect.js.map +1 -1
  230. package/dist/cli/commands/project-config/source/index.js +7 -7
  231. package/dist/cli/commands/project-config/source/index.js.map +1 -1
  232. package/dist/cli/commands/project-config/source/map.d.ts.map +1 -1
  233. package/dist/cli/commands/project-config/source/map.js +14 -18
  234. package/dist/cli/commands/project-config/source/map.js.map +1 -1
  235. package/dist/cli/commands/project-config/source/repos.d.ts.map +1 -1
  236. package/dist/cli/commands/project-config/source/repos.js +5 -5
  237. package/dist/cli/commands/project-config/source/repos.js.map +1 -1
  238. package/dist/cli/commands/project-config/source/status.d.ts.map +1 -1
  239. package/dist/cli/commands/project-config/source/status.js +66 -21
  240. package/dist/cli/commands/project-config/source/status.js.map +1 -1
  241. package/dist/cli/commands/runtime-data/backup.d.ts +1 -0
  242. package/dist/cli/commands/runtime-data/backup.d.ts.map +1 -1
  243. package/dist/cli/commands/runtime-data/backup.js +56 -22
  244. package/dist/cli/commands/runtime-data/backup.js.map +1 -1
  245. package/dist/cli/commands/runtime-data/index.d.ts +1 -0
  246. package/dist/cli/commands/runtime-data/index.d.ts.map +1 -1
  247. package/dist/cli/commands/runtime-data/index.js +54 -33
  248. package/dist/cli/commands/runtime-data/index.js.map +1 -1
  249. package/dist/cli/commands/runtime-data/resource.d.ts +1 -0
  250. package/dist/cli/commands/runtime-data/resource.d.ts.map +1 -1
  251. package/dist/cli/commands/runtime-data/resource.js +52 -32
  252. package/dist/cli/commands/runtime-data/resource.js.map +1 -1
  253. package/dist/cli/commands/runtime-data/restore.d.ts.map +1 -1
  254. package/dist/cli/commands/runtime-data/restore.js +52 -37
  255. package/dist/cli/commands/runtime-data/restore.js.map +1 -1
  256. package/dist/cli/commands/runtime-data/seeds.d.ts.map +1 -1
  257. package/dist/cli/commands/runtime-data/seeds.js +24 -26
  258. package/dist/cli/commands/runtime-data/seeds.js.map +1 -1
  259. package/dist/cli/commands/runtime-data/tunnel.d.ts.map +1 -1
  260. package/dist/cli/commands/runtime-data/tunnel.js +33 -43
  261. package/dist/cli/commands/runtime-data/tunnel.js.map +1 -1
  262. package/dist/cli/host-arguments.d.ts.map +1 -1
  263. package/dist/cli/host-arguments.js +10 -18
  264. package/dist/cli/host-arguments.js.map +1 -1
  265. package/dist/cli/host-nodes.js +1 -1
  266. package/dist/cli/host-nodes.js.map +1 -1
  267. package/dist/cli/index.d.ts +17 -10
  268. package/dist/cli/index.d.ts.map +1 -1
  269. package/dist/cli/index.js +27 -28
  270. package/dist/cli/index.js.map +1 -1
  271. package/dist/cli/lib/api-client.d.ts +10 -5
  272. package/dist/cli/lib/api-client.d.ts.map +1 -1
  273. package/dist/cli/lib/api-client.js +23 -42
  274. package/dist/cli/lib/api-client.js.map +1 -1
  275. package/dist/cli/lib/auth.d.ts +4 -126
  276. package/dist/cli/lib/auth.d.ts.map +1 -1
  277. package/dist/cli/lib/auth.js +8 -495
  278. package/dist/cli/lib/auth.js.map +1 -1
  279. package/dist/cli/lib/cli-login.d.ts +12 -0
  280. package/dist/cli/lib/cli-login.d.ts.map +1 -0
  281. package/dist/cli/lib/cli-login.js +155 -0
  282. package/dist/cli/lib/cli-login.js.map +1 -0
  283. package/dist/cli/lib/cloud-api-url.d.ts +2 -0
  284. package/dist/cli/lib/cloud-api-url.d.ts.map +1 -0
  285. package/dist/cli/lib/cloud-api-url.js +3 -0
  286. package/dist/cli/lib/cloud-api-url.js.map +1 -0
  287. package/dist/cli/lib/commit.d.ts +4 -0
  288. package/dist/cli/lib/commit.d.ts.map +1 -0
  289. package/dist/cli/lib/commit.js +21 -0
  290. package/dist/cli/lib/commit.js.map +1 -0
  291. package/dist/cli/lib/config-revisions.d.ts +9 -0
  292. package/dist/cli/lib/config-revisions.d.ts.map +1 -0
  293. package/dist/cli/lib/config-revisions.js +52 -0
  294. package/dist/cli/lib/config-revisions.js.map +1 -0
  295. package/dist/cli/lib/config.d.ts +0 -4
  296. package/dist/cli/lib/config.d.ts.map +1 -1
  297. package/dist/cli/lib/config.js +3 -5
  298. package/dist/cli/lib/config.js.map +1 -1
  299. package/dist/cli/lib/console-pairing.d.ts +2 -0
  300. package/dist/cli/lib/console-pairing.d.ts.map +1 -0
  301. package/dist/cli/lib/console-pairing.js +58 -0
  302. package/dist/cli/lib/console-pairing.js.map +1 -0
  303. package/dist/cli/lib/contract/backup-schedule-reasons.d.ts +4 -0
  304. package/dist/cli/lib/contract/backup-schedule-reasons.d.ts.map +1 -0
  305. package/dist/cli/lib/contract/backup-schedule-reasons.js +13 -0
  306. package/dist/cli/lib/contract/backup-schedule-reasons.js.map +1 -0
  307. package/dist/cli/lib/contract/build-settings.d.ts +1 -1
  308. package/dist/cli/lib/contract/build-settings.d.ts.map +1 -1
  309. package/dist/cli/lib/contract/build-settings.js +12 -18
  310. package/dist/cli/lib/contract/build-settings.js.map +1 -1
  311. package/dist/cli/lib/contract/database.d.ts +19 -0
  312. package/dist/cli/lib/contract/database.d.ts.map +1 -1
  313. package/dist/cli/lib/contract/database.js +7 -13
  314. package/dist/cli/lib/contract/database.js.map +1 -1
  315. package/dist/cli/lib/contract/deployment-resource-labels.d.ts.map +1 -1
  316. package/dist/cli/lib/contract/deployment-resource-labels.js +2 -6
  317. package/dist/cli/lib/contract/deployment-resource-labels.js.map +1 -1
  318. package/dist/cli/lib/contract/deployments.d.ts +14 -0
  319. package/dist/cli/lib/contract/deployments.d.ts.map +1 -1
  320. package/dist/cli/lib/contract/deployments.js +54 -24
  321. package/dist/cli/lib/contract/deployments.js.map +1 -1
  322. package/dist/cli/lib/contract/desired-state.d.ts +6 -6
  323. package/dist/cli/lib/contract/desired-state.d.ts.map +1 -1
  324. package/dist/cli/lib/contract/desired-state.js +52 -55
  325. package/dist/cli/lib/contract/desired-state.js.map +1 -1
  326. package/dist/cli/lib/contract/env-vars.d.ts +37 -0
  327. package/dist/cli/lib/contract/env-vars.d.ts.map +1 -0
  328. package/dist/cli/lib/contract/env-vars.js +6 -0
  329. package/dist/cli/lib/contract/env-vars.js.map +1 -0
  330. package/dist/cli/lib/contract/foreign-credentials.d.ts +14 -25
  331. package/dist/cli/lib/contract/foreign-credentials.d.ts.map +1 -1
  332. package/dist/cli/lib/contract/foreign-credentials.js +19 -30
  333. package/dist/cli/lib/contract/foreign-credentials.js.map +1 -1
  334. package/dist/cli/lib/contract/logs.d.ts +120 -0
  335. package/dist/cli/lib/contract/logs.d.ts.map +1 -1
  336. package/dist/cli/lib/contract/logs.js +113 -16
  337. package/dist/cli/lib/contract/logs.js.map +1 -1
  338. package/dist/cli/lib/contract/managed-email.d.ts +57 -0
  339. package/dist/cli/lib/contract/managed-email.d.ts.map +1 -0
  340. package/dist/cli/lib/contract/managed-email.js +20 -0
  341. package/dist/cli/lib/contract/managed-email.js.map +1 -0
  342. package/dist/cli/lib/contract/permission-denied.d.ts +16 -0
  343. package/dist/cli/lib/contract/permission-denied.d.ts.map +1 -0
  344. package/dist/cli/lib/contract/permission-denied.js +20 -0
  345. package/dist/cli/lib/contract/permission-denied.js.map +1 -0
  346. package/dist/cli/lib/contract/projects.d.ts +6 -0
  347. package/dist/cli/lib/contract/projects.d.ts.map +1 -1
  348. package/dist/cli/lib/contract/projects.js +2 -3
  349. package/dist/cli/lib/contract/projects.js.map +1 -1
  350. package/dist/cli/lib/contract/public-error-details.d.ts.map +1 -1
  351. package/dist/cli/lib/contract/public-error-details.js +28 -43
  352. package/dist/cli/lib/contract/public-error-details.js.map +1 -1
  353. package/dist/cli/lib/contract/regions.d.ts +11 -0
  354. package/dist/cli/lib/contract/regions.d.ts.map +1 -0
  355. package/dist/cli/lib/contract/regions.js +7 -0
  356. package/dist/cli/lib/contract/regions.js.map +1 -0
  357. package/dist/cli/lib/contract/runtime-operations.d.ts +0 -1
  358. package/dist/cli/lib/contract/runtime-operations.d.ts.map +1 -1
  359. package/dist/cli/lib/contract/runtime-operations.js +11 -21
  360. package/dist/cli/lib/contract/runtime-operations.js.map +1 -1
  361. package/dist/cli/lib/contract/seeds.d.ts.map +1 -1
  362. package/dist/cli/lib/contract/seeds.js +12 -21
  363. package/dist/cli/lib/contract/seeds.js.map +1 -1
  364. package/dist/cli/lib/contract/source-disconnect-reasons.d.ts +4 -0
  365. package/dist/cli/lib/contract/source-disconnect-reasons.d.ts.map +1 -0
  366. package/dist/cli/lib/contract/source-disconnect-reasons.js +23 -0
  367. package/dist/cli/lib/contract/source-disconnect-reasons.js.map +1 -0
  368. package/dist/cli/lib/contract/source-repository.d.ts +1 -1
  369. package/dist/cli/lib/contract/source-repository.d.ts.map +1 -1
  370. package/dist/cli/lib/contract/source-repository.js +6 -9
  371. package/dist/cli/lib/contract/source-repository.js.map +1 -1
  372. package/dist/cli/lib/contract/wire-types.d.ts.map +1 -1
  373. package/dist/cli/lib/contract/wire-types.js +3 -8
  374. package/dist/cli/lib/contract/wire-types.js.map +1 -1
  375. package/dist/cli/lib/contract/wire-values.d.ts.map +1 -1
  376. package/dist/cli/lib/contract/wire-values.js +2 -3
  377. package/dist/cli/lib/contract/wire-values.js.map +1 -1
  378. package/dist/cli/lib/dotenv.d.ts +6 -0
  379. package/dist/cli/lib/dotenv.d.ts.map +1 -1
  380. package/dist/cli/lib/dotenv.js +62 -20
  381. package/dist/cli/lib/dotenv.js.map +1 -1
  382. package/dist/cli/lib/env-file.d.ts.map +1 -1
  383. package/dist/cli/lib/env-file.js +5 -11
  384. package/dist/cli/lib/env-file.js.map +1 -1
  385. package/dist/cli/lib/env-preflight.d.ts +6 -1
  386. package/dist/cli/lib/env-preflight.d.ts.map +1 -1
  387. package/dist/cli/lib/env-preflight.js +91 -63
  388. package/dist/cli/lib/env-preflight.js.map +1 -1
  389. package/dist/cli/lib/errors.d.ts +17 -19
  390. package/dist/cli/lib/errors.d.ts.map +1 -1
  391. package/dist/cli/lib/errors.js +47 -60
  392. package/dist/cli/lib/errors.js.map +1 -1
  393. package/dist/cli/lib/format.d.ts.map +1 -1
  394. package/dist/cli/lib/format.js +3 -5
  395. package/dist/cli/lib/format.js.map +1 -1
  396. package/dist/cli/lib/invocation.d.ts +4 -5
  397. package/dist/cli/lib/invocation.d.ts.map +1 -1
  398. package/dist/cli/lib/invocation.js +5 -33
  399. package/dist/cli/lib/invocation.js.map +1 -1
  400. package/dist/cli/lib/log-stream.d.ts.map +1 -1
  401. package/dist/cli/lib/log-stream.js +15 -23
  402. package/dist/cli/lib/log-stream.js.map +1 -1
  403. package/dist/cli/lib/logger.d.ts.map +1 -1
  404. package/dist/cli/lib/logger.js +7 -12
  405. package/dist/cli/lib/logger.js.map +1 -1
  406. package/dist/cli/lib/organization.d.ts.map +1 -1
  407. package/dist/cli/lib/organization.js +5 -13
  408. package/dist/cli/lib/organization.js.map +1 -1
  409. package/dist/cli/lib/platform-address.d.ts +3 -0
  410. package/dist/cli/lib/platform-address.d.ts.map +1 -0
  411. package/dist/cli/lib/platform-address.js +7 -0
  412. package/dist/cli/lib/platform-address.js.map +1 -0
  413. package/dist/cli/lib/project-link.d.ts.map +1 -1
  414. package/dist/cli/lib/project-link.js +2 -4
  415. package/dist/cli/lib/project-link.js.map +1 -1
  416. package/dist/cli/lib/resolve.d.ts +2 -6
  417. package/dist/cli/lib/resolve.d.ts.map +1 -1
  418. package/dist/cli/lib/resolve.js +35 -34
  419. package/dist/cli/lib/resolve.js.map +1 -1
  420. package/dist/cli/lib/source-repository-link.d.ts.map +1 -1
  421. package/dist/cli/lib/source-repository-link.js +6 -9
  422. package/dist/cli/lib/source-repository-link.js.map +1 -1
  423. package/dist/cli/lib/terminal-output.d.ts +12 -0
  424. package/dist/cli/lib/terminal-output.d.ts.map +1 -0
  425. package/dist/cli/lib/terminal-output.js +69 -0
  426. package/dist/cli/lib/terminal-output.js.map +1 -0
  427. package/dist/cli/lib/types.d.ts +3 -7
  428. package/dist/cli/lib/types.d.ts.map +1 -1
  429. package/dist/cli/lib/types.js.map +1 -1
  430. package/dist/cli/lib/utf8.d.ts +2 -0
  431. package/dist/cli/lib/utf8.d.ts.map +1 -0
  432. package/dist/cli/lib/utf8.js +12 -0
  433. package/dist/cli/lib/utf8.js.map +1 -0
  434. package/dist/cli/root-options.d.ts.map +1 -1
  435. package/dist/cli/root-options.js +11 -14
  436. package/dist/cli/root-options.js.map +1 -1
  437. package/dist/cli-plugin.d.ts.map +1 -1
  438. package/dist/cli-plugin.js +2 -6
  439. package/dist/cli-plugin.js.map +1 -1
  440. package/dist/cloud-config-module.js +2 -2
  441. package/dist/cloud-config-module.js.map +1 -1
  442. package/dist/dev/cli-host.d.ts.map +1 -1
  443. package/dist/dev/cli-host.js +16 -19
  444. package/dist/dev/cli-host.js.map +1 -1
  445. package/dist/dev/dashboard-vite-config.d.ts +1 -0
  446. package/dist/dev/dashboard-vite-config.d.ts.map +1 -1
  447. package/dist/dev/dashboard-vite-config.js +26 -6
  448. package/dist/dev/dashboard-vite-config.js.map +1 -1
  449. package/dist/dev/dev-command.d.ts.map +1 -1
  450. package/dist/dev/dev-command.js +76 -39
  451. package/dist/dev/dev-command.js.map +1 -1
  452. package/dist/dev/dev-config.d.ts +3 -0
  453. package/dist/dev/dev-config.d.ts.map +1 -1
  454. package/dist/dev/dev-config.js +43 -13
  455. package/dist/dev/dev-config.js.map +1 -1
  456. package/dist/dev/dev-migrate.js +7 -9
  457. package/dist/dev/dev-migrate.js.map +1 -1
  458. package/dist/dev/dev-process.d.ts.map +1 -1
  459. package/dist/dev/dev-process.js +6 -10
  460. package/dist/dev/dev-process.js.map +1 -1
  461. package/dist/dev/dev-server.js +7 -6
  462. package/dist/dev/dev-server.js.map +1 -1
  463. package/dist/dev/dev-worker.js +5 -2
  464. package/dist/dev/dev-worker.js.map +1 -1
  465. package/dist/dev/local-services.d.ts.map +1 -1
  466. package/dist/dev/local-services.js +152 -106
  467. package/dist/dev/local-services.js.map +1 -1
  468. package/dist/dev/project-layout.d.ts.map +1 -1
  469. package/dist/dev/project-layout.js +12 -17
  470. package/dist/dev/project-layout.js.map +1 -1
  471. package/dist/dev/project-plugin-scope.d.ts +2 -0
  472. package/dist/dev/project-plugin-scope.d.ts.map +1 -0
  473. package/dist/dev/project-plugin-scope.js +38 -0
  474. package/dist/dev/project-plugin-scope.js.map +1 -0
  475. package/dist/entrypoint.js +2 -0
  476. package/dist/entrypoint.js.map +1 -1
  477. package/dist/index.d.ts.map +1 -1
  478. package/dist/index.js +3 -6
  479. package/dist/index.js.map +1 -1
  480. package/dist/local-asset-server.d.ts.map +1 -1
  481. package/dist/local-asset-server.js +7 -13
  482. package/dist/local-asset-server.js.map +1 -1
  483. package/dist/local-cache-plugin.d.ts.map +1 -1
  484. package/dist/local-cache-plugin.js +20 -28
  485. package/dist/local-cache-plugin.js.map +1 -1
  486. package/dist/local-cache.d.ts.map +1 -1
  487. package/dist/local-cache.js +40 -55
  488. package/dist/local-cache.js.map +1 -1
  489. package/dist/local-core.d.ts +2 -0
  490. package/dist/local-core.d.ts.map +1 -0
  491. package/dist/local-core.js +13 -0
  492. package/dist/local-core.js.map +1 -0
  493. package/dist/local-dashboard-plugin.d.ts.map +1 -1
  494. package/dist/local-dashboard-plugin.js +6 -11
  495. package/dist/local-dashboard-plugin.js.map +1 -1
  496. package/dist/local-database.d.ts.map +1 -1
  497. package/dist/local-database.js +20 -23
  498. package/dist/local-database.js.map +1 -1
  499. package/dist/local-durable-execution-plugin.d.ts +15 -0
  500. package/dist/local-durable-execution-plugin.d.ts.map +1 -0
  501. package/dist/local-durable-execution-plugin.js +305 -0
  502. package/dist/local-durable-execution-plugin.js.map +1 -0
  503. package/dist/local-runtime-guard.d.ts +2 -0
  504. package/dist/local-runtime-guard.d.ts.map +1 -1
  505. package/dist/local-runtime-guard.js +40 -3
  506. package/dist/local-runtime-guard.js.map +1 -1
  507. package/dist/local-runtime.d.ts.map +1 -1
  508. package/dist/local-runtime.js +53 -43
  509. package/dist/local-runtime.js.map +1 -1
  510. package/package.json +20 -14
  511. package/dist/cli/commands/identity-context/login.d.ts +0 -2
  512. package/dist/cli/commands/identity-context/login.d.ts.map +0 -1
  513. package/dist/cli/commands/identity-context/login.js +0 -158
  514. package/dist/cli/commands/identity-context/login.js.map +0 -1
  515. package/dist/cli/commands/identity-context/logout.d.ts +0 -2
  516. package/dist/cli/commands/identity-context/logout.d.ts.map +0 -1
  517. package/dist/cli/commands/identity-context/logout.js +0 -12
  518. package/dist/cli/commands/identity-context/logout.js.map +0 -1
  519. package/dist/cli/commands/identity-context/org-switch.d.ts +0 -3
  520. package/dist/cli/commands/identity-context/org-switch.d.ts.map +0 -1
  521. package/dist/cli/commands/identity-context/org-switch.js +0 -71
  522. package/dist/cli/commands/identity-context/org-switch.js.map +0 -1
  523. package/dist/cli/commands/identity-context/whoami.d.ts +0 -3
  524. package/dist/cli/commands/identity-context/whoami.d.ts.map +0 -1
  525. package/dist/cli/commands/identity-context/whoami.js +0 -80
  526. package/dist/cli/commands/identity-context/whoami.js.map +0 -1
  527. package/dist/cli/lib/file-lock.d.ts +0 -23
  528. package/dist/cli/lib/file-lock.d.ts.map +0 -1
  529. package/dist/cli/lib/file-lock.js +0 -121
  530. package/dist/cli/lib/file-lock.js.map +0 -1
@@ -1,88 +1,346 @@
1
- import * as prompts from "@clack/prompts";
2
- import { createAuthenticatedClient, resolveEnvironment, } from "../../index.js";
3
- import { LOG_SERVICES } from "../../lib/contract/logs.js";
4
- import { consumeLogStream, printLogLine } from "../../lib/log-stream.js";
5
- import { readBooleanOption, readIntegerOption, readStringOption } from "./options.js";
6
- // The migration job writes to the same endpoint but is not part of the stream vocabulary: it runs
7
- // once and finishes, so `contract/logs.ts` names only the two services that can be tailed. Derived
8
- // from that list rather than written out again, so a service added to the contract is accepted here
9
- // without a second edit.
10
- const BATCH_ONLY_SERVICE = "migration";
11
- const LOG_SERVICE_NAMES = [...LOG_SERVICES, BATCH_ONLY_SERVICE];
12
- // The refusal names the list it checked against rather than a second copy of it. A hand-written
13
- // sentence here would go wrong the first time the contract grows a service: the check would accept
14
- // the new name and the message would still deny it exists.
15
- function nameList(names) {
16
- const quoted = names.map((name) => `"${name}"`);
17
- if (quoted.length < 2)
18
- return quoted.join("");
19
- return `${quoted.slice(0, -1).join(", ")}, or ${quoted[quoted.length - 1]}`;
20
- }
1
+ import { createAuthenticatedClient, output, resolveEnvironment, sleep, writeJson, } from "../../index.js";
2
+ import { LOG_SERVICES, LOG_SEVERITIES, classifyLogSeverity, } from "../../lib/contract/logs.js";
3
+ import { consumeLogStream } from "../../lib/log-stream.js";
4
+ import { exportLogQuery } from "./log-export.js";
5
+ import { logQueryExitCode, pageCarriesEvents, printQueryEvent, reportRetention, reportScanIncomplete, reportServedWindow, reportUnreadableState, } from "./log-query-output.js";
6
+ import { MAX_REPLAY_LINES, readBooleanOption, readLineCount, readStringOption } from "./options.js";
7
+ import { resolveDeploymentIdInEnvironment } from "./shared.js";
8
+ // `logs` reads a VC Environment's runtime output two ways: the Project-scoped log query for a
9
+ // window of past output, and the SSE stream for `--follow`. Every bound the query applies comes
10
+ // from the capability resource the control plane publishes for the Project.
11
+ //
12
+ // A query is answered oldest line first. The provider pages only forward, so reading the newest
13
+ // lines of a wide window means walking all of it, which spends the read budget a Cell shares
14
+ // between its environments (ADR-0029). A customer wanting recent output narrows the window with
15
+ // `--since` or tails it.
16
+ //
17
+ // A refusal is thrown so `reportCommandError` chooses between prose and the `--json` error envelope
18
+ // in one place. An answer is rendered as lines and bounds, or as one JSON document.
19
+ // The migration job writes to the same endpoint but runs once and finishes, so `contract/logs.ts`
20
+ // names only the two services that can be tailed. Derived from that list so a new service is
21
+ // accepted here without a second edit.
22
+ export const BATCH_ONLY_SERVICE = "migration";
23
+ const TAILABLE_SERVICE_NAMES = [...LOG_SERVICES];
24
+ const FOLLOW_SERVICE_NAMES = [...LOG_SERVICES, BATCH_ONLY_SERVICE];
25
+ // How long the CLI waits for a query the control plane answers outside the request. The poll keys
26
+ // on the answer's state, not on a published bound, so a backend that starts answering `RUNNING`
27
+ // needs no client release.
28
+ const QUERY_POLL_INTERVAL_MS = 2_000;
29
+ const QUERY_POLL_ATTEMPTS = 30;
30
+ // How many pages one command may read. A page is about one provider read from the Cell's shared
31
+ // budget (ADR-0029), and the server also cuts a page on a byte bound, so a window of very long
32
+ // lines pages more often than `--lines` divided by the page size suggests. Twenty pages of the
33
+ // published maximum is the twenty thousand events one window is scanned for; a customer wanting
34
+ // more takes the window as a file.
35
+ const MAX_QUERY_PAGES = 20;
21
36
  const SINCE_UNIT_MS = {
22
37
  s: 1_000,
23
38
  m: 60_000,
24
39
  h: 3_600_000,
25
40
  d: 86_400_000,
26
41
  };
27
- // Convert a `--since` duration (e.g. "30m", "6h", "2d") into an ISO-8601 lower
28
- // time bound the control plane understands.
29
- function parseSince(value) {
30
- const match = value.trim().match(/^(\d+)\s*([smhd])$/i);
31
- const unitMs = match ? SINCE_UNIT_MS[match[2].toLowerCase()] : undefined;
32
- const invalid = new Error(`Invalid --since value "${value}". Use a number followed by s, m, h, or d (e.g. 30m, 6h, 2d).`);
33
- if (!match || unitMs === undefined) {
34
- throw invalid;
35
- }
36
- const d = new Date(Date.now() - Number(match[1]) * unitMs);
37
- if (Number.isNaN(d.getTime())) {
38
- throw invalid;
39
- }
40
- return d.toISOString();
41
- }
42
- function buildQueryString(service, lines, since) {
43
- const params = new URLSearchParams({
44
- service,
45
- lines: String(lines),
42
+ // A calendar instant, not a duration. `Date.parse` reads a bare "6" as a year, so a value that is
43
+ // neither a duration nor a dated timestamp is refused instead of becoming 1 January 2006.
44
+ const TIMESTAMP_PATTERN = /^\d{4}-\d{2}-\d{2}([T\s].*)?$/;
45
+ export async function logs({ options, globals }) {
46
+ const requested = readLogOptions(options);
47
+ return requested.follow ? followLogs(requested, globals) : queryLogs(requested, globals);
48
+ }
49
+ function readLogOptions(options) {
50
+ return {
51
+ service: readStringOption(options.service, "--service") ?? "",
52
+ lines: options.lines,
53
+ follow: readBooleanOption(options.follow),
54
+ since: readInstantOption(options.since, "--since"),
55
+ until: readInstantOption(options.until, "--until"),
56
+ include: readStringOption(options.include, "--include"),
57
+ exclude: readStringOption(options.exclude, "--exclude"),
58
+ minimumSeverity: readStringOption(options.minSeverity, "--min-severity"),
59
+ deployment: readStringOption(options.deployment, "--deployment"),
60
+ exportRequested: readBooleanOption(options.export),
61
+ format: readStringOption(options.format, "--format"),
62
+ outputPath: readStringOption(options.output, "--output"),
63
+ };
64
+ }
65
+ // --- Follow: the SSE stream ---
66
+ async function followLogs(requested, globals) {
67
+ const unsupported = queryOnlyFlagsGiven(requested);
68
+ if (unsupported.length > 0) {
69
+ throw new Error(`${andList(unsupported)} ${unsupported.length === 1 ? "searches" : "search"} a window of past output, which --follow does not do. Drop --follow to search, or drop ${unsupported.length === 1 ? "that option" : "those options"} to tail the live stream.`);
70
+ }
71
+ if (globals.json === true) {
72
+ throw new Error("Followed log output is text and does not support --json.");
73
+ }
74
+ if (!FOLLOW_SERVICE_NAMES.includes(requested.service)) {
75
+ throw new Error(`Invalid service "${requested.service}". Must be ${orList(FOLLOW_SERVICE_NAMES.map(quoted))}.`);
76
+ }
77
+ if (!TAILABLE_SERVICE_NAMES.includes(requested.service)) {
78
+ throw new Error("The migration job runs once, so its logs can't be streamed. Omit --follow to fetch them.");
79
+ }
80
+ const { environment } = await resolveEnvironment(globals);
81
+ const client = await createAuthenticatedClient(globals);
82
+ const query = new URLSearchParams({
83
+ service: requested.service,
84
+ lines: String(readLineCount(requested.lines, "--lines", MAX_REPLAY_LINES)),
46
85
  });
47
- if (since)
48
- params.set("since", since);
49
- return params.toString();
50
- }
51
- async function fetchBatchLogs(client, environmentId, service, lines, since) {
52
- const query = buildQueryString(service, lines, since);
53
- const entries = await client.get(`/environments/${environmentId}/logs?${query}`);
54
- if (entries.length === 0) {
55
- prompts.log.warn(`No logs in the selected window for service "${service}". The service may be failing before it produces output, or the window is too narrow — fetch more with --lines, or widen the window with --since (e.g. --since 6h).`);
56
- return;
86
+ if (requested.since)
87
+ query.set("since", requested.since);
88
+ await consumeLogStream(client, `/environments/${environment.id}/logs/stream?${query}`);
89
+ return undefined;
90
+ }
91
+ function queryOnlyFlagsGiven(requested) {
92
+ const given = [];
93
+ if (requested.until !== undefined)
94
+ given.push("--until");
95
+ if (requested.include !== undefined)
96
+ given.push("--include");
97
+ if (requested.exclude !== undefined)
98
+ given.push("--exclude");
99
+ if (requested.minimumSeverity !== undefined)
100
+ given.push("--min-severity");
101
+ if (requested.deployment !== undefined)
102
+ given.push("--deployment");
103
+ if (requested.exportRequested)
104
+ given.push("--export");
105
+ if (requested.format !== undefined)
106
+ given.push("--format");
107
+ if (requested.outputPath !== undefined)
108
+ given.push("--output");
109
+ return given;
110
+ }
111
+ // --- Query: the Project-scoped log query and its export ---
112
+ async function queryLogs(requested, globals) {
113
+ if (!requested.exportRequested &&
114
+ (requested.format !== undefined || requested.outputPath !== undefined)) {
115
+ throw new Error("--format and --output describe an exported file. Add --export to write one.");
116
+ }
117
+ const { project, environment } = await resolveEnvironment(globals);
118
+ const client = await createAuthenticatedClient(globals);
119
+ const capabilities = await client.get(`/projects/${project.id}/log-capabilities`);
120
+ const capability = capabilities.sources.find((published) => published.source === requested.service);
121
+ if (!capability) {
122
+ throw new Error(`Invalid service "${requested.service}". Must be ${orList(capabilities.sources.map((published) => quoted(published.source)))}.`);
123
+ }
124
+ // A search walks at most `MAX_QUERY_PAGES` pages, so the largest budget it honours is that many
125
+ // pages of the published maximum. A larger request is refused, not served short.
126
+ const lines = readLineCount(requested.lines, "--lines", MAX_QUERY_PAGES * capability.maxPageSizeLines);
127
+ const unavailable = unavailableFilters(requested, capability);
128
+ if (unavailable.length > 0) {
129
+ throw new Error(`${andList(unavailable)} cannot be used on "${capability.source}" logs. Vendure Cloud publishes ${orList(capability.filters.map(quoted))} for this source.`);
130
+ }
131
+ const format = readExportFormat(requested, capability);
132
+ const minimumSeverity = readMinimumSeverity(requested);
133
+ const deploymentId = requested.deployment === undefined
134
+ ? undefined
135
+ : await resolveDeploymentIdInEnvironment(client, environment.id, requested.deployment);
136
+ const request = {
137
+ environmentIds: [environment.id],
138
+ sources: [capability.source],
139
+ from: requested.since,
140
+ to: requested.until,
141
+ deploymentId,
142
+ include: requested.include,
143
+ exclude: requested.exclude,
144
+ minimumSeverity,
145
+ // An export discards the page the query answers with, so it asks for the smallest page the
146
+ // platform composes. The control plane walks the file at the published maximum.
147
+ pageSize: requested.exportRequested
148
+ ? capability.minPageSizeLines
149
+ : clampPageSize(lines, capability),
150
+ };
151
+ const created = await client.post(`/projects/${project.id}/log-queries`, request);
152
+ const query = await settleRunningQuery(client, project.id, created);
153
+ // The control plane decides which answers are a file: a window that matched nothing is exported
154
+ // as an empty file, and a query the published bounds refuse is settled as a failed export
155
+ // carrying the refusal's sentence. An export is therefore requested whatever the first page said.
156
+ if (requested.exportRequested) {
157
+ reportQueryBounds(query, capability, globals);
158
+ return exportLogQuery({
159
+ client,
160
+ projectId: project.id,
161
+ queryId: query.id,
162
+ capability,
163
+ format,
164
+ outputPath: requested.outputPath,
165
+ json: globals.json === true,
166
+ });
167
+ }
168
+ if (!pageCarriesEvents(query.results.state)) {
169
+ if (globals.json === true) {
170
+ writeQueryDocument(query, query.results, [], false);
171
+ return logQueryExitCode(query.results.state);
172
+ }
173
+ reportUnreadableState(query.results, { source: capability.source, capability });
174
+ reportQueryBounds(query, capability, globals);
175
+ return logQueryExitCode(query.results.state);
176
+ }
177
+ return renderQuery({ client, query, capability, lines, globals });
178
+ }
179
+ // Walks the query's pages until the line budget is spent or the window ends, which bounds the
180
+ // command.
181
+ async function renderQuery({ client, query, capability, lines, globals, }) {
182
+ const json = globals.json === true;
183
+ const collected = [];
184
+ const context = { source: capability.source, capability };
185
+ let page = query.results;
186
+ // The page whose state describes the answer is the last one that carried lines. A walk ending on
187
+ // an empty page reached the end of its window, and that page's `NO_MATCHES` would contradict the
188
+ // lines returned.
189
+ let answered = query.results;
190
+ let rendered = 0;
191
+ let leftOnPage = false;
192
+ let scanIncomplete = false;
193
+ for (let read = 1;; read++) {
194
+ if (!pageCarriesEvents(page.state)) {
195
+ // Part way through a walk, an empty answer is the end of the window. Anything else stopped
196
+ // the read, and a cut-short walk must not be presented as complete.
197
+ if (page.state === "NO_LOGS" || page.state === "NO_MATCHES")
198
+ break;
199
+ if (json)
200
+ writeQueryDocument(query, page, collected, false);
201
+ else
202
+ reportUnreadableState(page, context);
203
+ return logQueryExitCode(page.state);
204
+ }
205
+ answered = page;
206
+ if (page.state === "PARTIAL")
207
+ scanIncomplete = true;
208
+ for (const event of page.events) {
209
+ if (rendered >= lines) {
210
+ // A page is floored at the published minimum, so a small `--lines` leaves lines behind on a
211
+ // page the server gave no cursor with.
212
+ leftOnPage = true;
213
+ break;
214
+ }
215
+ if (json)
216
+ collected.push(event);
217
+ else
218
+ printQueryEvent(event, capability);
219
+ rendered += 1;
220
+ }
221
+ // A page with a cursor always carries at least one event, so an empty page made no progress and
222
+ // following its cursor would repeat this read for ever.
223
+ if (rendered >= lines || page.nextCursor === null || page.events.length === 0)
224
+ break;
225
+ if (read >= MAX_QUERY_PAGES)
226
+ break;
227
+ page = await client.get(`/projects/${query.projectId}/log-queries/${encodeURIComponent(query.id)}/results?cursor=${encodeURIComponent(page.nextCursor)}`);
57
228
  }
58
- for (const entry of entries) {
59
- printLogLine(entry);
229
+ const hasMore = page.nextCursor !== null || leftOnPage;
230
+ if (json) {
231
+ writeQueryDocument(query, answered, collected, hasMore);
232
+ return undefined;
60
233
  }
234
+ if (scanIncomplete)
235
+ reportScanIncomplete();
236
+ if (hasMore) {
237
+ output.warn(`Stopped after ${rendered} lines, and this window holds more. Raise --lines, or narrow the window with --since and --until.`);
238
+ }
239
+ reportQueryBounds(query, capability, globals);
240
+ return undefined;
61
241
  }
62
- async function streamLogs(client, environmentId, service, lines, since) {
63
- const query = buildQueryString(service, lines, since);
64
- await consumeLogStream(client, `/environments/${environmentId}/logs/stream?${query}`);
242
+ // One document per run under `--json`. An empty or refused answer writes the same shape with no
243
+ // events, so a caller never needs the exit code to know whether anything was written.
244
+ function writeQueryDocument(query, answered, events, hasMore) {
245
+ writeJson({
246
+ queryId: query.id,
247
+ capabilityVersion: query.capabilityVersion,
248
+ query: query.query,
249
+ state: answered.state,
250
+ truncationReason: answered.truncationReason,
251
+ retention: query.results.retention,
252
+ hasMore,
253
+ events,
254
+ });
65
255
  }
66
- export async function logs({ options, globals }) {
67
- const { environment } = await resolveEnvironment(globals);
68
- const client = createAuthenticatedClient(globals);
69
- const service = readStringOption(options.service, "--service") ?? "";
70
- const lines = readIntegerOption(options.lines, "--lines");
71
- const follow = readBooleanOption(options.follow);
72
- const sinceOption = readStringOption(options.since, "--since");
73
- const since = sinceOption ? parseSince(sinceOption) : undefined;
74
- if (!LOG_SERVICE_NAMES.includes(service)) {
75
- prompts.log.error(`Invalid service "${service}". Must be ${nameList(LOG_SERVICE_NAMES)}.`);
76
- return 1;
77
- }
78
- if (follow && service === BATCH_ONLY_SERVICE) {
79
- prompts.log.error("The migration job runs once, so its logs can't be streamed. Omit --follow to fetch them.");
80
- return 1;
81
- }
82
- if (follow) {
83
- await streamLogs(client, environment.id, service, lines, since);
256
+ // Both come from the answer, not the request: the server narrows a window to the searchable floor,
257
+ // and a customer reading an empty page needs to know which window was read.
258
+ function reportQueryBounds(query, capability, globals) {
259
+ if (globals.json === true)
84
260
  return;
261
+ reportServedWindow(query.query.from, query.query.to, query.query.windowClamped, capability);
262
+ reportRetention(query.results.retention);
263
+ }
264
+ async function settleRunningQuery(client, projectId, created) {
265
+ let current = created;
266
+ for (let attempt = 1; current.results.state === "RUNNING" && attempt <= QUERY_POLL_ATTEMPTS; attempt++) {
267
+ await sleep(QUERY_POLL_INTERVAL_MS);
268
+ current = await client.get(`/projects/${projectId}/log-queries/${encodeURIComponent(current.id)}`);
269
+ }
270
+ return current;
271
+ }
272
+ // Read from the capability, so a source that gains or loses a filter needs no CLI release.
273
+ function unavailableFilters(requested, capability) {
274
+ const asked = [
275
+ ["--since", requested.since !== undefined, "TIME"],
276
+ ["--until", requested.until !== undefined, "TIME"],
277
+ ["--include", requested.include !== undefined, "INCLUDE_TEXT"],
278
+ ["--exclude", requested.exclude !== undefined, "EXCLUDE_TEXT"],
279
+ ["--min-severity", requested.minimumSeverity !== undefined, "MINIMUM_SEVERITY"],
280
+ ["--deployment", requested.deployment !== undefined, "DEPLOYMENT"],
281
+ ];
282
+ return asked
283
+ .filter(([, given, filter]) => given && !capability.filters.includes(filter))
284
+ .map(([flag]) => flag);
285
+ }
286
+ function readExportFormat(requested, capability) {
287
+ if (requested.format === undefined)
288
+ return undefined;
289
+ const asked = requested.format.trim().toUpperCase();
290
+ const published = capability.exportFormats.find((format) => format === asked);
291
+ if (published === undefined) {
292
+ throw new Error(`Invalid --format "${requested.format}". This source exports ${orList(capability.exportFormats.map((format) => quoted(format.toLowerCase())))}.`);
293
+ }
294
+ return published;
295
+ }
296
+ function readMinimumSeverity(requested) {
297
+ if (requested.minimumSeverity === undefined)
298
+ return undefined;
299
+ const severity = classifyLogSeverity(requested.minimumSeverity);
300
+ if (severity === null) {
301
+ throw new Error(`Invalid --min-severity "${requested.minimumSeverity}". Must be ${orList(LOG_SEVERITIES.map(quoted))}.`);
302
+ }
303
+ return severity;
304
+ }
305
+ // A page below the published floor costs the same provider read as one at it, so a customer asking
306
+ // for fewer lines is served a page and shown the part they asked for.
307
+ function clampPageSize(lines, capability) {
308
+ return Math.min(Math.max(lines, capability.minPageSizeLines), capability.maxPageSizeLines);
309
+ }
310
+ // A `--since` or `--until` value as the ISO-8601 instant the control plane understands. A value
311
+ // nothing can parse is refused before any request.
312
+ function readInstantOption(value, flag) {
313
+ const given = readStringOption(value, flag);
314
+ return given === undefined ? undefined : parseInstant(given, flag);
315
+ }
316
+ // A duration such as "30m", "6h" or "2d" is that long before now; anything else must be a dated
317
+ // timestamp.
318
+ function parseInstant(value, flag) {
319
+ const trimmed = value.trim();
320
+ const duration = trimmed.match(/^(\d+)\s*([smhd])$/i);
321
+ const unitMs = duration ? SINCE_UNIT_MS[duration[2].toLowerCase()] : undefined;
322
+ if (duration && unitMs !== undefined) {
323
+ return new Date(Date.now() - Number(duration[1]) * unitMs).toISOString();
85
324
  }
86
- await fetchBatchLogs(client, environment.id, service, lines, since);
325
+ const parsed = TIMESTAMP_PATTERN.test(trimmed) ? Date.parse(trimmed) : Number.NaN;
326
+ if (Number.isFinite(parsed))
327
+ return new Date(parsed).toISOString();
328
+ throw new Error(`Invalid ${flag} value "${value}". Use a number followed by s, m, h, or d (e.g. 30m, 6h, 2d), or an ISO-8601 timestamp.`);
329
+ }
330
+ // The refusal names the list it checked, so the message cannot drift from the contract. Two joins:
331
+ // a choice the caller picks one of reads "a, b, or c", and supplied options read "a, b, and c".
332
+ function orList(names) {
333
+ return joinList(names, "or");
334
+ }
335
+ function andList(names) {
336
+ return joinList(names, "and");
337
+ }
338
+ function joinList(names, conjunction) {
339
+ if (names.length < 2)
340
+ return names.join("");
341
+ return `${names.slice(0, -1).join(", ")}, ${conjunction} ${names[names.length - 1]}`;
342
+ }
343
+ function quoted(name) {
344
+ return `"${name}"`;
87
345
  }
88
346
  //# sourceMappingURL=logs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAGL,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAiB,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtF,kGAAkG;AAClG,mGAAmG;AACnG,oGAAoG;AACpG,yBAAyB;AACzB,MAAM,kBAAkB,GAAG,WAAW,CAAC;AACvC,MAAM,iBAAiB,GAAsB,CAAC,GAAG,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAEnF,gGAAgG;AAChG,mGAAmG;AACnG,2DAA2D;AAC3D,SAAS,QAAQ,CAAC,KAAwB;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,aAAa,GAA2B;IAC5C,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,UAAU;CACd,CAAC;AAEF,+EAA+E;AAC/E,4CAA4C;AAC5C,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,MAAM,OAAO,GAAG,IAAI,KAAK,CACvB,0BAA0B,KAAK,+DAA+D,CAC/F,CAAC;IACF,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,OAAO,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAa,EAAE,KAAc;IACtE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;KACrB,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAiB,EACjB,aAAqB,EACrB,OAAe,EACf,KAAa,EACb,KAAc;IAEd,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAa,iBAAiB,aAAa,SAAS,KAAK,EAAE,CAAC,CAAC;IAE7F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CACd,+CAA+C,OAAO,qKAAqK,CAC5N,CAAC;QACF,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAiB,EACjB,aAAqB,EACrB,OAAe,EACf,KAAa,EACb,KAAc;IAEd,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,aAAa,gBAAgB,KAAK,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAqB;IAChE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,OAAO,cAAc,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC3F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CACf,0FAA0F,CAC3F,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/logs.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,7 @@
1
- export interface DeploymentImageOptions {
2
- serverImage?: string;
3
- workerImage?: string;
4
- migrationImage?: string;
5
- }
6
1
  export declare function readStringOption(value: unknown, flag: string): string | undefined;
7
2
  export declare function readBooleanOption(value: unknown): boolean;
8
3
  export declare function readNegatableOption(value: unknown): boolean;
9
4
  export declare function readIntegerOption(value: unknown, flag: string): number;
10
- export declare function readImageOptions(options: Record<string, unknown>): DeploymentImageOptions;
5
+ export declare function readLineCount(value: unknown, flag: string, max: number): number;
6
+ export declare const MAX_REPLAY_LINES = 1000;
11
7
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/options.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjF;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE3D;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,sBAAsB,CAMzF"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/options.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjF;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE3D;AAOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtE;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/E;AAGD,eAAO,MAAM,gBAAgB,OAAQ,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { readSingleValue } from "../../arguments.js";
2
+ // The host hands a command its options as `Record<string, unknown>`. Each reader narrows one entry
3
+ // and refuses a shape the command did not declare.
2
4
  export function readStringOption(value, flag) {
3
5
  return readSingleValue(value, flag);
4
6
  }
5
- // Commander gives a boolean flag `true` when it was supplied and leaves it absent otherwise, and
6
- // gives a `--no-` flag `true` by default and `false` when it was supplied. Both read as "is it
7
- // exactly true", so an absent flag and a flag the host handed over in some other shape both answer
8
- // the same as not supplying it.
7
+ // Commander gives a boolean flag `true` when supplied and leaves it absent otherwise, and gives a
8
+ // `--no-` flag `true` by default and `false` when supplied. Any other shape reads as not supplied.
9
9
  export function readBooleanOption(value) {
10
10
  return value === true;
11
11
  }
@@ -13,13 +13,11 @@ export function readBooleanOption(value) {
13
13
  export function readNegatableOption(value) {
14
14
  return value !== false;
15
15
  }
16
- // A count declared with a string default, the way `vcloud` declares `--limit` and `--lines`.
16
+ // A count declared with a string default, as `--limit` and `--lines` are.
17
17
  // Commander does not coerce, so the value is the customer's text or the declared default.
18
18
  //
19
- // The parse is not range-checked, which is `vcloud`'s behaviour: text that is not a number reaches
20
- // the control plane as `limit=NaN` and is refused there. The one count with a local bound is
21
- // `deployment logs --lines`, because it decides how much history a stream replays; `build-logs.ts`
22
- // holds that check.
19
+ // The parse is not range-checked: text that is not a number reaches the control plane as
20
+ // `limit=NaN` and is refused there.
23
21
  export function readIntegerOption(value, flag) {
24
22
  const text = readStringOption(value, flag);
25
23
  if (text === undefined) {
@@ -27,11 +25,16 @@ export function readIntegerOption(value, flag) {
27
25
  }
28
26
  return Number.parseInt(text, 10);
29
27
  }
30
- export function readImageOptions(options) {
31
- return {
32
- serverImage: readStringOption(options.serverImage, "--server-image"),
33
- workerImage: readStringOption(options.workerImage, "--worker-image"),
34
- migrationImage: readStringOption(options.migrationImage, "--migration-image"),
35
- };
28
+ // A line count the CLI holds to a range itself. Every `--lines` bounds how much this process reads
29
+ // or holds, so an unbounded one spends a budget the customer cannot see. The ceiling is the
30
+ // caller's because the commands bound different things; the parse and the refusal are shared.
31
+ export function readLineCount(value, flag, max) {
32
+ const lines = readIntegerOption(value, flag);
33
+ if (!Number.isInteger(lines) || lines < 1 || lines > max) {
34
+ throw new Error(`${flag} must be a whole number between 1 and ${max}.`);
35
+ }
36
+ return lines;
36
37
  }
38
+ // How much past output a stream replays before it follows. Shared by the two commands that tail.
39
+ export const MAX_REPLAY_LINES = 1_000;
37
40
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAiBrD,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,IAAY;IAC3D,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,iGAAiG;AACjG,+FAA+F;AAC/F,mGAAmG;AACnG,gCAAgC;AAChC,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,KAAK,KAAK,KAAK,CAAC;AACzB,CAAC;AAED,6FAA6F;AAC7F,0FAA0F;AAC1F,EAAE;AACF,mGAAmG;AACnG,6FAA6F;AAC7F,mGAAmG;AACnG,oBAAoB;AACpB,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,IAAY;IAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAC/D,OAAO;QACL,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC;QACpE,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC;QACpE,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC9E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,mGAAmG;AACnG,mDAAmD;AAEnD,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,IAAY;IAC3D,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,KAAK,KAAK,KAAK,CAAC;AACzB,CAAC;AAED,0EAA0E;AAC1E,0FAA0F;AAC1F,EAAE;AACF,yFAAyF;AACzF,oCAAoC;AACpC,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,IAAY;IAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,mGAAmG;AACnG,4FAA4F;AAC5F,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,IAAY,EAAE,GAAW;IACrE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,yCAAyC,GAAG,GAAG,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-format.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/plan-format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAK3C,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAEhD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE5D;AASD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,CAOvE"}
1
+ {"version":3,"file":"plan-format.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/plan-format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAI3C,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAEhD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE5D;AASD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,CAOvE"}
@@ -1,4 +1,4 @@
1
- import { cloudInvocation } from "../../index.js";
1
+ import { CLOUD_INVOCATION } from "../../index.js";
2
2
  export function isKeptAction(action) {
3
3
  return action.action === "keep";
4
4
  }
@@ -12,7 +12,7 @@ export function formatActionLine(action) {
12
12
  return `${ACTION_SYMBOLS[action.action]} ${action.label}`;
13
13
  }
14
14
  export function formatKeptActionLine(action) {
15
- return `! ${action.label} (kept — data-bearing; \`${cloudInvocation()} deploy teardown\` deletes it)`;
15
+ return `! ${action.label} (kept — data-bearing; \`${CLOUD_INVOCATION} deploy teardown\` deletes it)`;
16
16
  }
17
17
  export function summarizeActions(actions) {
18
18
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"plan-format.js","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/plan-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAajD,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,cAAc,GAA6C;IAC/D,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,OAAO,KAAK,MAAM,CAAC,KAAK,4BAA4B,eAAe,EAAE,gCAAgC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;KAClE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plan-format.js","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/plan-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAYlD,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,cAAc,GAA6C;IAC/D,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,OAAO,KAAK,MAAM,CAAC,KAAK,4BAA4B,gBAAgB,gCAAgC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;KAClE,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { type CloudCommandInput } from "../../index.js";
2
- export declare function deployPlan({ options, globals }: CloudCommandInput): Promise<void>;
2
+ export declare function deployPlan({ globals }: CloudCommandInput): Promise<void>;
3
3
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/plan.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAC;AAmBxB,wBAAsB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDvF"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deployment/plan.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAIvB,MAAM,gBAAgB,CAAC;AAkBxB,wBAAsB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD9E"}