@synteq/cli 0.1.6 → 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 (705) hide show
  1. package/bin/run.js +61 -2
  2. package/dist/api/client.d.ts +363 -5
  3. package/dist/api/client.js +559 -44
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/factory.d.ts +3 -0
  6. package/dist/api/factory.js +6 -3
  7. package/dist/api/factory.js.map +1 -1
  8. package/dist/api/types.d.ts +896 -4
  9. package/dist/apps-support/deploy.d.ts +197 -0
  10. package/dist/apps-support/deploy.js +639 -0
  11. package/dist/apps-support/deploy.js.map +1 -0
  12. package/dist/apps-support/dotenv.d.ts +67 -0
  13. package/dist/apps-support/dotenv.js +136 -0
  14. package/dist/apps-support/dotenv.js.map +1 -0
  15. package/dist/apps-support/env-rollout.d.ts +18 -0
  16. package/dist/apps-support/env-rollout.js +52 -0
  17. package/dist/apps-support/env-rollout.js.map +1 -0
  18. package/dist/apps-support/git.d.ts +14 -0
  19. package/dist/apps-support/git.js +25 -0
  20. package/dist/apps-support/git.js.map +1 -0
  21. package/dist/apps-support/link.d.ts +25 -0
  22. package/dist/apps-support/link.js +39 -0
  23. package/dist/apps-support/link.js.map +1 -0
  24. package/dist/apps-support/log-stream.d.ts +25 -0
  25. package/dist/apps-support/log-stream.js +85 -0
  26. package/dist/apps-support/log-stream.js.map +1 -0
  27. package/dist/apps-support/paid-app.d.ts +64 -0
  28. package/dist/apps-support/paid-app.js +195 -0
  29. package/dist/apps-support/paid-app.js.map +1 -0
  30. package/dist/apps-support/plans.d.ts +44 -0
  31. package/dist/apps-support/plans.js +43 -0
  32. package/dist/apps-support/plans.js.map +1 -0
  33. package/dist/apps-support/resolve.d.ts +10 -0
  34. package/dist/apps-support/resolve.js +53 -0
  35. package/dist/apps-support/resolve.js.map +1 -0
  36. package/dist/apps-support/time.d.ts +20 -0
  37. package/dist/apps-support/time.js +82 -0
  38. package/dist/apps-support/time.js.map +1 -0
  39. package/dist/auth/scope.d.ts +19 -0
  40. package/dist/auth/scope.js +69 -0
  41. package/dist/auth/scope.js.map +1 -0
  42. package/dist/auth/tokens.d.ts +3 -0
  43. package/dist/auth/tokens.js +6 -4
  44. package/dist/auth/tokens.js.map +1 -1
  45. package/dist/base/command.d.ts +36 -1
  46. package/dist/base/command.js +132 -0
  47. package/dist/base/command.js.map +1 -1
  48. package/dist/commands/account/index.d.ts +1 -0
  49. package/dist/commands/account/index.js +1 -0
  50. package/dist/commands/account/index.js.map +1 -1
  51. package/dist/commands/account/show.d.ts +1 -0
  52. package/dist/commands/account/show.js +1 -0
  53. package/dist/commands/account/show.js.map +1 -1
  54. package/dist/commands/agents.d.ts +10 -0
  55. package/dist/commands/agents.js +53 -0
  56. package/dist/commands/agents.js.map +1 -0
  57. package/dist/commands/api.d.ts +1 -1
  58. package/dist/commands/api.js +6 -4
  59. package/dist/commands/api.js.map +1 -1
  60. package/dist/commands/app/deployment/list.d.ts +14 -0
  61. package/dist/commands/app/deployment/list.js +45 -0
  62. package/dist/commands/app/deployment/list.js.map +1 -0
  63. package/dist/commands/app/deployment/rollback.d.ts +18 -0
  64. package/dist/commands/app/deployment/rollback.js +57 -0
  65. package/dist/commands/app/deployment/rollback.js.map +1 -0
  66. package/dist/commands/app/deployment/show.d.ts +26 -0
  67. package/dist/commands/app/deployment/show.js +98 -0
  68. package/dist/commands/app/deployment/show.js.map +1 -0
  69. package/dist/commands/app/domain/add.d.ts +17 -0
  70. package/dist/commands/app/domain/add.js +59 -0
  71. package/dist/commands/app/domain/add.js.map +1 -0
  72. package/dist/commands/app/domain/list.d.ts +14 -0
  73. package/dist/commands/app/domain/list.js +42 -0
  74. package/dist/commands/app/domain/list.js.map +1 -0
  75. package/dist/commands/app/domain/remove.d.ts +16 -0
  76. package/dist/commands/app/domain/remove.js +51 -0
  77. package/dist/commands/app/domain/remove.js.map +1 -0
  78. package/dist/commands/app/domain/verify.d.ts +15 -0
  79. package/dist/commands/app/domain/verify.js +39 -0
  80. package/dist/commands/app/domain/verify.js.map +1 -0
  81. package/dist/commands/app/env/add.d.ts +22 -0
  82. package/dist/commands/app/env/add.js +103 -0
  83. package/dist/commands/app/env/add.js.map +1 -0
  84. package/dist/commands/app/env/list.d.ts +17 -0
  85. package/dist/commands/app/env/list.js +40 -0
  86. package/dist/commands/app/env/list.js.map +1 -0
  87. package/dist/commands/app/env/reveal.d.ts +17 -0
  88. package/dist/commands/app/env/reveal.js +40 -0
  89. package/dist/commands/app/env/reveal.js.map +1 -0
  90. package/dist/commands/app/env/rm.d.ts +16 -0
  91. package/dist/commands/app/env/rm.js +48 -0
  92. package/dist/commands/app/env/rm.js.map +1 -0
  93. package/dist/commands/app/health.d.ts +14 -0
  94. package/dist/commands/app/health.js +40 -0
  95. package/dist/commands/app/health.js.map +1 -0
  96. package/dist/commands/app/index.d.ts +6 -0
  97. package/dist/commands/app/index.js +7 -0
  98. package/dist/commands/app/index.js.map +1 -0
  99. package/dist/commands/app/link.d.ts +22 -0
  100. package/dist/commands/app/link.js +31 -0
  101. package/dist/commands/app/link.js.map +1 -0
  102. package/dist/commands/app/logs.d.ts +25 -0
  103. package/dist/commands/app/logs.js +121 -0
  104. package/dist/commands/app/logs.js.map +1 -0
  105. package/dist/commands/app/metrics.d.ts +21 -0
  106. package/dist/commands/app/metrics.js +123 -0
  107. package/dist/commands/app/metrics.js.map +1 -0
  108. package/dist/commands/app/plan/change.d.ts +18 -0
  109. package/dist/commands/app/plan/change.js +79 -0
  110. package/dist/commands/app/plan/change.js.map +1 -0
  111. package/dist/commands/app/plan/show.d.ts +14 -0
  112. package/dist/commands/app/plan/show.js +40 -0
  113. package/dist/commands/app/plan/show.js.map +1 -0
  114. package/dist/commands/app/settings/set.d.ts +25 -0
  115. package/dist/commands/app/settings/set.js +96 -0
  116. package/dist/commands/app/settings/set.js.map +1 -0
  117. package/dist/commands/app/settings/show.d.ts +14 -0
  118. package/dist/commands/app/settings/show.js +48 -0
  119. package/dist/commands/app/settings/show.js.map +1 -0
  120. package/dist/commands/app/unlink.d.ts +8 -0
  121. package/dist/commands/app/unlink.js +25 -0
  122. package/dist/commands/app/unlink.js.map +1 -0
  123. package/dist/commands/apps/create.d.ts +26 -0
  124. package/dist/commands/apps/create.js +91 -0
  125. package/dist/commands/apps/create.js.map +1 -0
  126. package/dist/commands/apps/list.d.ts +16 -0
  127. package/dist/commands/apps/list.js +54 -0
  128. package/dist/commands/apps/list.js.map +1 -0
  129. package/dist/commands/baremetal/activity.d.ts +14 -0
  130. package/dist/commands/baremetal/activity.js +53 -0
  131. package/dist/commands/baremetal/activity.js.map +1 -0
  132. package/dist/commands/baremetal/bandwidth.d.ts +10 -0
  133. package/dist/commands/baremetal/bandwidth.js +86 -0
  134. package/dist/commands/baremetal/bandwidth.js.map +1 -0
  135. package/dist/commands/baremetal/console.d.ts +20 -0
  136. package/dist/commands/baremetal/console.js +72 -0
  137. package/dist/commands/baremetal/console.js.map +1 -0
  138. package/dist/commands/baremetal/details.d.ts +11 -0
  139. package/dist/commands/baremetal/details.js +116 -0
  140. package/dist/commands/baremetal/details.js.map +1 -0
  141. package/dist/commands/baremetal/index.d.ts +5 -0
  142. package/dist/commands/baremetal/index.js +6 -0
  143. package/dist/commands/baremetal/index.js.map +1 -0
  144. package/dist/commands/baremetal/install-password.d.ts +14 -0
  145. package/dist/commands/baremetal/install-password.js +80 -0
  146. package/dist/commands/baremetal/install-password.js.map +1 -0
  147. package/dist/commands/baremetal/list.d.ts +11 -0
  148. package/dist/commands/baremetal/list.js +59 -0
  149. package/dist/commands/baremetal/list.js.map +1 -0
  150. package/dist/commands/baremetal/order.d.ts +34 -0
  151. package/dist/commands/baremetal/order.js +394 -0
  152. package/dist/commands/baremetal/order.js.map +1 -0
  153. package/dist/commands/baremetal/power.d.ts +18 -0
  154. package/dist/commands/baremetal/power.js +168 -0
  155. package/dist/commands/baremetal/power.js.map +1 -0
  156. package/dist/commands/baremetal/reinstall.d.ts +21 -0
  157. package/dist/commands/baremetal/reinstall.js +168 -0
  158. package/dist/commands/baremetal/reinstall.js.map +1 -0
  159. package/dist/commands/catalog.d.ts +1 -0
  160. package/dist/commands/catalog.js +5 -0
  161. package/dist/commands/catalog.js.map +1 -1
  162. package/dist/commands/config/index.d.ts +1 -0
  163. package/dist/commands/config/index.js +1 -0
  164. package/dist/commands/config/index.js.map +1 -1
  165. package/dist/commands/config/profile/add.d.ts +11 -0
  166. package/dist/commands/config/profile/add.js +51 -0
  167. package/dist/commands/config/profile/add.js.map +1 -0
  168. package/dist/commands/config/profile/list.d.ts +7 -0
  169. package/dist/commands/config/profile/list.js +29 -0
  170. package/dist/commands/config/profile/list.js.map +1 -0
  171. package/dist/commands/config/profile/remove.d.ts +11 -0
  172. package/dist/commands/config/profile/remove.js +35 -0
  173. package/dist/commands/config/profile/remove.js.map +1 -0
  174. package/dist/commands/config/profile/use.d.ts +10 -0
  175. package/dist/commands/config/profile/use.js +44 -0
  176. package/dist/commands/config/profile/use.js.map +1 -0
  177. package/dist/commands/config/set-api-url.d.ts +1 -0
  178. package/dist/commands/config/set-api-url.js +1 -0
  179. package/dist/commands/config/set-api-url.js.map +1 -1
  180. package/dist/commands/config/show.d.ts +1 -0
  181. package/dist/commands/config/show.js +5 -1
  182. package/dist/commands/config/show.js.map +1 -1
  183. package/dist/commands/credits/add.d.ts +1 -0
  184. package/dist/commands/credits/add.js +3 -2
  185. package/dist/commands/credits/add.js.map +1 -1
  186. package/dist/commands/credits/index.d.ts +1 -0
  187. package/dist/commands/credits/index.js +6 -1
  188. package/dist/commands/credits/index.js.map +1 -1
  189. package/dist/commands/credits/list.d.ts +1 -0
  190. package/dist/commands/credits/list.js +1 -0
  191. package/dist/commands/credits/list.js.map +1 -1
  192. package/dist/commands/deploy.d.ts +51 -0
  193. package/dist/commands/deploy.js +515 -0
  194. package/dist/commands/deploy.js.map +1 -0
  195. package/dist/commands/function/create.d.ts +29 -0
  196. package/dist/commands/function/create.js +113 -0
  197. package/dist/commands/function/create.js.map +1 -0
  198. package/dist/commands/function/credits/add.d.ts +29 -0
  199. package/dist/commands/function/credits/add.js +209 -0
  200. package/dist/commands/function/credits/add.js.map +1 -0
  201. package/dist/commands/function/credits/auto-reload.d.ts +27 -0
  202. package/dist/commands/function/credits/auto-reload.js +107 -0
  203. package/dist/commands/function/credits/auto-reload.js.map +1 -0
  204. package/dist/commands/function/credits/index.d.ts +22 -0
  205. package/dist/commands/function/credits/index.js +80 -0
  206. package/dist/commands/function/credits/index.js.map +1 -0
  207. package/dist/commands/function/cron/add.d.ts +19 -0
  208. package/dist/commands/function/cron/add.js +74 -0
  209. package/dist/commands/function/cron/add.js.map +1 -0
  210. package/dist/commands/function/cron/list.d.ts +12 -0
  211. package/dist/commands/function/cron/list.js +55 -0
  212. package/dist/commands/function/cron/list.js.map +1 -0
  213. package/dist/commands/function/cron/rm.d.ts +17 -0
  214. package/dist/commands/function/cron/rm.js +73 -0
  215. package/dist/commands/function/cron/rm.js.map +1 -0
  216. package/dist/commands/function/cron/run.d.ts +16 -0
  217. package/dist/commands/function/cron/run.js +59 -0
  218. package/dist/commands/function/cron/run.js.map +1 -0
  219. package/dist/commands/function/cron/update.d.ts +21 -0
  220. package/dist/commands/function/cron/update.js +87 -0
  221. package/dist/commands/function/cron/update.js.map +1 -0
  222. package/dist/commands/function/delete.d.ts +23 -0
  223. package/dist/commands/function/delete.js +90 -0
  224. package/dist/commands/function/delete.js.map +1 -0
  225. package/dist/commands/function/deploy.d.ts +64 -0
  226. package/dist/commands/function/deploy.js +608 -0
  227. package/dist/commands/function/deploy.js.map +1 -0
  228. package/dist/commands/function/env/list.d.ts +12 -0
  229. package/dist/commands/function/env/list.js +46 -0
  230. package/dist/commands/function/env/list.js.map +1 -0
  231. package/dist/commands/function/env/reveal.d.ts +21 -0
  232. package/dist/commands/function/env/reveal.js +54 -0
  233. package/dist/commands/function/env/reveal.js.map +1 -0
  234. package/dist/commands/function/env/rm.d.ts +17 -0
  235. package/dist/commands/function/env/rm.js +62 -0
  236. package/dist/commands/function/env/rm.js.map +1 -0
  237. package/dist/commands/function/env/set.d.ts +28 -0
  238. package/dist/commands/function/env/set.js +124 -0
  239. package/dist/commands/function/env/set.js.map +1 -0
  240. package/dist/commands/function/index.d.ts +14 -0
  241. package/dist/commands/function/index.js +11 -0
  242. package/dist/commands/function/index.js.map +1 -0
  243. package/dist/commands/function/init.d.ts +47 -0
  244. package/dist/commands/function/init.js +269 -0
  245. package/dist/commands/function/init.js.map +1 -0
  246. package/dist/commands/function/invoke.d.ts +29 -0
  247. package/dist/commands/function/invoke.js +138 -0
  248. package/dist/commands/function/invoke.js.map +1 -0
  249. package/dist/commands/function/link.d.ts +23 -0
  250. package/dist/commands/function/link.js +80 -0
  251. package/dist/commands/function/link.js.map +1 -0
  252. package/dist/commands/function/list.d.ts +16 -0
  253. package/dist/commands/function/list.js +55 -0
  254. package/dist/commands/function/list.js.map +1 -0
  255. package/dist/commands/function/logs.d.ts +29 -0
  256. package/dist/commands/function/logs.js +171 -0
  257. package/dist/commands/function/logs.js.map +1 -0
  258. package/dist/commands/function/pause.d.ts +19 -0
  259. package/dist/commands/function/pause.js +50 -0
  260. package/dist/commands/function/pause.js.map +1 -0
  261. package/dist/commands/function/releases.d.ts +15 -0
  262. package/dist/commands/function/releases.js +62 -0
  263. package/dist/commands/function/releases.js.map +1 -0
  264. package/dist/commands/function/resume.d.ts +16 -0
  265. package/dist/commands/function/resume.js +47 -0
  266. package/dist/commands/function/resume.js.map +1 -0
  267. package/dist/commands/function/rollback.d.ts +18 -0
  268. package/dist/commands/function/rollback.js +69 -0
  269. package/dist/commands/function/rollback.js.map +1 -0
  270. package/dist/commands/function/settings/set.d.ts +23 -0
  271. package/dist/commands/function/settings/set.js +119 -0
  272. package/dist/commands/function/settings/set.js.map +1 -0
  273. package/dist/commands/function/show.d.ts +15 -0
  274. package/dist/commands/function/show.js +80 -0
  275. package/dist/commands/function/show.js.map +1 -0
  276. package/dist/commands/function/unlink.d.ts +9 -0
  277. package/dist/commands/function/unlink.js +34 -0
  278. package/dist/commands/function/unlink.js.map +1 -0
  279. package/dist/commands/gpu/activity.d.ts +1 -0
  280. package/dist/commands/gpu/activity.js +1 -0
  281. package/dist/commands/gpu/activity.js.map +1 -1
  282. package/dist/commands/gpu/bandwidth.d.ts +1 -0
  283. package/dist/commands/gpu/bandwidth.js +1 -0
  284. package/dist/commands/gpu/bandwidth.js.map +1 -1
  285. package/dist/commands/gpu/boot-order.d.ts +1 -0
  286. package/dist/commands/gpu/boot-order.js +1 -0
  287. package/dist/commands/gpu/boot-order.js.map +1 -1
  288. package/dist/commands/gpu/console.d.ts +1 -0
  289. package/dist/commands/gpu/console.js +1 -0
  290. package/dist/commands/gpu/console.js.map +1 -1
  291. package/dist/commands/gpu/details.d.ts +1 -0
  292. package/dist/commands/gpu/details.js +1 -0
  293. package/dist/commands/gpu/details.js.map +1 -1
  294. package/dist/commands/gpu/index.d.ts +1 -0
  295. package/dist/commands/gpu/index.js +1 -0
  296. package/dist/commands/gpu/index.js.map +1 -1
  297. package/dist/commands/gpu/ip/add.d.ts +1 -0
  298. package/dist/commands/gpu/ip/add.js +1 -0
  299. package/dist/commands/gpu/ip/add.js.map +1 -1
  300. package/dist/commands/gpu/ip/list.d.ts +1 -0
  301. package/dist/commands/gpu/ip/list.js +1 -0
  302. package/dist/commands/gpu/ip/list.js.map +1 -1
  303. package/dist/commands/gpu/list.d.ts +1 -0
  304. package/dist/commands/gpu/list.js +1 -0
  305. package/dist/commands/gpu/list.js.map +1 -1
  306. package/dist/commands/gpu/order.d.ts +1 -0
  307. package/dist/commands/gpu/order.js +1 -0
  308. package/dist/commands/gpu/order.js.map +1 -1
  309. package/dist/commands/gpu/power.d.ts +1 -0
  310. package/dist/commands/gpu/power.js +1 -0
  311. package/dist/commands/gpu/power.js.map +1 -1
  312. package/dist/commands/gpu/reinstall.d.ts +1 -0
  313. package/dist/commands/gpu/reinstall.js +1 -0
  314. package/dist/commands/gpu/reinstall.js.map +1 -1
  315. package/dist/commands/gpu/resize.d.ts +1 -0
  316. package/dist/commands/gpu/resize.js +1 -0
  317. package/dist/commands/gpu/resize.js.map +1 -1
  318. package/dist/commands/gpu/stats.d.ts +1 -0
  319. package/dist/commands/gpu/stats.js +1 -0
  320. package/dist/commands/gpu/stats.js.map +1 -1
  321. package/dist/commands/help.d.ts +2 -0
  322. package/dist/commands/help.js +5 -0
  323. package/dist/commands/help.js.map +1 -1
  324. package/dist/commands/instant-metal/activity.d.ts +1 -0
  325. package/dist/commands/instant-metal/activity.js +1 -0
  326. package/dist/commands/instant-metal/activity.js.map +1 -1
  327. package/dist/commands/instant-metal/bandwidth.d.ts +1 -0
  328. package/dist/commands/instant-metal/bandwidth.js +1 -0
  329. package/dist/commands/instant-metal/bandwidth.js.map +1 -1
  330. package/dist/commands/instant-metal/boot-order.d.ts +1 -0
  331. package/dist/commands/instant-metal/boot-order.js +1 -0
  332. package/dist/commands/instant-metal/boot-order.js.map +1 -1
  333. package/dist/commands/instant-metal/console.d.ts +1 -0
  334. package/dist/commands/instant-metal/console.js +1 -0
  335. package/dist/commands/instant-metal/console.js.map +1 -1
  336. package/dist/commands/instant-metal/details.d.ts +1 -0
  337. package/dist/commands/instant-metal/details.js +1 -0
  338. package/dist/commands/instant-metal/details.js.map +1 -1
  339. package/dist/commands/instant-metal/index.d.ts +1 -0
  340. package/dist/commands/instant-metal/index.js +1 -0
  341. package/dist/commands/instant-metal/index.js.map +1 -1
  342. package/dist/commands/instant-metal/ip/add.d.ts +1 -0
  343. package/dist/commands/instant-metal/ip/add.js +1 -0
  344. package/dist/commands/instant-metal/ip/add.js.map +1 -1
  345. package/dist/commands/instant-metal/ip/list.d.ts +1 -0
  346. package/dist/commands/instant-metal/ip/list.js +1 -0
  347. package/dist/commands/instant-metal/ip/list.js.map +1 -1
  348. package/dist/commands/instant-metal/list.d.ts +1 -0
  349. package/dist/commands/instant-metal/list.js +1 -0
  350. package/dist/commands/instant-metal/list.js.map +1 -1
  351. package/dist/commands/instant-metal/order.d.ts +1 -0
  352. package/dist/commands/instant-metal/order.js +1 -0
  353. package/dist/commands/instant-metal/order.js.map +1 -1
  354. package/dist/commands/instant-metal/power.d.ts +1 -0
  355. package/dist/commands/instant-metal/power.js +1 -0
  356. package/dist/commands/instant-metal/power.js.map +1 -1
  357. package/dist/commands/instant-metal/reinstall.d.ts +1 -0
  358. package/dist/commands/instant-metal/reinstall.js +1 -0
  359. package/dist/commands/instant-metal/reinstall.js.map +1 -1
  360. package/dist/commands/instant-metal/resize.d.ts +1 -0
  361. package/dist/commands/instant-metal/resize.js +1 -0
  362. package/dist/commands/instant-metal/resize.js.map +1 -1
  363. package/dist/commands/instant-metal/stats.d.ts +1 -0
  364. package/dist/commands/instant-metal/stats.js +1 -0
  365. package/dist/commands/instant-metal/stats.js.map +1 -1
  366. package/dist/commands/link.d.ts +77 -0
  367. package/dist/commands/link.js +530 -0
  368. package/dist/commands/link.js.map +1 -0
  369. package/dist/commands/login.d.ts +1 -0
  370. package/dist/commands/login.js +10 -0
  371. package/dist/commands/login.js.map +1 -1
  372. package/dist/commands/logout.d.ts +1 -0
  373. package/dist/commands/logout.js +1 -0
  374. package/dist/commands/logout.js.map +1 -1
  375. package/dist/commands/order/gpu.d.ts +1 -0
  376. package/dist/commands/order/gpu.js +1 -0
  377. package/dist/commands/order/gpu.js.map +1 -1
  378. package/dist/commands/order/instant-metal.d.ts +1 -0
  379. package/dist/commands/order/instant-metal.js +1 -0
  380. package/dist/commands/order/instant-metal.js.map +1 -1
  381. package/dist/commands/order/storage.d.ts +1 -0
  382. package/dist/commands/order/storage.js +1 -0
  383. package/dist/commands/order/storage.js.map +1 -1
  384. package/dist/commands/order/vps.d.ts +1 -0
  385. package/dist/commands/order/vps.js +1 -0
  386. package/dist/commands/order/vps.js.map +1 -1
  387. package/dist/commands/order.d.ts +1 -0
  388. package/dist/commands/order.js +4 -1
  389. package/dist/commands/order.js.map +1 -1
  390. package/dist/commands/os-images.d.ts +1 -0
  391. package/dist/commands/os-images.js +3 -0
  392. package/dist/commands/os-images.js.map +1 -1
  393. package/dist/commands/payments/index.d.ts +1 -0
  394. package/dist/commands/payments/index.js +1 -0
  395. package/dist/commands/payments/index.js.map +1 -1
  396. package/dist/commands/payments/methods/add.d.ts +1 -0
  397. package/dist/commands/payments/methods/add.js +1 -0
  398. package/dist/commands/payments/methods/add.js.map +1 -1
  399. package/dist/commands/payments/methods/delete.d.ts +1 -0
  400. package/dist/commands/payments/methods/delete.js +3 -2
  401. package/dist/commands/payments/methods/delete.js.map +1 -1
  402. package/dist/commands/payments/methods/index.d.ts +1 -0
  403. package/dist/commands/payments/methods/index.js +1 -0
  404. package/dist/commands/payments/methods/index.js.map +1 -1
  405. package/dist/commands/payments/methods/list.d.ts +1 -0
  406. package/dist/commands/payments/methods/list.js +1 -0
  407. package/dist/commands/payments/methods/list.js.map +1 -1
  408. package/dist/commands/payments/methods/set-default.d.ts +1 -0
  409. package/dist/commands/payments/methods/set-default.js +1 -0
  410. package/dist/commands/payments/methods/set-default.js.map +1 -1
  411. package/dist/commands/projects/index.d.ts +1 -0
  412. package/dist/commands/projects/index.js +1 -0
  413. package/dist/commands/projects/index.js.map +1 -1
  414. package/dist/commands/projects/list.d.ts +1 -0
  415. package/dist/commands/projects/list.js +1 -0
  416. package/dist/commands/projects/list.js.map +1 -1
  417. package/dist/commands/resources.d.ts +1 -0
  418. package/dist/commands/resources.js +61 -7
  419. package/dist/commands/resources.js.map +1 -1
  420. package/dist/commands/settings/index.d.ts +1 -0
  421. package/dist/commands/settings/index.js +1 -0
  422. package/dist/commands/settings/index.js.map +1 -1
  423. package/dist/commands/settings/render-mode.d.ts +1 -0
  424. package/dist/commands/settings/render-mode.js +1 -0
  425. package/dist/commands/settings/render-mode.js.map +1 -1
  426. package/dist/commands/ssh-key/add.d.ts +1 -0
  427. package/dist/commands/ssh-key/add.js +1 -0
  428. package/dist/commands/ssh-key/add.js.map +1 -1
  429. package/dist/commands/ssh-key/delete.d.ts +1 -0
  430. package/dist/commands/ssh-key/delete.js +1 -0
  431. package/dist/commands/ssh-key/delete.js.map +1 -1
  432. package/dist/commands/ssh-key/list.d.ts +1 -0
  433. package/dist/commands/ssh-key/list.js +1 -0
  434. package/dist/commands/ssh-key/list.js.map +1 -1
  435. package/dist/commands/status.d.ts +12 -0
  436. package/dist/commands/status.js +71 -0
  437. package/dist/commands/status.js.map +1 -0
  438. package/dist/commands/storage/attach.d.ts +1 -0
  439. package/dist/commands/storage/attach.js +1 -0
  440. package/dist/commands/storage/attach.js.map +1 -1
  441. package/dist/commands/storage/detach.d.ts +1 -0
  442. package/dist/commands/storage/detach.js +2 -1
  443. package/dist/commands/storage/detach.js.map +1 -1
  444. package/dist/commands/storage/list.d.ts +1 -0
  445. package/dist/commands/storage/list.js +7 -2
  446. package/dist/commands/storage/list.js.map +1 -1
  447. package/dist/commands/storage/order.d.ts +3 -0
  448. package/dist/commands/storage/order.js +101 -18
  449. package/dist/commands/storage/order.js.map +1 -1
  450. package/dist/commands/storage/resize.d.ts +1 -0
  451. package/dist/commands/storage/resize.js +20 -6
  452. package/dist/commands/storage/resize.js.map +1 -1
  453. package/dist/commands/team/details.d.ts +1 -0
  454. package/dist/commands/team/details.js +1 -0
  455. package/dist/commands/team/details.js.map +1 -1
  456. package/dist/commands/team/invite.d.ts +1 -0
  457. package/dist/commands/team/invite.js +1 -0
  458. package/dist/commands/team/invite.js.map +1 -1
  459. package/dist/commands/team.d.ts +1 -0
  460. package/dist/commands/team.js +1 -0
  461. package/dist/commands/team.js.map +1 -1
  462. package/dist/commands/tickets/close.d.ts +1 -0
  463. package/dist/commands/tickets/close.js +1 -0
  464. package/dist/commands/tickets/close.js.map +1 -1
  465. package/dist/commands/tickets/create.d.ts +3 -0
  466. package/dist/commands/tickets/create.js +41 -1
  467. package/dist/commands/tickets/create.js.map +1 -1
  468. package/dist/commands/tickets/departments.d.ts +1 -0
  469. package/dist/commands/tickets/departments.js +1 -0
  470. package/dist/commands/tickets/departments.js.map +1 -1
  471. package/dist/commands/tickets/download.d.ts +18 -0
  472. package/dist/commands/tickets/download.js +138 -0
  473. package/dist/commands/tickets/download.js.map +1 -0
  474. package/dist/commands/tickets/list.d.ts +1 -0
  475. package/dist/commands/tickets/list.js +14 -7
  476. package/dist/commands/tickets/list.js.map +1 -1
  477. package/dist/commands/tickets/open.d.ts +1 -0
  478. package/dist/commands/tickets/open.js +1 -0
  479. package/dist/commands/tickets/open.js.map +1 -1
  480. package/dist/commands/tickets/reopen.d.ts +11 -0
  481. package/dist/commands/tickets/reopen.js +34 -0
  482. package/dist/commands/tickets/reopen.js.map +1 -0
  483. package/dist/commands/tickets/reply.d.ts +3 -0
  484. package/dist/commands/tickets/reply.js +34 -4
  485. package/dist/commands/tickets/reply.js.map +1 -1
  486. package/dist/commands/transit.d.ts +1 -0
  487. package/dist/commands/transit.js +1 -0
  488. package/dist/commands/transit.js.map +1 -1
  489. package/dist/commands/tui/index.d.ts +1 -0
  490. package/dist/commands/tui/index.js +21 -0
  491. package/dist/commands/tui/index.js.map +1 -1
  492. package/dist/commands/vds/activity.d.ts +1 -0
  493. package/dist/commands/vds/activity.js +1 -0
  494. package/dist/commands/vds/activity.js.map +1 -1
  495. package/dist/commands/vds/bandwidth.d.ts +1 -0
  496. package/dist/commands/vds/bandwidth.js +1 -0
  497. package/dist/commands/vds/bandwidth.js.map +1 -1
  498. package/dist/commands/vds/boot-order.d.ts +1 -0
  499. package/dist/commands/vds/boot-order.js +1 -0
  500. package/dist/commands/vds/boot-order.js.map +1 -1
  501. package/dist/commands/vds/console.d.ts +1 -0
  502. package/dist/commands/vds/console.js +1 -0
  503. package/dist/commands/vds/console.js.map +1 -1
  504. package/dist/commands/vds/details.d.ts +1 -0
  505. package/dist/commands/vds/details.js +1 -0
  506. package/dist/commands/vds/details.js.map +1 -1
  507. package/dist/commands/vds/index.d.ts +1 -0
  508. package/dist/commands/vds/index.js +1 -0
  509. package/dist/commands/vds/index.js.map +1 -1
  510. package/dist/commands/vds/ip/add.d.ts +1 -0
  511. package/dist/commands/vds/ip/add.js +1 -0
  512. package/dist/commands/vds/ip/add.js.map +1 -1
  513. package/dist/commands/vds/ip/list.d.ts +1 -0
  514. package/dist/commands/vds/ip/list.js +1 -0
  515. package/dist/commands/vds/ip/list.js.map +1 -1
  516. package/dist/commands/vds/list.d.ts +1 -0
  517. package/dist/commands/vds/list.js +1 -0
  518. package/dist/commands/vds/list.js.map +1 -1
  519. package/dist/commands/vds/order.d.ts +1 -0
  520. package/dist/commands/vds/order.js +73 -7
  521. package/dist/commands/vds/order.js.map +1 -1
  522. package/dist/commands/vds/power.d.ts +1 -0
  523. package/dist/commands/vds/power.js +1 -0
  524. package/dist/commands/vds/power.js.map +1 -1
  525. package/dist/commands/vds/reinstall.d.ts +1 -0
  526. package/dist/commands/vds/reinstall.js +1 -0
  527. package/dist/commands/vds/reinstall.js.map +1 -1
  528. package/dist/commands/vds/resize.d.ts +1 -0
  529. package/dist/commands/vds/resize.js +1 -0
  530. package/dist/commands/vds/resize.js.map +1 -1
  531. package/dist/commands/vds/stats.d.ts +1 -0
  532. package/dist/commands/vds/stats.js +1 -0
  533. package/dist/commands/vds/stats.js.map +1 -1
  534. package/dist/commands/vps/activity.d.ts +1 -0
  535. package/dist/commands/vps/activity.js +1 -0
  536. package/dist/commands/vps/activity.js.map +1 -1
  537. package/dist/commands/vps/bandwidth.d.ts +1 -0
  538. package/dist/commands/vps/bandwidth.js +1 -0
  539. package/dist/commands/vps/bandwidth.js.map +1 -1
  540. package/dist/commands/vps/boot-order.d.ts +1 -0
  541. package/dist/commands/vps/boot-order.js +1 -0
  542. package/dist/commands/vps/boot-order.js.map +1 -1
  543. package/dist/commands/vps/console.d.ts +1 -0
  544. package/dist/commands/vps/console.js +15 -6
  545. package/dist/commands/vps/console.js.map +1 -1
  546. package/dist/commands/vps/details.d.ts +1 -0
  547. package/dist/commands/vps/details.js +8 -1
  548. package/dist/commands/vps/details.js.map +1 -1
  549. package/dist/commands/vps/ip/add.d.ts +1 -0
  550. package/dist/commands/vps/ip/add.js +77 -9
  551. package/dist/commands/vps/ip/add.js.map +1 -1
  552. package/dist/commands/vps/ip/list.d.ts +1 -0
  553. package/dist/commands/vps/ip/list.js +1 -0
  554. package/dist/commands/vps/ip/list.js.map +1 -1
  555. package/dist/commands/vps/list.d.ts +1 -0
  556. package/dist/commands/vps/list.js +14 -4
  557. package/dist/commands/vps/list.js.map +1 -1
  558. package/dist/commands/vps/order.d.ts +20 -0
  559. package/dist/commands/vps/order.js +180 -23
  560. package/dist/commands/vps/order.js.map +1 -1
  561. package/dist/commands/vps/power.d.ts +1 -0
  562. package/dist/commands/vps/power.js +3 -2
  563. package/dist/commands/vps/power.js.map +1 -1
  564. package/dist/commands/vps/reinstall.d.ts +1 -0
  565. package/dist/commands/vps/reinstall.js +3 -2
  566. package/dist/commands/vps/reinstall.js.map +1 -1
  567. package/dist/commands/vps/resize.d.ts +1 -0
  568. package/dist/commands/vps/resize.js +37 -13
  569. package/dist/commands/vps/resize.js.map +1 -1
  570. package/dist/commands/vps/stats.d.ts +1 -0
  571. package/dist/commands/vps/stats.js +1 -0
  572. package/dist/commands/vps/stats.js.map +1 -1
  573. package/dist/commands/whoami.d.ts +6 -0
  574. package/dist/commands/whoami.js +8 -2
  575. package/dist/commands/whoami.js.map +1 -1
  576. package/dist/config/paths.d.ts +1 -1
  577. package/dist/config/paths.js +6 -1
  578. package/dist/config/paths.js.map +1 -1
  579. package/dist/config/store.d.ts +58 -0
  580. package/dist/config/store.js +84 -2
  581. package/dist/config/store.js.map +1 -1
  582. package/dist/functions-support/credits.d.ts +64 -0
  583. package/dist/functions-support/credits.js +181 -0
  584. package/dist/functions-support/credits.js.map +1 -0
  585. package/dist/functions-support/cron.d.ts +17 -0
  586. package/dist/functions-support/cron.js +99 -0
  587. package/dist/functions-support/cron.js.map +1 -0
  588. package/dist/functions-support/env.d.ts +23 -0
  589. package/dist/functions-support/env.js +44 -0
  590. package/dist/functions-support/env.js.map +1 -0
  591. package/dist/functions-support/link.d.ts +25 -0
  592. package/dist/functions-support/link.js +51 -0
  593. package/dist/functions-support/link.js.map +1 -0
  594. package/dist/functions-support/poll.d.ts +40 -0
  595. package/dist/functions-support/poll.js +109 -0
  596. package/dist/functions-support/poll.js.map +1 -0
  597. package/dist/functions-support/resolve.d.ts +3 -0
  598. package/dist/functions-support/resolve.js +31 -0
  599. package/dist/functions-support/resolve.js.map +1 -0
  600. package/dist/functions-support/runtime.d.ts +30 -0
  601. package/dist/functions-support/runtime.js +52 -0
  602. package/dist/functions-support/runtime.js.map +1 -0
  603. package/dist/functions-support/source.d.ts +92 -0
  604. package/dist/functions-support/source.js +343 -0
  605. package/dist/functions-support/source.js.map +1 -0
  606. package/dist/help/help-filter.d.ts +10 -0
  607. package/dist/help/help-filter.js +9 -0
  608. package/dist/help/help-filter.js.map +1 -0
  609. package/dist/help/scope-aware-help.d.ts +30 -0
  610. package/dist/help/scope-aware-help.js +80 -0
  611. package/dist/help/scope-aware-help.js.map +1 -0
  612. package/dist/tui/App.js +11 -26
  613. package/dist/tui/App.js.map +1 -1
  614. package/dist/tui/components/Menu.d.ts +3 -1
  615. package/dist/tui/components/Menu.js +7 -3
  616. package/dist/tui/components/Menu.js.map +1 -1
  617. package/dist/tui/components/NumberInput.js +1 -1
  618. package/dist/tui/components/Sparkline.js +1 -1
  619. package/dist/tui/router.d.ts +1 -1
  620. package/dist/tui/router.js.map +1 -1
  621. package/dist/tui/screens/Billing.js +66 -14
  622. package/dist/tui/screens/Billing.js.map +1 -1
  623. package/dist/tui/screens/Dashboard.js +8 -7
  624. package/dist/tui/screens/Dashboard.js.map +1 -1
  625. package/dist/tui/screens/Deploy.d.ts +2 -0
  626. package/dist/tui/screens/Deploy.js +912 -0
  627. package/dist/tui/screens/Deploy.js.map +1 -0
  628. package/dist/tui/screens/Order.js +385 -52
  629. package/dist/tui/screens/Order.js.map +1 -1
  630. package/dist/tui/screens/Resources.js +277 -35
  631. package/dist/tui/screens/Resources.js.map +1 -1
  632. package/dist/tui/screens/Tickets.js +47 -26
  633. package/dist/tui/screens/Tickets.js.map +1 -1
  634. package/dist/tui/screens/deployPreset.d.ts +20 -0
  635. package/dist/tui/screens/deployPreset.js +11 -0
  636. package/dist/tui/screens/deployPreset.js.map +1 -0
  637. package/dist/tui/screens/resources/AppDetail.d.ts +7 -0
  638. package/dist/tui/screens/resources/AppDetail.js +810 -0
  639. package/dist/tui/screens/resources/AppDetail.js.map +1 -0
  640. package/dist/tui/screens/resources/FunctionDetail.d.ts +7 -0
  641. package/dist/tui/screens/resources/FunctionDetail.js +751 -0
  642. package/dist/tui/screens/resources/FunctionDetail.js.map +1 -0
  643. package/dist/ui/attach.d.ts +15 -0
  644. package/dist/ui/attach.js +63 -0
  645. package/dist/ui/attach.js.map +1 -0
  646. package/dist/ui/baremetal-resolve.d.ts +10 -0
  647. package/dist/ui/baremetal-resolve.js +50 -0
  648. package/dist/ui/baremetal-resolve.js.map +1 -0
  649. package/dist/ui/confirm.js +1 -1
  650. package/dist/ui/confirm.js.map +1 -1
  651. package/dist/ui/cycle.d.ts +66 -0
  652. package/dist/ui/cycle.js +96 -0
  653. package/dist/ui/cycle.js.map +1 -0
  654. package/dist/ui/deploy-ui.d.ts +75 -0
  655. package/dist/ui/deploy-ui.js +243 -0
  656. package/dist/ui/deploy-ui.js.map +1 -0
  657. package/dist/ui/order-result.d.ts +4 -0
  658. package/dist/ui/order-result.js +32 -0
  659. package/dist/ui/order-result.js.map +1 -0
  660. package/dist/ui/payment-gate.d.ts +26 -0
  661. package/dist/ui/payment-gate.js +70 -0
  662. package/dist/ui/payment-gate.js.map +1 -0
  663. package/dist/ui/payment.js +10 -3
  664. package/dist/ui/payment.js.map +1 -1
  665. package/dist/ui/portal.d.ts +1 -1
  666. package/dist/ui/portal.js +7 -2
  667. package/dist/ui/portal.js.map +1 -1
  668. package/dist/ui/project-resolve.d.ts +25 -0
  669. package/dist/ui/project-resolve.js +31 -0
  670. package/dist/ui/project-resolve.js.map +1 -0
  671. package/dist/ui/render-mode.d.ts +5 -0
  672. package/dist/ui/render-mode.js +1 -1
  673. package/dist/ui/render-mode.js.map +1 -1
  674. package/dist/ui/resource-detail.js +0 -3
  675. package/dist/ui/resource-detail.js.map +1 -1
  676. package/dist/ui/resource-resolve.d.ts +9 -2
  677. package/dist/ui/resource-resolve.js +11 -4
  678. package/dist/ui/resource-resolve.js.map +1 -1
  679. package/dist/ui/spinner.d.ts +10 -1
  680. package/dist/ui/spinner.js +12 -3
  681. package/dist/ui/spinner.js.map +1 -1
  682. package/dist/ui/table.d.ts +7 -0
  683. package/dist/ui/table.js +11 -0
  684. package/dist/ui/table.js.map +1 -1
  685. package/dist/ui/tax.d.ts +10 -0
  686. package/dist/ui/tax.js +31 -0
  687. package/dist/ui/tax.js.map +1 -0
  688. package/dist/ui/ticket-resolve.d.ts +9 -1
  689. package/dist/ui/ticket-resolve.js +13 -2
  690. package/dist/ui/ticket-resolve.js.map +1 -1
  691. package/dist/ui/volume-resolve.js +4 -1
  692. package/dist/ui/volume-resolve.js.map +1 -1
  693. package/dist/ui/wait.d.ts +4 -0
  694. package/dist/ui/wait.js +7 -2
  695. package/dist/ui/wait.js.map +1 -1
  696. package/dist/ui/wizard.d.ts +2 -1
  697. package/dist/ui/wizard.js +1 -1
  698. package/dist/ui/wizard.js.map +1 -1
  699. package/dist/version-check-bin.d.ts +35 -0
  700. package/dist/version-check-bin.js +123 -0
  701. package/dist/version-check-bin.js.map +1 -0
  702. package/dist/version-check.d.ts +44 -0
  703. package/dist/version-check.js +153 -0
  704. package/dist/version-check.js.map +1 -0
  705. package/package.json +59 -4
@@ -0,0 +1,3 @@
1
+ import { type ApiClient } from "../api/client.js";
2
+ import type { Fn } from "../api/types.js";
3
+ export declare function resolveFunction(api: ApiClient, ref: string, projectId?: string): Promise<Fn>;
@@ -0,0 +1,31 @@
1
+ import { pageThrough } from "../api/client.js";
2
+ import { idPrefixMatches, isIdPrefix } from "../apps-support/resolve.js";
3
+ /**
4
+ * Resolve a function reference (slug OR uuid) to a full Fn row — the
5
+ * functions twin of apps-support/resolve.ts. A uuid goes straight to
6
+ * GET /functions/{id}; anything else is a slug asked of the server with
7
+ * `q=<slug>` (name / slug / hostname search, portal #419) and exact-matched
8
+ * here. An id prefix is not something `q` searches, so that walks every
9
+ * page of the project's list.
10
+ *
11
+ * Throws a plain Error (a user error the command surfaces as exit 1); an
12
+ * API fault is an ApiError and propagates to `this.fail`.
13
+ */
14
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
15
+ export async function resolveFunction(api, ref, projectId) {
16
+ if (UUID_RE.test(ref))
17
+ return api.functions.get(ref);
18
+ const bySlug = await pageThrough((page) => api.functions.listPage(projectId, { q: ref, page }), (page) => page.items.some((f) => f.slug === ref));
19
+ let matches = bySlug.filter((f) => f.slug === ref);
20
+ if (matches.length === 0 && isIdPrefix(ref)) {
21
+ const all = await pageThrough((page) => api.functions.listPage(projectId, { page }));
22
+ matches = idPrefixMatches(all, ref, "function");
23
+ }
24
+ if (matches.length === 0) {
25
+ throw new Error(`No function named "${ref}" in the active project. Run \`synteq function list\` to see available functions.`);
26
+ }
27
+ if (matches.length > 1)
28
+ matches.sort((a, b) => b.id.localeCompare(a.id));
29
+ return matches[0];
30
+ }
31
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/functions-support/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,GAAG,iEAAiE,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAc,EAAE,GAAW,EAAE,SAAkB;IACnF,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAC7D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CACjD,CAAC;IACF,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,mFAAmF,CAC7G,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Runtime knowledge the CLI needs offline: which handler filenames belong to
3
+ * which runtime, and the starter each `synteq function init` scaffolds.
4
+ *
5
+ * HANDLER_ENTRIES mirrors the BACKEND's table verbatim
6
+ * (portal/backend/app/services/functions/source_shape.py::HANDLER_ENTRIES),
7
+ * in the same order, so what the CLI infers from a directory is what the
8
+ * build's shaping step will conclude from the same files. The two sets are
9
+ * disjoint by extension, which is what makes inference sound.
10
+ */
11
+ export declare const RUNTIMES: readonly ["node22", "python312"];
12
+ export type Runtime = (typeof RUNTIMES)[number];
13
+ export declare const RUNTIME_LABELS: Record<Runtime, string>;
14
+ export declare const HANDLER_ENTRIES: Record<Runtime, readonly string[]>;
15
+ /**
16
+ * The runtime a set of ROOT-relative paths is written against, or null when
17
+ * they do not say: no recognised entry, a Dockerfile (that build path never
18
+ * consults the runtime), or entries for both runtimes at once.
19
+ */
20
+ export declare function inferRuntime(paths: string[]): Runtime | null;
21
+ /** The first entry filename per runtime — what `init` writes. */
22
+ export declare function entryFor(runtime: Runtime): string;
23
+ /**
24
+ * Starter handlers. The node one is byte-identical to the portal editor's
25
+ * seed (frontend/lib/functions/files.ts STARTER) so a function scaffolded
26
+ * from the terminal and one pasted in the browser start from the same file.
27
+ * Both are HANDLERS, not servers: the platform's shim owns the listener and
28
+ * imports this file expecting a default export (node) or `handler` (python).
29
+ */
30
+ export declare const STARTERS: Record<Runtime, string>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Runtime knowledge the CLI needs offline: which handler filenames belong to
3
+ * which runtime, and the starter each `synteq function init` scaffolds.
4
+ *
5
+ * HANDLER_ENTRIES mirrors the BACKEND's table verbatim
6
+ * (portal/backend/app/services/functions/source_shape.py::HANDLER_ENTRIES),
7
+ * in the same order, so what the CLI infers from a directory is what the
8
+ * build's shaping step will conclude from the same files. The two sets are
9
+ * disjoint by extension, which is what makes inference sound.
10
+ */
11
+ export const RUNTIMES = ["node22", "python312"];
12
+ export const RUNTIME_LABELS = {
13
+ node22: "Node.js 22",
14
+ python312: "Python 3.12",
15
+ };
16
+ export const HANDLER_ENTRIES = {
17
+ node22: ["index.mjs", "index.js", "handler.mjs", "handler.js", "main.mjs", "main.js"],
18
+ python312: ["handler.py", "main.py", "index.py", "app.py"],
19
+ };
20
+ /**
21
+ * The runtime a set of ROOT-relative paths is written against, or null when
22
+ * they do not say: no recognised entry, a Dockerfile (that build path never
23
+ * consults the runtime), or entries for both runtimes at once.
24
+ */
25
+ export function inferRuntime(paths) {
26
+ const names = new Set(paths.map((p) => p.replace(/^\.\//, "").trim()).filter(Boolean));
27
+ if (names.has("Dockerfile"))
28
+ return null;
29
+ const hits = RUNTIMES.filter((rt) => HANDLER_ENTRIES[rt].some((e) => names.has(e)));
30
+ return hits.length === 1 ? hits[0] : null;
31
+ }
32
+ /** The first entry filename per runtime — what `init` writes. */
33
+ export function entryFor(runtime) {
34
+ return HANDLER_ENTRIES[runtime][0];
35
+ }
36
+ /**
37
+ * Starter handlers. The node one is byte-identical to the portal editor's
38
+ * seed (frontend/lib/functions/files.ts STARTER) so a function scaffolded
39
+ * from the terminal and one pasted in the browser start from the same file.
40
+ * Both are HANDLERS, not servers: the platform's shim owns the listener and
41
+ * imports this file expecting a default export (node) or `handler` (python).
42
+ */
43
+ export const STARTERS = {
44
+ node22: `export default async function handler(event, context) {
45
+ return { hello: "world", path: event.path };
46
+ }
47
+ `,
48
+ python312: `def handler(event, context):
49
+ return {"hello": "world", "path": event["path"]}
50
+ `,
51
+ };
52
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/functions-support/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAGzD,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,aAAa;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAuC;IACjE,MAAM,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC;IACrF,SAAS,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC;CAC3D,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA4B;IAC/C,MAAM,EAAE;;;CAGT;IACC,SAAS,EAAE;;CAEZ;CACA,CAAC"}
@@ -0,0 +1,92 @@
1
+ import type { FnSourceFile } from "../api/types.js";
2
+ /**
3
+ * Collect a directory into the `files` shape POST /functions/{id}/deploys/source
4
+ * takes: plain UTF-8 text files, root-relative slash paths, sorted.
5
+ *
6
+ * CONTRACT (the deploy command depends on every line of this):
7
+ * - Walks `dir` recursively. Skips, at any depth: node_modules, .git,
8
+ * .synteq (reserved for the platform shim — the backend refuses it),
9
+ * __pycache__, .venv, venv, dist, build, target, .DS_Store, *.log,
10
+ * dotenv files (`.env`, `.env.*` except `.env.example` / `.env.sample` /
11
+ * `.env.template`; reason "dotenv", no opt-in), and anything matched by
12
+ * a `.synteqignore` in `dir` (gitignore-style globs, one per line, `#`
13
+ * comments) when one exists.
14
+ * - Skips binary files (a NUL byte in the first 8 KiB) and any single file
15
+ * larger than the whole source cap — each skip is reported in `skipped`
16
+ * with a reason so the command can print them, never silently dropped.
17
+ * - Refuses paths longer than 255 chars or containing `..` (backend limits).
18
+ * - Enforces `maxFiles` on the number of collected files (the backend's
19
+ * bundle member ceiling, `Fn.maxSourceFiles`; MAX_SOURCE_FILES without
20
+ * one). Over it throws SourceTooManyFilesError naming the limit.
21
+ * - Enforces `maxTotalBytes` on the sum of UTF-8 content. The caller passes
22
+ * the backend's LIVE cap (`Fn.maxSourceBytes`, admin-editable); without
23
+ * one, MAX_TOTAL_BYTES is the backend's own default. Over it throws
24
+ * SourceTooLargeError naming the total and the largest offenders so the
25
+ * user knows what to exclude.
26
+ * - Never follows symlinks.
27
+ * - Returns files sorted by path so a re-run of an unchanged tree produces
28
+ * an identical payload.
29
+ */
30
+ /**
31
+ * Fallback source ceiling, used only when the API row carries no
32
+ * `maxSourceBytes` (an older backend). Mirrors the backend's
33
+ * `DEFAULT_MAX_FUNCTION_SOURCE_MB` (5 MB); the live number is what an admin
34
+ * set in portal settings and rides on every GET /functions row.
35
+ */
36
+ export declare const MAX_TOTAL_BYTES = 5000000;
37
+ /**
38
+ * Fallback file-count ceiling, used only when the API row carries no
39
+ * `maxSourceFiles` (an older backend). Mirrors the backend's
40
+ * `source_shape.MAX_TARBALL_MEMBERS`.
41
+ */
42
+ export declare const MAX_SOURCE_FILES = 4096;
43
+ /**
44
+ * The editor's inline `files` shape takes at most this many files
45
+ * (`functions_deploys._MAX_SOURCE_FILES`). A tree that fits is sent that way
46
+ * so the deployed source stays re-openable in the portal editor; a larger one
47
+ * goes up as a tarball (`sourceB64`), which only the caps above bound.
48
+ */
49
+ export declare const EDITOR_MAX_FILES = 32;
50
+ export interface CollectOptions {
51
+ /** The backend's source cap for this function, in bytes. */
52
+ maxTotalBytes?: number;
53
+ /** The backend's file-count cap for this function. */
54
+ maxFiles?: number;
55
+ }
56
+ export interface SkippedFile {
57
+ path: string;
58
+ reason: "binary" | "too-large" | "ignored" | "dotenv" | "symlink" | "bad-path";
59
+ }
60
+ export interface CollectedSource {
61
+ files: FnSourceFile[];
62
+ skipped: SkippedFile[];
63
+ totalBytes: number;
64
+ }
65
+ export declare class SourceTooLargeError extends Error {
66
+ readonly totalBytes: number;
67
+ readonly largest: {
68
+ path: string;
69
+ bytes: number;
70
+ }[];
71
+ readonly limitBytes: number;
72
+ constructor(totalBytes: number, largest: {
73
+ path: string;
74
+ bytes: number;
75
+ }[], limitBytes?: number);
76
+ }
77
+ export declare class SourceTooManyFilesError extends Error {
78
+ readonly fileCount: number;
79
+ readonly limitFiles: number;
80
+ constructor(fileCount: number, limitFiles?: number);
81
+ }
82
+ interface IgnoreRule {
83
+ re: RegExp;
84
+ /** Trailing "/" — only matches directories. */
85
+ dirOnly: boolean;
86
+ /** Leading "/" or an interior "/" — matched against the full root-relative path. */
87
+ anchored: boolean;
88
+ }
89
+ export declare function parseIgnoreFile(text: string): IgnoreRule[];
90
+ export declare function collectSourceFiles(dir: string, opts?: CollectOptions): Promise<CollectedSource>;
91
+ export declare function tarballFromFiles(files: FnSourceFile[]): Buffer;
92
+ export {};
@@ -0,0 +1,343 @@
1
+ import { readdir, lstat, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { gzipSync } from "node:zlib";
4
+ import { isDotenvName } from "../apps-support/deploy.js";
5
+ /**
6
+ * Collect a directory into the `files` shape POST /functions/{id}/deploys/source
7
+ * takes: plain UTF-8 text files, root-relative slash paths, sorted.
8
+ *
9
+ * CONTRACT (the deploy command depends on every line of this):
10
+ * - Walks `dir` recursively. Skips, at any depth: node_modules, .git,
11
+ * .synteq (reserved for the platform shim — the backend refuses it),
12
+ * __pycache__, .venv, venv, dist, build, target, .DS_Store, *.log,
13
+ * dotenv files (`.env`, `.env.*` except `.env.example` / `.env.sample` /
14
+ * `.env.template`; reason "dotenv", no opt-in), and anything matched by
15
+ * a `.synteqignore` in `dir` (gitignore-style globs, one per line, `#`
16
+ * comments) when one exists.
17
+ * - Skips binary files (a NUL byte in the first 8 KiB) and any single file
18
+ * larger than the whole source cap — each skip is reported in `skipped`
19
+ * with a reason so the command can print them, never silently dropped.
20
+ * - Refuses paths longer than 255 chars or containing `..` (backend limits).
21
+ * - Enforces `maxFiles` on the number of collected files (the backend's
22
+ * bundle member ceiling, `Fn.maxSourceFiles`; MAX_SOURCE_FILES without
23
+ * one). Over it throws SourceTooManyFilesError naming the limit.
24
+ * - Enforces `maxTotalBytes` on the sum of UTF-8 content. The caller passes
25
+ * the backend's LIVE cap (`Fn.maxSourceBytes`, admin-editable); without
26
+ * one, MAX_TOTAL_BYTES is the backend's own default. Over it throws
27
+ * SourceTooLargeError naming the total and the largest offenders so the
28
+ * user knows what to exclude.
29
+ * - Never follows symlinks.
30
+ * - Returns files sorted by path so a re-run of an unchanged tree produces
31
+ * an identical payload.
32
+ */
33
+ /**
34
+ * Fallback source ceiling, used only when the API row carries no
35
+ * `maxSourceBytes` (an older backend). Mirrors the backend's
36
+ * `DEFAULT_MAX_FUNCTION_SOURCE_MB` (5 MB); the live number is what an admin
37
+ * set in portal settings and rides on every GET /functions row.
38
+ */
39
+ export const MAX_TOTAL_BYTES = 5_000_000;
40
+ /**
41
+ * Fallback file-count ceiling, used only when the API row carries no
42
+ * `maxSourceFiles` (an older backend). Mirrors the backend's
43
+ * `source_shape.MAX_TARBALL_MEMBERS`.
44
+ */
45
+ export const MAX_SOURCE_FILES = 4096;
46
+ /**
47
+ * The editor's inline `files` shape takes at most this many files
48
+ * (`functions_deploys._MAX_SOURCE_FILES`). A tree that fits is sent that way
49
+ * so the deployed source stays re-openable in the portal editor; a larger one
50
+ * goes up as a tarball (`sourceB64`), which only the caps above bound.
51
+ */
52
+ export const EDITOR_MAX_FILES = 32;
53
+ export class SourceTooLargeError extends Error {
54
+ totalBytes;
55
+ largest;
56
+ limitBytes;
57
+ constructor(totalBytes, largest, limitBytes = MAX_TOTAL_BYTES) {
58
+ super(`Source is ${(totalBytes / 1024).toFixed(0)} KiB; the limit is ${(limitBytes / 1024).toFixed(0)} KiB. ` +
59
+ `Largest: ${largest.map((f) => `${f.path} (${(f.bytes / 1024).toFixed(0)} KiB)`).join(", ")}. ` +
60
+ "Exclude files with a .synteqignore, or add a Dockerfile and deploy as a container.");
61
+ this.totalBytes = totalBytes;
62
+ this.largest = largest;
63
+ this.limitBytes = limitBytes;
64
+ this.name = "SourceTooLargeError";
65
+ }
66
+ }
67
+ export class SourceTooManyFilesError extends Error {
68
+ fileCount;
69
+ limitFiles;
70
+ constructor(fileCount, limitFiles = MAX_SOURCE_FILES) {
71
+ super(`Source has ${fileCount} files; the limit is ${limitFiles}. ` +
72
+ "Exclude files with a .synteqignore, or add a Dockerfile and deploy as a container.");
73
+ this.fileCount = fileCount;
74
+ this.limitFiles = limitFiles;
75
+ this.name = "SourceTooManyFilesError";
76
+ }
77
+ }
78
+ /** Names skipped at any depth, whether they name a directory or a file. */
79
+ const SKIP_NAMES = new Set([
80
+ "node_modules",
81
+ ".git",
82
+ ".synteq",
83
+ "__pycache__",
84
+ ".venv",
85
+ "venv",
86
+ "dist",
87
+ "build",
88
+ "target",
89
+ ".DS_Store",
90
+ ]);
91
+ /** Max root-relative path length the backend accepts. */
92
+ const MAX_PATH_CHARS = 255;
93
+ /** How much of a file we sniff for a NUL byte before calling it binary. */
94
+ const BINARY_SNIFF_BYTES = 8 * 1024;
95
+ /** How many offenders SourceTooLargeError names. */
96
+ const LARGEST_REPORTED = 5;
97
+ /** Translate one gitignore-ish glob into a RegExp over a `/`-joined path. */
98
+ function globToRegExp(glob) {
99
+ let re = "";
100
+ for (let i = 0; i < glob.length; i++) {
101
+ const c = glob[i];
102
+ if (c === "*") {
103
+ if (glob[i + 1] === "*") {
104
+ // `**` spans separators. `a/**/b` must also match `a/b`, so swallow a
105
+ // following slash into the optional group.
106
+ i++;
107
+ if (glob[i + 1] === "/") {
108
+ i++;
109
+ re += "(?:.*/)?";
110
+ }
111
+ else {
112
+ re += ".*";
113
+ }
114
+ }
115
+ else {
116
+ re += "[^/]*";
117
+ }
118
+ }
119
+ else if (c === "?") {
120
+ re += "[^/]";
121
+ }
122
+ else {
123
+ re += c.replace(/[.+^${}()|[\]\\]/g, "\\$&");
124
+ }
125
+ }
126
+ return new RegExp(`^${re}$`);
127
+ }
128
+ export function parseIgnoreFile(text) {
129
+ const rules = [];
130
+ for (const raw of text.split(/\r?\n/)) {
131
+ const line = raw.trim();
132
+ if (!line || line.startsWith("#"))
133
+ continue;
134
+ let pattern = line;
135
+ const dirOnly = pattern.endsWith("/");
136
+ if (dirOnly)
137
+ pattern = pattern.slice(0, -1);
138
+ const leadingSlash = pattern.startsWith("/");
139
+ if (leadingSlash)
140
+ pattern = pattern.slice(1);
141
+ if (!pattern)
142
+ continue;
143
+ // gitignore: a pattern with no interior slash matches at any depth.
144
+ const anchored = leadingSlash || pattern.includes("/");
145
+ rules.push({ re: globToRegExp(pattern), dirOnly, anchored });
146
+ }
147
+ return rules;
148
+ }
149
+ /**
150
+ * Does `relPath` (root-relative, forward slashes, no trailing slash) match?
151
+ * `isDir` gates the trailing-slash rules. An unanchored rule is tried against
152
+ * every path segment, matching gitignore's "matches at any depth".
153
+ */
154
+ function ignoreMatches(rules, relPath, isDir) {
155
+ const base = path.posix.basename(relPath);
156
+ for (const rule of rules) {
157
+ if (rule.dirOnly && !isDir)
158
+ continue;
159
+ if (rule.re.test(relPath))
160
+ return true;
161
+ if (!rule.anchored && rule.re.test(base))
162
+ return true;
163
+ }
164
+ return false;
165
+ }
166
+ async function readIgnoreRules(dir) {
167
+ try {
168
+ const text = await readFile(path.join(dir, ".synteqignore"), "utf8");
169
+ return parseIgnoreFile(text);
170
+ }
171
+ catch {
172
+ return [];
173
+ }
174
+ }
175
+ // ── walk ────────────────────────────────────────────────────────────────────
176
+ function isBinary(buf) {
177
+ return buf.subarray(0, BINARY_SNIFF_BYTES).includes(0);
178
+ }
179
+ export async function collectSourceFiles(dir, opts = {}) {
180
+ const limit = opts.maxTotalBytes ?? MAX_TOTAL_BYTES;
181
+ const maxFiles = opts.maxFiles ?? MAX_SOURCE_FILES;
182
+ const root = path.resolve(dir);
183
+ const rules = await readIgnoreRules(root);
184
+ const files = [];
185
+ const skipped = [];
186
+ const sizes = [];
187
+ let totalBytes = 0;
188
+ const walk = async (absDir, relDir) => {
189
+ let entries;
190
+ try {
191
+ entries = await readdir(absDir);
192
+ }
193
+ catch {
194
+ return;
195
+ }
196
+ entries.sort();
197
+ for (const name of entries) {
198
+ const rel = relDir ? `${relDir}/${name}` : name;
199
+ const abs = path.join(absDir, name);
200
+ // `.synteqignore` itself is metadata, not source.
201
+ if (rel === ".synteqignore")
202
+ continue;
203
+ if (SKIP_NAMES.has(name) || name.endsWith(".log")) {
204
+ skipped.push({ path: rel, reason: "ignored" });
205
+ continue;
206
+ }
207
+ // `.env` / `.env.*` (not `.env.example`): never packed, on any path —
208
+ // the same rule as the app pack and the orchestrator's extraction.
209
+ // Reported with its own reason so the deploy can say where the
210
+ // variables go instead.
211
+ if (isDotenvName(name)) {
212
+ skipped.push({ path: rel, reason: "dotenv" });
213
+ continue;
214
+ }
215
+ // lstat, never stat: a symlink must be reported, never traversed.
216
+ let st;
217
+ try {
218
+ st = await lstat(abs);
219
+ }
220
+ catch {
221
+ continue;
222
+ }
223
+ if (st.isSymbolicLink()) {
224
+ skipped.push({ path: rel, reason: "symlink" });
225
+ continue;
226
+ }
227
+ if (st.isDirectory()) {
228
+ if (ignoreMatches(rules, rel, true)) {
229
+ skipped.push({ path: rel, reason: "ignored" });
230
+ continue;
231
+ }
232
+ await walk(abs, rel);
233
+ continue;
234
+ }
235
+ if (!st.isFile()) {
236
+ // Sockets, FIFOs, devices — nothing the backend can take.
237
+ skipped.push({ path: rel, reason: "ignored" });
238
+ continue;
239
+ }
240
+ if (ignoreMatches(rules, rel, false)) {
241
+ skipped.push({ path: rel, reason: "ignored" });
242
+ continue;
243
+ }
244
+ if (rel.length > MAX_PATH_CHARS || rel.split("/").includes("..")) {
245
+ skipped.push({ path: rel, reason: "bad-path" });
246
+ continue;
247
+ }
248
+ // A file bigger than the whole cap can never fit; skip it before
249
+ // reading it so the walk stays cheap on a stray multi-GB artefact.
250
+ if (st.size > limit) {
251
+ skipped.push({ path: rel, reason: "too-large" });
252
+ continue;
253
+ }
254
+ let buf;
255
+ try {
256
+ buf = await readFile(abs);
257
+ }
258
+ catch {
259
+ skipped.push({ path: rel, reason: "ignored" });
260
+ continue;
261
+ }
262
+ if (isBinary(buf)) {
263
+ skipped.push({ path: rel, reason: "binary" });
264
+ continue;
265
+ }
266
+ const content = buf.toString("utf8");
267
+ const bytes = Buffer.byteLength(content, "utf8");
268
+ files.push({ path: rel, content });
269
+ sizes.push({ path: rel, bytes });
270
+ totalBytes += bytes;
271
+ }
272
+ };
273
+ await walk(root, "");
274
+ if (totalBytes > limit) {
275
+ const largest = [...sizes]
276
+ .sort((a, b) => b.bytes - a.bytes || a.path.localeCompare(b.path))
277
+ .slice(0, LARGEST_REPORTED);
278
+ throw new SourceTooLargeError(totalBytes, largest, limit);
279
+ }
280
+ if (files.length > maxFiles)
281
+ throw new SourceTooManyFilesError(files.length, maxFiles);
282
+ files.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
283
+ skipped.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
284
+ return { files, skipped, totalBytes };
285
+ }
286
+ // ── tarball ─────────────────────────────────────────────────────────────────
287
+ //
288
+ // The `sourceB64` shape: a gzipped tar of the collected files. Hand-rolled
289
+ // ustar (no new dependency) and DETERMINISTIC like the backend's own
290
+ // `tar_from_members` — sorted paths, mtime/uid/gid zeroed, one mode, no owner
291
+ // names — so an unchanged tree uploads identical bytes. A path over the
292
+ // 100-byte ustar name field gets a POSIX pax `path` record ahead of it.
293
+ const BLOCK = 512;
294
+ function octal(n, width) {
295
+ return n.toString(8).padStart(width - 1, "0") + "\0";
296
+ }
297
+ function tarHeader(name, size, type) {
298
+ const h = Buffer.alloc(BLOCK);
299
+ name.copy(h, 0, 0, Math.min(name.length, 100));
300
+ h.write(octal(0o644, 8), 100, "ascii");
301
+ h.write(octal(0, 8), 108, "ascii");
302
+ h.write(octal(0, 8), 116, "ascii");
303
+ h.write(octal(size, 12), 124, "ascii");
304
+ h.write(octal(0, 12), 136, "ascii");
305
+ h.write(" ", 148, "ascii");
306
+ h.write(type, 156, "ascii");
307
+ h.write("ustar\0", 257, "ascii");
308
+ h.write("00", 263, "ascii");
309
+ let sum = 0;
310
+ for (const b of h)
311
+ sum += b;
312
+ h.write(sum.toString(8).padStart(6, "0") + "\0 ", 148, "ascii");
313
+ return h;
314
+ }
315
+ function padded(data) {
316
+ const rem = data.length % BLOCK;
317
+ return rem ? [data, Buffer.alloc(BLOCK - rem)] : [data];
318
+ }
319
+ /** One pax record: "<len> path=<value>\n", where <len> counts itself. */
320
+ function paxPathRecord(p) {
321
+ const body = ` path=${p}\n`;
322
+ const bodyLen = Buffer.byteLength(body, "utf8");
323
+ let len = bodyLen + 1;
324
+ while (String(len).length + bodyLen !== len)
325
+ len = String(len).length + bodyLen;
326
+ return Buffer.from(`${len}${body}`, "utf8");
327
+ }
328
+ export function tarballFromFiles(files) {
329
+ const parts = [];
330
+ const sorted = [...files].sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
331
+ for (const f of sorted) {
332
+ const name = Buffer.from(f.path, "utf8");
333
+ const data = Buffer.from(f.content, "utf8");
334
+ if (name.length > 100) {
335
+ const pax = paxPathRecord(f.path);
336
+ parts.push(tarHeader(Buffer.from("././@PaxHeader"), pax.length, "x"), ...padded(pax));
337
+ }
338
+ parts.push(tarHeader(name, data.length, "0"), ...padded(data));
339
+ }
340
+ parts.push(Buffer.alloc(BLOCK * 2));
341
+ return gzipSync(Buffer.concat(parts));
342
+ }
343
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/functions-support/source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type AuthMode, type ScopeSet } from "../auth/scope.js";
2
+ export interface HelpCommand {
3
+ id: string;
4
+ apiKeyScope?: string;
5
+ hidden: boolean;
6
+ }
7
+ /** Given the oclif command list, mode, and granted scopes, return a new
8
+ * list where commands that shouldn't render in --help have `hidden: true`.
9
+ * Existing hidden=true entries stay hidden regardless. */
10
+ export declare function computeVisibleCommands<T extends HelpCommand>(cmds: readonly T[], mode: AuthMode, granted: ScopeSet): T[];
@@ -0,0 +1,9 @@
1
+ import { filterCommandIdsByScope } from "../auth/scope.js";
2
+ /** Given the oclif command list, mode, and granted scopes, return a new
3
+ * list where commands that shouldn't render in --help have `hidden: true`.
4
+ * Existing hidden=true entries stay hidden regardless. */
5
+ export function computeVisibleCommands(cmds, mode, granted) {
6
+ const keep = filterCommandIdsByScope(cmds.map((c) => ({ id: c.id, apiKeyScope: c.apiKeyScope })), mode, granted);
7
+ return cmds.map((c) => (c.hidden || keep.has(c.id) ? c : { ...c, hidden: true }));
8
+ }
9
+ //# sourceMappingURL=help-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-filter.js","sourceRoot":"","sources":["../../src/help/help-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAgC,MAAM,kBAAkB,CAAC;AAQzF;;2DAE2D;AAC3D,MAAM,UAAU,sBAAsB,CACpC,IAAkB,EAClB,IAAc,EACd,OAAiB;IAEjB,MAAM,IAAI,GAAG,uBAAuB,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAC3D,IAAI,EACJ,OAAO,CACR,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Help } from "@oclif/core";
2
+ import { type HelpCommand } from "./help-filter.js";
3
+ /** A minimal shape of oclif's Command.Loadable — just enough to load the
4
+ * live command class and read its cached id/hidden fields. Kept separate
5
+ * from oclif's own type so this can be unit-tested with plain mocks. */
6
+ export interface LoadableCommand {
7
+ id: string;
8
+ hidden: boolean;
9
+ load(): Promise<unknown>;
10
+ }
11
+ /** this.config.commands is oclif's cached Command.Cached[] descriptor
12
+ * list. That descriptor is built from each command's KNOWN static fields
13
+ * (description, examples, flags, hidden, ...) — a custom static like
14
+ * `apiKeyScope` only lives on the live command class and is NOT
15
+ * guaranteed to survive onto the cached descriptor (e.g. a stale
16
+ * oclif.manifest.json built before the field existed short-circuits
17
+ * oclif's fresh-cache build entirely, per-field). Reading `apiKeyScope`
18
+ * off the cached descriptor can silently return undefined, which
19
+ * scopeAllowsCommand() fail-closes to session-only, hiding every command
20
+ * under api-key mode. Load each command's live class instead (oclif's
21
+ * standard `Loadable.load()` escape hatch — modules are cached after
22
+ * first import, so this is cheap and only runs once for --help) and read
23
+ * apiKeyScope from there. Exported standalone so it can be unit-tested
24
+ * against mock Loadable objects without spinning up a real oclif Config. */
25
+ export declare function enrichWithLiveApiKeyScope(cmds: readonly LoadableCommand[]): Promise<HelpCommand[]>;
26
+ export default class ScopeAwareHelp extends Help {
27
+ showHelp(argv: string[]): Promise<void>;
28
+ showRootHelp(): Promise<void>;
29
+ private applyScopeFilter;
30
+ }