@synteq/cli 0.2.0 → 1.1.1

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 (433) hide show
  1. package/dist/api/client.d.ts +362 -5
  2. package/dist/api/client.js +559 -44
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/factory.js +5 -2
  5. package/dist/api/factory.js.map +1 -1
  6. package/dist/api/types.d.ts +892 -3
  7. package/dist/apps-support/deploy.d.ts +197 -0
  8. package/dist/apps-support/deploy.js +639 -0
  9. package/dist/apps-support/deploy.js.map +1 -0
  10. package/dist/apps-support/dotenv.d.ts +67 -0
  11. package/dist/apps-support/dotenv.js +136 -0
  12. package/dist/apps-support/dotenv.js.map +1 -0
  13. package/dist/apps-support/env-rollout.d.ts +18 -0
  14. package/dist/apps-support/env-rollout.js +52 -0
  15. package/dist/apps-support/env-rollout.js.map +1 -0
  16. package/dist/apps-support/git.d.ts +14 -0
  17. package/dist/apps-support/git.js +25 -0
  18. package/dist/apps-support/git.js.map +1 -0
  19. package/dist/apps-support/link.d.ts +25 -0
  20. package/dist/apps-support/link.js +39 -0
  21. package/dist/apps-support/link.js.map +1 -0
  22. package/dist/apps-support/log-stream.d.ts +25 -0
  23. package/dist/apps-support/log-stream.js +85 -0
  24. package/dist/apps-support/log-stream.js.map +1 -0
  25. package/dist/apps-support/paid-app.d.ts +64 -0
  26. package/dist/apps-support/paid-app.js +195 -0
  27. package/dist/apps-support/paid-app.js.map +1 -0
  28. package/dist/apps-support/plans.d.ts +44 -0
  29. package/dist/apps-support/plans.js +43 -0
  30. package/dist/apps-support/plans.js.map +1 -0
  31. package/dist/apps-support/resolve.d.ts +10 -0
  32. package/dist/apps-support/resolve.js +53 -0
  33. package/dist/apps-support/resolve.js.map +1 -0
  34. package/dist/apps-support/time.d.ts +20 -0
  35. package/dist/apps-support/time.js +82 -0
  36. package/dist/apps-support/time.js.map +1 -0
  37. package/dist/auth/scope.js +4 -0
  38. package/dist/auth/scope.js.map +1 -1
  39. package/dist/auth/tokens.d.ts +3 -0
  40. package/dist/auth/tokens.js +6 -4
  41. package/dist/auth/tokens.js.map +1 -1
  42. package/dist/base/command.d.ts +35 -0
  43. package/dist/base/command.js +87 -4
  44. package/dist/base/command.js.map +1 -1
  45. package/dist/commands/agents.d.ts +10 -0
  46. package/dist/commands/agents.js +53 -0
  47. package/dist/commands/agents.js.map +1 -0
  48. package/dist/commands/api.d.ts +0 -1
  49. package/dist/commands/api.js +6 -5
  50. package/dist/commands/api.js.map +1 -1
  51. package/dist/commands/app/deployment/list.d.ts +14 -0
  52. package/dist/commands/app/deployment/list.js +45 -0
  53. package/dist/commands/app/deployment/list.js.map +1 -0
  54. package/dist/commands/app/deployment/rollback.d.ts +18 -0
  55. package/dist/commands/app/deployment/rollback.js +57 -0
  56. package/dist/commands/app/deployment/rollback.js.map +1 -0
  57. package/dist/commands/app/deployment/show.d.ts +26 -0
  58. package/dist/commands/app/deployment/show.js +98 -0
  59. package/dist/commands/app/deployment/show.js.map +1 -0
  60. package/dist/commands/app/domain/add.d.ts +17 -0
  61. package/dist/commands/app/domain/add.js +59 -0
  62. package/dist/commands/app/domain/add.js.map +1 -0
  63. package/dist/commands/app/domain/list.d.ts +14 -0
  64. package/dist/commands/app/domain/list.js +42 -0
  65. package/dist/commands/app/domain/list.js.map +1 -0
  66. package/dist/commands/app/domain/remove.d.ts +16 -0
  67. package/dist/commands/app/domain/remove.js +51 -0
  68. package/dist/commands/app/domain/remove.js.map +1 -0
  69. package/dist/commands/app/domain/verify.d.ts +15 -0
  70. package/dist/commands/app/domain/verify.js +39 -0
  71. package/dist/commands/app/domain/verify.js.map +1 -0
  72. package/dist/commands/app/env/add.d.ts +22 -0
  73. package/dist/commands/app/env/add.js +103 -0
  74. package/dist/commands/app/env/add.js.map +1 -0
  75. package/dist/commands/app/env/list.d.ts +17 -0
  76. package/dist/commands/app/env/list.js +40 -0
  77. package/dist/commands/app/env/list.js.map +1 -0
  78. package/dist/commands/app/env/reveal.d.ts +17 -0
  79. package/dist/commands/app/env/reveal.js +40 -0
  80. package/dist/commands/app/env/reveal.js.map +1 -0
  81. package/dist/commands/app/env/rm.d.ts +16 -0
  82. package/dist/commands/app/env/rm.js +48 -0
  83. package/dist/commands/app/env/rm.js.map +1 -0
  84. package/dist/commands/app/health.d.ts +14 -0
  85. package/dist/commands/app/health.js +40 -0
  86. package/dist/commands/app/health.js.map +1 -0
  87. package/dist/commands/app/index.d.ts +6 -0
  88. package/dist/commands/app/index.js +7 -0
  89. package/dist/commands/app/index.js.map +1 -0
  90. package/dist/commands/app/link.d.ts +22 -0
  91. package/dist/commands/app/link.js +31 -0
  92. package/dist/commands/app/link.js.map +1 -0
  93. package/dist/commands/app/logs.d.ts +25 -0
  94. package/dist/commands/app/logs.js +121 -0
  95. package/dist/commands/app/logs.js.map +1 -0
  96. package/dist/commands/app/metrics.d.ts +21 -0
  97. package/dist/commands/app/metrics.js +123 -0
  98. package/dist/commands/app/metrics.js.map +1 -0
  99. package/dist/commands/app/plan/change.d.ts +18 -0
  100. package/dist/commands/app/plan/change.js +79 -0
  101. package/dist/commands/app/plan/change.js.map +1 -0
  102. package/dist/commands/app/plan/show.d.ts +14 -0
  103. package/dist/commands/app/plan/show.js +40 -0
  104. package/dist/commands/app/plan/show.js.map +1 -0
  105. package/dist/commands/app/settings/set.d.ts +25 -0
  106. package/dist/commands/app/settings/set.js +96 -0
  107. package/dist/commands/app/settings/set.js.map +1 -0
  108. package/dist/commands/app/settings/show.d.ts +14 -0
  109. package/dist/commands/app/settings/show.js +48 -0
  110. package/dist/commands/app/settings/show.js.map +1 -0
  111. package/dist/commands/app/unlink.d.ts +8 -0
  112. package/dist/commands/app/unlink.js +25 -0
  113. package/dist/commands/app/unlink.js.map +1 -0
  114. package/dist/commands/apps/create.d.ts +26 -0
  115. package/dist/commands/apps/create.js +91 -0
  116. package/dist/commands/apps/create.js.map +1 -0
  117. package/dist/commands/apps/list.d.ts +16 -0
  118. package/dist/commands/apps/list.js +54 -0
  119. package/dist/commands/apps/list.js.map +1 -0
  120. package/dist/commands/baremetal/activity.d.ts +14 -0
  121. package/dist/commands/baremetal/activity.js +53 -0
  122. package/dist/commands/baremetal/activity.js.map +1 -0
  123. package/dist/commands/baremetal/bandwidth.d.ts +10 -0
  124. package/dist/commands/baremetal/bandwidth.js +86 -0
  125. package/dist/commands/baremetal/bandwidth.js.map +1 -0
  126. package/dist/commands/baremetal/console.d.ts +20 -0
  127. package/dist/commands/baremetal/console.js +72 -0
  128. package/dist/commands/baremetal/console.js.map +1 -0
  129. package/dist/commands/baremetal/details.d.ts +11 -0
  130. package/dist/commands/baremetal/details.js +116 -0
  131. package/dist/commands/baremetal/details.js.map +1 -0
  132. package/dist/commands/baremetal/index.d.ts +5 -0
  133. package/dist/commands/baremetal/index.js +6 -0
  134. package/dist/commands/baremetal/index.js.map +1 -0
  135. package/dist/commands/baremetal/install-password.d.ts +14 -0
  136. package/dist/commands/baremetal/install-password.js +80 -0
  137. package/dist/commands/baremetal/install-password.js.map +1 -0
  138. package/dist/commands/baremetal/list.d.ts +11 -0
  139. package/dist/commands/baremetal/list.js +59 -0
  140. package/dist/commands/baremetal/list.js.map +1 -0
  141. package/dist/commands/baremetal/order.d.ts +34 -0
  142. package/dist/commands/baremetal/order.js +394 -0
  143. package/dist/commands/baremetal/order.js.map +1 -0
  144. package/dist/commands/baremetal/power.d.ts +18 -0
  145. package/dist/commands/baremetal/power.js +168 -0
  146. package/dist/commands/baremetal/power.js.map +1 -0
  147. package/dist/commands/baremetal/reinstall.d.ts +21 -0
  148. package/dist/commands/baremetal/reinstall.js +168 -0
  149. package/dist/commands/baremetal/reinstall.js.map +1 -0
  150. package/dist/commands/config/profile/add.d.ts +11 -0
  151. package/dist/commands/config/profile/add.js +51 -0
  152. package/dist/commands/config/profile/add.js.map +1 -0
  153. package/dist/commands/config/profile/list.d.ts +7 -0
  154. package/dist/commands/config/profile/list.js +29 -0
  155. package/dist/commands/config/profile/list.js.map +1 -0
  156. package/dist/commands/config/profile/remove.d.ts +11 -0
  157. package/dist/commands/config/profile/remove.js +35 -0
  158. package/dist/commands/config/profile/remove.js.map +1 -0
  159. package/dist/commands/config/profile/use.d.ts +10 -0
  160. package/dist/commands/config/profile/use.js +44 -0
  161. package/dist/commands/config/profile/use.js.map +1 -0
  162. package/dist/commands/config/show.js +4 -1
  163. package/dist/commands/config/show.js.map +1 -1
  164. package/dist/commands/credits/add.js +2 -2
  165. package/dist/commands/credits/add.js.map +1 -1
  166. package/dist/commands/credits/index.js +5 -1
  167. package/dist/commands/credits/index.js.map +1 -1
  168. package/dist/commands/deploy.d.ts +51 -0
  169. package/dist/commands/deploy.js +515 -0
  170. package/dist/commands/deploy.js.map +1 -0
  171. package/dist/commands/function/create.d.ts +29 -0
  172. package/dist/commands/function/create.js +113 -0
  173. package/dist/commands/function/create.js.map +1 -0
  174. package/dist/commands/function/credits/add.d.ts +29 -0
  175. package/dist/commands/function/credits/add.js +209 -0
  176. package/dist/commands/function/credits/add.js.map +1 -0
  177. package/dist/commands/function/credits/auto-reload.d.ts +27 -0
  178. package/dist/commands/function/credits/auto-reload.js +107 -0
  179. package/dist/commands/function/credits/auto-reload.js.map +1 -0
  180. package/dist/commands/function/credits/index.d.ts +22 -0
  181. package/dist/commands/function/credits/index.js +80 -0
  182. package/dist/commands/function/credits/index.js.map +1 -0
  183. package/dist/commands/function/cron/add.d.ts +19 -0
  184. package/dist/commands/function/cron/add.js +74 -0
  185. package/dist/commands/function/cron/add.js.map +1 -0
  186. package/dist/commands/function/cron/list.d.ts +12 -0
  187. package/dist/commands/function/cron/list.js +55 -0
  188. package/dist/commands/function/cron/list.js.map +1 -0
  189. package/dist/commands/function/cron/rm.d.ts +17 -0
  190. package/dist/commands/function/cron/rm.js +73 -0
  191. package/dist/commands/function/cron/rm.js.map +1 -0
  192. package/dist/commands/function/cron/run.d.ts +16 -0
  193. package/dist/commands/function/cron/run.js +59 -0
  194. package/dist/commands/function/cron/run.js.map +1 -0
  195. package/dist/commands/function/cron/update.d.ts +21 -0
  196. package/dist/commands/function/cron/update.js +87 -0
  197. package/dist/commands/function/cron/update.js.map +1 -0
  198. package/dist/commands/function/delete.d.ts +23 -0
  199. package/dist/commands/function/delete.js +90 -0
  200. package/dist/commands/function/delete.js.map +1 -0
  201. package/dist/commands/function/deploy.d.ts +64 -0
  202. package/dist/commands/function/deploy.js +608 -0
  203. package/dist/commands/function/deploy.js.map +1 -0
  204. package/dist/commands/function/env/list.d.ts +12 -0
  205. package/dist/commands/function/env/list.js +46 -0
  206. package/dist/commands/function/env/list.js.map +1 -0
  207. package/dist/commands/function/env/reveal.d.ts +21 -0
  208. package/dist/commands/function/env/reveal.js +54 -0
  209. package/dist/commands/function/env/reveal.js.map +1 -0
  210. package/dist/commands/function/env/rm.d.ts +17 -0
  211. package/dist/commands/function/env/rm.js +62 -0
  212. package/dist/commands/function/env/rm.js.map +1 -0
  213. package/dist/commands/function/env/set.d.ts +28 -0
  214. package/dist/commands/function/env/set.js +124 -0
  215. package/dist/commands/function/env/set.js.map +1 -0
  216. package/dist/commands/function/index.d.ts +14 -0
  217. package/dist/commands/function/index.js +11 -0
  218. package/dist/commands/function/index.js.map +1 -0
  219. package/dist/commands/function/init.d.ts +47 -0
  220. package/dist/commands/function/init.js +269 -0
  221. package/dist/commands/function/init.js.map +1 -0
  222. package/dist/commands/function/invoke.d.ts +29 -0
  223. package/dist/commands/function/invoke.js +138 -0
  224. package/dist/commands/function/invoke.js.map +1 -0
  225. package/dist/commands/function/link.d.ts +23 -0
  226. package/dist/commands/function/link.js +80 -0
  227. package/dist/commands/function/link.js.map +1 -0
  228. package/dist/commands/function/list.d.ts +16 -0
  229. package/dist/commands/function/list.js +55 -0
  230. package/dist/commands/function/list.js.map +1 -0
  231. package/dist/commands/function/logs.d.ts +29 -0
  232. package/dist/commands/function/logs.js +171 -0
  233. package/dist/commands/function/logs.js.map +1 -0
  234. package/dist/commands/function/pause.d.ts +19 -0
  235. package/dist/commands/function/pause.js +50 -0
  236. package/dist/commands/function/pause.js.map +1 -0
  237. package/dist/commands/function/releases.d.ts +15 -0
  238. package/dist/commands/function/releases.js +62 -0
  239. package/dist/commands/function/releases.js.map +1 -0
  240. package/dist/commands/function/resume.d.ts +16 -0
  241. package/dist/commands/function/resume.js +47 -0
  242. package/dist/commands/function/resume.js.map +1 -0
  243. package/dist/commands/function/rollback.d.ts +18 -0
  244. package/dist/commands/function/rollback.js +69 -0
  245. package/dist/commands/function/rollback.js.map +1 -0
  246. package/dist/commands/function/settings/set.d.ts +23 -0
  247. package/dist/commands/function/settings/set.js +119 -0
  248. package/dist/commands/function/settings/set.js.map +1 -0
  249. package/dist/commands/function/show.d.ts +15 -0
  250. package/dist/commands/function/show.js +80 -0
  251. package/dist/commands/function/show.js.map +1 -0
  252. package/dist/commands/function/unlink.d.ts +9 -0
  253. package/dist/commands/function/unlink.js +34 -0
  254. package/dist/commands/function/unlink.js.map +1 -0
  255. package/dist/commands/link.d.ts +77 -0
  256. package/dist/commands/link.js +530 -0
  257. package/dist/commands/link.js.map +1 -0
  258. package/dist/commands/login.js +9 -0
  259. package/dist/commands/login.js.map +1 -1
  260. package/dist/commands/order.js +3 -1
  261. package/dist/commands/order.js.map +1 -1
  262. package/dist/commands/payments/methods/delete.js +2 -2
  263. package/dist/commands/payments/methods/delete.js.map +1 -1
  264. package/dist/commands/resources.js +50 -7
  265. package/dist/commands/resources.js.map +1 -1
  266. package/dist/commands/status.d.ts +12 -0
  267. package/dist/commands/status.js +71 -0
  268. package/dist/commands/status.js.map +1 -0
  269. package/dist/commands/storage/detach.js +1 -1
  270. package/dist/commands/storage/detach.js.map +1 -1
  271. package/dist/commands/storage/list.js +6 -2
  272. package/dist/commands/storage/list.js.map +1 -1
  273. package/dist/commands/storage/order.d.ts +2 -0
  274. package/dist/commands/storage/order.js +100 -18
  275. package/dist/commands/storage/order.js.map +1 -1
  276. package/dist/commands/storage/resize.js +19 -6
  277. package/dist/commands/storage/resize.js.map +1 -1
  278. package/dist/commands/tickets/create.d.ts +2 -0
  279. package/dist/commands/tickets/create.js +40 -1
  280. package/dist/commands/tickets/create.js.map +1 -1
  281. package/dist/commands/tickets/download.d.ts +18 -0
  282. package/dist/commands/tickets/download.js +138 -0
  283. package/dist/commands/tickets/download.js.map +1 -0
  284. package/dist/commands/tickets/list.js +13 -7
  285. package/dist/commands/tickets/list.js.map +1 -1
  286. package/dist/commands/tickets/reply.d.ts +2 -0
  287. package/dist/commands/tickets/reply.js +33 -4
  288. package/dist/commands/tickets/reply.js.map +1 -1
  289. package/dist/commands/vds/order.js +72 -7
  290. package/dist/commands/vds/order.js.map +1 -1
  291. package/dist/commands/vps/console.js +14 -6
  292. package/dist/commands/vps/console.js.map +1 -1
  293. package/dist/commands/vps/details.js +7 -1
  294. package/dist/commands/vps/details.js.map +1 -1
  295. package/dist/commands/vps/ip/add.js +76 -9
  296. package/dist/commands/vps/ip/add.js.map +1 -1
  297. package/dist/commands/vps/list.js +13 -4
  298. package/dist/commands/vps/list.js.map +1 -1
  299. package/dist/commands/vps/order.d.ts +19 -0
  300. package/dist/commands/vps/order.js +179 -23
  301. package/dist/commands/vps/order.js.map +1 -1
  302. package/dist/commands/vps/power.js +2 -2
  303. package/dist/commands/vps/power.js.map +1 -1
  304. package/dist/commands/vps/reinstall.js +2 -2
  305. package/dist/commands/vps/reinstall.js.map +1 -1
  306. package/dist/commands/vps/resize.js +36 -13
  307. package/dist/commands/vps/resize.js.map +1 -1
  308. package/dist/commands/whoami.d.ts +5 -0
  309. package/dist/commands/whoami.js +8 -3
  310. package/dist/commands/whoami.js.map +1 -1
  311. package/dist/config/paths.d.ts +1 -1
  312. package/dist/config/paths.js +6 -1
  313. package/dist/config/paths.js.map +1 -1
  314. package/dist/config/store.d.ts +58 -0
  315. package/dist/config/store.js +84 -2
  316. package/dist/config/store.js.map +1 -1
  317. package/dist/functions-support/credits.d.ts +64 -0
  318. package/dist/functions-support/credits.js +181 -0
  319. package/dist/functions-support/credits.js.map +1 -0
  320. package/dist/functions-support/cron.d.ts +17 -0
  321. package/dist/functions-support/cron.js +99 -0
  322. package/dist/functions-support/cron.js.map +1 -0
  323. package/dist/functions-support/env.d.ts +23 -0
  324. package/dist/functions-support/env.js +44 -0
  325. package/dist/functions-support/env.js.map +1 -0
  326. package/dist/functions-support/link.d.ts +25 -0
  327. package/dist/functions-support/link.js +51 -0
  328. package/dist/functions-support/link.js.map +1 -0
  329. package/dist/functions-support/poll.d.ts +40 -0
  330. package/dist/functions-support/poll.js +109 -0
  331. package/dist/functions-support/poll.js.map +1 -0
  332. package/dist/functions-support/resolve.d.ts +3 -0
  333. package/dist/functions-support/resolve.js +31 -0
  334. package/dist/functions-support/resolve.js.map +1 -0
  335. package/dist/functions-support/runtime.d.ts +30 -0
  336. package/dist/functions-support/runtime.js +52 -0
  337. package/dist/functions-support/runtime.js.map +1 -0
  338. package/dist/functions-support/source.d.ts +92 -0
  339. package/dist/functions-support/source.js +343 -0
  340. package/dist/functions-support/source.js.map +1 -0
  341. package/dist/help/scope-aware-help.js +10 -1
  342. package/dist/help/scope-aware-help.js.map +1 -1
  343. package/dist/tui/App.js +10 -25
  344. package/dist/tui/App.js.map +1 -1
  345. package/dist/tui/components/Menu.d.ts +3 -1
  346. package/dist/tui/components/Menu.js +7 -3
  347. package/dist/tui/components/Menu.js.map +1 -1
  348. package/dist/tui/router.d.ts +1 -1
  349. package/dist/tui/router.js.map +1 -1
  350. package/dist/tui/screens/Billing.js +56 -4
  351. package/dist/tui/screens/Billing.js.map +1 -1
  352. package/dist/tui/screens/Dashboard.js +8 -7
  353. package/dist/tui/screens/Dashboard.js.map +1 -1
  354. package/dist/tui/screens/Deploy.d.ts +2 -0
  355. package/dist/tui/screens/Deploy.js +912 -0
  356. package/dist/tui/screens/Deploy.js.map +1 -0
  357. package/dist/tui/screens/Order.js +359 -26
  358. package/dist/tui/screens/Order.js.map +1 -1
  359. package/dist/tui/screens/Resources.js +273 -31
  360. package/dist/tui/screens/Resources.js.map +1 -1
  361. package/dist/tui/screens/Tickets.js +18 -6
  362. package/dist/tui/screens/Tickets.js.map +1 -1
  363. package/dist/tui/screens/deployPreset.d.ts +20 -0
  364. package/dist/tui/screens/deployPreset.js +11 -0
  365. package/dist/tui/screens/deployPreset.js.map +1 -0
  366. package/dist/tui/screens/resources/AppDetail.d.ts +7 -0
  367. package/dist/tui/screens/resources/AppDetail.js +810 -0
  368. package/dist/tui/screens/resources/AppDetail.js.map +1 -0
  369. package/dist/tui/screens/resources/FunctionDetail.d.ts +7 -0
  370. package/dist/tui/screens/resources/FunctionDetail.js +751 -0
  371. package/dist/tui/screens/resources/FunctionDetail.js.map +1 -0
  372. package/dist/ui/attach.d.ts +15 -0
  373. package/dist/ui/attach.js +63 -0
  374. package/dist/ui/attach.js.map +1 -0
  375. package/dist/ui/baremetal-resolve.d.ts +10 -0
  376. package/dist/ui/baremetal-resolve.js +50 -0
  377. package/dist/ui/baremetal-resolve.js.map +1 -0
  378. package/dist/ui/confirm.js +1 -1
  379. package/dist/ui/confirm.js.map +1 -1
  380. package/dist/ui/cycle.d.ts +66 -0
  381. package/dist/ui/cycle.js +96 -0
  382. package/dist/ui/cycle.js.map +1 -0
  383. package/dist/ui/deploy-ui.d.ts +75 -0
  384. package/dist/ui/deploy-ui.js +243 -0
  385. package/dist/ui/deploy-ui.js.map +1 -0
  386. package/dist/ui/order-result.d.ts +4 -0
  387. package/dist/ui/order-result.js +32 -0
  388. package/dist/ui/order-result.js.map +1 -0
  389. package/dist/ui/payment-gate.d.ts +26 -0
  390. package/dist/ui/payment-gate.js +70 -0
  391. package/dist/ui/payment-gate.js.map +1 -0
  392. package/dist/ui/payment.js +10 -3
  393. package/dist/ui/payment.js.map +1 -1
  394. package/dist/ui/portal.d.ts +1 -1
  395. package/dist/ui/portal.js +7 -2
  396. package/dist/ui/portal.js.map +1 -1
  397. package/dist/ui/project-resolve.d.ts +25 -0
  398. package/dist/ui/project-resolve.js +31 -0
  399. package/dist/ui/project-resolve.js.map +1 -0
  400. package/dist/ui/render-mode.d.ts +5 -0
  401. package/dist/ui/render-mode.js +1 -1
  402. package/dist/ui/render-mode.js.map +1 -1
  403. package/dist/ui/resource-detail.js +0 -3
  404. package/dist/ui/resource-detail.js.map +1 -1
  405. package/dist/ui/resource-resolve.d.ts +9 -2
  406. package/dist/ui/resource-resolve.js +11 -4
  407. package/dist/ui/resource-resolve.js.map +1 -1
  408. package/dist/ui/spinner.d.ts +10 -1
  409. package/dist/ui/spinner.js +12 -3
  410. package/dist/ui/spinner.js.map +1 -1
  411. package/dist/ui/table.d.ts +7 -0
  412. package/dist/ui/table.js +11 -0
  413. package/dist/ui/table.js.map +1 -1
  414. package/dist/ui/tax.d.ts +10 -0
  415. package/dist/ui/tax.js +31 -0
  416. package/dist/ui/tax.js.map +1 -0
  417. package/dist/ui/ticket-resolve.d.ts +9 -1
  418. package/dist/ui/ticket-resolve.js +13 -2
  419. package/dist/ui/ticket-resolve.js.map +1 -1
  420. package/dist/ui/volume-resolve.js +4 -1
  421. package/dist/ui/volume-resolve.js.map +1 -1
  422. package/dist/ui/wait.d.ts +4 -0
  423. package/dist/ui/wait.js +7 -2
  424. package/dist/ui/wait.js.map +1 -1
  425. package/dist/ui/wizard.d.ts +2 -1
  426. package/dist/ui/wizard.js +1 -1
  427. package/dist/ui/wizard.js.map +1 -1
  428. package/dist/version-check-bin.js +2 -2
  429. package/dist/version-check-bin.js.map +1 -1
  430. package/dist/version-check.d.ts +5 -0
  431. package/dist/version-check.js +6 -1
  432. package/dist/version-check.js.map +1 -1
  433. package/package.json +53 -6
@@ -0,0 +1,530 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { BaseCommand } from "../base/command.js";
3
+ import { makeClients } from "../api/factory.js";
4
+ import { pageThrough } from "../api/client.js";
5
+ import { resolveApp } from "../apps-support/resolve.js";
6
+ import { originGithubRepo } from "../apps-support/git.js";
7
+ import { isInteractive, pickFromCatalog, promptString, confirmAction, panel, } from "../ui/wizard.js";
8
+ import { withSpinner } from "../ui/spinner.js";
9
+ import { buildProgress } from "../ui/deploy-ui.js";
10
+ import { pollBuild, buildDetail } from "../apps-support/deploy.js";
11
+ import { ok, dim, bold } from "../ui/glyphs.js";
12
+ import { importDotenv } from "../apps-support/dotenv.js";
13
+ import { ApiError, AuthExpiredError } from "../api/errors.js";
14
+ import { ensurePaymentMethod } from "../ui/payment-gate.js";
15
+ import { orderPaidApp, pickablePlans } from "../apps-support/paid-app.js";
16
+ import { planCapReason, planLine, toLocationOptions } from "../apps-support/plans.js";
17
+ // Re-exported for the commands and tests that always imported them from here.
18
+ export { planCapReason, planLine };
19
+ /** App slugs: 1..63 chars, lowercase alnum + hyphens, no edge hyphens. */
20
+ const SLUG_RE = /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/;
21
+ /** Env var keys: POSIX-style names. */
22
+ const ENV_KEY_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
23
+ /** Sentinel picker value for the "create a new app" row. */
24
+ const CREATE = "__create__";
25
+ /** Slugify a free-form name into a domain slug candidate, matching the web
26
+ * onboarding's slugify (lowercase, non-alnum → hyphen, trim edges). */
27
+ export function slugify(name) {
28
+ return name
29
+ .toLowerCase()
30
+ .replace(/[^a-z0-9]+/g, "-")
31
+ .replace(/^-+|-+$/g, "")
32
+ .slice(0, 63);
33
+ }
34
+ /** Resolve a location code (dfw) to the region string POST /apps takes; a
35
+ * lone placeable location is taken when none is asked for. */
36
+ export async function resolveAppRegion(clients, code, pick) {
37
+ let raw;
38
+ try {
39
+ raw = await withSpinner("Loading locations", () => clients.api.apps.locations());
40
+ }
41
+ catch (e) {
42
+ // A logged-out (or otherwise unauthorized) caller must fail exactly like
43
+ // every other command — "Not signed in. Run `synteq login`." — not the
44
+ // generic "No locations are available" a genuinely empty catalog gets.
45
+ // AuthExpiredError is what the client throws for a rejected API token or
46
+ // a failed session refresh; it is not an ApiError subclass.
47
+ if (e instanceof AuthExpiredError)
48
+ throw e;
49
+ if (e instanceof ApiError && (e.status === 401 || e.status === 403))
50
+ throw e;
51
+ raw = [];
52
+ }
53
+ const locations = toLocationOptions(raw);
54
+ if (locations.length === 0) {
55
+ throw new Error("No locations are available for new apps right now. Try again later.");
56
+ }
57
+ if (code) {
58
+ const hit = locations.find((l) => l.code.toLowerCase() === code.toLowerCase());
59
+ if (!hit) {
60
+ throw new Error(`Unknown location "${code}". Available: ${locations.map((l) => l.code).join(", ")}.`);
61
+ }
62
+ return hit.region;
63
+ }
64
+ if (locations.length === 1)
65
+ return locations[0].region;
66
+ return pick(locations);
67
+ }
68
+ /** Create an app with every input already decided — the scripted path that
69
+ * `synteq deploy --create` uses and the walkthrough ends on. Gates on a
70
+ * saved payment method first (every tier, free included) and refuses a tier
71
+ * the team is already at its cap on, so the create never 4xxs on either. */
72
+ export async function createApp(clients, input, opts) {
73
+ const plans = await clients.api.apps.plans().catch(() => []);
74
+ const plan = plans.find((p) => p.name === input.planTier);
75
+ const capped = plan ? planCapReason(plan) : undefined;
76
+ if (capped) {
77
+ throw new Error(`The ${plan.displayName ?? plan.name} plan is at its limit for this team ` +
78
+ `(${plan.teamAppsOnTier}/${plan.maxAppsPerTeam}). Pick another plan with --plan.`);
79
+ }
80
+ // A paid tier is an ORDER: quote, pick a card, confirm, charge the first
81
+ // month, then the app is provisioned off the settled order — the web's
82
+ // pay modal, in the terminal. Only a free tier is a bare create.
83
+ if (plan && !plan.isFree && plan.name !== "free") {
84
+ return orderPaidApp(clients, { slug: input.slug, plan, region: input.region, projectId: input.projectId }, opts);
85
+ }
86
+ await ensurePaymentMethod({
87
+ api: clients.api,
88
+ apiBaseUrl: clients.config.get().api_base_url,
89
+ interactive: opts.interactive,
90
+ log: opts.log,
91
+ action: `create a ${bold("free")} app`,
92
+ });
93
+ return withSpinner(`Creating ${input.slug}`, () => clients.api.apps.create({ slug: input.slug, planTier: input.planTier, region: input.region }, input.projectId));
94
+ }
95
+ /**
96
+ * `synteq link` — associate the current directory with an app (the
97
+ * Vercel/Railway "link" model). First-time setup is a walkthrough:
98
+ * pick a team + project, pick or create an app, optionally seed env
99
+ * vars and connect a GitHub repo. The result is saved to the CLI
100
+ * config keyed by this directory, so from then on a bare
101
+ * `synteq deploy` / `synteq app logs` / `synteq app env list` targets the
102
+ * right app with no flags.
103
+ */
104
+ export default class Link extends BaseCommand {
105
+ static apiKeyScope = "none";
106
+ static description = [
107
+ "Link the current directory to an app so bare `synteq deploy` just works.",
108
+ "",
109
+ "Interactive walkthrough: pick a team and project, pick an existing app or",
110
+ "create one, then optionally set env vars and connect a GitHub repo for",
111
+ "push-to-deploy. The link is saved in the CLI config keyed by this",
112
+ "directory (subdirectories inherit it). Re-run to point at a different app.",
113
+ ].join("\n");
114
+ static examples = [
115
+ "<%= config.bin %> link # interactive walkthrough",
116
+ "<%= config.bin %> link --app my-api # scripted: link straight to an existing app",
117
+ "<%= config.bin %> link --app my-api --project 01931234-... -o json",
118
+ "<%= config.bin %> link --remove # forget this directory's link",
119
+ ];
120
+ static flags = {
121
+ app: Flags.string({
122
+ description: "App slug (or uuid) to link to — skips the walkthrough entirely.",
123
+ }),
124
+ project: Flags.string({
125
+ description: "Project id to scope an --app slug lookup (also pre-answers the project step).",
126
+ }),
127
+ remove: Flags.boolean({
128
+ description: "Remove the current directory's link instead of creating one.",
129
+ }),
130
+ "no-interactive": Flags.boolean({
131
+ description: "Never prompt; requires --app (errors when it's missing).",
132
+ }),
133
+ };
134
+ /** What GET /apps/by-repo said about this directory's git origin: the
135
+ * apps that deploy from it (any team), or `null` when the route is not
136
+ * there (an older portal 404s) and the project list has to be scanned
137
+ * instead. Filled by matchByOrigin, read by pickOrCreateApp. */
138
+ originMatches = null;
139
+ async run() {
140
+ await this.initClients();
141
+ // Against the running class: `app link` subclasses this with a positional.
142
+ const { flags } = await this.parse(this.ctor);
143
+ const cwd = process.cwd();
144
+ try {
145
+ if (flags.remove) {
146
+ const removed = this.clients.config.removeLink(cwd);
147
+ this.emit({ directory: cwd, removed }, () => {
148
+ this.log(removed ? ok(`Unlinked ${cwd}.`) : `No link stored for ${cwd}.`);
149
+ });
150
+ return;
151
+ }
152
+ const wantInteractive = isInteractive() &&
153
+ this.outputFormat === "table" &&
154
+ !flags["no-interactive"] &&
155
+ !flags.app;
156
+ let app;
157
+ if (wantInteractive) {
158
+ app = await this.walkthrough(flags);
159
+ }
160
+ else {
161
+ if (!flags.app) {
162
+ this.error("Provide --app <slug|uuid> (or run on a TTY for the interactive walkthrough).", { exit: 1 });
163
+ }
164
+ // A bad slug is a plain Error (→ exit 1 via the outer this.fail); a
165
+ // NetworkError / AuthExpiredError keeps its 3 / 2 instead of being
166
+ // flattened by a `"status" in e` test.
167
+ app = await resolveApp(this.clients.api, flags.app, flags.project);
168
+ }
169
+ const link = {
170
+ team_id: app.teamId,
171
+ project_id: app.projectId,
172
+ app_id: app.id,
173
+ app_slug: app.slug,
174
+ linked_at: new Date().toISOString(),
175
+ };
176
+ this.clients.config.setLink(cwd, link);
177
+ this.emit({ directory: cwd, ...link }, () => {
178
+ this.log("");
179
+ this.log(panel("Linked", [
180
+ ["Directory", cwd],
181
+ ["App", `${app.slug} ${dim(app.id)}`],
182
+ ["Hostname", app.hostname],
183
+ ["Project", link.project_id],
184
+ ["Team", link.team_id],
185
+ ]));
186
+ this.log("");
187
+ this.log(ok("This directory now deploys with a bare `synteq deploy`."));
188
+ this.log(dim(" synteq deploy --image <ref> # roll out a pre-built image"));
189
+ this.log(dim(" synteq deploy --dir <path> # build from a local directory"));
190
+ this.log(dim(" synteq status # linked app + last deploy"));
191
+ });
192
+ }
193
+ catch (err) {
194
+ this.fail(err);
195
+ }
196
+ }
197
+ /** Full first-time setup: team → project → app. Picking an existing app
198
+ * ends there — it is linked, nothing else is asked. Only a NEW app goes
199
+ * on to env vars and GitHub, as part of setting it up. */
200
+ async walkthrough(flags) {
201
+ // The directory's git origin names the app when one deploys from that
202
+ // repo — in ANY of the user's orgs and projects. Offer it before the
203
+ // team → project → app walk; a wrong guess still falls through to it.
204
+ const matched = await this.matchByOrigin(flags);
205
+ if (matched)
206
+ return matched;
207
+ const teamId = await this.pickTeam(flags);
208
+ const projectId = flags.project ?? (await this.pickProject());
209
+ const { app, created } = await this.pickOrCreateApp(projectId);
210
+ if (created) {
211
+ await this.offerEnvVars(app);
212
+ await this.offerGithub(app);
213
+ }
214
+ return app;
215
+ }
216
+ /** Step 0 — the app whose GitHub link is this directory's origin, across
217
+ * every team the user is in. One match asks yes/no; several ask which;
218
+ * none (or a "no") returns null and the full walkthrough runs. */
219
+ async matchByOrigin(flags) {
220
+ const origin = await originGithubRepo(process.cwd());
221
+ if (!origin)
222
+ return null;
223
+ const matches = await withSpinner("Matching git origin", () => this.clients.api.apps.findByRepo(origin)).catch((e) => {
224
+ // A 404 is a portal without the route: pickOrCreateApp falls back to
225
+ // scanning the project's apps. Anything else is "no match" as before.
226
+ this.originMatches = e instanceof ApiError && e.status === 404 ? null : [];
227
+ return [];
228
+ });
229
+ if (this.originMatches !== null)
230
+ this.originMatches = matches;
231
+ if (matches.length === 0)
232
+ return null;
233
+ let app = null;
234
+ if (matches.length === 1) {
235
+ const m = matches[0];
236
+ const where = `${m.teamName} / ${m.projectName}`;
237
+ if (await confirmAction(`Link to ${m.slug} in ${where}? (git origin is ${origin})`, true)) {
238
+ app = m;
239
+ }
240
+ }
241
+ else {
242
+ const NONE = "__none__";
243
+ const choice = await pickFromCatalog(`Several apps deploy from ${origin} — which one?`, [
244
+ ...matches.map((m) => ({
245
+ value: m.id,
246
+ name: m.slug,
247
+ description: `${m.teamName} / ${m.projectName} · ${m.status} · ${m.region}`,
248
+ })),
249
+ { value: NONE, name: "None of these", description: "Pick a team and project instead." },
250
+ ]);
251
+ app = matches.find((m) => m.id === choice) ?? null;
252
+ }
253
+ if (!app)
254
+ return null;
255
+ // Rescope the client to the matched team so the link's later calls land
256
+ // on the right org, exactly as pickTeam does.
257
+ this.clients = makeClients(app.teamId, { insecure: flags.insecure });
258
+ return app;
259
+ }
260
+ /** Step 1 — team. Auto-selects when there's only one; --team pre-answers. */
261
+ async pickTeam(flags) {
262
+ if (flags.team)
263
+ return flags.team;
264
+ const teams = await withSpinner("Loading teams", () => this.clients.api.auth.teams());
265
+ if (teams.length === 0) {
266
+ this.error("No teams on this account — sign in to the portal to create one.", { exit: 1 });
267
+ }
268
+ let teamId;
269
+ if (teams.length === 1) {
270
+ teamId = teams[0].id;
271
+ this.log(dim(`Team: ${teams[0].name}`));
272
+ }
273
+ else {
274
+ teamId = await pickFromCatalog("Which team?", teams.map((t) => ({
275
+ value: t.id,
276
+ name: t.name,
277
+ description: [t.is_default ? "default" : "", t.my_role ?? ""].filter(Boolean).join(" · ") || undefined,
278
+ })), { defaultValue: teams.find((t) => t.is_default)?.id });
279
+ }
280
+ // Rescope the API client so the project/app lookups hit the picked team.
281
+ this.clients = makeClients(teamId, { insecure: flags.insecure });
282
+ return teamId;
283
+ }
284
+ /** Step 2 — project within the team. Auto-selects a lone project. */
285
+ async pickProject() {
286
+ const projects = await withSpinner("Loading projects", () => this.clients.api.projects.list());
287
+ if (projects.length === 0) {
288
+ this.error("This team has no projects — create one in the portal first.", { exit: 1 });
289
+ }
290
+ if (projects.length === 1) {
291
+ this.log(dim(`Project: ${projects[0].name}`));
292
+ return projects[0].id;
293
+ }
294
+ return pickFromCatalog("Which project?", projects.map((p) => ({
295
+ value: p.id,
296
+ name: p.name,
297
+ description: p.is_default ? "default" : p.description ?? undefined,
298
+ })), { defaultValue: projects.find((p) => p.is_default)?.id });
299
+ }
300
+ /** Step 3 — pick an existing app in the project, or create a new one. */
301
+ async pickOrCreateApp(projectId) {
302
+ const apps = await withSpinner("Loading apps", () => this.clients.api.apps.list(projectId));
303
+ // The directory's git origin already names the app when one deploys from
304
+ // that repo: offer it outright instead of a list the user has to scan.
305
+ // GET /apps/by-repo (asked once in matchByOrigin) is the lookup — the
306
+ // list is one page of 200 (portal #419), so a scan of it misses the
307
+ // 201st app. Only a portal without the route (404) walks every page.
308
+ const origin = await originGithubRepo(process.cwd());
309
+ let matched = [];
310
+ if (origin && this.originMatches !== null) {
311
+ matched = this.originMatches.filter((a) => a.projectId === projectId);
312
+ }
313
+ else if (origin) {
314
+ const all = await withSpinner("Matching git origin", () => pageThrough((page) => this.clients.api.apps.listPage(projectId, { page })));
315
+ matched = all.filter((a) => a.githubRepoFullName?.toLowerCase() === origin.toLowerCase());
316
+ }
317
+ if (matched.length === 1) {
318
+ const m = matched[0];
319
+ if (await confirmAction(`Link to ${m.slug}? (this directory's git origin is ${origin})`, true)) {
320
+ return { app: m, created: false };
321
+ }
322
+ }
323
+ let choice = CREATE;
324
+ if (apps.length > 0) {
325
+ const matchedIds = new Set(matched.map((a) => a.id));
326
+ const ordered = [...apps].sort((a, b) => Number(matchedIds.has(b.id)) - Number(matchedIds.has(a.id)));
327
+ const items = [
328
+ ...ordered.map((a) => ({
329
+ value: a.id,
330
+ name: a.slug,
331
+ description: `${a.status} · ${a.planTier} · ${a.region}${matchedIds.has(a.id) ? ` · deploys from ${origin}` : ""}`,
332
+ })),
333
+ { value: CREATE, name: "Create a new app…", description: "Name a slug; plan/region use the defaults." },
334
+ ];
335
+ choice = await pickFromCatalog("Which app should this directory deploy?", items);
336
+ }
337
+ if (choice !== CREATE) {
338
+ return { app: apps.find((a) => a.id === choice), created: false };
339
+ }
340
+ return { app: await this.createAppInteractively(projectId), created: true };
341
+ }
342
+ /** The web /apps onboarding, in the terminal: name → domain slug → plan
343
+ * (free by default) → location. Mirrors NewAppSlideOver's four inputs so a
344
+ * CLI-created app is indistinguishable from a web-created one. */
345
+ async createAppInteractively(projectId) {
346
+ // 1. Name — free-form, human-facing. The domain slug shadows it.
347
+ const name = await promptString("App name", {
348
+ validate: (s) => (s.trim().length >= 1 ? true : "Give it a name."),
349
+ });
350
+ // 2. Domain slug — what "<slug>.synteq.app" is built from; unique per
351
+ // project. Defaults to a slugified name; the user can override.
352
+ const suggested = slugify(name);
353
+ // Checked on Enter: a taken name used to surface only after the plan
354
+ // pick, as "Can't order Hobby: slug: An app with this name already
355
+ // exists." (Ben, 2026-10-06).
356
+ const slug = await promptString("Domain slug", {
357
+ default: suggested,
358
+ validate: async (s) => {
359
+ if (!SLUG_RE.test(s.trim()))
360
+ return "1..63 chars: a-z, 0-9 and hyphens, no leading/trailing hyphen.";
361
+ try {
362
+ const check = await this.clients.api.apps.checkName(s.trim());
363
+ return check.available ? true : check.reason || "This name is unavailable.";
364
+ }
365
+ catch {
366
+ return true; // the create's own 4xx still names a clash
367
+ }
368
+ },
369
+ });
370
+ // 3. Plan — free by default (matches the web's free-tier onboarding).
371
+ let planTier = "free";
372
+ try {
373
+ const plans = await this.clients.api.apps.plans();
374
+ if (plans.length > 0) {
375
+ // A tier this team is at its cap on is not offered at all.
376
+ const open = pickablePlans(plans);
377
+ if (open.length === 0) {
378
+ this.error("Every plan is at its app limit for this team. Delete an app, or raise the limit in the portal, then try again.", { exit: 1 });
379
+ }
380
+ const items = open.map((p) => ({
381
+ value: p.name,
382
+ name: p.displayName ?? p.name,
383
+ description: planLine(p),
384
+ }));
385
+ const hasFree = items.some((i) => i.value === "free");
386
+ planTier = await pickFromCatalog("Plan", items, hasFree ? { defaultValue: "free" } : {});
387
+ }
388
+ }
389
+ catch {
390
+ this.log(dim("Couldn't load plans; using the free tier."));
391
+ }
392
+ // 4. Location — only what this environment can actually place on. A
393
+ // lone location is taken without asking; none is a hard stop (the
394
+ // create would 4xx anyway), never a stale hardcoded list.
395
+ const region = await resolveAppRegion(this.clients, undefined, async (locations) => {
396
+ return pickFromCatalog("Primary location", locations.map((l) => ({ value: l.region, name: l.city, description: l.code })));
397
+ }).catch((e) => {
398
+ // An ApiError/AuthExpiredError (a logged-out caller, most notably)
399
+ // must flow to the outer catch's this.fail(err) unchanged, so it gets
400
+ // the standard exit code (2 for auth) and JSON envelope
401
+ // (status/request_id) every other command's failures get — never
402
+ // flattened into a bare exit-1 this.error(). Only the genuine
403
+ // "no locations" / "unknown location" plain Error takes that path.
404
+ if (e instanceof ApiError || e instanceof AuthExpiredError)
405
+ throw e;
406
+ this.error(e.message, { exit: 1 });
407
+ });
408
+ // 5. Create — behind the payment-method gate (the walkthrough's "setup
409
+ // takes a card" step) and the per-team cap check.
410
+ const app = await createApp(this.clients, { slug: slug.trim(), planTier, region, projectId }, { interactive: true, log: (l) => this.log(l) }).catch((e) => this.error(e.message, { exit: 1 }));
411
+ this.log(ok(`Created ${app.slug} → ${app.hostname} (${app.planTier} · ${app.region})`));
412
+ return app;
413
+ }
414
+ /** Step 4 (optional) — seed initial env vars. Values are write-only. */
415
+ async offerEnvVars(app) {
416
+ // A .env in this directory first: it is what a person who keeps config
417
+ // in a file would otherwise retype here, one var at a time.
418
+ let imported = 0;
419
+ try {
420
+ imported = await importDotenv({
421
+ dir: process.cwd(),
422
+ interactive: true,
423
+ target: `app ${app.slug}`,
424
+ log: (l) => this.log(l),
425
+ save: (r) => this.clients.api.apps
426
+ .setEnv(app.id, {
427
+ key: r.key,
428
+ value: r.value,
429
+ scope: r.scope ?? "runtime",
430
+ kind: r.kind ?? "secret",
431
+ ...(r.note ? { note: r.note } : {}),
432
+ rollout: false,
433
+ })
434
+ .then(() => undefined),
435
+ });
436
+ }
437
+ catch (e) {
438
+ if (e instanceof ApiError || e instanceof AuthExpiredError)
439
+ throw e;
440
+ this.log(`Could not import .env: ${e.message}`);
441
+ }
442
+ if (!(await confirmAction(imported ? "Add more variables?" : "Set environment variables now?")))
443
+ return;
444
+ this.log(dim("Values are encrypted at rest and never shown again (write-only)."));
445
+ for (;;) {
446
+ const key = await promptString("Variable name (blank to finish)", {
447
+ allowEmpty: true,
448
+ validate: (s) => ENV_KEY_RE.test(s.trim()) ? true : "Letters, digits and underscores; can't start with a digit.",
449
+ });
450
+ if (!key.trim())
451
+ break;
452
+ const value = await promptString(`Value for ${key.trim()}`, { allowEmpty: true });
453
+ try {
454
+ const saved = await withSpinner(`Saving ${key.trim()}`, () => this.clients.api.apps.setEnv(app.id, { key: key.trim(), value }));
455
+ this.log(ok(`Set ${saved.key} (${saved.scope}).`));
456
+ }
457
+ catch (e) {
458
+ // Don't fail the whole walkthrough over one var — report and move on.
459
+ this.log(`Could not set ${key.trim()}: ${e.message}`);
460
+ }
461
+ }
462
+ }
463
+ /** Step 5 (optional) — connect a GitHub repo for push-to-deploy. */
464
+ async offerGithub(app) {
465
+ if (!(await confirmAction("Connect a GitHub repo for push-to-deploy?")))
466
+ return;
467
+ this.log(dim("Install the Synteq GitHub App on the repo first, then paste the installation id."));
468
+ this.log(dim("Find installations at https://github.com/settings/installations —"));
469
+ this.log(dim("the installation id is the number at the end of the installation's URL."));
470
+ const installationId = await promptString("GitHub App installation id (blank to skip)", {
471
+ allowEmpty: true,
472
+ });
473
+ if (!installationId.trim()) {
474
+ this.log(dim("Skipped. Connect later with the portal or `synteq link`."));
475
+ return;
476
+ }
477
+ const repo = await promptString("Repository (owner/repo)", {
478
+ validate: (s) => (/^[^/\s]+\/[^/\s]+$/.test(s.trim()) ? true : "Use the owner/repo form."),
479
+ });
480
+ const branch = await promptString("Branch to deploy from", { default: "main" });
481
+ try {
482
+ const gl = await withSpinner("Linking repo", () => this.clients.api.apps.linkGithub(app.id, {
483
+ installationId: installationId.trim(),
484
+ repoFullName: repo.trim(),
485
+ branch: branch.trim() || "main",
486
+ }));
487
+ this.log(ok(`Connected ${gl.repoFullName} (${gl.branch}) — pushes now trigger builds.`));
488
+ if (gl.deploy) {
489
+ // A new app builds the branch head on link (same as the portal's
490
+ // Connect GitHub). Offer the deploy command's wait rather than
491
+ // leaving the build to be discovered on the Deployments tab.
492
+ const sha = (gl.deploy.commitSha ?? "").slice(0, 7) || gl.branch;
493
+ this.log(`Building ${sha} from ${gl.branch}…`);
494
+ if (await confirmAction("Wait for the build?", true))
495
+ await this.waitForLinkBuild(app, gl.deploy.buildId);
496
+ else
497
+ this.log(dim(` Follow it with: synteq app deployment list ${app.slug}`));
498
+ }
499
+ else if (gl.deploySkipped) {
500
+ this.log(dim(` ${gl.deploySkipped}`));
501
+ }
502
+ }
503
+ catch (e) {
504
+ this.log(`Could not link the repo: ${e.message}. You can retry later.`);
505
+ }
506
+ }
507
+ /** The deploy command's build wait, for the build a fresh link started. */
508
+ async waitForLinkBuild(app, buildId) {
509
+ const builds = await this.clients.api.apps.builds(app.id).catch(() => []);
510
+ const build = builds.find((b) => b.id === buildId);
511
+ if (!build) {
512
+ this.log(dim(` Follow it with: synteq app deployment list ${app.slug}`));
513
+ return;
514
+ }
515
+ const progress = buildProgress(`Building ${app.slug}`);
516
+ const final = await pollBuild(this.clients.api, app.id, build, {
517
+ intervalMs: 3000,
518
+ timeoutMs: 15 * 60 * 1000,
519
+ onStatus: (status, b) => progress.update(status, buildDetail(b)),
520
+ });
521
+ if (final.status === "succeeded")
522
+ progress.done("succeeded");
523
+ else if (final.status === "failed")
524
+ progress.failed(final.failureReason ?? undefined);
525
+ else
526
+ progress.failed(`Build still ${final.status}`);
527
+ this.log(dim(` Releases roll out on their own; see: synteq app deployment list ${app.slug}`));
528
+ }
529
+ }
530
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,EACb,KAAK,GAEN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAuB,MAAM,0BAA0B,CAAC;AAE3G,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAEnC,0EAA0E;AAC1E,MAAM,OAAO,GAAG,sCAAsC,CAAC;AACvD,uCAAuC;AACvC,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAC9C,4DAA4D;AAC5D,MAAM,MAAM,GAAG,YAAY,CAAC;AAE5B;wEACwE;AACxE,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;+DAC+D;AAC/D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgB,EAChB,IAAwB,EACxB,IAAsD;IAEtD,IAAI,GAAkB,CAAC;IACvB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,WAAW,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,yEAAyE;QACzE,4DAA4D;QAC5D,IAAI,CAAC,YAAY,gBAAgB;YAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC;YAAE,MAAM,CAAC,CAAC;QAC7E,GAAG,GAAG,EAAE,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,iBAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED;;;6EAG6E;AAC7E,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAgB,EAChB,KAA6E,EAC7E,IAMC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAe,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,OAAO,IAAK,CAAC,WAAW,IAAI,IAAK,CAAC,IAAI,sCAAsC;YAC1E,IAAI,IAAK,CAAC,cAAc,IAAI,IAAK,CAAC,cAAc,mCAAmC,CACtF,CAAC;IACJ,CAAC;IACD,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjD,OAAO,YAAY,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,mBAAmB,CAAC;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY;QAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM;KACvC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,YAAY,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CACrB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EACpE,KAAK,CAAC,SAAS,CAChB,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,WAAW,GAAG;QACnB,0EAA0E;QAC1E,EAAE;QACF,2EAA2E;QAC3E,wEAAwE;QACxE,mEAAmE;QACnE,4EAA4E;KAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,uEAAuE;QACvE,0FAA0F;QAC1F,oEAAoE;QACpE,4EAA4E;KAC7E,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,iEAAiE;SAC/E,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,+EAA+E;SAC7F,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,WAAW,EAAE,8DAA8D;SAC5E,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,0DAA0D;SACxE,CAAC;KACH,CAAC;IAEF;;;qEAGiE;IACzD,aAAa,GAAuB,IAAI,CAAC;IAEjD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,2EAA2E;QAC3E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAmB,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;oBAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC;gBAC5E,CAAC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,eAAe,GACnB,aAAa,EAAE;gBACf,IAAI,CAAC,YAAY,KAAK,OAAO;gBAC7B,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACxB,CAAC,KAAK,CAAC,GAAG,CAAC;YAEb,IAAI,GAAQ,CAAC;YACb,IAAI,eAAe,EAAE,CAAC;gBACpB,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACf,IAAI,CAAC,KAAK,CACR,8EAA8E,EAC9E,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;gBACJ,CAAC;gBACD,oEAAoE;gBACpE,mEAAmE;gBACnE,uCAAuC;gBACvC,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,IAAI,GAAY;gBACpB,OAAO,EAAE,GAAG,CAAC,MAAM;gBACnB,UAAU,EAAE,GAAG,CAAC,SAAS;gBACzB,MAAM,EAAE,GAAG,CAAC,EAAE;gBACd,QAAQ,EAAE,GAAG,CAAC,IAAI;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE;gBAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,QAAQ,EAAE;oBACd,CAAC,WAAW,EAAE,GAAG,CAAC;oBAClB,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrC,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC;oBAC1B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;oBAC5B,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;iBACvB,CAAC,CACH,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,yDAAyD,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC,CAAC;gBAC3F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;+DAE2D;IACnD,KAAK,CAAC,WAAW,CAAC,KAIzB;QACC,sEAAsE;QACtE,qEAAqE;QACrE,sEAAsE;QACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;uEAEmE;IAC3D,KAAK,CAAC,aAAa,CAAC,KAA6B;QACvD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CACzC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACrB,qEAAqE;YACrE,sEAAsE;YACtE,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAiB,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;YAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,GAAG,GAAqB,IAAI,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,OAAO,KAAK,oBAAoB,MAAM,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1F,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,UAAU,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,4BAA4B,MAAM,eAAe,EAAE;gBACtF,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrB,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,EAAE;iBAC5E,CAAC,CAAC;gBACH,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,kCAAkC,EAAE;aACxF,CAAC,CAAC;YACH,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,wEAAwE;QACxE,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;IAED,6EAA6E;IACrE,KAAK,CAAC,QAAQ,CAAC,KAA4C;QACjE,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,iEAAiE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,MAAc,CAAC;QACnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,eAAe,CAC5B,aAAa,EACb,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE;gBACX,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS;aACvG,CAAC,CAAC,EACH,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CACtD,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qEAAqE;IAC7D,KAAK,CAAC,WAAW;QACvB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,6DAA6D,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,eAAe,CACpB,gBAAgB,EAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnB,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS;SACnE,CAAC,CAAC,EACH,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CACzD,CAAC;IACJ,CAAC;IAED,yEAAyE;IACjE,KAAK,CAAC,eAAe,CAAC,SAAiB;QAC7C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5F,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,oEAAoE;QACpE,qEAAqE;QACrE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE,CACxD,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC3E,CAAC;YACF,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,qCAAqC,MAAM,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAI,MAAM,GAAW,MAAM,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,KAAK,GAA8B;gBACvC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrB,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;iBACnH,CAAC,CAAC;gBACH,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,4CAA4C,EAAE;aACxG,CAAC;YACF,MAAM,GAAG,MAAM,eAAe,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IAED;;uEAEmE;IAC3D,KAAK,CAAC,sBAAsB,CAAC,SAA6B;QAChE,iEAAiE;QACjE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE;YAC1C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;SACnE,CAAC,CAAC;QACH,sEAAsE;QACtE,mEAAmE;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,wEAAwE;QACxE,sEAAsE;QACtE,iCAAiC;QACjC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE;YAC7C,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAAE,OAAO,gEAAgE,CAAC;gBACrG,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9D,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,2BAA2B,CAAC;gBAC9E,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC,CAAC,2CAA2C;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,sEAAsE;QACtE,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,2DAA2D;gBAC3D,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,KAAK,CACR,gHAAgH,EAChH,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,GAA8B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxD,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI;oBAC7B,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACzB,CAAC,CAAC,CAAC;gBACJ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;gBACtD,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,oEAAoE;QACpE,qEAAqE;QACrE,6DAA6D;QAC7D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YACjF,OAAO,eAAe,CACpB,kBAAkB,EAClB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAC/E,CAAC;QACJ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,mEAAmE;YACnE,sEAAsE;YACtE,wDAAwD;YACxD,iEAAiE;YACjE,8DAA8D;YAC9D,mEAAmE;YACnE,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC,YAAY,gBAAgB;gBAAE,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,qDAAqD;QACrD,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,IAAI,CAAC,OAAO,EACZ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAClD,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,YAAY,CAAC,GAAQ;QACjC,uEAAuE;QACvE,4DAA4D;QAC5D,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,YAAY,CAAC;gBAC5B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE;gBACzB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;qBAClB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;oBACd,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;oBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ;oBACxB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,KAAK;iBACf,CAAC;qBACD,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC,YAAY,gBAAgB;gBAAE,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;YAAE,OAAO;QACxG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC;QAClF,SAAS,CAAC;YACR,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,iCAAiC,EAAE;gBAChE,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4DAA4D;aAClG,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBAAE,MAAM;YACvB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CACjE,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sEAAsE;gBACtE,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,IAAI,EAAE,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IAC5D,KAAK,CAAC,WAAW,CAAC,GAAQ;QAChC,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,2CAA2C,CAAC,CAAC;YAAE,OAAO;QAChF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;QACzF,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,4CAA4C,EAAE;YACtF,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,yBAAyB,EAAE;YACzD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC;SAC3F,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE;gBACvC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE;gBACrC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM;aAChC,CAAC,CACH,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,MAAM,gCAAgC,CAAC,CAAC,CAAC;YACzF,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;gBACd,iEAAiE;gBACjE,+DAA+D;gBAC/D,6DAA6D;gBAC7D,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC/C,IAAI,MAAM,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC;oBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;oBACrG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gDAAgD,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;iBAAM,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,4BAA6B,CAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,2EAA2E;IACnE,KAAK,CAAC,gBAAgB,CAAC,GAAQ,EAAE,OAAe;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gDAAgD,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE;YAC7D,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;SACjE,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACxD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;YAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;;YACjF,QAAQ,CAAC,MAAM,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,qEAAqE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC"}
@@ -56,6 +56,15 @@ export default class Login extends BaseCommand {
56
56
  });
57
57
  if (pair.team_id)
58
58
  config.set({ active_team_id: pair.team_id });
59
+ // SYNTEQ_API_TOKEN outranks the stored session on every run
60
+ // (api/factory.ts), this one included: the probe below would ride the
61
+ // key, /auth/me is scope-denied to keys, and the login ended in exit 1
62
+ // after the session had already been stored. Say what is going on.
63
+ if ((process.env.SYNTEQ_API_TOKEN ?? "").trim()) {
64
+ this.warn("SYNTEQ_API_TOKEN is set in this shell and takes precedence over the session just stored — unset it to use this login.");
65
+ this.log(ok("Signed in; session stored."));
66
+ return;
67
+ }
59
68
  const me = await api.auth.whoami();
60
69
  this.log(ok(`Signed in as ${me.email}.`));
61
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,9 @@ export default class Order extends Command {
20
20
  async run() {
21
21
  if (!isInteractive()) {
22
22
  this.log("`synteq order` is interactive. Pick a specific command instead:");
23
- this.log(" synteq vps order ... (also covers GPU instances)");
23
+ this.log(" synteq vps order ...");
24
+ this.log(" synteq gpu order ... (GPU Cloud)");
25
+ this.log(" synteq instant-metal order ... (dedicated server)");
24
26
  this.log(" synteq storage order ...");
25
27
  return;
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,WAAW,GAAG;QACnB,+EAA+E;QAC/E,iGAAiG;QACjG,2FAA2F;QAC3F,mEAAmE;QACnE,iFAAiF;QACjF,uFAAuF;QACvF,4DAA4D;KAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,kGAAkG;QAClG,yGAAyG;QACzG,iGAAiG;QACjG,+IAA+I;KAChJ,CAAC;IACF,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC;IAEpC,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC5E,IAAI,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;YACzE,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAGD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAO,+BAA+B,EAAE;YACxE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE;YAC5D,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,mCAAmC,EAAE;YAC3D,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,iDAAiD,EAAE;YACnF,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE;SACnD,CAAC,CAAC;QAEH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,WAAW,GAAG;QACnB,+EAA+E;QAC/E,iGAAiG;QACjG,2FAA2F;QAC3F,mEAAmE;QACnE,iFAAiF;QACjF,uFAAuF;QACvF,4DAA4D;KAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,kGAAkG;QAClG,yGAAyG;QACzG,iGAAiG;QACjG,+IAA+I;KAChJ,CAAC;IACF,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC;IAEpC,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC5E,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAGD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAO,+BAA+B,EAAE;YACxE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE;YAC5D,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,mCAAmC,EAAE;YAC3D,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,iDAAiD,EAAE;YACnF,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE;SACnD,CAAC,CAAC;QAEH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC"}
@@ -37,14 +37,14 @@ export default class PaymentsMethodsDelete extends BaseCommand {
37
37
  try {
38
38
  const pm = await resolvePaymentMethod(this.clients.api, args.id);
39
39
  if (!flags.yes) {
40
- if (!isInteractive()) {
40
+ if (!(isInteractive() && this.outputFormat === "table")) {
41
41
  this.error(yesRequiredMessage("`payments methods delete`"), { exit: 1 });
42
42
  }
43
43
  const outcome = await confirmDestructive({
44
44
  message: `Remove ${describePaymentMethod(pm)}?`,
45
45
  });
46
46
  if (outcome !== "confirmed") {
47
- this.log("Aborted — no payment method removed.");
47
+ this.log("Aborted - no payment method removed.");
48
48
  return;
49
49
  }
50
50
  }