@apimatic/cli 0.0.0-alpha.4 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/README.md +308 -130
  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 +13 -0
  25. package/lib/actions/portal/generate.js +59 -0
  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 +145 -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 +176 -0
  32. package/lib/actions/portal/recipe/new-recipe.js.map +1 -0
  33. package/lib/actions/portal/serve.d.ts +16 -0
  34. package/lib/actions/portal/serve.js +119 -0
  35. package/lib/actions/portal/serve.js.map +1 -0
  36. package/lib/actions/portal/toc/new-toc.d.ts +21 -0
  37. package/lib/actions/portal/toc/new-toc.js +97 -0
  38. package/lib/actions/portal/toc/new-toc.js.map +1 -0
  39. package/lib/actions/sdk/generate.d.ts +13 -0
  40. package/lib/actions/sdk/generate.js +47 -0
  41. package/lib/actions/sdk/generate.js.map +1 -0
  42. package/lib/application/portal/recipe/portal-recipe.d.ts +8 -0
  43. package/lib/application/portal/recipe/portal-recipe.js +33 -0
  44. package/lib/application/portal/recipe/portal-recipe.js.map +1 -0
  45. package/lib/application/portal/recipe/recipe-generator.d.ts +21 -0
  46. package/lib/application/portal/recipe/recipe-generator.js +146 -0
  47. package/lib/application/portal/recipe/recipe-generator.js.map +1 -0
  48. package/lib/application/portal/toc/toc-content-parser.d.ts +5 -0
  49. package/lib/application/portal/toc/toc-content-parser.js +44 -0
  50. package/lib/application/portal/toc/toc-content-parser.js.map +1 -0
  51. package/lib/application/portal/toc/toc-structure-generator.d.ts +6 -0
  52. package/lib/application/portal/toc/toc-structure-generator.js +84 -0
  53. package/lib/application/portal/toc/toc-structure-generator.js.map +1 -0
  54. package/lib/client-utils/auth-manager.d.ts +8 -3
  55. package/lib/client-utils/auth-manager.js +26 -14
  56. package/lib/client-utils/auth-manager.js.map +1 -0
  57. package/lib/commands/api/transform.d.ts +11 -8
  58. package/lib/commands/api/transform.js +52 -105
  59. package/lib/commands/api/transform.js.map +1 -0
  60. package/lib/commands/api/validate.d.ts +8 -5
  61. package/lib/commands/api/validate.js +31 -63
  62. package/lib/commands/api/validate.js.map +1 -0
  63. package/lib/commands/auth/login.d.ts +4 -2
  64. package/lib/commands/auth/login.js +26 -51
  65. package/lib/commands/auth/login.js.map +1 -0
  66. package/lib/commands/auth/logout.d.ts +4 -2
  67. package/lib/commands/auth/logout.js +14 -20
  68. package/lib/commands/auth/logout.js.map +1 -0
  69. package/lib/commands/auth/status.d.ts +2 -1
  70. package/lib/commands/auth/status.js +18 -20
  71. package/lib/commands/auth/status.js.map +1 -0
  72. package/lib/commands/portal/copilot.d.ts +13 -0
  73. package/lib/commands/portal/copilot.js +34 -0
  74. package/lib/commands/portal/copilot.js.map +1 -0
  75. package/lib/commands/portal/generate.d.ts +9 -8
  76. package/lib/commands/portal/generate.js +31 -97
  77. package/lib/commands/portal/generate.js.map +1 -0
  78. package/lib/commands/portal/quickstart.d.ts +9 -0
  79. package/lib/commands/portal/quickstart.js +37 -0
  80. package/lib/commands/portal/quickstart.js.map +1 -0
  81. package/lib/commands/portal/recipe/new.d.ts +12 -0
  82. package/lib/commands/portal/recipe/new.js +46 -0
  83. package/lib/commands/portal/recipe/new.js.map +1 -0
  84. package/lib/commands/portal/serve.d.ts +16 -0
  85. package/lib/commands/portal/serve.js +54 -0
  86. package/lib/commands/portal/serve.js.map +1 -0
  87. package/lib/commands/portal/toc/new.d.ts +14 -0
  88. package/lib/commands/portal/toc/new.js +61 -0
  89. package/lib/commands/portal/toc/new.js.map +1 -0
  90. package/lib/commands/sdk/generate.d.ts +11 -9
  91. package/lib/commands/sdk/generate.js +48 -122
  92. package/lib/commands/sdk/generate.js.map +1 -0
  93. package/lib/config/axios-config.d.ts +2 -0
  94. package/lib/config/axios-config.js +10 -0
  95. package/lib/config/axios-config.js.map +1 -0
  96. package/lib/hooks/not-found.d.ts +3 -0
  97. package/lib/hooks/not-found.js +52 -0
  98. package/lib/hooks/not-found.js.map +1 -0
  99. package/lib/hooks/utils.d.ts +5 -0
  100. package/lib/hooks/utils.js +51 -0
  101. package/lib/hooks/utils.js.map +1 -0
  102. package/lib/index.d.ts +1 -1
  103. package/lib/index.js +2 -4
  104. package/lib/index.js.map +1 -0
  105. package/lib/infrastructure/api-utils.d.ts +9 -0
  106. package/lib/infrastructure/api-utils.js +34 -0
  107. package/lib/infrastructure/api-utils.js.map +1 -0
  108. package/lib/infrastructure/debounce-service.d.ts +10 -0
  109. package/lib/infrastructure/debounce-service.js +52 -0
  110. package/lib/infrastructure/debounce-service.js.map +1 -0
  111. package/lib/infrastructure/env-info.d.ts +12 -0
  112. package/lib/infrastructure/env-info.js +58 -0
  113. package/lib/infrastructure/env-info.js.map +1 -0
  114. package/lib/infrastructure/file-service.d.ts +23 -0
  115. package/lib/infrastructure/file-service.js +117 -0
  116. package/lib/infrastructure/file-service.js.map +1 -0
  117. package/lib/infrastructure/launcher-service.d.ts +7 -0
  118. package/lib/infrastructure/launcher-service.js +51 -0
  119. package/lib/infrastructure/launcher-service.js.map +1 -0
  120. package/lib/infrastructure/network-service.d.ts +3 -0
  121. package/lib/infrastructure/network-service.js +7 -0
  122. package/lib/infrastructure/network-service.js.map +1 -0
  123. package/lib/infrastructure/services/api-client-factory.d.ts +6 -0
  124. package/lib/infrastructure/services/api-client-factory.js +20 -0
  125. package/lib/infrastructure/services/api-client-factory.js.map +1 -0
  126. package/lib/infrastructure/services/api-service.d.ts +10 -0
  127. package/lib/infrastructure/services/api-service.js +55 -0
  128. package/lib/infrastructure/services/api-service.js.map +1 -0
  129. package/lib/infrastructure/services/auth-service.d.ts +11 -0
  130. package/lib/infrastructure/services/auth-service.js +37 -0
  131. package/lib/infrastructure/services/auth-service.js.map +1 -0
  132. package/lib/infrastructure/services/file-download-service.d.ts +15 -0
  133. package/lib/infrastructure/services/file-download-service.js +104 -0
  134. package/lib/infrastructure/services/file-download-service.js.map +1 -0
  135. package/lib/infrastructure/services/portal-service.d.ts +21 -0
  136. package/lib/infrastructure/services/portal-service.js +157 -0
  137. package/lib/infrastructure/services/portal-service.js.map +1 -0
  138. package/lib/infrastructure/services/telemetry-service.d.ts +9 -0
  139. package/lib/infrastructure/services/telemetry-service.js +38 -0
  140. package/lib/infrastructure/services/telemetry-service.js.map +1 -0
  141. package/lib/infrastructure/services/transformation-service.d.ts +23 -0
  142. package/lib/infrastructure/services/transformation-service.js +56 -0
  143. package/lib/infrastructure/services/transformation-service.js.map +1 -0
  144. package/lib/infrastructure/services/validation-service.d.ts +17 -0
  145. package/lib/infrastructure/services/validation-service.js +49 -0
  146. package/lib/infrastructure/services/validation-service.js.map +1 -0
  147. package/lib/infrastructure/tmp-extensions.d.ts +2 -0
  148. package/lib/infrastructure/tmp-extensions.js +6 -0
  149. package/lib/infrastructure/tmp-extensions.js.map +1 -0
  150. package/lib/infrastructure/zip-service.d.ts +6 -0
  151. package/lib/infrastructure/zip-service.js +39 -0
  152. package/lib/infrastructure/zip-service.js.map +1 -0
  153. package/lib/prompts/api/transform.d.ts +11 -0
  154. package/lib/prompts/api/transform.js +30 -0
  155. package/lib/prompts/api/transform.js.map +1 -0
  156. package/lib/prompts/api/validate.d.ts +12 -0
  157. package/lib/prompts/api/validate.js +41 -0
  158. package/lib/prompts/api/validate.js.map +1 -0
  159. package/lib/prompts/auth/login.d.ts +10 -0
  160. package/lib/prompts/auth/login.js +22 -0
  161. package/lib/prompts/auth/login.js.map +1 -0
  162. package/lib/prompts/auth/logout.d.ts +3 -0
  163. package/lib/prompts/auth/logout.js +7 -0
  164. package/lib/prompts/auth/logout.js.map +1 -0
  165. package/lib/prompts/auth/status.d.ts +8 -0
  166. package/lib/prompts/auth/status.js +21 -0
  167. package/lib/prompts/auth/status.js.map +1 -0
  168. package/lib/prompts/format.d.ts +33 -0
  169. package/lib/prompts/format.js +99 -0
  170. package/lib/prompts/format.js.map +1 -0
  171. package/lib/prompts/portal/copilot.d.ts +18 -0
  172. package/lib/prompts/portal/copilot.js +82 -0
  173. package/lib/prompts/portal/copilot.js.map +1 -0
  174. package/lib/prompts/portal/generate.d.ts +13 -0
  175. package/lib/prompts/portal/generate.js +41 -0
  176. package/lib/prompts/portal/generate.js.map +1 -0
  177. package/lib/prompts/portal/quickstart.d.ts +31 -0
  178. package/lib/prompts/portal/quickstart.js +146 -0
  179. package/lib/prompts/portal/quickstart.js.map +1 -0
  180. package/lib/prompts/portal/recipe/new-recipe.d.ts +29 -0
  181. package/lib/prompts/portal/recipe/new-recipe.js +165 -0
  182. package/lib/prompts/portal/recipe/new-recipe.js.map +1 -0
  183. package/lib/prompts/portal/serve.d.ts +11 -0
  184. package/lib/prompts/portal/serve.js +33 -0
  185. package/lib/prompts/portal/serve.js.map +1 -0
  186. package/lib/prompts/portal/toc/new-toc.d.ts +15 -0
  187. package/lib/prompts/portal/toc/new-toc.js +37 -0
  188. package/lib/prompts/portal/toc/new-toc.js.map +1 -0
  189. package/lib/prompts/sdk/generate.d.ts +11 -0
  190. package/lib/prompts/sdk/generate.js +36 -0
  191. package/lib/prompts/sdk/generate.js.map +1 -0
  192. package/lib/types/api/account.d.ts +10 -0
  193. package/lib/types/api/account.js +2 -0
  194. package/lib/types/api/account.js.map +1 -0
  195. package/lib/types/api/transform.d.ts +17 -17
  196. package/lib/types/api/transform.js +21 -6
  197. package/lib/types/api/transform.js.map +1 -0
  198. package/lib/types/build/build.d.ts +22 -0
  199. package/lib/types/build/build.js +7 -0
  200. package/lib/types/build/build.js.map +1 -0
  201. package/lib/types/build-context.d.ts +17 -0
  202. package/lib/types/build-context.js +47 -0
  203. package/lib/types/build-context.js.map +1 -0
  204. package/lib/types/common/command-metadata.d.ts +4 -0
  205. package/lib/types/common/command-metadata.js +2 -0
  206. package/lib/types/common/command-metadata.js.map +1 -0
  207. package/lib/types/events/domain-event.d.ts +8 -0
  208. package/lib/types/events/domain-event.js +11 -0
  209. package/lib/types/events/domain-event.js.map +1 -0
  210. package/lib/types/events/quickstart-completed.d.ts +7 -0
  211. package/lib/types/events/quickstart-completed.js +10 -0
  212. package/lib/types/events/quickstart-completed.js.map +1 -0
  213. package/lib/types/events/quickstart-initiated.d.ts +7 -0
  214. package/lib/types/events/quickstart-initiated.js +10 -0
  215. package/lib/types/events/quickstart-initiated.js.map +1 -0
  216. package/lib/types/events/recipe-creation-failed.d.ts +5 -0
  217. package/lib/types/events/recipe-creation-failed.js +8 -0
  218. package/lib/types/events/recipe-creation-failed.js.map +1 -0
  219. package/lib/types/events/toc-creation-failed.d.ts +5 -0
  220. package/lib/types/events/toc-creation-failed.js +8 -0
  221. package/lib/types/events/toc-creation-failed.js.map +1 -0
  222. package/lib/types/file/directory.d.ts +17 -0
  223. package/lib/types/file/directory.js +86 -0
  224. package/lib/types/file/directory.js.map +1 -0
  225. package/lib/types/file/directoryPath.d.ts +9 -0
  226. package/lib/types/file/directoryPath.js +22 -0
  227. package/lib/types/file/directoryPath.js.map +1 -0
  228. package/lib/types/file/fileName.d.ts +7 -0
  229. package/lib/types/file/fileName.js +21 -0
  230. package/lib/types/file/fileName.js.map +1 -0
  231. package/lib/types/file/filePath.d.ts +10 -0
  232. package/lib/types/file/filePath.js +32 -0
  233. package/lib/types/file/filePath.js.map +1 -0
  234. package/lib/types/file/resource-input.d.ts +5 -0
  235. package/lib/types/file/resource-input.js +42 -0
  236. package/lib/types/file/resource-input.js.map +1 -0
  237. package/lib/types/file/urlPath.d.ts +6 -0
  238. package/lib/types/file/urlPath.js +22 -0
  239. package/lib/types/file/urlPath.js.map +1 -0
  240. package/lib/types/flags-provider.d.ts +15 -0
  241. package/lib/types/flags-provider.js +34 -0
  242. package/lib/types/flags-provider.js.map +1 -0
  243. package/lib/types/portal-context.d.ts +13 -0
  244. package/lib/types/portal-context.js +38 -0
  245. package/lib/types/portal-context.js.map +1 -0
  246. package/lib/types/recipe/recipe.d.ts +22 -0
  247. package/lib/types/recipe/recipe.js +6 -0
  248. package/lib/types/recipe/recipe.js.map +1 -0
  249. package/lib/types/recipe-context.d.ts +8 -0
  250. package/lib/types/recipe-context.js +21 -0
  251. package/lib/types/recipe-context.js.map +1 -0
  252. package/lib/types/resource-context.d.ts +12 -0
  253. package/lib/types/resource-context.js +30 -0
  254. package/lib/types/resource-context.js.map +1 -0
  255. package/lib/types/sdk/generate.d.ts +9 -21
  256. package/lib/types/sdk/generate.js +25 -12
  257. package/lib/types/sdk/generate.js.map +1 -0
  258. package/lib/types/sdk-context.d.ts +14 -0
  259. package/lib/types/sdk-context.js +32 -0
  260. package/lib/types/sdk-context.js.map +1 -0
  261. package/lib/types/sdl/sdl.d.ts +21 -0
  262. package/lib/types/sdl/sdl.js +47 -0
  263. package/lib/types/sdl/sdl.js.map +1 -0
  264. package/lib/types/spec-context.d.ts +10 -0
  265. package/lib/types/spec-context.js +17 -0
  266. package/lib/types/spec-context.js.map +1 -0
  267. package/lib/types/temp-context.d.ts +11 -0
  268. package/lib/types/temp-context.js +27 -0
  269. package/lib/types/temp-context.js.map +1 -0
  270. package/lib/types/toc/toc.d.ts +31 -0
  271. package/lib/types/toc/toc.js +9 -0
  272. package/lib/types/toc/toc.js.map +1 -0
  273. package/lib/types/toc-context.d.ts +12 -0
  274. package/lib/types/toc-context.js +26 -0
  275. package/lib/types/toc-context.js.map +1 -0
  276. package/lib/types/transform-context.d.ts +13 -0
  277. package/lib/types/transform-context.js +30 -0
  278. package/lib/types/transform-context.js.map +1 -0
  279. package/lib/types/utils.d.ts +1 -6
  280. package/lib/types/utils.js +2 -2
  281. package/lib/types/utils.js.map +1 -0
  282. package/lib/utils/string-utils.d.ts +1 -0
  283. package/lib/utils/string-utils.js +10 -0
  284. package/lib/utils/string-utils.js.map +1 -0
  285. package/lib/utils/utils.d.ts +2 -18
  286. package/lib/utils/utils.js +33 -116
  287. package/lib/utils/utils.js.map +1 -0
  288. package/package.json +101 -44
  289. package/bin/run +0 -5
  290. package/lib/client-utils/sdk-client.d.ts +0 -23
  291. package/lib/client-utils/sdk-client.js +0 -119
  292. package/lib/config/env.d.ts +0 -1
  293. package/lib/config/env.js +0 -4
  294. package/lib/controllers/api/transform.d.ts +0 -5
  295. package/lib/controllers/api/transform.js +0 -49
  296. package/lib/controllers/api/validate.d.ts +0 -3
  297. package/lib/controllers/api/validate.js +0 -22
  298. package/lib/controllers/portal/generate.d.ts +0 -2
  299. package/lib/controllers/portal/generate.js +0 -49
  300. package/lib/controllers/sdk/generate.d.ts +0 -4
  301. package/lib/controllers/sdk/generate.js +0 -64
  302. package/lib/types/api/validate.d.ts +0 -12
  303. package/lib/types/api/validate.js +0 -2
  304. package/lib/types/portal/generate.d.ts +0 -9
  305. package/lib/types/portal/generate.js +0 -2
@@ -0,0 +1,146 @@
1
+ import prettier from "prettier";
2
+ import { stringify } from "yaml";
3
+ import { FileService } from "../../../infrastructure/file-service.js";
4
+ import { FilePath } from "../../../types/file/filePath.js";
5
+ import { FileName } from "../../../types/file/fileName.js";
6
+ export class PortalRecipeGenerator {
7
+ constructor() {
8
+ //TODO: Replace tocFileContent any type with concrete type.
9
+ this.fileService = new FileService();
10
+ }
11
+ async createRecipe(recipe, tocFileContent, tocFilePath, recipeName, recipeFileName, buildContext, buildDirectory) {
12
+ await this.addRecipeToToc(tocFileContent, tocFilePath, recipeName, recipeFileName);
13
+ await this.registerRecipeInBuildConfigFile(buildContext, recipeName, recipeFileName);
14
+ await this.createMarkdownFile(recipeFileName, buildDirectory.join("content"));
15
+ const generatedRecipeScript = await this.createScriptFromRecipe(recipe);
16
+ const generatedRecipeScriptsDirectoryPath = buildDirectory.join("static", "scripts", "recipes");
17
+ await this.saveGeneratedRecipeScriptToBuildDirectory(generatedRecipeScript, generatedRecipeScriptsDirectoryPath, recipeFileName);
18
+ }
19
+ async addRecipeToToc(tocData, tocFilePath, recipeName, recipeFileName) {
20
+ let toc = tocData.toc;
21
+ let apiRecipesGroup = toc.find((item) => item.group === "API Recipes");
22
+ if (!apiRecipesGroup) {
23
+ // If the group doesn't exist, create and insert it after the last group
24
+ apiRecipesGroup = {
25
+ group: "API Recipes",
26
+ items: []
27
+ };
28
+ // Insert after the last group section, before generate sections
29
+ let lastGroupIdx = -1;
30
+ for (let i = 0; i < toc.length; i++) {
31
+ if (toc[i].group)
32
+ lastGroupIdx = i;
33
+ }
34
+ toc.splice(lastGroupIdx + 1, 0, apiRecipesGroup);
35
+ }
36
+ // Only add the recipe if it doesn't already exist
37
+ const existingRecipe = apiRecipesGroup.items.find((item) => item.page === recipeName || item.file === `recipes/${recipeFileName}.md`);
38
+ if (!existingRecipe) {
39
+ apiRecipesGroup.items.push({
40
+ page: recipeName,
41
+ file: `recipes/${recipeFileName}.md`
42
+ });
43
+ await this.fileService.writeContents(tocFilePath, stringify(tocData));
44
+ }
45
+ }
46
+ async registerRecipeInBuildConfigFile(buildContext, recipeName, recipeFileName) {
47
+ const buildConfig = await buildContext.getBuildFileContents();
48
+ if (!buildConfig.recipes) {
49
+ buildConfig.recipes = {};
50
+ }
51
+ const recipesConfig = buildConfig.recipes;
52
+ if (!recipesConfig.workflows) {
53
+ recipesConfig.workflows = [];
54
+ }
55
+ const existingIndex = recipesConfig.workflows.findIndex((workflow) => workflow.permalink === `page:recipes/${recipeFileName}`);
56
+ const newWorkflow = {
57
+ name: recipeName,
58
+ permalink: `page:recipes/${recipeFileName}`,
59
+ functionName: this.toPascalCase(recipeName),
60
+ scriptPath: `./static/scripts/recipes/${recipeFileName}.js`
61
+ };
62
+ if (existingIndex !== -1) {
63
+ // Replace the existing workflow
64
+ recipesConfig.workflows[existingIndex] = newWorkflow;
65
+ }
66
+ else {
67
+ // Add as new workflow
68
+ recipesConfig.workflows.push(newWorkflow);
69
+ }
70
+ await buildContext.updateBuildFileContents(buildConfig);
71
+ }
72
+ async createMarkdownFile(recipeFileName, contentFolder) {
73
+ const directory = contentFolder.join("recipes");
74
+ const markdownFileContent = this.getMarkdownFileContent();
75
+ await this.fileService.createDirectoryIfNotExists(directory);
76
+ await this.fileService.writeContents(new FilePath(directory, new FileName(`${recipeFileName}.md`)), markdownFileContent);
77
+ }
78
+ async createScriptFromRecipe(recipe) {
79
+ let script = `export default function ${this.toPascalCase(recipe.name)}(workflowCtx, portal) {`;
80
+ script += "return {";
81
+ recipe.steps.forEach((step, index) => {
82
+ script += `"${step.key}": {`;
83
+ script += `name: "${step.name}",`;
84
+ script += "stepCallback: async () => {";
85
+ if (step.type === "content") {
86
+ script += this.addContentStepToScript(step.config);
87
+ }
88
+ else if (step.type === "endpoint") {
89
+ script += this.addEndpointStepToScript(step.config);
90
+ }
91
+ script += "},";
92
+ script += "}";
93
+ if (index < recipe.steps.length - 1) {
94
+ script += ",";
95
+ }
96
+ });
97
+ script += "};";
98
+ script += "}";
99
+ return script;
100
+ }
101
+ async saveGeneratedRecipeScriptToBuildDirectory(generatedRecipeScript, generatedRecipeScriptsDirectoryPath, recipeFileName, format = false) {
102
+ if (format) {
103
+ generatedRecipeScript = await this.formatScript(generatedRecipeScript);
104
+ }
105
+ await this.fileService.createDirectoryIfNotExists(generatedRecipeScriptsDirectoryPath);
106
+ await this.fileService.writeContents(new FilePath(generatedRecipeScriptsDirectoryPath, new FileName(`${recipeFileName}.js`)), generatedRecipeScript);
107
+ }
108
+ generateVerifyFunction() {
109
+ return `if (response.StatusCode == 200) { return true; } else { setError("API Call wasn't able to get a valid response. Please try again."); return false; }`;
110
+ }
111
+ addContentStepToScript(contentConfig) {
112
+ return `return workflowCtx.showContent(${JSON.stringify(contentConfig.content)});`;
113
+ }
114
+ addEndpointStepToScript(endpointConfig) {
115
+ let script = "return workflowCtx.showEndpoint({";
116
+ if (endpointConfig.description !== "") {
117
+ script += `description: ${JSON.stringify(endpointConfig.description)},`;
118
+ }
119
+ script += `endpointPermalink: "${endpointConfig.endpointPermalink}",`;
120
+ script += "verify: (response, setError) => {";
121
+ script += this.generateVerifyFunction();
122
+ script += "},";
123
+ script += "});";
124
+ return script;
125
+ }
126
+ getMarkdownFileContent() {
127
+ return `# This is a Guided Walkthrough File
128
+ This is the starter content`;
129
+ }
130
+ async formatScript(code) {
131
+ return prettier.format(code, {
132
+ parser: "babel",
133
+ semi: true,
134
+ singleQuote: false,
135
+ tabWidth: 2,
136
+ trailingComma: "es5"
137
+ });
138
+ }
139
+ toPascalCase(str) {
140
+ return str
141
+ .split(" ")
142
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
143
+ .join("");
144
+ }
145
+ }
146
+ //# sourceMappingURL=recipe-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-generator.js","sourceRoot":"","sources":["../../../../src/application/portal/recipe/recipe-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TocGroup } from "../../../types/toc/toc.js";
2
+ export declare class TocContentParser {
3
+ parseContentFolder(contentFolderPath: string, workingDirectory: string): Promise<TocGroup[]>;
4
+ private normalizePath;
5
+ }
@@ -0,0 +1,44 @@
1
+ import * as path from "path";
2
+ import * as fs from "fs/promises";
3
+ export class TocContentParser {
4
+ async parseContentFolder(contentFolderPath, workingDirectory) {
5
+ const items = await fs.readdir(contentFolderPath);
6
+ const contentItems = [];
7
+ for (const item of items) {
8
+ const itemPath = path.join(contentFolderPath, item);
9
+ const stats = await fs.stat(itemPath);
10
+ if (stats.isDirectory()) {
11
+ const subItems = await this.parseContentFolder(itemPath, workingDirectory);
12
+ if (subItems.length > 0) {
13
+ contentItems.push({
14
+ group: item,
15
+ items: subItems[0].items // Take items from the Custom Content group
16
+ });
17
+ }
18
+ }
19
+ else if (stats.isFile() && item.endsWith(".md")) {
20
+ const relativePath = path.relative(workingDirectory, itemPath);
21
+ const pageName = path.basename(item, ".md");
22
+ contentItems.push({
23
+ page: pageName,
24
+ file: this.normalizePath(relativePath)
25
+ });
26
+ }
27
+ }
28
+ // Return empty array if no markdown files were found
29
+ if (contentItems.length === 0) {
30
+ return [];
31
+ }
32
+ // Wrap everything under a "Custom Content" group
33
+ return [
34
+ {
35
+ group: "Custom Content",
36
+ items: contentItems
37
+ }
38
+ ];
39
+ }
40
+ normalizePath(path) {
41
+ return path.replace(/\\/g, "/");
42
+ }
43
+ }
44
+ //# sourceMappingURL=toc-content-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toc-content-parser.js","sourceRoot":"","sources":["../../../../src/application/portal/toc/toc-content-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlC,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,kBAAkB,CAAC,iBAAyB,EAAE,gBAAwB;QAC1E,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,YAAY,GAAiC,EAAE,CAAC;QAEtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,YAAY,CAAC,IAAI,CAAC;wBAChB,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,2CAA2C;qBACrE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAE5C,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,iDAAiD;QACjD,OAAO;YACL;gBACE,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,YAAY;aACpB;SACF,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { Toc, TocGroup, TocEndpoint, TocModel } from "../../../types/toc/toc.js";
2
+ export declare class TocStructureGenerator {
3
+ createTocStructure(endpointGroups: Map<string, TocEndpoint[]>, models: TocModel[], expandEndpoints?: boolean, expandModels?: boolean, contentGroups?: TocGroup[]): Toc;
4
+ transformToYaml(toc: Toc): string;
5
+ private transformKeys;
6
+ }
@@ -0,0 +1,84 @@
1
+ import { stringify } from "yaml";
2
+ export class TocStructureGenerator {
3
+ createTocStructure(endpointGroups, models, expandEndpoints = false, expandModels = false, contentGroups = []) {
4
+ const tocStructure = {
5
+ toc: []
6
+ };
7
+ // Add Getting Started section
8
+ tocStructure.toc.push({
9
+ group: "Getting Started",
10
+ items: [
11
+ {
12
+ generate: "How to Get Started",
13
+ from: "getting-started"
14
+ }
15
+ ]
16
+ });
17
+ // Add content groups
18
+ if (contentGroups.length > 0) {
19
+ tocStructure.toc.push(...contentGroups);
20
+ }
21
+ // Add API Endpoints section
22
+ if (!expandEndpoints || endpointGroups.size === 0) {
23
+ tocStructure.toc.push({
24
+ generate: "API Endpoints",
25
+ from: "endpoints"
26
+ });
27
+ }
28
+ else {
29
+ tocStructure.toc.push({
30
+ group: "API Endpoints",
31
+ items: Array.from(endpointGroups).map(([groupName, endpoints]) => ({
32
+ group: groupName,
33
+ items: [
34
+ {
35
+ generate: null,
36
+ from: "endpoint-group-overview",
37
+ endpointGroup: groupName
38
+ },
39
+ ...endpoints
40
+ ]
41
+ }))
42
+ });
43
+ }
44
+ // Add Models section
45
+ if (!expandModels || models.length === 0) {
46
+ tocStructure.toc.push({
47
+ generate: "Models",
48
+ from: "models"
49
+ });
50
+ }
51
+ else {
52
+ tocStructure.toc.push({
53
+ group: "Models",
54
+ items: models
55
+ });
56
+ }
57
+ //Add Sdk Infra section
58
+ tocStructure.toc.push({
59
+ generate: "SDK Infrastructure",
60
+ from: "sdk-infra"
61
+ });
62
+ return tocStructure;
63
+ }
64
+ transformToYaml(toc) {
65
+ const transformedToc = this.transformKeys(toc);
66
+ return stringify(transformedToc, {
67
+ indent: 2,
68
+ nullStr: ""
69
+ });
70
+ }
71
+ transformKeys(obj) {
72
+ if (Array.isArray(obj)) {
73
+ return obj.map((item) => this.transformKeys(item));
74
+ }
75
+ if (obj !== null && typeof obj === "object") {
76
+ return Object.fromEntries(Object.entries(obj).map(([key, value]) => [
77
+ key.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(),
78
+ this.transformKeys(value)
79
+ ]));
80
+ }
81
+ return obj;
82
+ }
83
+ }
84
+ //# sourceMappingURL=toc-structure-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toc-structure-generator.js","sourceRoot":"","sources":["../../../../src/application/portal/toc/toc-structure-generator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- export declare type AuthInfo = {
1
+ import { DirectoryPath } from "../types/file/directoryPath.js";
2
+ export type AuthInfo = {
2
3
  email: string;
3
4
  authKey: string;
5
+ APIMATIC_CLI_TELEMETRY_OPTOUT?: string;
4
6
  };
5
7
  /**
6
8
  *
@@ -10,8 +12,11 @@ export declare type AuthInfo = {
10
12
  export declare function getAuthInfo(configDir: string): Promise<AuthInfo | null>;
11
13
  /**
12
14
  *
13
- * @param {AuthInfo} credentials
15
+ * @param {string} email
16
+ * @param {string} authKey
17
+ * @param {string} isTelemetryOptedOut
14
18
  * @param {string} configDir <- Directory with user configuration
15
19
  * //Function to set credentials.
16
20
  */
17
- export declare function setAuthInfo(credentials: AuthInfo, configDir: string): Promise<void>;
21
+ export declare function setAuthInfo(email: string, authKey: string, isTelemetryOptedOut: boolean, configDir: DirectoryPath): Promise<void>;
22
+ export declare function removeAuthInfo(configDir: DirectoryPath): Promise<void>;
@@ -1,33 +1,45 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setAuthInfo = exports.getAuthInfo = void 0;
4
- const path = require("path");
5
- const fs = require("fs-extra");
1
+ import * as path from "path";
2
+ import fs from "fs-extra";
6
3
  /**
7
4
  *
8
5
  * @param {string} configDir <- Directory with user configuration
9
6
  * //Function to get credentials
10
7
  */
11
- async function getAuthInfo(configDir) {
8
+ export async function getAuthInfo(configDir) {
12
9
  try {
13
- const data = JSON.parse(await fs.readFile(path.join(configDir, "config.json"), "utf8"));
14
- return data;
10
+ return JSON.parse(await fs.readFile(path.join(configDir, "config.json"), "utf8"));
15
11
  }
16
- catch (e) {
12
+ catch (_a) {
17
13
  return null;
18
14
  }
19
15
  }
20
- exports.getAuthInfo = getAuthInfo;
21
16
  /**
22
17
  *
23
- * @param {AuthInfo} credentials
18
+ * @param {string} email
19
+ * @param {string} authKey
20
+ * @param {string} isTelemetryOptedOut
24
21
  * @param {string} configDir <- Directory with user configuration
25
22
  * //Function to set credentials.
26
23
  */
27
- async function setAuthInfo(credentials, configDir) {
28
- const configFilePath = path.join(configDir, "config.json");
24
+ export async function setAuthInfo(email, authKey, isTelemetryOptedOut, configDir) {
25
+ const credentials = {
26
+ email,
27
+ authKey,
28
+ APIMATIC_CLI_TELEMETRY_OPTOUT: isTelemetryOptedOut ? "1" : "0"
29
+ };
30
+ const configFilePath = path.join(configDir.toString(), "config.json");
29
31
  if (!fs.existsSync(configFilePath))
30
32
  fs.createFileSync(configFilePath);
31
33
  return await fs.writeFile(configFilePath, JSON.stringify(credentials));
32
34
  }
33
- exports.setAuthInfo = setAuthInfo;
35
+ export async function removeAuthInfo(configDir) {
36
+ const credentials = {
37
+ email: "",
38
+ authKey: ""
39
+ };
40
+ const configFilePath = path.join(configDir.toString(), "config.json");
41
+ if (!fs.existsSync(configFilePath))
42
+ fs.createFileSync(configFilePath);
43
+ return await fs.writeFile(configFilePath, JSON.stringify(credentials));
44
+ }
45
+ //# sourceMappingURL=auth-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-manager.js","sourceRoot":"","sources":["../../src/client-utils/auth-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAQ1B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,OAAe,EACf,mBAA4B,EAC5B,SAAwB;IAExB,MAAM,WAAW,GAAa;QAC5B,KAAK;QACL,OAAO;QACP,6BAA6B,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;KAC/D,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;IAEtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAEtE,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAwB;IAC3D,MAAM,WAAW,GAAa;QAC5B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;IAEtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAEtE,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC"}
@@ -1,14 +1,17 @@
1
- import { flags, Command } from "@oclif/command";
1
+ import { Command } from "@oclif/core";
2
2
  export default class Transform extends Command {
3
- static description: string;
3
+ static readonly summary = "Transform API specifications between different formats";
4
+ static readonly description = "Transform API specifications from one format to another.\nSupports multiple formats including OpenAPI/Swagger, RAML, WSDL, and Postman Collections.";
5
+ static readonly cmdTxt: string;
4
6
  static examples: string[];
5
7
  static flags: {
6
- format: flags.IOptionFlag<string>;
7
- file: flags.IOptionFlag<string>;
8
- url: flags.IOptionFlag<string>;
9
- destination: flags.IOptionFlag<string>;
10
- force: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
11
- "auth-key": flags.IOptionFlag<string | undefined>;
8
+ "auth-key": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ url: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ destination: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
14
  };
13
15
  run(): Promise<void>;
16
+ private readonly getConfigDir;
14
17
  }
@@ -1,111 +1,58 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const path = require("path");
4
- const fs = require("fs-extra");
5
- const command_1 = require("@oclif/command");
6
- const sdk_1 = require("@apimatic/sdk");
7
- const sdk_client_1 = require("../../client-utils/sdk-client");
8
- const utils_1 = require("../../utils/utils");
9
- const utils_2 = require("../../utils/utils");
10
- const transform_1 = require("../../types/api/transform");
11
- const transform_2 = require("../../controllers/api/transform");
12
- const formats = Object.keys(sdk_1.ExportFormats).join("|");
13
- class Transform extends command_1.Command {
1
+ import { Command, Flags } from "@oclif/core";
2
+ import { DirectoryPath } from "../../types/file/directoryPath.js";
3
+ import { FlagsProvider } from "../../types/flags-provider.js";
4
+ import { TransformAction } from "../../actions/api/transform.js";
5
+ import { format, intro, outro } from "../../prompts/format.js";
6
+ import { createResourceInput } from "../../types/file/resource-input.js";
7
+ import { TransformationFormats } from "../../types/api/transform.js";
8
+ import { ExportFormats } from "@apimatic/sdk";
9
+ const DEFAULT_WORKING_DIRECTORY = "./";
10
+ class Transform extends Command {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.getConfigDir = () => {
14
+ return new DirectoryPath(this.config.configDir);
15
+ };
16
+ }
14
17
  async run() {
15
- const { flags } = this.parse(Transform);
16
- const fileName = flags.file ? utils_2.getFileNameFromPath(flags.file) : utils_2.getFileNameFromPath(flags.url);
17
- const destinationFormat = transform_1.DestinationFormats[flags.format];
18
- const destinationFilePath = path.join(flags.destination, `${fileName}_${flags.format}.${destinationFormat}`.toLowerCase());
19
- // Check if destination file already exist and throw error if force flag is not set
20
- if (fs.existsSync(destinationFilePath) && !flags.force) {
21
- throw new Error(`Can't download transformed file to path ${destinationFilePath}, because it already exists`);
22
- }
23
- try {
24
- // Check if paths provided are valid
25
- if (flags.file && !(await fs.pathExists(flags.file))) {
26
- throw new Error(`Transformation file: ${flags.file} does not exist`);
27
- }
28
- else if (!(await fs.pathExists(flags.destination))) {
29
- throw new Error(`Destination path: ${flags.destination} does not exist`);
30
- }
31
- const overrideAuthKey = flags["auth-key"] ? flags["auth-key"] : null;
32
- const client = await sdk_client_1.SDKClient.getInstance().getClient(overrideAuthKey, this.config.configDir);
33
- const transformationController = new sdk_1.TransformationController(client);
34
- const { id, apiValidationSummary } = await transform_2.getTransformationId(flags, transformationController);
35
- const logFunctions = {
36
- log: this.log,
37
- warn: this.warn,
38
- error: this.error
39
- };
40
- utils_1.printValidationMessages(apiValidationSummary, logFunctions);
41
- const savedTransformationFile = await transform_2.downloadTransformationFile({
42
- id,
43
- destinationFilePath,
44
- transformationController
45
- });
46
- this.log(`Success! Your transformed file is located at ${savedTransformationFile}`);
47
- }
48
- catch (error) {
49
- if (error.result) {
50
- const apiError = error;
51
- // TODO: Hopefully, this type-cast won't be necessary when the SDK is
52
- // updated to throw the right exception type for this status code.
53
- const result = apiError.result;
54
- if (apiError.statusCode === 422 && result && "errors" in result && Array.isArray(result.errors)) {
55
- this.error(utils_2.replaceHTML(`${result.errors}`));
56
- }
57
- else if (apiError.statusCode === 422 && apiError.body && typeof apiError.body === "string") {
58
- this.error(JSON.parse(apiError.body)["dto.FileUrl"][0]);
59
- }
60
- else if (apiError.statusCode === 401 && apiError.body && typeof apiError.body === "string") {
61
- this.error(apiError.body);
62
- }
63
- else if (apiError.statusCode === 500) {
64
- this.error(apiError.message);
65
- }
66
- }
67
- else if (error.statusCode === 401 &&
68
- error.body &&
69
- typeof error.body === "string") {
70
- this.error(error.body);
71
- }
72
- else {
73
- this.error(`${error.message}`);
74
- }
75
- }
18
+ const { flags: { format, file, url, destination, force, "auth-key": authKey } } = await this.parse(Transform);
19
+ const workingDirectory = new DirectoryPath(destination !== null && destination !== void 0 ? destination : DEFAULT_WORKING_DIRECTORY);
20
+ const transformedApiDirectory = workingDirectory.join("transformations");
21
+ const specFile = createResourceInput(file, url);
22
+ // Directly map the format flag to ExportFormats using TransformationFormats
23
+ const key = format;
24
+ const transformationFormat = TransformationFormats[key];
25
+ const parsedFormat = ExportFormats[transformationFormat];
26
+ const commandMetadata = {
27
+ commandName: Transform.id,
28
+ shell: this.config.shell
29
+ };
30
+ intro("Transform API");
31
+ const action = new TransformAction(this.getConfigDir(), commandMetadata, authKey);
32
+ const result = await action.execute(specFile, parsedFormat, transformedApiDirectory, force);
33
+ outro(result);
76
34
  }
77
35
  }
78
- exports.default = Transform;
79
- Transform.description = `Transform API specifications from one format to another. Supports [10+ different formats](https://www.apimatic.io/transformer/#supported-formats) including OpenApi/Swagger, RAML, WSDL and Postman Collections.`;
36
+ Transform.summary = "Transform API specifications between different formats";
37
+ Transform.description = `Transform API specifications from one format to another.
38
+ Supports multiple formats including OpenAPI/Swagger, RAML, WSDL, and Postman Collections.`;
39
+ Transform.cmdTxt = format.cmd("apimatic", "api", "transform");
80
40
  Transform.examples = [
81
- `$ apimatic api:transform --format="OpenApi3Json" --file="./specs/sample.json" --destination="D:/"
82
- Success! Your transformed file is located at D:/Transformed_OpenApi3Json.json
83
- `,
84
- `$ apimatic api:transform --format=RAML --url="https://petstore.swagger.io/v2/swagger.json" --destination="D:/"
85
- Success! Your transformed file is located at D:/swagger_raml.yaml
86
- `
41
+ `${Transform.cmdTxt} ${format.flag("format", "OPENAPI3YAML")} ${format.flag("file", "./specs/sample.json")} ${format.flag("destination", "./")}`,
42
+ `${Transform.cmdTxt} ${format.flag("format", "RAML")} ${format.flag("url", '"https://petstore.swagger.io/v2/swagger.json"')} ${format.flag("destination", "./")}`
87
43
  ];
88
- Transform.flags = {
89
- format: command_1.flags.string({
90
- parse: (format) => transform_2.getValidFormat(format.toUpperCase()),
44
+ Transform.flags = Object.assign(Object.assign({ format: Flags.string({
91
45
  required: true,
92
- description: `specification format to transform API specification into
93
- ${formats}`
94
- }),
95
- file: command_1.flags.string({
96
- parse: (input) => path.resolve(input),
97
- default: "",
98
- description: "path to the API specification file to transform"
99
- }),
100
- url: command_1.flags.string({
101
- default: "",
102
- description: "URL to the API specification file to transform. Can be used in place of the --file option if the API specification is publicly available."
103
- }),
104
- destination: command_1.flags.string({
105
- parse: (input) => path.resolve(input),
106
- default: path.resolve("./"),
107
- description: "directory to download transformed file to"
108
- }),
109
- force: command_1.flags.boolean({ char: "f", default: false, description: "overwrite if same file exist in the destination" }),
110
- "auth-key": command_1.flags.string({ description: "override current authentication state with an authentication key" })
111
- };
46
+ description: "Specification format to transform API specification into",
47
+ options: Object.keys(TransformationFormats)
48
+ }), file: Flags.string({
49
+ description: "Path to the API specification file to transform"
50
+ }), url: Flags.string({
51
+ description: "URL to the API specification file to transform (publicly accessible)"
52
+ }), destination: Flags.string({
53
+ char: "d",
54
+ description: "Directory to save the transformed file to",
55
+ default: DEFAULT_WORKING_DIRECTORY
56
+ }) }, FlagsProvider.force), FlagsProvider.authKey);
57
+ export default Transform;
58
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/api/transform.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- import { flags, Command } from "@oclif/command";
1
+ import { Command } from "@oclif/core";
2
2
  export default class Validate extends Command {
3
- static description: string;
3
+ static readonly summary = "Validate API specification for syntactic and semantic correctness";
4
+ static readonly description = "Validate your API specification to ensure it adheres to syntactic and semantic standards.";
5
+ static readonly cmdTxt: string;
4
6
  static examples: string[];
5
7
  static flags: {
6
- file: flags.IOptionFlag<string>;
7
- url: flags.IOptionFlag<string>;
8
- "auth-key": flags.IOptionFlag<string | undefined>;
8
+ "auth-key": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ url: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
11
  };
10
12
  run(): Promise<void>;
13
+ private readonly getConfigDir;
11
14
  }