@apimatic/cli 1.1.0-alpha.9 → 1.1.0-beta.2

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 (337) hide show
  1. package/README.md +436 -374
  2. package/bin/run.js +5 -0
  3. package/lib/actions/action-result.d.ts +13 -0
  4. package/lib/actions/action-result.js +44 -0
  5. package/lib/actions/action-result.js.map +1 -0
  6. package/lib/actions/api/transform.d.ts +15 -0
  7. package/lib/actions/api/transform.js +48 -0
  8. package/lib/actions/api/transform.js.map +1 -0
  9. package/lib/actions/api/validate.d.ts +12 -0
  10. package/lib/actions/api/validate.js +41 -0
  11. package/lib/actions/api/validate.js.map +1 -0
  12. package/lib/actions/auth/login.d.ts +13 -0
  13. package/lib/actions/auth/login.js +55 -0
  14. package/lib/actions/auth/login.js.map +1 -0
  15. package/lib/actions/auth/logout.d.ts +8 -0
  16. package/lib/actions/auth/logout.js +15 -0
  17. package/lib/actions/auth/logout.js.map +1 -0
  18. package/lib/actions/auth/status.d.ts +11 -0
  19. package/lib/actions/auth/status.js +26 -0
  20. package/lib/actions/auth/status.js.map +1 -0
  21. package/lib/actions/portal/copilot.d.ts +16 -0
  22. package/lib/actions/portal/copilot.js +89 -0
  23. package/lib/actions/portal/copilot.js.map +1 -0
  24. package/lib/actions/portal/generate.d.ts +11 -5
  25. package/lib/actions/portal/generate.js +60 -55
  26. package/lib/actions/portal/generate.js.map +1 -0
  27. package/lib/actions/portal/quickstart.d.ts +16 -0
  28. package/lib/actions/portal/quickstart.js +146 -0
  29. package/lib/actions/portal/quickstart.js.map +1 -0
  30. package/lib/actions/portal/recipe/new-recipe.d.ts +15 -0
  31. package/lib/actions/portal/recipe/new-recipe.js +177 -0
  32. package/lib/actions/portal/recipe/new-recipe.js.map +1 -0
  33. package/lib/actions/portal/serve.d.ts +15 -0
  34. package/lib/actions/portal/serve.js +118 -0
  35. package/lib/actions/portal/serve.js.map +1 -0
  36. package/lib/actions/portal/toc/new-toc.d.ts +17 -13
  37. package/lib/actions/portal/toc/new-toc.js +85 -122
  38. package/lib/actions/portal/toc/new-toc.js.map +1 -0
  39. package/lib/actions/quickstart.d.ts +10 -0
  40. package/lib/actions/quickstart.js +30 -0
  41. package/lib/actions/quickstart.js.map +1 -0
  42. package/lib/actions/sdk/generate.d.ts +13 -0
  43. package/lib/actions/sdk/generate.js +47 -0
  44. package/lib/actions/sdk/generate.js.map +1 -0
  45. package/lib/actions/sdk/quickstart.d.ts +14 -0
  46. package/lib/actions/sdk/quickstart.js +149 -0
  47. package/lib/actions/sdk/quickstart.js.map +1 -0
  48. package/lib/application/portal/recipe/portal-recipe.d.ts +8 -0
  49. package/lib/application/portal/recipe/portal-recipe.js +33 -0
  50. package/lib/application/portal/recipe/portal-recipe.js.map +1 -0
  51. package/lib/application/portal/recipe/recipe-generator.d.ts +21 -0
  52. package/lib/application/portal/recipe/recipe-generator.js +145 -0
  53. package/lib/application/portal/recipe/recipe-generator.js.map +1 -0
  54. package/lib/application/portal/toc/toc-content-parser.d.ts +1 -1
  55. package/lib/application/portal/toc/toc-content-parser.js +9 -11
  56. package/lib/application/portal/toc/toc-content-parser.js.map +1 -0
  57. package/lib/application/portal/toc/toc-structure-generator.d.ts +1 -1
  58. package/lib/application/portal/toc/toc-structure-generator.js +4 -8
  59. package/lib/application/portal/toc/toc-structure-generator.js.map +1 -0
  60. package/lib/client-utils/auth-manager.d.ts +7 -2
  61. package/lib/client-utils/auth-manager.js +26 -14
  62. package/lib/client-utils/auth-manager.js.map +1 -0
  63. package/lib/commands/api/transform.d.ts +10 -7
  64. package/lib/commands/api/transform.js +51 -111
  65. package/lib/commands/api/transform.js.map +1 -0
  66. package/lib/commands/api/validate.d.ts +7 -4
  67. package/lib/commands/api/validate.js +31 -74
  68. package/lib/commands/api/validate.js.map +1 -0
  69. package/lib/commands/auth/login.d.ts +3 -1
  70. package/lib/commands/auth/login.js +26 -68
  71. package/lib/commands/auth/login.js.map +1 -0
  72. package/lib/commands/auth/logout.d.ts +3 -1
  73. package/lib/commands/auth/logout.js +14 -21
  74. package/lib/commands/auth/logout.js.map +1 -0
  75. package/lib/commands/auth/status.d.ts +1 -0
  76. package/lib/commands/auth/status.js +18 -21
  77. package/lib/commands/auth/status.js.map +1 -0
  78. package/lib/commands/portal/copilot.d.ts +13 -0
  79. package/lib/commands/portal/copilot.js +34 -0
  80. package/lib/commands/portal/copilot.js.map +1 -0
  81. package/lib/commands/portal/generate.d.ts +7 -11
  82. package/lib/commands/portal/generate.js +26 -89
  83. package/lib/commands/portal/generate.js.map +1 -0
  84. package/lib/commands/portal/recipe/new.d.ts +12 -0
  85. package/lib/commands/portal/recipe/new.js +45 -0
  86. package/lib/commands/portal/recipe/new.js.map +1 -0
  87. package/lib/commands/portal/serve.d.ts +8 -8
  88. package/lib/commands/portal/serve.js +41 -125
  89. package/lib/commands/portal/serve.js.map +1 -0
  90. package/lib/commands/portal/toc/new.d.ts +5 -6
  91. package/lib/commands/portal/toc/new.js +45 -50
  92. package/lib/commands/portal/toc/new.js.map +1 -0
  93. package/lib/commands/quickstart.d.ts +9 -0
  94. package/lib/commands/quickstart.js +37 -0
  95. package/lib/commands/quickstart.js.map +1 -0
  96. package/lib/commands/sdk/generate.d.ts +10 -8
  97. package/lib/commands/sdk/generate.js +46 -131
  98. package/lib/commands/sdk/generate.js.map +1 -0
  99. package/lib/config/axios-config.js +4 -6
  100. package/lib/config/axios-config.js.map +1 -0
  101. package/lib/hooks/not-found.d.ts +3 -0
  102. package/lib/hooks/not-found.js +52 -0
  103. package/lib/hooks/not-found.js.map +1 -0
  104. package/lib/hooks/utils.d.ts +5 -0
  105. package/lib/hooks/utils.js +51 -0
  106. package/lib/hooks/utils.js.map +1 -0
  107. package/lib/index.js +2 -5
  108. package/lib/index.js.map +1 -0
  109. package/lib/infrastructure/debounce-service.d.ts +10 -0
  110. package/lib/infrastructure/debounce-service.js +52 -0
  111. package/lib/infrastructure/debounce-service.js.map +1 -0
  112. package/lib/infrastructure/env-info.d.ts +12 -0
  113. package/lib/infrastructure/env-info.js +58 -0
  114. package/lib/infrastructure/env-info.js.map +1 -0
  115. package/lib/infrastructure/file-service.d.ts +24 -0
  116. package/lib/infrastructure/file-service.js +120 -0
  117. package/lib/infrastructure/file-service.js.map +1 -0
  118. package/lib/infrastructure/launcher-service.d.ts +9 -0
  119. package/lib/infrastructure/launcher-service.js +72 -0
  120. package/lib/infrastructure/launcher-service.js.map +1 -0
  121. package/lib/infrastructure/network-service.d.ts +3 -0
  122. package/lib/infrastructure/network-service.js +7 -0
  123. package/lib/infrastructure/network-service.js.map +1 -0
  124. package/lib/infrastructure/service-error.d.ts +16 -0
  125. package/lib/infrastructure/service-error.js +49 -0
  126. package/lib/infrastructure/service-error.js.map +1 -0
  127. package/lib/infrastructure/services/api-client-factory.d.ts +6 -0
  128. package/lib/infrastructure/services/api-client-factory.js +20 -0
  129. package/lib/infrastructure/services/api-client-factory.js.map +1 -0
  130. package/lib/infrastructure/services/api-service.d.ts +12 -0
  131. package/lib/infrastructure/services/api-service.js +79 -0
  132. package/lib/infrastructure/services/api-service.js.map +1 -0
  133. package/lib/infrastructure/services/auth-service.d.ts +11 -0
  134. package/lib/infrastructure/services/auth-service.js +37 -0
  135. package/lib/infrastructure/services/auth-service.js.map +1 -0
  136. package/lib/infrastructure/services/file-download-service.d.ts +15 -0
  137. package/lib/infrastructure/services/file-download-service.js +104 -0
  138. package/lib/infrastructure/services/file-download-service.js.map +1 -0
  139. package/lib/infrastructure/services/portal-service.d.ts +17 -12
  140. package/lib/infrastructure/services/portal-service.js +134 -99
  141. package/lib/infrastructure/services/portal-service.js.map +1 -0
  142. package/lib/infrastructure/services/telemetry-service.d.ts +9 -0
  143. package/lib/infrastructure/services/telemetry-service.js +38 -0
  144. package/lib/infrastructure/services/telemetry-service.js.map +1 -0
  145. package/lib/infrastructure/services/transformation-service.d.ts +23 -0
  146. package/lib/infrastructure/services/transformation-service.js +56 -0
  147. package/lib/infrastructure/services/transformation-service.js.map +1 -0
  148. package/lib/infrastructure/services/validation-service.d.ts +17 -0
  149. package/lib/infrastructure/services/validation-service.js +49 -0
  150. package/lib/infrastructure/services/validation-service.js.map +1 -0
  151. package/lib/infrastructure/tmp-extensions.d.ts +2 -0
  152. package/lib/infrastructure/tmp-extensions.js +6 -0
  153. package/lib/infrastructure/tmp-extensions.js.map +1 -0
  154. package/lib/infrastructure/zip-service.d.ts +6 -0
  155. package/lib/infrastructure/zip-service.js +39 -0
  156. package/lib/infrastructure/zip-service.js.map +1 -0
  157. package/lib/prompts/api/transform.d.ts +11 -0
  158. package/lib/prompts/api/transform.js +29 -0
  159. package/lib/prompts/api/transform.js.map +1 -0
  160. package/lib/prompts/api/validate.d.ts +12 -0
  161. package/lib/prompts/api/validate.js +40 -0
  162. package/lib/prompts/api/validate.js.map +1 -0
  163. package/lib/prompts/auth/login.d.ts +10 -0
  164. package/lib/prompts/auth/login.js +22 -0
  165. package/lib/prompts/auth/login.js.map +1 -0
  166. package/lib/prompts/auth/logout.d.ts +3 -0
  167. package/lib/prompts/auth/logout.js +7 -0
  168. package/lib/prompts/auth/logout.js.map +1 -0
  169. package/lib/prompts/auth/status.d.ts +8 -0
  170. package/lib/prompts/auth/status.js +22 -0
  171. package/lib/prompts/auth/status.js.map +1 -0
  172. package/lib/prompts/format.d.ts +31 -0
  173. package/lib/prompts/format.js +89 -0
  174. package/lib/prompts/format.js.map +1 -0
  175. package/lib/prompts/portal/copilot.d.ts +18 -0
  176. package/lib/prompts/portal/copilot.js +82 -0
  177. package/lib/prompts/portal/copilot.js.map +1 -0
  178. package/lib/prompts/portal/generate.d.ts +13 -8
  179. package/lib/prompts/portal/generate.js +36 -53
  180. package/lib/prompts/portal/generate.js.map +1 -0
  181. package/lib/prompts/portal/quickstart.d.ts +28 -29
  182. package/lib/prompts/portal/quickstart.js +102 -185
  183. package/lib/prompts/portal/quickstart.js.map +1 -0
  184. package/lib/prompts/portal/recipe/new-recipe.d.ts +29 -0
  185. package/lib/prompts/portal/recipe/new-recipe.js +165 -0
  186. package/lib/prompts/portal/recipe/new-recipe.js.map +1 -0
  187. package/lib/prompts/portal/serve.d.ts +9 -5
  188. package/lib/prompts/portal/serve.js +29 -19
  189. package/lib/prompts/portal/serve.js.map +1 -0
  190. package/lib/prompts/portal/toc/new-toc.d.ts +13 -8
  191. package/lib/prompts/portal/toc/new-toc.js +28 -36
  192. package/lib/prompts/portal/toc/new-toc.js.map +1 -0
  193. package/lib/prompts/prompt.d.ts +3 -0
  194. package/lib/prompts/prompt.js +37 -0
  195. package/lib/prompts/prompt.js.map +1 -0
  196. package/lib/prompts/quickstart.d.ts +6 -0
  197. package/lib/prompts/quickstart.js +25 -0
  198. package/lib/prompts/quickstart.js.map +1 -0
  199. package/lib/prompts/sdk/generate.d.ts +11 -0
  200. package/lib/prompts/sdk/generate.js +37 -0
  201. package/lib/prompts/sdk/generate.js.map +1 -0
  202. package/lib/prompts/sdk/quickstart.d.ts +32 -0
  203. package/lib/prompts/sdk/quickstart.js +140 -0
  204. package/lib/prompts/sdk/quickstart.js.map +1 -0
  205. package/lib/types/api/account.d.ts +10 -0
  206. package/lib/types/api/account.js +2 -0
  207. package/lib/types/api/account.js.map +1 -0
  208. package/lib/types/api/transform.d.ts +14 -25
  209. package/lib/types/api/transform.js +20 -23
  210. package/lib/types/api/transform.js.map +1 -0
  211. package/lib/types/build/build.d.ts +22 -0
  212. package/lib/types/build/build.js +7 -0
  213. package/lib/types/build/build.js.map +1 -0
  214. package/lib/types/build-context.d.ts +13 -0
  215. package/lib/types/build-context.js +33 -0
  216. package/lib/types/build-context.js.map +1 -0
  217. package/lib/types/common/command-metadata.d.ts +4 -0
  218. package/lib/types/common/command-metadata.js +2 -0
  219. package/lib/types/common/command-metadata.js.map +1 -0
  220. package/lib/types/events/domain-event.d.ts +8 -0
  221. package/lib/types/events/domain-event.js +11 -0
  222. package/lib/types/events/domain-event.js.map +1 -0
  223. package/lib/types/events/quickstart-completed.d.ts +7 -0
  224. package/lib/types/events/quickstart-completed.js +10 -0
  225. package/lib/types/events/quickstart-completed.js.map +1 -0
  226. package/lib/types/events/quickstart-initiated.d.ts +7 -0
  227. package/lib/types/events/quickstart-initiated.js +10 -0
  228. package/lib/types/events/quickstart-initiated.js.map +1 -0
  229. package/lib/types/events/recipe-creation-failed.d.ts +5 -0
  230. package/lib/types/events/recipe-creation-failed.js +8 -0
  231. package/lib/types/events/recipe-creation-failed.js.map +1 -0
  232. package/lib/types/events/toc-creation-failed.d.ts +5 -0
  233. package/lib/types/events/toc-creation-failed.js +8 -0
  234. package/lib/types/events/toc-creation-failed.js.map +1 -0
  235. package/lib/types/file/directory.d.ts +17 -0
  236. package/lib/types/file/directory.js +87 -0
  237. package/lib/types/file/directory.js.map +1 -0
  238. package/lib/types/file/directoryPath.d.ts +10 -0
  239. package/lib/types/file/directoryPath.js +26 -0
  240. package/lib/types/file/directoryPath.js.map +1 -0
  241. package/lib/types/file/fileName.d.ts +7 -0
  242. package/lib/types/file/fileName.js +21 -0
  243. package/lib/types/file/fileName.js.map +1 -0
  244. package/lib/types/file/filePath.d.ts +10 -0
  245. package/lib/types/file/filePath.js +32 -0
  246. package/lib/types/file/filePath.js.map +1 -0
  247. package/lib/types/file/resource-input.d.ts +5 -0
  248. package/lib/types/file/resource-input.js +42 -0
  249. package/lib/types/file/resource-input.js.map +1 -0
  250. package/lib/types/file/urlPath.d.ts +6 -0
  251. package/lib/types/file/urlPath.js +22 -0
  252. package/lib/types/file/urlPath.js.map +1 -0
  253. package/lib/types/flags-provider.d.ts +15 -0
  254. package/lib/types/flags-provider.js +34 -0
  255. package/lib/types/flags-provider.js.map +1 -0
  256. package/lib/types/portal-context.d.ts +13 -0
  257. package/lib/types/portal-context.js +38 -0
  258. package/lib/types/portal-context.js.map +1 -0
  259. package/lib/types/recipe/recipe.d.ts +22 -0
  260. package/lib/types/recipe/recipe.js +6 -0
  261. package/lib/types/recipe/recipe.js.map +1 -0
  262. package/lib/types/recipe-context.d.ts +9 -0
  263. package/lib/types/recipe-context.js +26 -0
  264. package/lib/types/recipe-context.js.map +1 -0
  265. package/lib/types/resource-context.d.ts +12 -0
  266. package/lib/types/resource-context.js +30 -0
  267. package/lib/types/resource-context.js.map +1 -0
  268. package/lib/types/sdk/generate.d.ts +9 -22
  269. package/lib/types/sdk/generate.js +25 -14
  270. package/lib/types/sdk/generate.js.map +1 -0
  271. package/lib/types/sdk-context.d.ts +14 -0
  272. package/lib/types/sdk-context.js +32 -0
  273. package/lib/types/sdk-context.js.map +1 -0
  274. package/lib/types/sdl/sdl.d.ts +10 -0
  275. package/lib/types/sdl/sdl.js +47 -3
  276. package/lib/types/sdl/sdl.js.map +1 -0
  277. package/lib/types/spec-context.d.ts +12 -0
  278. package/lib/types/spec-context.js +29 -0
  279. package/lib/types/spec-context.js.map +1 -0
  280. package/lib/types/temp-context.d.ts +11 -0
  281. package/lib/types/temp-context.js +27 -0
  282. package/lib/types/temp-context.js.map +1 -0
  283. package/lib/types/toc/toc.js +2 -10
  284. package/lib/types/toc/toc.js.map +1 -0
  285. package/lib/types/toc-context.d.ts +12 -0
  286. package/lib/types/toc-context.js +26 -0
  287. package/lib/types/toc-context.js.map +1 -0
  288. package/lib/types/transform-context.d.ts +13 -0
  289. package/lib/types/transform-context.js +30 -0
  290. package/lib/types/transform-context.js.map +1 -0
  291. package/lib/types/utils.d.ts +0 -9
  292. package/lib/types/utils.js +2 -3
  293. package/lib/types/utils.js.map +1 -0
  294. package/lib/utils/string-utils.d.ts +2 -0
  295. package/lib/utils/string-utils.js +37 -0
  296. package/lib/utils/string-utils.js.map +1 -0
  297. package/lib/utils/utils.d.ts +2 -44
  298. package/lib/utils/utils.js +14 -366
  299. package/lib/utils/utils.js.map +1 -0
  300. package/package.json +50 -31
  301. package/bin/run +0 -9
  302. package/lib/application/portal/toc/sdl-parser.d.ts +0 -13
  303. package/lib/application/portal/toc/sdl-parser.js +0 -53
  304. package/lib/client-utils/sdk-client.d.ts +0 -23
  305. package/lib/client-utils/sdk-client.js +0 -124
  306. package/lib/commands/portal/quickstart.d.ts +0 -10
  307. package/lib/commands/portal/quickstart.js +0 -79
  308. package/lib/config/env.d.ts +0 -27
  309. package/lib/config/env.js +0 -31
  310. package/lib/controllers/api/transform.d.ts +0 -5
  311. package/lib/controllers/api/transform.js +0 -56
  312. package/lib/controllers/api/validate.d.ts +0 -3
  313. package/lib/controllers/api/validate.js +0 -33
  314. package/lib/controllers/portal/generate.d.ts +0 -3
  315. package/lib/controllers/portal/generate.js +0 -110
  316. package/lib/controllers/portal/quickstart.d.ts +0 -14
  317. package/lib/controllers/portal/quickstart.js +0 -258
  318. package/lib/controllers/portal/serve.d.ts +0 -3
  319. package/lib/controllers/portal/serve.js +0 -138
  320. package/lib/controllers/sdk/generate.d.ts +0 -4
  321. package/lib/controllers/sdk/generate.js +0 -66
  322. package/lib/services/portal/server.d.ts +0 -14
  323. package/lib/services/portal/server.js +0 -101
  324. package/lib/types/api/validate.d.ts +0 -12
  325. package/lib/types/api/validate.js +0 -3
  326. package/lib/types/common/result.d.ts +0 -17
  327. package/lib/types/common/result.js +0 -36
  328. package/lib/types/portal/generate.d.ts +0 -26
  329. package/lib/types/portal/generate.js +0 -4
  330. package/lib/types/portal/quickstart.d.ts +0 -17
  331. package/lib/types/portal/quickstart.js +0 -3
  332. package/lib/validators/common/directoryValidator.d.ts +0 -9
  333. package/lib/validators/common/directoryValidator.js +0 -53
  334. package/lib/validators/common/portValidator.d.ts +0 -5
  335. package/lib/validators/common/portValidator.js +0 -20
  336. package/lib/validators/portal/serveValidator.d.ts +0 -6
  337. package/lib/validators/portal/serveValidator.js +0 -21
@@ -1,31 +1,30 @@
1
+ import { Result } from "neverthrow";
2
+ import { UrlPath } from "../../types/file/urlPath.js";
3
+ import { DirectoryPath } from "../../types/file/directoryPath.js";
4
+ import { ServiceError } from "../../infrastructure/service-error.js";
5
+ import { Directory } from "../../types/file/directory.js";
6
+ import { ResourceInput } from "../../types/file/resource-input.js";
7
+ import { FileDownloadResponse } from "../../infrastructure/services/file-download-service.js";
1
8
  export declare class PortalQuickstartPrompts {
2
- private readonly spin;
3
- private readonly vscodeExtensionUrl;
4
- private readonly serverUrl;
5
- private readonly referenceDocumentationUrl;
6
- private readonly customizeTheSdksUrl;
7
- private readonly defaultPortalDirectoryPath;
8
- displayWelcomeMessage(): void;
9
- loginPrompt(): Promise<{
10
- email: string;
11
- password: string;
12
- }>;
13
- displayLoggingInMessage(): void;
14
- displayLoggingInErrorMessage(): void;
15
- displayLoggedInMessage(): void;
16
- specPrompt(): Promise<string>;
17
- displaySpecValidationMessage(): void;
18
- displaySpecValidationSuccessMessage(): void;
19
- displaySpecValidationErrorMessage(): void;
20
- displaySpecValidationFailureMessage(): void;
21
- specValidationFailurePrompt(): Promise<void>;
22
- sdkLanguagesPrompt(): Promise<string[]>;
23
- buildDirectoryPrompt(): Promise<string>;
24
- displayBuildDirectoryGenerationMessage(): void;
25
- displayBuildDirectoryGenerationErrorMessage(): void;
26
- displayBuildDirectoryGenerationSuccessMessage(targetFolder: string): void;
27
- displayBuildDirectoryAsTree(targetFolder: string): void;
28
- displayPortalGenerationMessage(): void;
29
- displayPortalGenerationSuccessMessage(): void;
30
- displayOutroMessage(directory: string): void;
9
+ importSpecStep(): void;
10
+ specPathPrompt(defaultSpecUrl: UrlPath): Promise<ResourceInput | undefined>;
11
+ specFileDoesNotExist(): void;
12
+ noSpecSpecified(): void;
13
+ useDefaultSpecPrompt(): Promise<boolean>;
14
+ fixYourSpec(): void;
15
+ validateSpecStep(): void;
16
+ selectLanguagesStep(): void;
17
+ selectLanguagesPrompt(): Promise<string[] | undefined>;
18
+ noLanguagesSelected(): void;
19
+ selectInputDirectoryStep(): void;
20
+ inputDirectoryPathPrompt(): Promise<DirectoryPath | undefined>;
21
+ inputDirectoryPathDoesNotExist(inputDirectory: DirectoryPath): void;
22
+ inputDirectoryNotEmpty(inputDirectory: DirectoryPath): void;
23
+ noInputDirectoryProvided(): void;
24
+ downloadBuildDirectory(fn: Promise<Result<FileDownloadResponse, ServiceError>>): Promise<Result<FileDownloadResponse, ServiceError>>;
25
+ downloadSpecFile(fn: Promise<Result<FileDownloadResponse, ServiceError>>): Promise<Result<FileDownloadResponse, ServiceError>>;
26
+ nextSteps(): void;
27
+ serviceError(serviceError: ServiceError): void;
28
+ printDirectoryStructure(inputDirectory: DirectoryPath, directory: Directory): void;
29
+ specValidationFailed(): void;
31
30
  }
@@ -1,129 +1,67 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PortalQuickstartPrompts = void 0;
4
- const fs = require("fs");
5
- const path = require("path");
6
- const treeify = require("treeify");
7
- const prompts_1 = require("@clack/prompts");
8
- const utils_1 = require("../../utils/utils");
9
- class PortalQuickstartPrompts {
10
- constructor() {
11
- this.spin = (0, prompts_1.spinner)();
12
- this.vscodeExtensionUrl = "\u001b[4mhttps://marketplace.visualstudio.com/items?itemName=apimatic-developers.apimatic-for-vscode\u001b[0m";
13
- this.serverUrl = "\u001b[4mhttp://localhost:3000\u001b[0m";
14
- this.referenceDocumentationUrl = "\u001b[4mhttps://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/overview-generating-api-portal\u001b[0m";
15
- this.customizeTheSdksUrl = "\u001b[4mhttps://docs.apimatic.io/generate-sdks/codegen-settings/codegen-settings-overview\u001b[0m";
16
- this.defaultPortalDirectoryPath = process.cwd();
17
- }
18
- displayWelcomeMessage() {
19
- (0, prompts_1.intro)(`Hello there 👋`);
20
- prompts_1.log.message(`This wizard will help you set up an API Portal via APIMatic's Docs as Code workflow in 4 simple steps.`);
21
- prompts_1.log.message(`Let's get started! 🚀`);
22
- }
23
- async loginPrompt() {
24
- prompts_1.log.message(`Please log in to continue.`);
25
- const email = await (0, prompts_1.text)({
26
- message: "Enter your registered email:",
27
- validate: (input) => {
28
- if (!input) {
29
- return (0, utils_1.getMessageInRedColor)("Email is required.");
30
- }
31
- const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
32
- if (!emailRegex.test(input)) {
33
- return (0, utils_1.getMessageInRedColor)("Please enter a valid email address.");
34
- }
35
- }
36
- });
37
- if ((0, prompts_1.isCancel)(email)) {
38
- (0, prompts_1.cancel)("Operation cancelled.");
39
- return process.exit(0);
40
- }
41
- const pass = await (0, prompts_1.password)({
42
- message: "Enter your password:",
43
- validate: (input) => {
44
- if (!input) {
45
- return (0, utils_1.getMessageInRedColor)("Password is required.");
46
- }
47
- }
48
- });
49
- if ((0, prompts_1.isCancel)(pass)) {
50
- (0, prompts_1.cancel)("Operation cancelled.");
51
- return process.exit(0);
52
- }
53
- return { email: String(email).trim(), password: String(pass).trim() };
54
- }
55
- displayLoggingInMessage() {
56
- this.spin.start((0, utils_1.getMessageInMagentaColor)("Logging in"));
57
- }
58
- displayLoggingInErrorMessage() {
59
- this.spin.stop((0, utils_1.getMessageInRedColor)(`There was a problem logging in. Please verify your credentials and try again.`));
60
- }
61
- displayLoggedInMessage() {
62
- this.spin.stop((0, utils_1.getMessageInCyanColor)("✅ Login successful!"));
63
- }
64
- async specPrompt() {
65
- prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 1 of 4: Import your OpenAPI Definition`));
66
- const spec = await (0, prompts_1.text)({
1
+ import { isCancel, log, multiselect, select, text } from "@clack/prompts";
2
+ import { format as f, getTree } from "../format.js";
3
+ import { DirectoryPath } from "../../types/file/directoryPath.js";
4
+ import { removeQuotes } from "../../utils/string-utils.js";
5
+ import { createResourceInputFromInput } from "../../types/file/resource-input.js";
6
+ import { noteWrapped, withSpinner } from "../prompt.js";
7
+ const vscodeExtensionUrl = "https://marketplace.visualstudio.com/items?itemName=apimatic-developers.apimatic-for-vscode";
8
+ const referenceDocumentationUrl = "https://docs.apimatic.io/cli-getting-started/advanced-portal-setup";
9
+ export class PortalQuickstartPrompts {
10
+ importSpecStep() {
11
+ log.info(`Step 1 of 4: Import your OpenAPI Definition`);
12
+ }
13
+ async specPathPrompt(defaultSpecUrl) {
14
+ const spec = await text({
67
15
  message: `Provide a local path or a public URL for your OpenAPI Definition file:`,
68
- placeholder: "Press Enter to use a sample OpenAPI file for APIMatic",
69
- defaultValue: "",
70
- validate: (input) => {
71
- if (!input)
72
- return;
73
- if ((0, utils_1.isValidUrl)(input))
74
- return;
75
- const resolvedPath = path.resolve(input);
76
- if (fs.existsSync(resolvedPath)) {
77
- if (fs.statSync(resolvedPath).isFile()) {
78
- return;
79
- }
80
- return (0, utils_1.getMessageInRedColor)("Error: The specified path does not point to a valid API Definition file or a zip archive containing API definition files. Please try again.");
16
+ placeholder: "Provide absolute URL/local path or press Enter to use a sample OpenAPI file from APIMatic.",
17
+ defaultValue: defaultSpecUrl.toString(),
18
+ validate: (value) => {
19
+ if (value && !createResourceInputFromInput(value)) {
20
+ return "Please enter a valid file path or URL.";
81
21
  }
82
- return (0, utils_1.getMessageInRedColor)("Error: The specified file does not exist. Please enter a valid file path.");
83
22
  }
84
23
  });
85
- if ((0, prompts_1.isCancel)(spec)) {
86
- (0, prompts_1.cancel)("Operation cancelled.");
87
- return process.exit(0);
24
+ if (isCancel(spec)) {
25
+ return undefined;
88
26
  }
89
- return String(spec).trim();
90
- }
91
- displaySpecValidationMessage() {
92
- prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 2 of 4: Validate and Lint your OpenAPI file`));
93
- this.spin.start((0, utils_1.getMessageInMagentaColor)(`Running your API Definition through APIMatic's 1200+ CodeGen Specific validation and linting rules 🔍 `));
27
+ return createResourceInputFromInput(spec);
94
28
  }
95
- displaySpecValidationSuccessMessage() {
96
- this.spin.stop((0, utils_1.getMessageInCyanColor)(`✅ Validation Successful.`));
29
+ specFileDoesNotExist() {
30
+ log.error("The specified file does not exist or is not a valid file. Please enter a valid file path.");
97
31
  }
98
- displaySpecValidationErrorMessage() {
99
- this.spin.stop((0, utils_1.getMessageInRedColor)(`Something went wrong while validating your spec.`));
32
+ noSpecSpecified() {
33
+ log.error("No API Definition was provided.");
100
34
  }
101
- displaySpecValidationFailureMessage() {
102
- this.spin.stop((0, utils_1.getMessageInRedColor)(`❗ Oops, it looks like there are some errors in your API Definition.`));
103
- }
104
- async specValidationFailurePrompt() {
105
- const useSampleSpec = await (0, prompts_1.select)({
35
+ async useDefaultSpecPrompt() {
36
+ const useDefaultSpec = await select({
106
37
  message: `How would you like to proceed?`,
107
38
  options: [
108
- { value: "exit", label: `1. Fix the issues using APIMatic's interactive VS Code Extension: ${this.vscodeExtensionUrl}` },
109
- { value: "continue", label: `2. Use an example API spec instead (recommended)` }
39
+ {
40
+ value: "no",
41
+ label: `1. Fix the issues using APIMatic's interactive VS Code Extension: ${vscodeExtensionUrl}`
42
+ },
43
+ { value: "yes", label: `2. Use an example API spec instead (recommended)` }
110
44
  ]
111
45
  });
112
- if ((0, prompts_1.isCancel)(useSampleSpec)) {
113
- (0, prompts_1.cancel)("Operation cancelled.");
114
- return process.exit(0);
115
- }
116
- if (useSampleSpec === "exit") {
117
- (0, prompts_1.outro)((0, utils_1.getMessageInCyanColor)("Good luck fixing your API definition! 🛠️ Feel free to run this command again once you're done."));
118
- return process.exit(0);
46
+ if (isCancel(useDefaultSpec)) {
47
+ return false;
119
48
  }
49
+ return useDefaultSpec === "yes";
50
+ }
51
+ fixYourSpec() {
52
+ const message = `Good luck fixing your API Definition! Feel free to run this command again once you're done.`;
53
+ log.info(message);
54
+ }
55
+ validateSpecStep() {
56
+ log.info(`Step 2 of 4: Validate and Lint your OpenAPI Definition`);
120
57
  }
121
- async sdkLanguagesPrompt() {
122
- prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 3 of 4: Select programming languages`));
123
- const languages = (await (0, prompts_1.multiselect)({
124
- message: "💻 Your API Portal will contain SDKs and SDK Documentation in the following Languages. Press enter to continue with all languages, or use the arrow keys and spacebar to customize your selection:",
58
+ selectLanguagesStep() {
59
+ log.info(`Step 3 of 4: Select programming languages`);
60
+ }
61
+ async selectLanguagesPrompt() {
62
+ const languages = (await multiselect({
63
+ message: "Your API Portal will contain SDKs and SDK Documentation in the following Languages. Press enter to continue with all languages, or use the arrow keys and space to customize your selection:",
125
64
  options: [
126
- { label: "HTTP", value: "http" },
127
65
  { label: "Typescript", value: "typescript" },
128
66
  { label: "Ruby", value: "ruby" },
129
67
  { label: "Python", value: "python" },
@@ -132,84 +70,63 @@ class PortalQuickstartPrompts {
132
70
  { label: "PHP", value: "php" },
133
71
  { label: "Go", value: "go" }
134
72
  ],
135
- initialValues: ["http", "typescript", "ruby", "python", "java", "csharp", "php", "go"]
73
+ initialValues: ["typescript", "ruby", "python", "java", "csharp", "php", "go"]
136
74
  }));
137
- if ((0, prompts_1.isCancel)(languages)) {
138
- (0, prompts_1.cancel)("Operation cancelled.");
139
- return process.exit(0);
75
+ if (isCancel(languages)) {
76
+ return undefined;
140
77
  }
141
- return languages;
142
- }
143
- async buildDirectoryPrompt() {
144
- prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 4 of 4: Generate source files for Docs as Code`));
145
- const directory = await (0, prompts_1.text)({
146
- message: "Enter the directory path where you would like to setup the API Portal :",
147
- placeholder: "Enter absolute path to the directory or leave it empty to use the current directory.",
148
- defaultValue: "./",
149
- validate: (input) => {
150
- const dirPath = path.resolve(input.trim());
151
- if (!fs.existsSync(dirPath) && dirPath != this.defaultPortalDirectoryPath) {
152
- return (0, utils_1.getMessageInRedColor)("Error: The specified directory path does not exist. Please try again.");
153
- }
154
- if (dirPath !== this.defaultPortalDirectoryPath) {
155
- const files = fs.readdirSync(dirPath).filter(item => !item.startsWith('.'));
156
- ;
157
- if (files.length > 0) {
158
- return (0, utils_1.getMessageInRedColor)("Error: The target directory is not empty. Please provide a path to an empty directory or clear its contents.");
159
- }
160
- }
161
- else if (fs.existsSync(dirPath) && fs.readdirSync(dirPath).length > 0) {
162
- return (0, utils_1.getMessageInRedColor)("Error: The target directory is not empty. Please provide a path to an empty directory or clear its contents.");
163
- }
164
- }
78
+ return ["http", ...languages];
79
+ }
80
+ noLanguagesSelected() {
81
+ log.error("No programming languages were selected.");
82
+ }
83
+ selectInputDirectoryStep() {
84
+ log.info(`Step 4 of 4: Generate source files for Docs as Code`);
85
+ }
86
+ async inputDirectoryPathPrompt() {
87
+ var _a;
88
+ const inputDirectory = await text({
89
+ message: "Enter the directory path where you would like to setup the API Portal (Requires an empty directory):",
90
+ placeholder: "Provide absolute path to the directory or press Enter to use the current directory.",
91
+ defaultValue: "./"
165
92
  });
166
- if ((0, prompts_1.isCancel)(directory)) {
167
- (0, prompts_1.cancel)("Operation cancelled.");
168
- return process.exit(0);
169
- }
170
- if (directory === "./") {
171
- return this.defaultPortalDirectoryPath;
172
- }
173
- else {
174
- return String(directory).trim();
93
+ if (isCancel(inputDirectory)) {
94
+ return undefined;
175
95
  }
96
+ const cleanedPath = removeQuotes((_a = inputDirectory === null || inputDirectory === void 0 ? void 0 : inputDirectory.trim()) !== null && _a !== void 0 ? _a : "");
97
+ return new DirectoryPath(cleanedPath);
98
+ }
99
+ inputDirectoryPathDoesNotExist(inputDirectory) {
100
+ log.error(`The specified directory path ${f.path(inputDirectory)} does not exist.`);
101
+ }
102
+ inputDirectoryNotEmpty(inputDirectory) {
103
+ log.error(`The target directory ${f.path(inputDirectory)} is not empty. Please provide a path to an empty directory or clear its contents.`);
104
+ }
105
+ noInputDirectoryProvided() {
106
+ log.error("No directory was specified.");
107
+ }
108
+ downloadBuildDirectory(fn) {
109
+ return withSpinner("Setting up source directory", `Source directory set up successfully`, "Unable to set up source directory", fn);
110
+ }
111
+ downloadSpecFile(fn) {
112
+ return withSpinner("Downloading API Definition", `API Definition downloaded`, "Unable to download API Definition", fn);
113
+ }
114
+ nextSteps() {
115
+ const message = `Use the API Playground or an SDK to call your API.
116
+ Customize the Portal theme, add API recipes and enable AI features
117
+ ${f.link(referenceDocumentationUrl)}`;
118
+ noteWrapped(message, "Next Steps");
119
+ }
120
+ serviceError(serviceError) {
121
+ log.error(serviceError.errorMessage);
122
+ }
123
+ printDirectoryStructure(inputDirectory, directory) {
124
+ const heading = `${f.var("src")} directory containing source files created at ${f.path(inputDirectory)}\n`;
125
+ const message = getTree(directory.toTreeNode());
126
+ log.info(heading + message);
176
127
  }
177
- displayBuildDirectoryGenerationMessage() {
178
- this.spin.start((0, utils_1.getMessageInMagentaColor)("Generating build directory... ⚙️"));
179
- }
180
- displayBuildDirectoryGenerationErrorMessage() {
181
- this.spin.stop((0, utils_1.getMessageInRedColor)(`Something went wrong while setting up your build directory.`));
182
- }
183
- displayBuildDirectoryGenerationSuccessMessage(targetFolder) {
184
- this.spin.stop((0, utils_1.getMessageInCyanColor)(`📁 Directory created at ${targetFolder}`));
185
- }
186
- displayBuildDirectoryAsTree(targetFolder) {
187
- const buildDirectory = (0, utils_1.directoryToJson)(targetFolder);
188
- const tree = treeify.asTree(buildDirectory, true, true);
189
- const coloredLogString = tree
190
- .split("\n")
191
- .map((line) => line.replace(/#.*/, (match) => (0, utils_1.getMessageInGreenColor)(match)))
192
- .join("\n");
193
- prompts_1.log.info(coloredLogString);
194
- }
195
- displayPortalGenerationMessage() {
196
- this.spin.start((0, utils_1.getMessageInMagentaColor)("Setting up portal"));
197
- }
198
- displayPortalGenerationSuccessMessage() {
199
- this.spin.stop((0, utils_1.getMessageInCyanColor)("✅ Portal setup complete!"));
200
- }
201
- displayOutroMessage(directory) {
202
- prompts_1.log.step((0, utils_1.getMessageInCyanColor)(`📢 Your API Portal is live at: ${this.serverUrl}\n`) +
203
- (0, utils_1.getMessageInCyanColor)(`Hot reload enabled! Edit files in ${directory} to see changes instantly reflected in your API Portal.\n`) +
204
- (0, utils_1.getMessageInCyanColor)(`Press CTRL+C to stop the server.\n\n`) +
205
- (0, utils_1.getMessageInCyanColor)(`What's next?\n`) +
206
- (0, utils_1.getMessageInCyanColor)(`- Check out the Interactive Playground in your API Portal.\n`) +
207
- (0, utils_1.getMessageInCyanColor)(`- Read the reference documentation to learn more about how you can customize this API Portal: ${this.referenceDocumentationUrl}`) +
208
- (0, utils_1.getMessageInCyanColor)(` \n`) +
209
- (0, utils_1.getMessageInCyanColor)(`- Review the SDK Documentation for your favourite programming language and download an SDK from the API Portal.\n`) +
210
- (0, utils_1.getMessageInCyanColor)(`- Check out how you can customize the SDKs using Code Generation settings: ${this.customizeTheSdksUrl}`) +
211
- (0, utils_1.getMessageInCyanColor)(` \n`));
128
+ specValidationFailed() {
129
+ log.error(`Oops, it looks like there are some errors in your API Definition`);
212
130
  }
213
131
  }
214
- exports.PortalQuickstartPrompts = PortalQuickstartPrompts;
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2tzdGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm9tcHRzL3BvcnRhbC9xdWlja3N0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLDRDQUFtSDtBQUNuSCw2Q0FRMkI7QUFFM0IsTUFBYSx1QkFBdUI7SUFBcEM7UUFDbUIsU0FBSSxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFDO1FBQ2pCLHVCQUFrQixHQUNqQywrR0FBK0csQ0FBQztRQUNqRyxjQUFTLEdBQUcseUNBQXlDLENBQUM7UUFDdEQsOEJBQXlCLEdBQ3hDLG9JQUFvSSxDQUFDO1FBQ3RILHdCQUFtQixHQUNsQyxxR0FBcUcsQ0FBQztRQUN2RiwrQkFBMEIsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFtUTlELENBQUM7SUFqUUMscUJBQXFCO1FBQ25CLElBQUEsZUFBSyxFQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEIsYUFBRyxDQUFDLE9BQU8sQ0FDVCx3R0FBd0csQ0FDekcsQ0FBQztRQUNGLGFBQUcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixhQUFHLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLGNBQUksRUFBQztZQUN2QixPQUFPLEVBQUUsOEJBQThCO1lBQ3ZDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1gsT0FBTyxJQUFBLDRCQUFvQixFQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBRUQsTUFBTSxVQUFVLEdBQ2Qsc0lBQXNJLENBQUM7Z0JBRXpJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxD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
132
+ //# sourceMappingURL=quickstart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/prompts/portal/quickstart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,4BAA4B,EAAiB,MAAM,oCAAoC,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,kBAAkB,GACtB,6FAA6F,CAAC;AAChG,MAAM,yBAAyB,GAAG,oEAAoE,CAAC;AAEvG,MAAM,OAAO,uBAAuB;IAC3B,cAAc;QACnB,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,cAAuB;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;YACtB,OAAO,EAAE,wEAAwE;YACjF,WAAW,EAAE,4FAA4F;YACzG,YAAY,EAAE,cAAc,CAAC,QAAQ,EAAE;YAEvC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,KAAK,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClD,OAAO,wCAAwC,CAAC;gBAClD,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEM,oBAAoB;QACzB,GAAG,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;IACzG,CAAC;IAEM,eAAe;QACpB,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC;YAClC,OAAO,EAAE,gCAAgC;YACzC,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,qEAAqE,kBAAkB,EAAE;iBACjG;gBACD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAkD,EAAE;aAC5E;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,cAAc,KAAK,KAAK,CAAC;IAClC,CAAC;IAEM,WAAW;QAChB,MAAM,OAAO,GAAG,6FAA6F,CAAC;QAC9G,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAEM,gBAAgB;QACrB,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,CAAC;IAEM,mBAAmB;QACxB,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,MAAM,SAAS,GAAG,CAAC,MAAM,WAAW,CAAC;YACnC,OAAO,EACL,8LAA8L;YAChM,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC5C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;gBAChC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACpC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;gBAChC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAChC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;aAC7B;YACD,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;SAC/E,CAAC,CAAa,CAAC;QAEhB,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAChC,CAAC;IAEM,mBAAmB;QACxB,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACvD,CAAC;IAEM,wBAAwB;QAC7B,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,wBAAwB;;QACnC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;YAChC,OAAO,EAAE,sGAAsG;YAC/G,WAAW,EAAE,qFAAqF;YAClG,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAC,cAAyB,aAAzB,cAAc,uBAAd,cAAc,CAAa,IAAI,EAAE,mCAAI,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAEM,8BAA8B,CAAC,cAA6B;QACjE,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACtF,CAAC;IAEM,sBAAsB,CAAC,cAA6B;QACzD,GAAG,CAAC,KAAK,CACP,wBAAwB,CAAC,CAAC,IAAI,CAC5B,cAAc,CACf,mFAAmF,CACrF,CAAC;IACJ,CAAC;IAEM,wBAAwB;QAC7B,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC3C,CAAC;IAEM,sBAAsB,CAAC,EAAuD;QACnF,OAAO,WAAW,CAChB,6BAA6B,EAC7B,sCAAsC,EACtC,mCAAmC,EACnC,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,gBAAgB,CAAC,EAAuD;QAC7E,OAAO,WAAW,CAChB,4BAA4B,EAC5B,2BAA2B,EAC3B,mCAAmC,EACnC,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,SAAS;QACd,MAAM,OAAO,GAAG;;EAElB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAClC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAEM,YAAY,CAAC,YAA0B;QAC5C,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAEM,uBAAuB,CAAC,cAA6B,EAAE,SAAoB;QAChF,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC3G,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,oBAAoB;QACzB,GAAG,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IAChF,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import { Sdl, SdlEndpoint } from "../../../types/sdl/sdl.js";
2
+ import { DirectoryPath } from "../../../types/file/directoryPath.js";
3
+ import { TreeNode } from "../../format.js";
4
+ import { StepType } from "../../../types/recipe/recipe.js";
5
+ import { ServiceError } from "../../../infrastructure/service-error.js";
6
+ import { Result } from "neverthrow";
7
+ export declare class PortalRecipePrompts {
8
+ displayWelcomeMessage(): void;
9
+ recipeNameEmpty(): void;
10
+ contentFolderNotFound(): void;
11
+ specFileEmptyInvalid(): void;
12
+ recipeNamePrompt(): Promise<string | undefined>;
13
+ stepNamePrompt(defaultStepName: string): Promise<string | undefined>;
14
+ displayStepsInformation(): void;
15
+ stepTypeSelectionPrompt(): Promise<StepType | undefined>;
16
+ endpointGroupNamePrompt(endpointGroups: Map<string, SdlEndpoint[]>): Promise<string | undefined>;
17
+ endpointNamePrompt(endpointGroups: Map<string, SdlEndpoint[]>, endpointGroupName: string): Promise<string | undefined>;
18
+ endpointDescriptionPrompt(defaultDescription: string): Promise<string | undefined>;
19
+ addAnotherStepSelectionPrompt(): Promise<boolean>;
20
+ overwriteApiRecipeInTocPrompt(name: string): Promise<boolean>;
21
+ displayStepAddedSuccessfullyMessage(): void;
22
+ invalidBuildDirectory(directory: DirectoryPath): void;
23
+ serviceError(serviceError: ServiceError): void;
24
+ openRecipeMarkdownEditor(): void;
25
+ displayRecipeStructure(tocStructure: TreeNode): void;
26
+ nextSteps(): void;
27
+ generateSdl(fn: Promise<Result<Sdl, ServiceError>>): Promise<Result<Sdl, ServiceError>>;
28
+ recipeCreated(): void;
29
+ }
@@ -0,0 +1,165 @@
1
+ import { select, text, isCancel, log, autocomplete, confirm } from "@clack/prompts";
2
+ import { format as f, getTree } from "../../format.js";
3
+ import { noteWrapped, withSpinner } from "../../prompt.js";
4
+ export class PortalRecipePrompts {
5
+ displayWelcomeMessage() {
6
+ log.step(`Welcome to the API Recipe Generation Wizard.`);
7
+ const message = `This wizard will guide you through the process of creating an API Recipe.
8
+
9
+ An API Recipe is a collection of steps that allows you to define a single use case for your API Documentation portal.
10
+ Learn more: ${f.link("https://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/api-recipes")}
11
+
12
+ Let's get started!`;
13
+ log.info(message);
14
+ }
15
+ recipeNameEmpty() {
16
+ const message = "No recipe name provided";
17
+ log.error(message);
18
+ }
19
+ contentFolderNotFound() {
20
+ const message = "Content folder not found.";
21
+ log.error(message);
22
+ }
23
+ specFileEmptyInvalid() {
24
+ const message = "Spec file is empty or invalid.";
25
+ log.error(message);
26
+ }
27
+ async recipeNamePrompt() {
28
+ const recipeName = await text({
29
+ message: `Enter a name for your API Recipe:`,
30
+ placeholder: "This name will be displayed in your API Documentation portal sidebar.",
31
+ validate: (name) => {
32
+ if (!name) {
33
+ return "Recipe name cannot be empty. Please provide a name for your API Recipe.";
34
+ }
35
+ }
36
+ });
37
+ if (isCancel(recipeName)) {
38
+ return undefined;
39
+ }
40
+ return recipeName.trim();
41
+ }
42
+ async stepNamePrompt(defaultStepName) {
43
+ const stepName = await text({
44
+ message: `Enter a name for the step:`,
45
+ defaultValue: defaultStepName,
46
+ placeholder: `Press enter to use the default, i.e. ${defaultStepName}`
47
+ });
48
+ if (isCancel(stepName)) {
49
+ return undefined;
50
+ }
51
+ return stepName.trim();
52
+ }
53
+ displayStepsInformation() {
54
+ log.step(`Add Steps to your API Recipe:`);
55
+ const message = `You can add:
56
+ 1. Content Step: Display custom content, such as instructions or information related to your API.
57
+ 2. Endpoint Step: Display an API endpoint, its playground and other relevant details.
58
+ Steps appear in the order you add them.
59
+ Let's proceed to adding steps to your API Recipe.`;
60
+ log.message(message);
61
+ }
62
+ async stepTypeSelectionPrompt() {
63
+ const stepType = await select({
64
+ message: `Select the type of step you want to add:`,
65
+ options: [
66
+ { value: "content", label: "Content Step", hint: "For displaying custom content" },
67
+ { value: "endpoint", label: "Endpoint Step", hint: "For displaying an API endpoint with its details" }
68
+ ]
69
+ });
70
+ if (isCancel(stepType)) {
71
+ return undefined;
72
+ }
73
+ return stepType;
74
+ }
75
+ async endpointGroupNamePrompt(endpointGroups) {
76
+ const groupNames = Array.from(endpointGroups.keys()).map((name) => ({
77
+ value: name,
78
+ label: name
79
+ }));
80
+ const endpointGroupName = await autocomplete({
81
+ message: `Select the endpoint group name:`,
82
+ maxItems: 10,
83
+ options: groupNames
84
+ });
85
+ if (isCancel(endpointGroupName)) {
86
+ return undefined;
87
+ }
88
+ return endpointGroupName.trim();
89
+ }
90
+ async endpointNamePrompt(endpointGroups, endpointGroupName) {
91
+ const endpoints = endpointGroups.get(endpointGroupName);
92
+ const endpointName = await autocomplete({
93
+ message: `Select the name of the endpoint:`,
94
+ maxItems: 10,
95
+ options: endpoints.map((endpoint) => ({
96
+ value: endpoint.Name,
97
+ label: endpoint.Name
98
+ }))
99
+ });
100
+ if (isCancel(endpointName)) {
101
+ return undefined;
102
+ }
103
+ return endpointName.trim();
104
+ }
105
+ async endpointDescriptionPrompt(defaultDescription) {
106
+ const endpointDescription = await text({
107
+ message: `Enter a description for the endpoint:`,
108
+ placeholder: `Optional. Leave this empty to use the endpoint description defined in the API Specification`,
109
+ defaultValue: defaultDescription
110
+ });
111
+ if (isCancel(endpointDescription)) {
112
+ return undefined;
113
+ }
114
+ return endpointDescription.trim();
115
+ }
116
+ async addAnotherStepSelectionPrompt() {
117
+ const addAnotherStep = await confirm({
118
+ message: `Do you want to add another step?`,
119
+ initialValue: true
120
+ });
121
+ if (isCancel(addAnotherStep)) {
122
+ return false;
123
+ }
124
+ return addAnotherStep;
125
+ }
126
+ async overwriteApiRecipeInTocPrompt(name) {
127
+ const overwrite = await confirm({
128
+ message: `An API Recipe with name ${f.var(name)} already exists. Do you want to overwrite it?`,
129
+ initialValue: false
130
+ });
131
+ if (isCancel(overwrite)) {
132
+ return false;
133
+ }
134
+ return overwrite;
135
+ }
136
+ displayStepAddedSuccessfullyMessage() {
137
+ log.step(`Step has been added successfully.`);
138
+ }
139
+ invalidBuildDirectory(directory) {
140
+ const message = `The ${f.var("src")} directory is either empty or invalid: ${f.path(directory)}`;
141
+ log.error(message);
142
+ }
143
+ serviceError(serviceError) {
144
+ log.error(serviceError.errorMessage);
145
+ }
146
+ openRecipeMarkdownEditor() {
147
+ log.step("Opening markdown editor for you to enter recipe content...");
148
+ }
149
+ displayRecipeStructure(tocStructure) {
150
+ const heading = `You can edit the following files to customize your API Recipe:\n`;
151
+ const message = getTree(tocStructure);
152
+ log.info(heading + message);
153
+ }
154
+ nextSteps() {
155
+ const message = `Run the command '${f.cmdAlt(`apimatic`, 'portal', 'serve')}' to preview your documentation portal`;
156
+ noteWrapped(message, "Next Steps");
157
+ }
158
+ generateSdl(fn) {
159
+ return withSpinner("Extracting endpoints", "Endpoints extracted", "Endpoints extraction failed", fn);
160
+ }
161
+ recipeCreated() {
162
+ log.info(`A new API Recipe has been created successfully.`);
163
+ }
164
+ }
165
+ //# sourceMappingURL=new-recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-recipe.js","sourceRoot":"","sources":["../../../../src/prompts/portal/recipe/new-recipe.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
+ import { UrlPath } from "../../types/file/urlPath.js";
2
+ import { DirectoryPath } from "../../types/file/directoryPath.js";
1
3
  export declare class PortalServePrompts {
2
- private readonly spin;
3
- displayGeneratingPortalMessage(): void;
4
- displayGeneratingPortalErrorMessage(): void;
5
- displayGeneratedPortalMessage(portalDir: string): void;
6
- displayOutroMessage(port: number): void;
4
+ usingFallbackPort(currentPort: number, availablePort: number): void;
5
+ portalServed(urlPath: UrlPath): void;
6
+ promptForExit(): void;
7
+ changesDetected(): void;
8
+ watcherError(): void;
9
+ blockExecution(): Promise<void>;
10
+ hotReloadEnabled(srcDirectory: DirectoryPath): void;
7
11
  }