@seamapi/cli 0.18.2 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/bin/cli.js +73 -249
  2. package/bin/cli.js.map +1 -1
  3. package/lib/args/coerce.d.ts +28 -0
  4. package/lib/args/coerce.js +131 -0
  5. package/lib/args/coerce.js.map +1 -0
  6. package/lib/{util/cli-args.d.ts → args/parse.d.ts} +12 -15
  7. package/lib/{util/cli-args.js → args/parse.js} +21 -24
  8. package/lib/args/parse.js.map +1 -0
  9. package/lib/args/validate.d.ts +23 -0
  10. package/lib/args/validate.js +42 -0
  11. package/lib/args/validate.js.map +1 -0
  12. package/lib/auth/operations.d.ts +54 -0
  13. package/lib/auth/operations.js +115 -0
  14. package/lib/auth/operations.js.map +1 -0
  15. package/lib/{validate-token.js → auth/validate-token.js} +2 -2
  16. package/lib/auth/validate-token.js.map +1 -0
  17. package/lib/blueprint/cache.d.ts +16 -0
  18. package/lib/blueprint/cache.js +73 -0
  19. package/lib/blueprint/cache.js.map +1 -0
  20. package/lib/blueprint/endpoint.d.ts +14 -0
  21. package/lib/{get-response-key.js → blueprint/endpoint.js} +11 -2
  22. package/lib/blueprint/endpoint.js.map +1 -0
  23. package/lib/blueprint/index.d.ts +12 -0
  24. package/lib/blueprint/index.js +10 -0
  25. package/lib/blueprint/index.js.map +1 -0
  26. package/lib/blueprint/source-npm.d.ts +10 -0
  27. package/lib/{blueprint.js → blueprint/source-npm.js} +20 -74
  28. package/lib/blueprint/source-npm.js.map +1 -0
  29. package/lib/blueprint/source-remote.d.ts +6 -0
  30. package/lib/blueprint/source-remote.js +14 -0
  31. package/lib/blueprint/source-remote.js.map +1 -0
  32. package/lib/commands/api-command.d.ts +8 -0
  33. package/lib/commands/api-command.js +71 -0
  34. package/lib/commands/api-command.js.map +1 -0
  35. package/lib/commands/local/completion.d.ts +18 -0
  36. package/lib/commands/local/completion.js +35 -0
  37. package/lib/commands/local/completion.js.map +1 -0
  38. package/lib/commands/local/config-reveal-location.d.ts +2 -0
  39. package/lib/commands/local/config-reveal-location.js +15 -0
  40. package/lib/commands/local/config-reveal-location.js.map +1 -0
  41. package/lib/commands/local/config-set-fake-server.d.ts +3 -0
  42. package/lib/commands/local/config-set-fake-server.js +20 -0
  43. package/lib/commands/local/config-set-fake-server.js.map +1 -0
  44. package/lib/commands/local/config-use-remote-api-defs.d.ts +2 -0
  45. package/lib/commands/local/config-use-remote-api-defs.js +20 -0
  46. package/lib/commands/local/config-use-remote-api-defs.js.map +1 -0
  47. package/lib/commands/local/health.d.ts +2 -0
  48. package/lib/commands/local/health.js +18 -0
  49. package/lib/commands/local/health.js.map +1 -0
  50. package/lib/commands/local/login.d.ts +2 -0
  51. package/lib/commands/local/login.js +35 -0
  52. package/lib/commands/local/login.js.map +1 -0
  53. package/lib/commands/local/logout.d.ts +2 -0
  54. package/lib/commands/local/logout.js +17 -0
  55. package/lib/commands/local/logout.js.map +1 -0
  56. package/lib/commands/local/select-server.d.ts +2 -0
  57. package/lib/commands/local/select-server.js +27 -0
  58. package/lib/commands/local/select-server.js.map +1 -0
  59. package/lib/commands/local/select-workspace.d.ts +2 -0
  60. package/lib/commands/local/select-workspace.js +22 -0
  61. package/lib/commands/local/select-workspace.js.map +1 -0
  62. package/lib/commands/local/wizard.d.ts +9 -0
  63. package/lib/commands/local/wizard.js +28 -0
  64. package/lib/commands/local/wizard.js.map +1 -0
  65. package/lib/commands/registry.d.ts +54 -0
  66. package/lib/commands/registry.js +64 -0
  67. package/lib/commands/registry.js.map +1 -0
  68. package/lib/{command-spec.d.ts → commands/spec.d.ts} +8 -12
  69. package/lib/{command-spec.js → commands/spec.js} +27 -120
  70. package/lib/commands/spec.js.map +1 -0
  71. package/lib/config/config-store.d.ts +23 -8
  72. package/lib/config/config-store.js +16 -42
  73. package/lib/config/config-store.js.map +1 -1
  74. package/lib/config/index.d.ts +2 -1
  75. package/lib/config/index.js +2 -1
  76. package/lib/config/index.js.map +1 -1
  77. package/lib/config/memory-config-store.d.ts +21 -0
  78. package/lib/config/memory-config-store.js +48 -0
  79. package/lib/config/memory-config-store.js.map +1 -0
  80. package/lib/config/migrate.js +1 -1
  81. package/lib/config/migrate.js.map +1 -1
  82. package/lib/config/values.d.ts +12 -0
  83. package/lib/config/values.js +50 -0
  84. package/lib/config/values.js.map +1 -0
  85. package/lib/context.d.ts +37 -0
  86. package/lib/context.js +31 -0
  87. package/lib/context.js.map +1 -0
  88. package/lib/env.d.ts +5 -0
  89. package/lib/env.js +5 -0
  90. package/lib/env.js.map +1 -1
  91. package/lib/errors.d.ts +31 -0
  92. package/lib/errors.js +58 -0
  93. package/lib/errors.js.map +1 -0
  94. package/lib/http/api.d.ts +37 -0
  95. package/lib/http/api.js +20 -0
  96. package/lib/http/api.js.map +1 -0
  97. package/lib/http/client.d.ts +4 -0
  98. package/lib/{get-seam.js → http/client.js} +16 -17
  99. package/lib/http/client.js.map +1 -0
  100. package/lib/http/follow-ups.d.ts +6 -0
  101. package/lib/http/follow-ups.js +30 -0
  102. package/lib/http/follow-ups.js.map +1 -0
  103. package/lib/http/memory-seam-api.d.ts +22 -0
  104. package/lib/http/memory-seam-api.js +41 -0
  105. package/lib/http/memory-seam-api.js.map +1 -0
  106. package/lib/http/request.d.ts +19 -0
  107. package/lib/http/request.js +39 -0
  108. package/lib/http/request.js.map +1 -0
  109. package/lib/{interact-for-access-code.js → interactions/access-code.js} +4 -4
  110. package/lib/interactions/access-code.js.map +1 -0
  111. package/lib/{interact-for-acs-entrance.js → interactions/acs-entrance.js} +3 -3
  112. package/lib/interactions/acs-entrance.js.map +1 -0
  113. package/lib/{interact-for-acs-system.js → interactions/acs-system.js} +3 -3
  114. package/lib/interactions/acs-system.js.map +1 -0
  115. package/lib/{interact-for-acs-user.js → interactions/acs-user.js} +4 -4
  116. package/lib/interactions/acs-user.js.map +1 -0
  117. package/lib/{interact-for-action-attempt-poll.js → interactions/action-attempt-poll.js} +5 -5
  118. package/lib/interactions/action-attempt-poll.js.map +1 -0
  119. package/lib/{interact-for-array.js → interactions/array.js} +4 -3
  120. package/lib/interactions/array.js.map +1 -0
  121. package/lib/{interact-for-blueprint-object.d.ts → interactions/blueprint-object.d.ts} +3 -2
  122. package/lib/{interact-for-blueprint-object.js → interactions/blueprint-object.js} +49 -20
  123. package/lib/interactions/blueprint-object.js.map +1 -0
  124. package/lib/{interact-for-command-params.d.ts → interactions/command-params.d.ts} +2 -2
  125. package/lib/{interact-for-command-params.js → interactions/command-params.js} +4 -3
  126. package/lib/interactions/command-params.js.map +1 -0
  127. package/lib/interactions/command-selection.d.ts +10 -0
  128. package/lib/{interact-for-command-selection.js → interactions/command-selection.js} +9 -15
  129. package/lib/interactions/command-selection.js.map +1 -0
  130. package/lib/{interact-for-connected-account.js → interactions/connected-account.js} +3 -3
  131. package/lib/interactions/connected-account.js.map +1 -0
  132. package/lib/{interact-for-custom-metadata.js → interactions/custom-metadata.js} +4 -3
  133. package/lib/interactions/custom-metadata.js.map +1 -0
  134. package/lib/{interact-for-device.js → interactions/device.js} +3 -3
  135. package/lib/interactions/device.js.map +1 -0
  136. package/lib/interactions/index.d.ts +19 -0
  137. package/lib/interactions/index.js +20 -0
  138. package/lib/interactions/index.js.map +1 -0
  139. package/lib/{interact-for-login.js → interactions/login.js} +16 -14
  140. package/lib/interactions/login.js.map +1 -0
  141. package/lib/{interact-for-resource.js → interactions/resource.js} +3 -3
  142. package/lib/interactions/resource.js.map +1 -0
  143. package/lib/{interact-for-server-selection.js → interactions/server-selection.js} +10 -13
  144. package/lib/interactions/server-selection.js.map +1 -0
  145. package/lib/{interact-for-timestamp.js → interactions/timestamp.js} +2 -2
  146. package/lib/interactions/timestamp.js.map +1 -0
  147. package/lib/{interact-for-use-remote-api-defs.js → interactions/use-remote-api-defs.js} +5 -6
  148. package/lib/interactions/use-remote-api-defs.js.map +1 -0
  149. package/lib/{interact-for-user-identity.js → interactions/user-identity.js} +3 -3
  150. package/lib/interactions/user-identity.js.map +1 -0
  151. package/lib/{interact-for-workspace-id.js → interactions/workspace-id.js} +11 -10
  152. package/lib/interactions/workspace-id.js.map +1 -0
  153. package/lib/memory-prompt.d.ts +32 -0
  154. package/lib/memory-prompt.js +41 -0
  155. package/lib/memory-prompt.js.map +1 -0
  156. package/lib/output/get-output.d.ts +1 -1
  157. package/lib/output/get-output.js +1 -1
  158. package/lib/output/get-output.js.map +1 -1
  159. package/lib/output/{create-memory-output.d.ts → memory-output.d.ts} +1 -1
  160. package/lib/output/{create-memory-output.js → memory-output.js} +2 -2
  161. package/lib/output/memory-output.js.map +1 -0
  162. package/lib/output/{create-output.d.ts → output.d.ts} +18 -1
  163. package/lib/output/output.js +46 -0
  164. package/lib/output/output.js.map +1 -0
  165. package/lib/output/read-stdin-json.js.map +1 -0
  166. package/lib/output/resolve-output-format.d.ts +1 -1
  167. package/lib/{util → output}/with-loading.js +1 -1
  168. package/lib/output/with-loading.js.map +1 -0
  169. package/lib/prompt.d.ts +101 -0
  170. package/lib/{util/prompt.js → prompt.js} +83 -56
  171. package/lib/prompt.js.map +1 -0
  172. package/lib/{completion → render/completion}/describe.js +1 -2
  173. package/lib/render/completion/describe.js.map +1 -0
  174. package/lib/{completion → render/completion}/index.d.ts +2 -2
  175. package/lib/{completion → render/completion}/index.js +1 -2
  176. package/lib/render/completion/index.js.map +1 -0
  177. package/lib/{completion → render/completion}/render-bash.d.ts +1 -1
  178. package/lib/{completion → render/completion}/render-bash.js +1 -1
  179. package/lib/render/completion/render-bash.js.map +1 -0
  180. package/lib/{completion → render/completion}/render-fish.d.ts +1 -1
  181. package/lib/render/completion/render-fish.js.map +1 -0
  182. package/lib/{completion → render/completion}/render-zsh.d.ts +1 -1
  183. package/lib/{completion → render/completion}/render-zsh.js +1 -1
  184. package/lib/render/completion/render-zsh.js.map +1 -0
  185. package/lib/{render-help.d.ts → render/help.d.ts} +1 -1
  186. package/lib/{render-help.js → render/help.js} +2 -2
  187. package/lib/render/help.js.map +1 -0
  188. package/lib/render/text.d.ts +4 -0
  189. package/lib/render/text.js +16 -0
  190. package/lib/render/text.js.map +1 -0
  191. package/lib/version.d.ts +2 -2
  192. package/lib/version.js +2 -2
  193. package/package.json +4 -3
  194. package/src/bin/cli.ts +91 -332
  195. package/src/lib/args/coerce.ts +164 -0
  196. package/src/lib/{util/cli-args.ts → args/parse.ts} +30 -25
  197. package/src/lib/args/validate.ts +73 -0
  198. package/src/lib/auth/operations.ts +169 -0
  199. package/src/lib/{validate-token.ts → auth/validate-token.ts} +2 -2
  200. package/src/lib/blueprint/cache.ts +97 -0
  201. package/src/lib/{get-response-key.ts → blueprint/endpoint.ts} +17 -3
  202. package/src/lib/blueprint/index.ts +27 -0
  203. package/src/lib/{blueprint.ts → blueprint/source-npm.ts} +27 -99
  204. package/src/lib/blueprint/source-remote.ts +17 -0
  205. package/src/lib/commands/api-command.ts +109 -0
  206. package/src/lib/commands/local/completion.ts +51 -0
  207. package/src/lib/commands/local/config-reveal-location.ts +16 -0
  208. package/src/lib/commands/local/config-set-fake-server.ts +21 -0
  209. package/src/lib/commands/local/config-use-remote-api-defs.ts +23 -0
  210. package/src/lib/commands/local/health.ts +22 -0
  211. package/src/lib/commands/local/login.ts +42 -0
  212. package/src/lib/commands/local/logout.ts +18 -0
  213. package/src/lib/commands/local/select-server.ts +30 -0
  214. package/src/lib/commands/local/select-workspace.ts +25 -0
  215. package/src/lib/commands/local/wizard.ts +31 -0
  216. package/src/lib/commands/registry.ts +127 -0
  217. package/src/lib/{command-spec.ts → commands/spec.ts} +30 -131
  218. package/src/lib/config/config-store.ts +39 -64
  219. package/src/lib/config/index.ts +8 -1
  220. package/src/lib/config/memory-config-store.ts +62 -0
  221. package/src/lib/config/migrate.ts +1 -1
  222. package/src/lib/config/values.ts +72 -0
  223. package/src/lib/context.ts +84 -0
  224. package/src/lib/env.ts +9 -2
  225. package/src/lib/errors.ts +67 -0
  226. package/src/lib/http/api.ts +61 -0
  227. package/src/lib/{get-seam.ts → http/client.ts} +19 -18
  228. package/src/lib/http/follow-ups.ts +42 -0
  229. package/src/lib/http/memory-seam-api.ts +57 -0
  230. package/src/lib/http/request.ts +69 -0
  231. package/src/lib/{interact-for-access-code.ts → interactions/access-code.ts} +4 -3
  232. package/src/lib/{interact-for-acs-entrance.ts → interactions/acs-entrance.ts} +3 -2
  233. package/src/lib/{interact-for-acs-system.ts → interactions/acs-system.ts} +3 -2
  234. package/src/lib/{interact-for-acs-user.ts → interactions/acs-user.ts} +4 -3
  235. package/src/lib/{interact-for-action-attempt-poll.ts → interactions/action-attempt-poll.ts} +4 -4
  236. package/src/lib/{interact-for-array.ts → interactions/array.ts} +3 -3
  237. package/src/lib/{interact-for-blueprint-object.ts → interactions/blueprint-object.ts} +57 -24
  238. package/src/lib/{interact-for-command-params.ts → interactions/command-params.ts} +6 -4
  239. package/src/lib/{interact-for-command-selection.ts → interactions/command-selection.ts} +11 -23
  240. package/src/lib/{interact-for-connected-account.ts → interactions/connected-account.ts} +3 -2
  241. package/src/lib/{interact-for-custom-metadata.ts → interactions/custom-metadata.ts} +3 -7
  242. package/src/lib/{interact-for-device.ts → interactions/device.ts} +3 -2
  243. package/src/lib/interactions/index.ts +19 -0
  244. package/src/lib/{interact-for-login.ts → interactions/login.ts} +16 -13
  245. package/src/lib/{interact-for-resource.ts → interactions/resource.ts} +2 -2
  246. package/src/lib/{interact-for-server-selection.ts → interactions/server-selection.ts} +12 -17
  247. package/src/lib/{interact-for-timestamp.ts → interactions/timestamp.ts} +1 -1
  248. package/src/lib/{interact-for-use-remote-api-defs.ts → interactions/use-remote-api-defs.ts} +4 -5
  249. package/src/lib/{interact-for-user-identity.ts → interactions/user-identity.ts} +3 -2
  250. package/src/lib/{interact-for-workspace-id.ts → interactions/workspace-id.ts} +10 -17
  251. package/src/lib/memory-prompt.ts +89 -0
  252. package/src/lib/output/get-output.ts +1 -1
  253. package/src/lib/output/{create-memory-output.ts → memory-output.ts} +1 -1
  254. package/src/lib/output/{create-output.ts → output.ts} +47 -32
  255. package/src/lib/output/resolve-output-format.ts +1 -1
  256. package/src/lib/{util → output}/with-loading.ts +1 -1
  257. package/src/lib/prompt.ts +306 -0
  258. package/src/lib/{completion → render/completion}/describe.ts +1 -2
  259. package/src/lib/{completion → render/completion}/index.ts +3 -4
  260. package/src/lib/{completion → render/completion}/render-bash.ts +1 -1
  261. package/src/lib/{completion → render/completion}/render-fish.ts +2 -1
  262. package/src/lib/{completion → render/completion}/render-zsh.ts +2 -1
  263. package/src/lib/{render-help.ts → render/help.ts} +1 -1
  264. package/src/lib/render/text.ts +17 -0
  265. package/src/lib/version.ts +2 -2
  266. package/lib/blueprint.d.ts +0 -7
  267. package/lib/blueprint.js.map +0 -1
  268. package/lib/command-spec.js.map +0 -1
  269. package/lib/completion/describe.js.map +0 -1
  270. package/lib/completion/index.js.map +0 -1
  271. package/lib/completion/render-bash.js.map +0 -1
  272. package/lib/completion/render-fish.js.map +0 -1
  273. package/lib/completion/render-zsh.js.map +0 -1
  274. package/lib/get-api-blueprint.d.ts +0 -6
  275. package/lib/get-api-blueprint.js +0 -18
  276. package/lib/get-api-blueprint.js.map +0 -1
  277. package/lib/get-command-blueprint-def.d.ts +0 -2
  278. package/lib/get-command-blueprint-def.js +0 -11
  279. package/lib/get-command-blueprint-def.js.map +0 -1
  280. package/lib/get-credentials.d.ts +0 -15
  281. package/lib/get-credentials.js +0 -35
  282. package/lib/get-credentials.js.map +0 -1
  283. package/lib/get-current-workspace-id.d.ts +0 -1
  284. package/lib/get-current-workspace-id.js +0 -9
  285. package/lib/get-current-workspace-id.js.map +0 -1
  286. package/lib/get-response-key.d.ts +0 -9
  287. package/lib/get-response-key.js.map +0 -1
  288. package/lib/get-seam.d.ts +0 -3
  289. package/lib/get-seam.js.map +0 -1
  290. package/lib/get-server.d.ts +0 -6
  291. package/lib/get-server.js +0 -17
  292. package/lib/get-server.js.map +0 -1
  293. package/lib/interact-for-access-code.js.map +0 -1
  294. package/lib/interact-for-acs-entrance.js.map +0 -1
  295. package/lib/interact-for-acs-system.js.map +0 -1
  296. package/lib/interact-for-acs-user.js.map +0 -1
  297. package/lib/interact-for-action-attempt-poll.js.map +0 -1
  298. package/lib/interact-for-array.js.map +0 -1
  299. package/lib/interact-for-blueprint-object.js.map +0 -1
  300. package/lib/interact-for-command-params.js.map +0 -1
  301. package/lib/interact-for-command-selection.d.ts +0 -2
  302. package/lib/interact-for-command-selection.js.map +0 -1
  303. package/lib/interact-for-connected-account.js.map +0 -1
  304. package/lib/interact-for-custom-metadata.js.map +0 -1
  305. package/lib/interact-for-device.js.map +0 -1
  306. package/lib/interact-for-login.js.map +0 -1
  307. package/lib/interact-for-resource.js.map +0 -1
  308. package/lib/interact-for-server-selection.js.map +0 -1
  309. package/lib/interact-for-timestamp.js.map +0 -1
  310. package/lib/interact-for-use-remote-api-defs.js.map +0 -1
  311. package/lib/interact-for-user-identity.js.map +0 -1
  312. package/lib/interact-for-workspace-id.js.map +0 -1
  313. package/lib/output/create-memory-output.js.map +0 -1
  314. package/lib/output/create-output.js +0 -34
  315. package/lib/output/create-output.js.map +0 -1
  316. package/lib/render-help.js.map +0 -1
  317. package/lib/types.d.ts +0 -6
  318. package/lib/types.js +0 -2
  319. package/lib/types.js.map +0 -1
  320. package/lib/util/cli-args.js.map +0 -1
  321. package/lib/util/ellipsis.d.ts +0 -1
  322. package/lib/util/ellipsis.js +0 -6
  323. package/lib/util/ellipsis.js.map +0 -1
  324. package/lib/util/prompt.d.ts +0 -80
  325. package/lib/util/prompt.js.map +0 -1
  326. package/lib/util/read-stdin-json.js.map +0 -1
  327. package/lib/util/request-seam-api.d.ts +0 -7
  328. package/lib/util/request-seam-api.js +0 -26
  329. package/lib/util/request-seam-api.js.map +0 -1
  330. package/lib/util/with-loading.js.map +0 -1
  331. package/lib/validate-token.js.map +0 -1
  332. package/src/lib/get-api-blueprint.ts +0 -31
  333. package/src/lib/get-command-blueprint-def.ts +0 -15
  334. package/src/lib/get-credentials.ts +0 -38
  335. package/src/lib/get-current-workspace-id.ts +0 -9
  336. package/src/lib/get-server.ts +0 -20
  337. package/src/lib/types.ts +0 -7
  338. package/src/lib/util/ellipsis.ts +0 -4
  339. package/src/lib/util/prompt.ts +0 -229
  340. package/src/lib/util/request-seam-api.ts +0 -47
  341. /package/lib/{validate-token.d.ts → auth/validate-token.d.ts} +0 -0
  342. /package/lib/{interact-for-access-code.d.ts → interactions/access-code.d.ts} +0 -0
  343. /package/lib/{interact-for-acs-entrance.d.ts → interactions/acs-entrance.d.ts} +0 -0
  344. /package/lib/{interact-for-acs-system.d.ts → interactions/acs-system.d.ts} +0 -0
  345. /package/lib/{interact-for-acs-user.d.ts → interactions/acs-user.d.ts} +0 -0
  346. /package/lib/{interact-for-action-attempt-poll.d.ts → interactions/action-attempt-poll.d.ts} +0 -0
  347. /package/lib/{interact-for-array.d.ts → interactions/array.d.ts} +0 -0
  348. /package/lib/{interact-for-connected-account.d.ts → interactions/connected-account.d.ts} +0 -0
  349. /package/lib/{interact-for-custom-metadata.d.ts → interactions/custom-metadata.d.ts} +0 -0
  350. /package/lib/{interact-for-device.d.ts → interactions/device.d.ts} +0 -0
  351. /package/lib/{interact-for-login.d.ts → interactions/login.d.ts} +0 -0
  352. /package/lib/{interact-for-resource.d.ts → interactions/resource.d.ts} +0 -0
  353. /package/lib/{interact-for-server-selection.d.ts → interactions/server-selection.d.ts} +0 -0
  354. /package/lib/{interact-for-timestamp.d.ts → interactions/timestamp.d.ts} +0 -0
  355. /package/lib/{interact-for-use-remote-api-defs.d.ts → interactions/use-remote-api-defs.d.ts} +0 -0
  356. /package/lib/{interact-for-user-identity.d.ts → interactions/user-identity.d.ts} +0 -0
  357. /package/lib/{interact-for-workspace-id.d.ts → interactions/workspace-id.d.ts} +0 -0
  358. /package/lib/{util → output}/read-stdin-json.d.ts +0 -0
  359. /package/lib/{util → output}/read-stdin-json.js +0 -0
  360. /package/lib/{util → output}/with-loading.d.ts +0 -0
  361. /package/lib/{completion → render/completion}/describe.d.ts +0 -0
  362. /package/lib/{completion → render/completion}/render-fish.js +0 -0
  363. /package/src/lib/{util → output}/read-stdin-json.ts +0 -0
package/bin/cli.js CHANGED
@@ -1,34 +1,27 @@
1
1
  #!/usr/bin/env node
2
- import { randomBytes } from 'node:crypto';
3
2
  import { isDeepStrictEqual as isEqual } from 'node:util';
4
3
  import chalk from 'chalk';
5
- import { findLocalCommand, getCommandSpec } from '../lib/command-spec.js';
6
- import { completionShells, isCompletionShell, renderCompletion, } from '../lib/completion/index.js';
4
+ import { cliFlags, getInteractivity, parseCliArgs, toParameterName, } from '../lib/args/parse.js';
5
+ import { assertKnownArgs } from '../lib/args/validate.js';
6
+ import { getApiBlueprint } from '../lib/blueprint/index.js';
7
+ import { printCompletion } from '../lib/commands/local/completion.js';
8
+ import { runWizard } from '../lib/commands/local/wizard.js';
9
+ import { acceptedParamsOf, buildRegistry, findLocalCommand, } from '../lib/commands/registry.js';
7
10
  import { getConfigStore } from '../lib/config/index.js';
8
- import { assertEnvVarUnset, endpointEnvVar, EnvVarOverrideError, getEndpointFromEnv, getTokenFromEnv, getWorkspaceIdFromEnv, tokenEnvVar, workspaceIdEnvVar, } from '../lib/env.js';
9
- import { getApiBlueprint } from '../lib/get-api-blueprint.js';
10
- import { getCommandBlueprintDef } from '../lib/get-command-blueprint-def.js';
11
- import { getToken } from '../lib/get-credentials.js';
12
- import { getResponseKey } from '../lib/get-response-key.js';
13
- import { getServer } from '../lib/get-server.js';
14
- import { interactForActionAttemptPoll } from '../lib/interact-for-action-attempt-poll.js';
15
- import { interactForCommandParams } from '../lib/interact-for-command-params.js';
16
- import { interactForCommandSelection } from '../lib/interact-for-command-selection.js';
17
- import { interactForLogin } from '../lib/interact-for-login.js';
18
- import { interactForServerSelection } from '../lib/interact-for-server-selection.js';
19
- import { interactForUseRemoteApiDefs } from '../lib/interact-for-use-remote-api-defs.js';
20
- import { interactForWorkspaceId } from '../lib/interact-for-workspace-id.js';
21
- import { createOutput } from '../lib/output/create-output.js';
11
+ import { resolveAuth } from '../lib/context.js';
12
+ import { tokenEnvVar } from '../lib/env.js';
13
+ import { reportErrorAndExit } from '../lib/errors.js';
14
+ import { createSeamApi } from '../lib/http/api.js';
15
+ import { interactForCommandSelection } from '../lib/interactions/index.js';
22
16
  import { getOutput, setOutput } from '../lib/output/get-output.js';
17
+ import { createOutput } from '../lib/output/output.js';
18
+ import { readStdinJson } from '../lib/output/read-stdin-json.js';
23
19
  import { resolveOutputFormat } from '../lib/output/resolve-output-format.js';
24
- import { renderHelp } from '../lib/render-help.js';
25
- import { cliFlags, getInteractivity, NonInteractiveError, parseCliArgs, toGivenArgName, toParameterName, UsageError, } from '../lib/util/cli-args.js';
26
- import { canPrompt, PromptCancelledError, promptConfirm, } from '../lib/util/prompt.js';
27
- import { readStdinJson } from '../lib/util/read-stdin-json.js';
28
- import { RequestSeamApi } from '../lib/util/request-seam-api.js';
29
- import { validateToken } from '../lib/validate-token.js';
20
+ import { canPrompt } from '../lib/prompt.js';
21
+ import { completionShells, isCompletionShell, } from '../lib/render/completion/index.js';
22
+ import { renderHelp } from '../lib/render/help.js';
30
23
  import seamapiCliVersion from '../lib/version.js';
31
- async function cli(args) {
24
+ async function cli(args, argv) {
32
25
  const config = getConfigStore();
33
26
  const output = getOutput();
34
27
  const update = args['update'] === true;
@@ -36,7 +29,8 @@ async function cli(args) {
36
29
  if (helpFlag != null) {
37
30
  // Help comes from the cached API definitions so that it works without
38
31
  // logging in, and offline once the cache is warm.
39
- const spec = getCommandSpec(await getApiBlueprint(false, { update }));
32
+ const cachedBlueprint = await getApiBlueprint({ update });
33
+ const { spec } = buildRegistry(cachedBlueprint);
40
34
  // minimist reads the word after --help as its value, so 'seam --help
41
35
  // devices' asks about devices just as 'seam devices --help' does.
42
36
  const commandPath = [
@@ -88,231 +82,80 @@ async function cli(args) {
88
82
  process.exitCode = 1;
89
83
  return;
90
84
  }
91
- assertKnownArgs(argParams, ['completion', shell]);
92
- // Completions always come from the cached API definitions so that they
93
- // can be generated without logging in. They may lag the definitions
94
- // served by Seam when config use-remote-api-defs is enabled.
95
- output.text(renderCompletion(shell, await getApiBlueprint(false, { update })));
96
- return;
97
- }
98
- if (args._[0] === 'config' &&
99
- args._[1] === 'set' &&
100
- args._[2] === 'fake-server') {
101
- assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server');
102
- assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log in');
103
- const randomstring = randomBytes(5).toString('hex');
104
- const fakeApiUrl = `https://${randomstring}.fakeseamconnect.seam.vc`;
105
- config.set('server', fakeApiUrl);
106
- output.info(`Server URL set to ${fakeApiUrl}`);
107
- config.set(`${getServer()}.pat`, `seam_apikey1_token`);
108
- output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
109
- return;
110
- }
111
- if (getToken() == null &&
112
- args._[0] !== 'login' &&
113
- !isEqual(args._, ['select', 'server'])) {
85
+ const command = findLocalCommand(['completion', shell]);
86
+ assertKnownArgs(argParams, ['completion', shell], {
87
+ accepted: command == null ? new Set() : acceptedParamsOf(command.definition),
88
+ isLocal: true,
89
+ });
90
+ const cachedBlueprint = await getApiBlueprint({ update });
91
+ printCompletion(shell, buildRegistry(cachedBlueprint).spec);
92
+ return;
93
+ }
94
+ const localCommand = findLocalCommand(args._);
95
+ // Commands declared not to need a token bypass the login gate. A partial
96
+ // path keeps the historical rule: only login and select server may be
97
+ // reached logged out.
98
+ const requiresAuth = localCommand != null
99
+ ? localCommand.requiresAuth
100
+ : !(args._[0] === 'login' || isEqual(args._, ['select', 'server']));
101
+ if (requiresAuth && resolveAuth(config).token == null) {
114
102
  output.error(`Not logged in. Please run "seam login" or set ${tokenEnvVar}`);
115
103
  process.exitCode = 1;
116
104
  return;
117
105
  }
118
106
  const useRemoteApiDefs = args['remote_api_defs'] ?? config.get('use_remote_api_defs');
119
- const blueprint = await getApiBlueprint(useRemoteApiDefs ?? false, {
107
+ const blueprint = await getApiBlueprint({
108
+ useRemoteDefinitions: useRemoteApiDefs ?? false,
120
109
  update,
121
110
  });
111
+ const registry = buildRegistry(blueprint);
122
112
  // Params piped or redirected in, e.g., `seam devices list < params.json`.
123
- // Params given as arguments take precedence over these.
124
- const commandParams = { ...(await readStdinJson()) };
113
+ const pipedParams = await readStdinJson();
114
+ const stdinParams = { ...pipedParams };
115
+ const auth = resolveAuth(config);
116
+ let seamApi = null;
125
117
  const ctx = {
118
+ config,
119
+ auth,
120
+ output,
126
121
  blueprint,
127
122
  interactivity: getInteractivity(args, { canPrompt: canPrompt() }),
123
+ api: async () => await (seamApi ??= createSeamApi(auth)),
128
124
  };
129
- const isNonInteractive = ctx.interactivity === 'non-interactive';
130
- Object.assign(commandParams, argParams);
131
- const selectedCommand = await interactForCommandSelection(args._, ctx);
132
- // Hit 'back' on a top-level command path, so we start again
133
- if (selectedCommand.slice(-1)[0] === '[Back]') {
134
- return await cli({
135
- ...args,
136
- _: [],
125
+ const selectableCommands = registry.spec.commands.map(({ path }) => path);
126
+ let commandPath = args._;
127
+ while (true) {
128
+ const selectedCommand = await interactForCommandSelection(commandPath, {
129
+ commands: selectableCommands,
130
+ interactivity: ctx.interactivity,
137
131
  });
138
- }
139
- // Check the arguments before the command acts on any of them, so a mistake
140
- // is reported rather than half applied.
141
- assertKnownArgs(argParams, selectedCommand, ctx);
142
- if (isEqual(selectedCommand, ['login'])) {
143
- // Nothing is stored while the environment overrides it, so refuse before
144
- // storing anything rather than part way through.
145
- assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log in');
146
- if (args['server']) {
147
- assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server');
148
- }
149
- if (args['workspace_id']) {
150
- assertEnvVarUnset(workspaceIdEnvVar, getWorkspaceIdFromEnv(), 'select a workspace');
151
- }
152
- if (args['server']) {
153
- config.set('server', args['server']);
154
- config.delete('current_workspace_id');
155
- }
156
- if (args['token']) {
157
- const token = String(args['token']).trim();
158
- await validateToken(token, args['workspace_id']);
159
- config.set(`${getServer()}.pat`, token);
160
- config.delete('current_workspace_id');
161
- }
162
- if (args['workspace_id']) {
163
- config.set(`current_workspace_id`, args['workspace_id']);
164
- }
165
- if (args['token'] || args['workspace_id'] || args['server']) {
166
- return;
167
- }
168
- if (isNonInteractive) {
169
- throw new NonInteractiveError('Missing required parameter for login: --token');
170
- }
171
- await interactForLogin();
172
- return;
173
- }
174
- else if (isEqual(selectedCommand, ['logout'])) {
175
- assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log out');
176
- config.delete(`${getServer()}.pat`);
177
- config.delete('current_workspace_id');
178
- output.info('Logged out!');
179
- return;
180
- }
181
- else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
182
- output.text(config.path);
183
- return;
184
- }
185
- else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
186
- if (isNonInteractive) {
187
- throw new NonInteractiveError('Cannot select whether to use remote API definitions in non-interactive mode');
188
- }
189
- await interactForUseRemoteApiDefs();
190
- return;
191
- }
192
- else if (isEqual(selectedCommand, ['select', 'workspace'])) {
193
- assertEnvVarUnset(workspaceIdEnvVar, getWorkspaceIdFromEnv(), 'select a workspace');
194
- if (isNonInteractive) {
195
- throw new NonInteractiveError('Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"');
196
- }
197
- await interactForWorkspaceId();
198
- return;
199
- }
200
- else if (isEqual(selectedCommand, ['events', 'list'])) {
201
- if (!commandParams['since']) {
202
- const date = new Date();
203
- date.setMonth(date.getMonth() - 1);
204
- commandParams['since'] = date.toISOString();
205
- }
206
- }
207
- else if (isEqual(selectedCommand, ['select', 'server'])) {
208
- assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server');
209
- if (args['server']) {
210
- config.set('server', args['server']);
211
- config.delete('current_workspace_id');
212
- return;
132
+ // Hit 'back' on a top-level command path, so we start again
133
+ if (selectedCommand.at(-1) === '[Back]') {
134
+ commandPath = [];
135
+ continue;
213
136
  }
214
- if (isNonInteractive) {
215
- throw new NonInteractiveError('Missing required parameter for select server: --server');
137
+ const command = registry.find(selectedCommand);
138
+ if (command == null) {
139
+ throw new Error(`No definition for command seam ${selectedCommand.join(' ')}`);
216
140
  }
217
- await interactForServerSelection();
218
- return;
219
- }
220
- else if (isEqual(selectedCommand, ['health', 'get-health'])) {
221
- await RequestSeamApi({
222
- path: '/health/get_health',
223
- params: {},
141
+ // Check the arguments before the command acts on any of them, so a
142
+ // mistake is reported rather than half applied.
143
+ assertKnownArgs(argParams, selectedCommand, {
144
+ accepted: acceptedParamsOf(command.definition),
145
+ isLocal: findLocalCommand(selectedCommand) != null,
224
146
  });
147
+ const result = await command.execute({ path: selectedCommand, argParams, stdinParams, args, argv }, ctx);
148
+ if (result.kind === 'back') {
149
+ commandPath = result.toPath;
150
+ continue;
151
+ }
225
152
  return;
226
153
  }
227
- // TODO - do this using the OpenAPI spec for the command rather than
228
- // explicitly encoding the property names
229
- if (commandParams['accepted_providers']) {
230
- commandParams['accepted_providers'] =
231
- commandParams['accepted_providers'].split(',');
232
- }
233
- const apiPath = `/${selectedCommand.join('/').replace(/-/g, '_')}`;
234
- const params = await interactForCommandParams({ command: selectedCommand, params: commandParams }, ctx);
235
- if (params === '[Back]') {
236
- const previousCommands = [...selectedCommand];
237
- previousCommands.pop();
238
- return await cli({
239
- ...args,
240
- _: previousCommands,
241
- });
242
- }
243
- if (apiPath.includes('/events/list') && params.between) {
244
- delete params.since;
245
- }
246
- const response = await RequestSeamApi({
247
- path: apiPath,
248
- params,
249
- responseKey: getResponseKey(selectedCommand, ctx),
250
- });
251
- if (response.data?.connect_webview) {
252
- await handleConnectWebviewResponse(response.data.connect_webview, ctx.interactivity);
253
- }
254
- if (response.data?.action_attempt && !isNonInteractive) {
255
- await interactForActionAttemptPoll(response.data.action_attempt);
256
- }
257
154
  }
258
155
  const toCommandWord = (arg) => arg.toLowerCase().replace(/_/g, '-');
259
- /**
260
- * Report any argument the command does not accept, rather than acting on it.
261
- * An unrecognized argument is a mistake: forwarded to the API it would fail
262
- * somewhere less obvious or be quietly ignored, and on a command the CLI
263
- * handles itself it would go nowhere at all.
264
- *
265
- * Only arguments are checked. Params read from stdin are passed through as
266
- * given, so a caller may send whatever the API itself accepts.
267
- *
268
- * `ctx` is only needed to look up an endpoint's parameters, so commands the
269
- * CLI declares itself can be checked before any blueprint is loaded.
270
- */
271
- const assertKnownArgs = (argParams, command, ctx) => {
272
- const local = findLocalCommand(command);
273
- let accepted;
274
- if (local != null) {
275
- accepted = new Set(local.flags.flatMap(({ long }) => long == null ? [] : [toParameterName(long)]));
276
- }
277
- else if (ctx != null) {
278
- accepted = new Set(getCommandBlueprintDef(command, ctx).request.parameters.map(({ name }) => name));
279
- }
280
- else {
281
- throw new Error(`No definition for command seam ${command.join(' ')}`);
282
- }
283
- const unknown = Object.keys(argParams).filter((key) => !accepted.has(key));
284
- if (unknown.length === 0)
285
- return;
286
- // Name an endpoint command by its path, as missing params are named, and a
287
- // command the CLI handles itself by the words that run it.
288
- const target = local == null
289
- ? `/${command.join('/').replace(/-/g, '_')}`
290
- : command.join(' ');
291
- throw new UsageError(`Unknown ${unknown.length === 1 ? 'parameter' : 'parameters'} for ${target}: ${unknown.map(toGivenArgName).join(' ')}`, {
292
- hint: `Run 'seam ${command.join(' ')} --help' to see what it accepts.`,
293
- });
294
- };
295
- const handleConnectWebviewResponse = async (connectWebview, interactivity) => {
296
- const url = connectWebview.url;
297
- if (interactivity !== 'non-interactive' &&
298
- process.env['INSIDE_WEB_BROWSER'] !== '1') {
299
- const action = await promptConfirm({
300
- message: 'Would you like to open the webview in your browser?',
301
- initialValue: false,
302
- });
303
- if (action) {
304
- const { default: open } = await import('open');
305
- await open(url);
306
- }
307
- }
308
- };
309
156
  const run = async (argv) => {
310
157
  if (argv[0] === 'wizard') {
311
- const { default: wizard } = await import('@seamapi/wizard');
312
- await wizard({
313
- argv: argv.slice(1),
314
- commandName: 'seam wizard',
315
- });
158
+ await runWizard(argv.slice(1));
316
159
  return;
317
160
  }
318
161
  const args = parseCliArgs(argv);
@@ -321,28 +164,9 @@ const run = async (argv) => {
321
164
  format: resolveOutputFormat(argv, { isTty }),
322
165
  colors: isTty,
323
166
  }));
324
- await cli(args);
167
+ await cli(args, argv);
325
168
  };
326
169
  run(process.argv.slice(2)).catch((e) => {
327
- const output = getOutput();
328
- process.exitCode = 1;
329
- if (e instanceof UsageError) {
330
- output.error(chalk.red(e.message));
331
- if (e.hint !== '')
332
- output.error(e.hint);
333
- return;
334
- }
335
- if (e instanceof NonInteractiveError || e instanceof EnvVarOverrideError) {
336
- output.error(chalk.red(e.message));
337
- return;
338
- }
339
- if (e instanceof PromptCancelledError) {
340
- output.error(chalk.gray(e.message));
341
- return;
342
- }
343
- const error = e instanceof Error ? e : new Error(String(e));
344
- output.error(chalk.red(`CLI Error: ${error.message}`));
345
- if (error.stack != null)
346
- output.error(chalk.gray(error.stack));
170
+ reportErrorAndExit(e, getOutput());
347
171
  });
348
172
  //# sourceMappingURL=cli.js.map
package/bin/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Parameter } from '@seamapi/blueprint';
2
+ /** An argument whose value does not fit the parameter's documented format. */
3
+ export interface CoercionIssue {
4
+ name: string;
5
+ given: unknown;
6
+ /** What the parameter takes, e.g., `a number`. */
7
+ expected: string;
8
+ }
9
+ type Coerced = {
10
+ value: unknown;
11
+ } | {
12
+ issue: string;
13
+ };
14
+ /**
15
+ * Read each argument as the JSON value its parameter documents: booleans and
16
+ * numbers become real booleans and numbers, lists split on commas, objects
17
+ * parse as JSON. The request body is then the same whether a value arrived
18
+ * as an argument, over stdin, or interactively.
19
+ *
20
+ * An argument naming no parameter passes through unchanged: unknown
21
+ * arguments are reported by `assertKnownArgs`, not silently dropped here.
22
+ */
23
+ export declare const coerceArgParams: (parameters: Parameter[], argParams: Record<string, unknown>) => {
24
+ params: Record<string, unknown>;
25
+ issues: CoercionIssue[];
26
+ };
27
+ export declare const coerceParam: (parameter: Parameter, given: unknown) => Coerced;
28
+ export {};
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Read each argument as the JSON value its parameter documents: booleans and
3
+ * numbers become real booleans and numbers, lists split on commas, objects
4
+ * parse as JSON. The request body is then the same whether a value arrived
5
+ * as an argument, over stdin, or interactively.
6
+ *
7
+ * An argument naming no parameter passes through unchanged: unknown
8
+ * arguments are reported by `assertKnownArgs`, not silently dropped here.
9
+ */
10
+ export const coerceArgParams = (parameters, argParams) => {
11
+ const byName = new Map(parameters.map((parameter) => [parameter.name, parameter]));
12
+ const params = {};
13
+ const issues = [];
14
+ for (const [name, given] of Object.entries(argParams)) {
15
+ const parameter = byName.get(name);
16
+ if (parameter == null) {
17
+ params[name] = given;
18
+ continue;
19
+ }
20
+ const coerced = coerceParam(parameter, given);
21
+ if ('issue' in coerced) {
22
+ issues.push({ name, given, expected: coerced.issue });
23
+ continue;
24
+ }
25
+ params[name] = coerced.value;
26
+ }
27
+ return { params, issues };
28
+ };
29
+ export const coerceParam = (parameter, given) => {
30
+ // `null` is an explicit JSON value for nullable parameters, not the string
31
+ // "null" (or a one-item list containing it).
32
+ if (parameter.isNullable && (given === null || given === 'null')) {
33
+ return { value: null };
34
+ }
35
+ if (parameter.format === 'list')
36
+ return coerceList(parameter, given);
37
+ // A repeated argument parses as an array, which only a list accepts.
38
+ if (Array.isArray(given))
39
+ return { issue: 'a single value' };
40
+ switch (parameter.format) {
41
+ case 'boolean':
42
+ return coerceBoolean(given);
43
+ case 'number':
44
+ return coerceNumber(given);
45
+ case 'enum':
46
+ return coerceEnum(parameter, given);
47
+ case 'object':
48
+ return coerceObject(given);
49
+ default:
50
+ return { value: String(given) };
51
+ }
52
+ };
53
+ const coerceBoolean = (given) => {
54
+ if (given === true || given === 'true' || given === '1' || given === 1) {
55
+ return { value: true };
56
+ }
57
+ if (given === false || given === 'false' || given === '0' || given === 0) {
58
+ return { value: false };
59
+ }
60
+ return { issue: 'true or false' };
61
+ };
62
+ const coerceNumber = (given) => {
63
+ if (typeof given === 'number')
64
+ return { value: given };
65
+ if (typeof given === 'string' && given.trim() !== '') {
66
+ const value = Number(given);
67
+ if (!Number.isNaN(value))
68
+ return { value };
69
+ }
70
+ return { issue: 'a number' };
71
+ };
72
+ const coerceEnum = (parameter, given) => {
73
+ const value = String(given);
74
+ const names = parameter.values.map(({ name }) => name);
75
+ if (!names.includes(value))
76
+ return { issue: `one of ${names.join(', ')}` };
77
+ return { value };
78
+ };
79
+ const coerceObject = (given) => {
80
+ if (typeof given !== 'string')
81
+ return { issue: 'a JSON object' };
82
+ try {
83
+ const value = JSON.parse(given);
84
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
85
+ return { issue: 'a JSON object' };
86
+ }
87
+ return { value };
88
+ }
89
+ catch {
90
+ return { issue: 'a JSON object' };
91
+ }
92
+ };
93
+ const coerceList = (parameter, given) => {
94
+ const items = Array.isArray(given)
95
+ ? given
96
+ : typeof given === 'string'
97
+ ? given.split(',')
98
+ : [given];
99
+ const values = [];
100
+ for (const item of items) {
101
+ const coerced = coerceListItem(parameter, item);
102
+ if ('issue' in coerced)
103
+ return coerced;
104
+ values.push(coerced.value);
105
+ }
106
+ return { value: values };
107
+ };
108
+ const coerceListItem = (parameter, item) => {
109
+ if (parameter.itemFormat === 'number') {
110
+ const coerced = coerceNumber(item);
111
+ if ('issue' in coerced)
112
+ return { issue: 'a list of numbers' };
113
+ return coerced;
114
+ }
115
+ if (parameter.itemFormat === 'boolean') {
116
+ const coerced = coerceBoolean(item);
117
+ if ('issue' in coerced)
118
+ return { issue: 'a list of true or false' };
119
+ return coerced;
120
+ }
121
+ if (parameter.itemFormat === 'enum') {
122
+ const value = String(item);
123
+ const names = parameter.itemEnumValues.map(({ name }) => name);
124
+ if (!names.includes(value)) {
125
+ return { issue: `a list of ${names.join(', ')}` };
126
+ }
127
+ return { value };
128
+ }
129
+ return { value: String(item) };
130
+ };
131
+ //# sourceMappingURL=coerce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coerce.js","sourceRoot":"","sources":["../../src/lib/args/coerce.ts"],"names":[],"mappings":"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"}
@@ -20,24 +20,21 @@ export declare const interactivityFlags: string[];
20
20
  * and are therefore never sent as command parameters.
21
21
  */
22
22
  export declare const cliFlags: string[];
23
- /**
24
- * Thrown when the CLI needs input it cannot prompt for.
25
- */
26
- export declare class NonInteractiveError extends Error {
27
- name: string;
23
+ export interface ParseCliArgsOptions {
24
+ /**
25
+ * Argument keys read exactly as given rather than by guessing at a type,
26
+ * e.g., every parameter of an endpoint that does not take a number or a
27
+ * boolean. Read as a number, an opaque value like an access code would
28
+ * lose leading zeroes or turn exponent notation into a digit string.
29
+ */
30
+ stringKeys?: string[];
28
31
  }
32
+ export declare const parseCliArgs: (argv: string[], { stringKeys }?: ParseCliArgsOptions) => ParsedArgs;
29
33
  /**
30
- * Thrown when the arguments do not name something the CLI can run.
34
+ * The request params among the parsed arguments: every key normalized to
35
+ * the parameter it names, minus the flags that configure the CLI itself.
31
36
  */
32
- export declare class UsageError extends Error {
33
- name: string;
34
- /** What to run instead, reported after the message. */
35
- readonly hint: string;
36
- constructor(message: string, { hint }?: {
37
- hint?: string;
38
- });
39
- }
40
- export declare const parseCliArgs: (argv: string[]) => ParsedArgs;
37
+ export declare const toArgParams: (args: ParsedArgs) => Record<string, unknown>;
41
38
  export interface GetInteractivityOptions {
42
39
  /**
43
40
  * Whether there is a terminal to prompt on.