@apimatic/cli 1.1.0-alpha.4 → 1.1.0-alpha.6

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 (61) hide show
  1. package/README.md +115 -37
  2. package/bin/run +5 -1
  3. package/lib/client-utils/auth-manager.js +3 -3
  4. package/lib/client-utils/sdk-client.js +1 -0
  5. package/lib/commands/api/transform.d.ts +7 -7
  6. package/lib/commands/api/transform.js +18 -15
  7. package/lib/commands/api/validate.d.ts +4 -4
  8. package/lib/commands/api/validate.js +13 -10
  9. package/lib/commands/auth/login.d.ts +2 -2
  10. package/lib/commands/auth/login.js +29 -12
  11. package/lib/commands/auth/logout.d.ts +1 -1
  12. package/lib/commands/auth/logout.js +3 -2
  13. package/lib/commands/auth/status.d.ts +1 -1
  14. package/lib/commands/auth/status.js +3 -2
  15. package/lib/commands/portal/generate.d.ts +6 -6
  16. package/lib/commands/portal/generate.js +16 -11
  17. package/lib/commands/portal/quickstart.d.ts +10 -0
  18. package/lib/commands/portal/quickstart.js +83 -0
  19. package/lib/commands/portal/serve.d.ts +17 -0
  20. package/lib/commands/portal/serve.js +143 -0
  21. package/lib/commands/sdk/generate.d.ts +8 -8
  22. package/lib/commands/sdk/generate.js +16 -13
  23. package/lib/config/axios-config.d.ts +2 -0
  24. package/lib/config/axios-config.js +12 -0
  25. package/lib/config/env.d.ts +26 -0
  26. package/lib/config/env.js +28 -1
  27. package/lib/controllers/api/transform.js +6 -5
  28. package/lib/controllers/api/validate.d.ts +1 -1
  29. package/lib/controllers/api/validate.js +25 -8
  30. package/lib/controllers/portal/generate.d.ts +2 -1
  31. package/lib/controllers/portal/generate.js +19 -11
  32. package/lib/controllers/portal/quickstart.d.ts +14 -0
  33. package/lib/controllers/portal/quickstart.js +206 -0
  34. package/lib/controllers/portal/serve.d.ts +4 -0
  35. package/lib/controllers/portal/serve.js +152 -0
  36. package/lib/controllers/sdk/generate.js +7 -6
  37. package/lib/index.d.ts +1 -1
  38. package/lib/index.js +3 -3
  39. package/lib/prompts/portal/quickstart.d.ts +32 -0
  40. package/lib/prompts/portal/quickstart.js +216 -0
  41. package/lib/prompts/portal/serve.d.ts +7 -0
  42. package/lib/prompts/portal/serve.js +25 -0
  43. package/lib/services/portal/server.d.ts +11 -0
  44. package/lib/services/portal/server.js +71 -0
  45. package/lib/types/api/transform.d.ts +0 -1
  46. package/lib/types/api/transform.js +1 -0
  47. package/lib/types/api/validate.js +1 -0
  48. package/lib/types/portal/generate.js +1 -0
  49. package/lib/types/portal/quickstart.d.ts +17 -0
  50. package/lib/types/portal/quickstart.js +3 -0
  51. package/lib/types/sdk/generate.js +1 -0
  52. package/lib/types/utils.js +1 -0
  53. package/lib/utils/utils.d.ts +28 -4
  54. package/lib/utils/utils.js +289 -53
  55. package/lib/validators/common/directoryValidator.d.ts +9 -0
  56. package/lib/validators/common/directoryValidator.js +53 -0
  57. package/lib/validators/common/portValidator.d.ts +5 -0
  58. package/lib/validators/common/portValidator.js +20 -0
  59. package/lib/validators/portal/serveValidator.d.ts +6 -0
  60. package/lib/validators/portal/serveValidator.js +21 -0
  61. package/package.json +60 -24
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const cli_ux_1 = require("cli-ux");
4
- const command_1 = require("@oclif/command");
3
+ const core_1 = require("@oclif/core");
4
+ const prompts_1 = require("@clack/prompts");
5
5
  const utils_1 = require("../../utils/utils");
6
6
  const sdk_client_1 = require("../../client-utils/sdk-client");
7
- class Login extends command_1.Command {
7
+ class Login extends core_1.Command {
8
8
  async run() {
9
- const { flags } = this.parse(Login);
9
+ const { flags } = await this.parse(Login);
10
10
  const configDir = this.config.configDir;
11
11
  try {
12
12
  const client = sdk_client_1.SDKClient.getInstance();
@@ -17,12 +17,28 @@ class Login extends command_1.Command {
17
17
  }
18
18
  else {
19
19
  // If user logs in with email and password
20
- const email = await cli_ux_1.cli.prompt("Please enter your registered email");
21
- const password = await cli_ux_1.cli.prompt("Please enter your password", {
22
- type: "hide"
20
+ const email = await (0, prompts_1.text)({
21
+ message: "Enter your registered email:",
22
+ validate: (input) => {
23
+ if (!input) {
24
+ return (0, utils_1.getMessageInRedColor)("Email is required.");
25
+ }
26
+ 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])?)*$/;
27
+ if (!emailRegex.test(input)) {
28
+ return (0, utils_1.getMessageInRedColor)("Please enter a valid email address.");
29
+ }
30
+ }
31
+ });
32
+ const pass = await (0, prompts_1.password)({
33
+ message: "Please enter your password:",
34
+ validate: (input) => {
35
+ if (!input) {
36
+ return (0, utils_1.getMessageInRedColor)("Password is required.");
37
+ }
38
+ }
23
39
  });
24
- const response = await client.login(email, password, configDir);
25
- this.log(response);
40
+ const response = await client.login(email, pass, configDir);
41
+ (0, prompts_1.outro)(response);
26
42
  }
27
43
  }
28
44
  catch (error) {
@@ -32,7 +48,7 @@ class Login extends command_1.Command {
32
48
  if (apiResponse) {
33
49
  const responseData = apiResponse.data;
34
50
  if (apiResponse.status === 403 && responseData) {
35
- return this.error((0, utils_1.replaceHTML)(responseData));
51
+ return this.error((0, utils_1.replaceHTML)(JSON.stringify(responseData)));
36
52
  }
37
53
  else {
38
54
  return this.error(apiError.message);
@@ -46,7 +62,7 @@ class Login extends command_1.Command {
46
62
  Login.description = "Login using your APIMatic credentials or an API Key";
47
63
  Login.examples = [
48
64
  `$ apimatic auth:login
49
- Please enter your registered email: apimatic-user@gmail.com
65
+ Enter your registered email: apimatic-user@gmail.com
50
66
  Please enter your password: *********
51
67
 
52
68
  You have successfully logged into APIMatic
@@ -55,6 +71,7 @@ You have successfully logged into APIMatic
55
71
  Authentication key successfully set`
56
72
  ];
57
73
  Login.flags = {
58
- "auth-key": command_1.flags.string({ default: "", description: "Set authentication key for all commands" })
74
+ "auth-key": core_1.Flags.string({ default: "", description: "Set authentication key for all commands" })
59
75
  };
60
76
  exports.default = Login;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYXV0aC9sb2dpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHNDQUE2QztBQUM3Qyw0Q0FBdUQ7QUFDdkQsNkNBQXNFO0FBQ3RFLDhEQUEwRDtBQUUxRCxNQUFxQixLQUFNLFNBQVEsY0FBTztJQWtCeEMsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2hELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFjLHNCQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFbEQsOEJBQThCO1lBQzlCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDBDQUEwQztnQkFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLGNBQUksRUFBQztvQkFDdkIsT0FBTyxFQUFFLDhCQUE4QjtvQkFDdkMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDWCxPQUFPLElBQUEsNEJBQW9CLEVBQUMsb0JBQW9CLENBQUMsQ0FBQzt3QkFDcEQsQ0FBQzt3QkFFRCxNQUFNLFVBQVUsR0FDZCxzSUFBc0ksQ0FBQzt3QkFFekksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzs0QkFDNUIsT0FBTyxJQUFBLDRCQUFvQixFQUFDLHFDQUFxQyxDQUFDLENBQUM7d0JBQ3JFLENBQUM7b0JBQ0gsQ0FBQztpQkFDRixDQUFDLENBQUM7Z0JBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLGtCQUFRLEVBQUM7b0JBQzFCLE9BQU8sRUFBRSw2QkFBNkI7b0JBQ3RDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ1gsT0FBTyxJQUFBLDRCQUFvQixFQUFDLHVCQUF1QixDQUFDLENBQUM7d0JBQ3ZELENBQUM7b0JBQ0gsQ0FBQztpQkFDRixDQUFDLENBQUM7Z0JBRUgsTUFBTSxRQUFRLEdBQVcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWUsRUFBRSxJQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRXhGLElBQUEsZUFBSyxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxJQUFLLEtBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sUUFBUSxHQUFHLEtBQW1CLENBQUM7Z0JBQ3JDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBRXRDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBRXRDLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQy9DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFBLG1CQUFXLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9ELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBRSxLQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7O0FBM0VNLGlCQUFXLEdBQUcscURBQXFELENBQUM7QUFFcEUsY0FBUSxHQUFHO0lBQ2hCOzs7OztDQUtIO0lBQ0c7b0NBQ2dDO0NBQ2pDLENBQUM7QUFFSyxXQUFLLEdBQUc7SUFDYixVQUFVLEVBQUUsWUFBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLHlDQUF5QyxFQUFFLENBQUM7Q0FDbEcsQ0FBQztrQkFoQmlCLEtBQUsifQ==
@@ -1,4 +1,4 @@
1
- import { Command } from "@oclif/command";
1
+ import { Command } from "@oclif/core";
2
2
  export default class Login extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const command_1 = require("@oclif/command");
3
+ const core_1 = require("@oclif/core");
4
4
  const sdk_client_1 = require("../../client-utils/sdk-client");
5
- class Login extends command_1.Command {
5
+ class Login extends core_1.Command {
6
6
  async run() {
7
7
  try {
8
8
  const client = sdk_client_1.SDKClient.getInstance();
@@ -21,3 +21,4 @@ Logged out
21
21
  `
22
22
  ];
23
23
  exports.default = Login;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2F1dGgvbG9nb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQXNDO0FBRXRDLDhEQUEwRDtBQUUxRCxNQUFxQixLQUFNLFNBQVEsY0FBTztJQVN4QyxLQUFLLENBQUMsR0FBRztRQUNQLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLHNCQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBZSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7O0FBakJNLGlCQUFXLEdBQUcsK0JBQStCLENBQUM7QUFFOUMsY0FBUSxHQUFHO0lBQ2hCOztDQUVIO0NBQ0UsQ0FBQztrQkFQaUIsS0FBSyJ9
@@ -1,4 +1,4 @@
1
- import { Command } from "@oclif/command";
1
+ import { Command } from "@oclif/core";
2
2
  export default class Status extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const command_1 = require("@oclif/command");
3
+ const core_1 = require("@oclif/core");
4
4
  const sdk_client_1 = require("../../client-utils/sdk-client");
5
- class Status extends command_1.Command {
5
+ class Status extends core_1.Command {
6
6
  async run() {
7
7
  try {
8
8
  const client = sdk_client_1.SDKClient.getInstance();
@@ -21,3 +21,4 @@ Currently logged in as apimatic-client@gmail.com
21
21
  `
22
22
  ];
23
23
  exports.default = Status;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2F1dGgvc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQXNDO0FBRXRDLDhEQUEwRDtBQUUxRCxNQUFxQixNQUFPLFNBQVEsY0FBTztJQVN6QyxLQUFLLENBQUMsR0FBRztRQUNQLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLHNCQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBZSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7O0FBakJNLGtCQUFXLEdBQUcsbUNBQW1DLENBQUM7QUFFbEQsZUFBUSxHQUFHO0lBQ2hCOztDQUVIO0NBQ0UsQ0FBQztrQkFQaUIsTUFBTSJ9
@@ -1,12 +1,12 @@
1
- import { Command, flags } from "@oclif/command";
1
+ import { Command } from "@oclif/core";
2
2
  export default class PortalGenerate extends Command {
3
3
  static description: string;
4
4
  static flags: {
5
- folder: flags.IOptionFlag<string>;
6
- destination: flags.IOptionFlag<string>;
7
- force: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
8
- zip: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
9
- "auth-key": flags.IOptionFlag<string>;
5
+ folder: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ destination: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ zip: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ "auth-key": import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
10
  };
11
11
  static examples: string[];
12
12
  run(): Promise<undefined>;
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  const path = require("path");
4
5
  const fs = require("fs-extra");
5
- const command_1 = require("@oclif/command");
6
+ const core_1 = require("@oclif/core");
6
7
  const sdk_1 = require("@apimatic/sdk");
7
8
  const sdk_client_1 = require("../../client-utils/sdk-client");
8
9
  const generate_1 = require("../../controllers/portal/generate");
9
10
  const utils_1 = require("../../utils/utils");
10
- class PortalGenerate extends command_1.Command {
11
+ class PortalGenerate extends core_1.Command {
11
12
  async run() {
12
- const { flags } = this.parse(PortalGenerate);
13
+ const { flags } = await this.parse(_a);
13
14
  const zip = flags.zip;
14
15
  const sourceFolderPath = flags.folder;
15
16
  const portalFolderPath = path.join(flags.destination, "generated_portal");
@@ -40,7 +41,9 @@ class PortalGenerate extends command_1.Command {
40
41
  overrideAuthKey,
41
42
  zip
42
43
  };
44
+ core_1.ux.action.start('Generating portal');
43
45
  const generatedPortalPath = await (0, generate_1.downloadDocsPortal)(generatePortalParams, this.config.configDir);
46
+ core_1.ux.action.stop();
44
47
  this.log(`Your portal has been generated at ${generatedPortalPath}`);
45
48
  }
46
49
  catch (error) {
@@ -83,21 +86,22 @@ class PortalGenerate extends command_1.Command {
83
86
  }
84
87
  }
85
88
  }
86
- PortalGenerate.description = "Generate and download a static API Documentation portal. Requires an input directory containing API specifications, a config file and optionally, markdown guides. For details, refer to the [documentation](https://portal-api-docs.apimatic.io/#/http/generating-api-portal/build-file)";
89
+ _a = PortalGenerate;
90
+ PortalGenerate.description = "Generate and download a static API Documentation portal. Requires an input directory containing API specifications, a config file and optionally, markdown guides. For details, refer to the [documentation](https://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/build-file-reference)";
87
91
  PortalGenerate.flags = {
88
- folder: command_1.flags.string({
89
- parse: (input) => path.resolve(input),
92
+ folder: core_1.Flags.string({
93
+ parse: async (input) => path.resolve(input),
90
94
  default: "./",
91
95
  description: "path to the input directory containing API specifications and config files"
92
96
  }),
93
- destination: command_1.flags.string({
94
- parse: (input) => path.resolve(input),
97
+ destination: core_1.Flags.string({
98
+ parse: async (input) => path.resolve(input),
95
99
  default: path.resolve("./"),
96
100
  description: "path to the downloaded portal"
97
101
  }),
98
- force: command_1.flags.boolean({ char: "f", default: false, description: "overwrite if a portal exists in the destination" }),
99
- zip: command_1.flags.boolean({ default: false, description: "download the generated portal as a .zip archive" }),
100
- "auth-key": command_1.flags.string({
102
+ force: core_1.Flags.boolean({ char: "f", default: false, description: "overwrite if a portal exists in the destination" }),
103
+ zip: core_1.Flags.boolean({ default: false, description: "download the generated portal as a .zip archive" }),
104
+ "auth-key": core_1.Flags.string({
101
105
  default: "",
102
106
  description: "override current authentication state with an authentication key"
103
107
  })
@@ -108,3 +112,4 @@ Your portal has been generated at D:/
108
112
  `
109
113
  ];
110
114
  exports.default = PortalGenerate;
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvcG9ydGFsL2dlbmVyYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFFL0Isc0NBQWlEO0FBQ2pELHVDQUF1RTtBQUd2RSw4REFBMEQ7QUFFMUQsZ0VBQXVFO0FBQ3ZFLDZDQUE4RTtBQUc5RSxNQUFxQixjQUFlLFNBQVEsY0FBTztJQTZCakQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQWMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdEIsTUFBTSxnQkFBZ0IsR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDbEYsTUFBTSxnQkFBZ0IsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUV0RixNQUFNLGVBQWUsR0FBa0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVwRixxSEFBcUg7UUFDckgsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsZ0JBQWdCLDZCQUE2QixDQUFDLENBQUM7UUFDbEcsQ0FBQzthQUFNLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxnQkFBZ0IsNkJBQTZCLENBQUMsQ0FBQztRQUNsRyxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxXQUFXLGlCQUFpQixDQUFDLENBQUM7WUFDMUUsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLE1BQU0saUJBQWlCLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBQ0QsTUFBTSxNQUFNLEdBQVcsTUFBTSxzQkFBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RyxNQUFNLG9CQUFvQixHQUFtQyxJQUFJLG9DQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXhHLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFBLG9CQUFZLEVBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXBGLE1BQU0sb0JBQW9CLEdBQXlCO2dCQUNqRCxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsZ0JBQWdCO2dCQUNoQixvQkFBb0I7Z0JBQ3BCLGVBQWU7Z0JBQ2YsR0FBRzthQUNKLENBQUM7WUFDRixTQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sbUJBQW1CLEdBQVcsTUFBTSxJQUFBLDZCQUFrQixFQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUcsU0FBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLEtBQUssSUFBSyxLQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLFFBQVEsR0FBRyxLQUFtQixDQUFDO2dCQUNyQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUV0QyxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixNQUFNLFlBQVksR0FBSSxXQUFXLENBQUMsSUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUU3RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUEsc0JBQWMsRUFBQyxZQUFZLENBQUMsRUFBRSxDQUFDO3dCQUMxRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUU5QyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsbUJBQVcsRUFBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckQsQ0FBQzs2QkFBTSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDaEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsbUJBQVcsRUFBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO29CQUM5RCxDQUFDO3lCQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUNoRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQztvQkFDckYsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSyxLQUE2QixDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQzlELENBQUM7aUJBQU0sSUFDSixLQUE2QixDQUFDLFVBQVUsS0FBSyxHQUFHO2dCQUNoRCxLQUE2QixDQUFDLElBQUk7Z0JBQ25DLE9BQVEsS0FBNkIsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUN2RCxDQUFDO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUUsS0FBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFJLEtBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs7O0FBdEdNLDBCQUFXLEdBQ2hCLHNUQUFzVCxBQUR0UyxDQUN1UztBQUVsVCxvQkFBSyxHQUFHO0lBQ2IsTUFBTSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxJQUFJO1FBQ2IsV0FBVyxFQUFFLDRFQUE0RTtLQUMxRixDQUFDO0lBQ0YsV0FBVyxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDeEIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMzQixXQUFXLEVBQUUsK0JBQStCO0tBQzdDLENBQUM7SUFDRixLQUFLLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsaURBQWlELEVBQUUsQ0FBQztJQUNuSCxHQUFHLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGlEQUFpRCxFQUFFLENBQUM7SUFDdEcsVUFBVSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkIsT0FBTyxFQUFFLEVBQUU7UUFDWCxXQUFXLEVBQUUsa0VBQWtFO0tBQ2hGLENBQUM7Q0FDSCxBQWpCVyxDQWlCVjtBQUVLLHVCQUFRLEdBQUc7SUFDaEI7O0NBRUg7Q0FDRSxBQUpjLENBSWI7a0JBM0JpQixjQUFjIn0=
@@ -0,0 +1,10 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class PortalQuickstart extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ private getSpecFile;
6
+ private getSpecValidationSummary;
7
+ private getBuildDirectory;
8
+ private getGeneratedPortalPath;
9
+ run(): Promise<void>;
10
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const sdk_1 = require("@apimatic/sdk");
5
+ const sdk_client_1 = require("../../client-utils/sdk-client");
6
+ const quickstart_1 = require("../../prompts/portal/quickstart");
7
+ const quickstart_2 = require("../../controllers/portal/quickstart");
8
+ const utils_1 = require("../../utils/utils");
9
+ class PortalQuickstart extends core_1.Command {
10
+ async getSpecFile(prompts, controller) {
11
+ const spec = await prompts.specPrompt();
12
+ const specFile = await controller.getSpecFile(spec);
13
+ prompts.displaySpecValidationMessage();
14
+ return specFile;
15
+ }
16
+ async getSpecValidationSummary(prompts, controller, specFile, apiValidationController) {
17
+ try {
18
+ const apiValidationSummary = await controller.getSpecValidationSummary(specFile, apiValidationController);
19
+ if (!apiValidationSummary.success) {
20
+ prompts.displaySpecValidationFailureMessage();
21
+ await prompts.specValidationFailurePrompt();
22
+ }
23
+ else {
24
+ prompts.displaySpecValidationSuccessMessage();
25
+ }
26
+ return apiValidationSummary;
27
+ }
28
+ catch (error) {
29
+ prompts.displaySpecValidationErrorMessage();
30
+ this.error((0, utils_1.getMessageInRedColor)("The specified path/URL does not point to a valid API Definition file. Please provide a valid API Definition file and try again."));
31
+ }
32
+ }
33
+ async getBuildDirectory(prompts, controller, specFile, apiValidationSummary, languages) {
34
+ const directory = await prompts.buildDirectoryPrompt();
35
+ prompts.displayBuildDirectoryGenerationMessage();
36
+ await controller.setupBuildDirectory(prompts, directory, specFile, apiValidationSummary, languages);
37
+ prompts.displayBuildDirectoryGenerationSuccessMessage(directory);
38
+ prompts.displayBuildDirectoryAsTree(directory);
39
+ return directory;
40
+ }
41
+ async getGeneratedPortalPath(prompts, controller, directory) {
42
+ prompts.displayPortalGenerationMessage();
43
+ const generatedPortalPath = await controller.generatePortalArtifacts(directory, this.config.configDir);
44
+ prompts.displayPortalGenerationSuccessMessage();
45
+ return generatedPortalPath;
46
+ }
47
+ async run() {
48
+ const prompts = new quickstart_1.PortalQuickstartPrompts();
49
+ const controller = new quickstart_2.PortalQuickstartController();
50
+ prompts.displayWelcomeMessage();
51
+ let loggedIn = await controller.isUserAuthenticated(this.config.configDir);
52
+ while (!loggedIn) {
53
+ const credentials = await prompts.loginPrompt();
54
+ prompts.displayLoggingInMessage();
55
+ try {
56
+ await controller.userLogin(credentials, sdk_client_1.SDKClient.getInstance(), this.config.configDir);
57
+ loggedIn = true;
58
+ prompts.displayLoggedInMessage();
59
+ }
60
+ catch (error) {
61
+ prompts.displayLoggingInErrorMessage();
62
+ }
63
+ }
64
+ const client = await sdk_client_1.SDKClient.getInstance().getClient(null, this.config.configDir);
65
+ const apiValidationController = new sdk_1.APIValidationExternalApisController(client);
66
+ try {
67
+ const specFile = await this.getSpecFile(prompts, controller);
68
+ const apiValidationSummary = await this.getSpecValidationSummary(prompts, controller, specFile, apiValidationController);
69
+ const languages = await prompts.sdkLanguagesPrompt();
70
+ const directory = await this.getBuildDirectory(prompts, controller, specFile, apiValidationSummary, languages);
71
+ const generatedPortalPath = await this.getGeneratedPortalPath(prompts, controller, directory);
72
+ controller.servePortal(generatedPortalPath, directory, this.config.configDir);
73
+ prompts.displayOutroMessage();
74
+ }
75
+ catch (error) {
76
+ this.error((0, utils_1.getMessageInRedColor)(error instanceof Error ? error.message : String(error)));
77
+ }
78
+ }
79
+ }
80
+ PortalQuickstart.description = "Create your first API Portal using APIMatic’s Docs as Code offering.";
81
+ PortalQuickstart.examples = ["$ apimatic portal:quickstart"];
82
+ exports.default = PortalQuickstart;
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2tzdGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9wb3J0YWwvcXVpY2tzdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUFzQztBQUN0Qyx1Q0FBa0c7QUFDbEcsOERBQTBEO0FBQzFELGdFQUEwRTtBQUMxRSxvRUFBaUY7QUFFakYsNkNBQXlEO0FBRXpELE1BQXFCLGdCQUFpQixTQUFRLGNBQU87SUFLM0MsS0FBSyxDQUFDLFdBQVcsQ0FDdkIsT0FBZ0MsRUFDaEMsVUFBc0M7UUFFdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBELE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBRXZDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxLQUFLLENBQUMsd0JBQXdCLENBQ3BDLE9BQWdDLEVBQ2hDLFVBQXNDLEVBQ3RDLFFBQWtCLEVBQ2xCLHVCQUE0RDtRQUU1RCxJQUFJLENBQUM7WUFDSCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sVUFBVSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBRTFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLG1DQUFtQyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO1lBQ2hELENBQUM7WUFFRCxPQUFPLG9CQUFvQixDQUFDO1FBQzlCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLGlDQUFpQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FDUixJQUFBLDRCQUFvQixFQUNsQixpSUFBaUksQ0FDbEksQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQzdCLE9BQWdDLEVBQ2hDLFVBQXNDLEVBQ3RDLFFBQWtCLEVBQ2xCLG9CQUEwQyxFQUMxQyxTQUFtQjtRQUVuQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRXZELE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDO1FBRWpELE1BQU0sVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBHLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRSxPQUFPLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FDbEMsT0FBZ0MsRUFDaEMsVUFBc0MsRUFDdEMsU0FBaUI7UUFFakIsT0FBTyxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFFekMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2RyxPQUFPLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUVoRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sT0FBTyxHQUFHLElBQUksb0NBQXVCLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVDQUEwQixFQUFFLENBQUM7UUFFcEQsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFaEMsSUFBSSxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFaEQsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFFbEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsc0JBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN4RixRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNoQixPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFXLE1BQU0sc0JBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUYsTUFBTSx1QkFBdUIsR0FBd0MsSUFBSSx5Q0FBbUMsQ0FDMUcsTUFBTSxDQUNQLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRTdELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQzlELE9BQU8sRUFDUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLHVCQUF1QixDQUN4QixDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUVyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUUvRyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFOUYsVUFBVSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU5RSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSw0QkFBb0IsRUFBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7SUFDSCxDQUFDOztBQS9ITSw0QkFBVyxHQUFHLHNFQUFzRSxDQUFDO0FBRXJGLHlCQUFRLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2tCQUhoQyxnQkFBZ0IifQ==
@@ -0,0 +1,17 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class PortalServe extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ port: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ destination: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ source: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ open: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ "no-reload": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ ignore: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ "auth-key": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ };
13
+ static examples: string[];
14
+ private getGeneratedFilesPaths;
15
+ run(): Promise<void>;
16
+ private handleError;
17
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const path = require("path");
5
+ const axios_1 = require("axios");
6
+ const core_1 = require("@oclif/core");
7
+ const serve_1 = require("../../controllers/portal/serve");
8
+ const server_1 = require("../../services/portal/server");
9
+ const serve_2 = require("../../prompts/portal/serve");
10
+ const utils_1 = require("../../utils/utils");
11
+ const serveValidator_1 = require("../../validators/portal/serveValidator");
12
+ class PortalServe extends core_1.Command {
13
+ getGeneratedFilesPaths(sourceDir, portalDir) {
14
+ const generatedZipPath = path.join(sourceDir, "portal_source.zip");
15
+ const generatedPortalZipPath = path.join(sourceDir, "generated_portal.zip");
16
+ const generatedPortalPath = path.join(path.dirname(portalDir), "api-portal");
17
+ return [generatedZipPath, generatedPortalPath, generatedPortalZipPath];
18
+ }
19
+ async run() {
20
+ var _b;
21
+ const { flags } = await this.parse(_a);
22
+ const ignoredPaths = flags.ignore.split(",").map((path) => path.trim());
23
+ const portalDir = path.resolve(flags.destination);
24
+ const sourceDir = path.resolve(flags.source);
25
+ const port = flags.port;
26
+ const overrideAuthKey = (_b = flags["auth-key"]) !== null && _b !== void 0 ? _b : null;
27
+ const serverService = new server_1.PortalServerService();
28
+ const prompts = new serve_2.PortalServePrompts();
29
+ const validator = new serveValidator_1.PortalServeValidator(this.error);
30
+ const allIgnoredPaths = [...ignoredPaths, ...this.getGeneratedFilesPaths(sourceDir, portalDir)];
31
+ await validator.validate(port, flags.destination, sourceDir, portalDir);
32
+ try {
33
+ prompts.displayGeneratingPortalMessage();
34
+ await (0, serve_1.generatePortal)(sourceDir, portalDir, this.config.configDir, allIgnoredPaths, overrideAuthKey);
35
+ prompts.displayGeneratedPortalMessage(portalDir);
36
+ await (0, utils_1.cleanUpGeneratedPortalFiles)(sourceDir);
37
+ }
38
+ catch (error) {
39
+ prompts.displayGeneratingPortalErrorMessage();
40
+ await (0, utils_1.cleanUpGeneratedPortalFiles)(sourceDir);
41
+ this.handleError(error);
42
+ }
43
+ serverService.setupServer(portalDir);
44
+ serverService.startServer({
45
+ generatedPortalPath: portalDir,
46
+ targetFolder: sourceDir,
47
+ configDir: this.config.configDir,
48
+ authKey: overrideAuthKey,
49
+ ignoredPaths: allIgnoredPaths,
50
+ port,
51
+ openInBrowser: flags.open
52
+ }, flags["no-reload"]);
53
+ prompts.displayOutroMessage(port);
54
+ }
55
+ handleError(error) {
56
+ if (axios_1.default.isAxiosError(error)) {
57
+ const axiosError = error;
58
+ if (axiosError.response) {
59
+ if (axiosError.response.status === 400) {
60
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files.`));
61
+ }
62
+ else if (axiosError.response.status === 401) {
63
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal. Please ensure that you are logged in or have provided a valid Auth key.`));
64
+ }
65
+ else if (axiosError.response.status === 403) {
66
+ this.error((0, utils_1.getMessageInRedColor)(`Access denied. It looks like you don’t have access to APIMatic’s Docs as Code offering. Check your subscription details and contact our team at support@apimatic.io if you believe this is a mistake.`));
67
+ }
68
+ else if (axiosError.response.status === 422) {
69
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files.`));
70
+ }
71
+ else if (axiosError.response.status === 500) {
72
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files. If the issue persists, reach out to our team at support@apimatic.io`));
73
+ }
74
+ else {
75
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files. If the issue persists, reach out to our team at support@apimatic.io`));
76
+ }
77
+ }
78
+ else if (axiosError.request) {
79
+ if (axiosError.code === "ECONNABORTED") {
80
+ this.error((0, utils_1.getMessageInRedColor)(`Your request timed out. Please try again or reach out to our team at support@apimatic.io for help if your problem persists.`));
81
+ }
82
+ else if (error.code === "ENOTFOUND" || error.code === "ERR_NETWORK") {
83
+ this.error((0, utils_1.getMessageInRedColor)(`Network error. Please check your internet connection and try again.`));
84
+ }
85
+ else {
86
+ this.error((0, utils_1.getMessageInRedColor)(`No response received from the server. Please try again later.`));
87
+ }
88
+ }
89
+ else {
90
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal: ${axiosError.message}`));
91
+ }
92
+ }
93
+ else if (error instanceof Error) {
94
+ this.error((0, utils_1.getMessageInRedColor)(`Failed to generate the portal: ${error.message}`));
95
+ }
96
+ else {
97
+ this.error((0, utils_1.getMessageInRedColor)(`Something went wrong while generating the portal, please try again later. If the issue persists, contact our team at support@apimatic.io`));
98
+ }
99
+ }
100
+ }
101
+ _a = PortalServe;
102
+ PortalServe.description = "Generate and deploy a Docs as Code portal with hot reload.";
103
+ PortalServe.flags = {
104
+ port: core_1.Flags.integer({
105
+ char: "p",
106
+ description: "Port to serve the portal.",
107
+ default: 3000
108
+ }),
109
+ destination: core_1.Flags.string({
110
+ char: "d",
111
+ description: "Directory to store and serve the generated portal.",
112
+ default: "./api-portal",
113
+ parse: async (input) => path.resolve(input)
114
+ }),
115
+ source: core_1.Flags.string({
116
+ char: "s",
117
+ description: "Source directory containing specs, content, and build file. By default, the current directory is used.",
118
+ default: "./",
119
+ parse: async (input) => path.resolve(input)
120
+ }),
121
+ open: core_1.Flags.boolean({
122
+ char: "o",
123
+ description: "Open the portal in the default browser.",
124
+ default: false
125
+ }),
126
+ "no-reload": core_1.Flags.boolean({
127
+ description: "Disable hot reload.",
128
+ default: false
129
+ }),
130
+ ignore: core_1.Flags.string({
131
+ char: "i",
132
+ description: "Comma-separated list of files/directories to ignore.",
133
+ default: ""
134
+ }),
135
+ "auth-key": core_1.Flags.string({
136
+ description: "Override current authentication state with an authentication key."
137
+ })
138
+ };
139
+ PortalServe.examples = [
140
+ '$ apimatic portal:serve --source="./" --destination="./api-portal" --port=3000 --open --no-reload'
141
+ ];
142
+ exports.default = PortalServe;
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvcG9ydGFsL3NlcnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QixpQ0FBMEI7QUFDMUIsc0NBQTZDO0FBQzdDLDBEQUFnRTtBQUNoRSx5REFBbUU7QUFDbkUsc0RBQWdFO0FBQ2hFLDZDQUFzRjtBQUN0RiwyRUFBOEU7QUFFOUUsTUFBcUIsV0FBWSxTQUFRLGNBQU87SUE2Q3RDLHNCQUFzQixDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUM1RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU3RSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7O1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFH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
@@ -1,14 +1,14 @@
1
- import { Command, flags } from "@oclif/command";
1
+ import { Command } from "@oclif/core";
2
2
  export default class SdkGenerate extends Command {
3
3
  static description: string;
4
4
  static flags: {
5
- platform: flags.IOptionFlag<string>;
6
- file: flags.IOptionFlag<string>;
7
- url: flags.IOptionFlag<string>;
8
- destination: flags.IOptionFlag<string>;
9
- force: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
10
- zip: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
11
- "auth-key": flags.IOptionFlag<string>;
5
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ file: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ url: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ destination: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ zip: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ "auth-key": import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  };
13
13
  static examples: string[];
14
14
  run(): Promise<void>;
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  const path = require("path");
4
5
  const fs = require("fs-extra");
5
- const command_1 = require("@oclif/command");
6
+ const core_1 = require("@oclif/core");
6
7
  const sdk_client_1 = require("../../client-utils/sdk-client");
7
8
  const sdk_1 = require("@apimatic/sdk");
8
9
  const utils_1 = require("../../utils/utils");
9
10
  const generate_1 = require("../../controllers/sdk/generate");
10
- class SdkGenerate extends command_1.Command {
11
+ class SdkGenerate extends core_1.Command {
11
12
  async run() {
12
- const { flags } = this.parse(SdkGenerate);
13
+ const { flags } = await this.parse(_a);
13
14
  const zip = flags.zip;
14
15
  const fileName = flags.file ? (0, utils_1.getFileNameFromPath)(flags.file) : (0, utils_1.getFileNameFromPath)(flags.url);
15
16
  const sdkFolderPath = path.join(flags.destination, `${fileName}_sdk_${flags.platform}`.toLowerCase());
@@ -86,36 +87,37 @@ class SdkGenerate extends command_1.Command {
86
87
  }
87
88
  }
88
89
  }
90
+ _a = SdkGenerate;
89
91
  SdkGenerate.description = "Generate SDK for your APIs";
90
92
  SdkGenerate.flags = {
91
- platform: command_1.flags.string({
92
- parse: (input) => input.toUpperCase(),
93
+ platform: core_1.Flags.string({
94
+ parse: async (input) => input.toUpperCase(),
93
95
  required: true,
94
96
  description: `language platform for sdk
95
97
  Simple: CSHARP|JAVA|PYTHON|RUBY|PHP|TYPESCRIPT
96
98
  Legacy: CS_NET_STANDARD_LIB|JAVA_ECLIPSE_JRE_LIB|PHP_GENERIC_LIB|PYTHON_GENERIC_LIB|RUBY_GENERIC_LIB|TS_GENERIC_LIB`
97
99
  }),
98
- file: command_1.flags.string({
99
- parse: (input) => path.resolve(input),
100
+ file: core_1.Flags.string({
101
+ parse: async (input) => path.resolve(input),
100
102
  default: "",
101
103
  description: "path to the API specification to generate SDKs for"
102
104
  }),
103
- url: command_1.flags.string({
105
+ url: core_1.Flags.string({
104
106
  default: "",
105
107
  description: "URL to the API specification to generate SDKs for. Can be used in place of the --file option if the API specification is publicly available."
106
108
  }),
107
- destination: command_1.flags.string({
108
- parse: (input) => path.resolve(input),
109
+ destination: core_1.Flags.string({
110
+ parse: async (input) => path.resolve(input),
109
111
  default: path.resolve("./"),
110
112
  description: "directory to download the generated SDK to"
111
113
  }),
112
- force: command_1.flags.boolean({
114
+ force: core_1.Flags.boolean({
113
115
  char: "f",
114
116
  default: false,
115
117
  description: "overwrite if an SDK already exists in the destination"
116
118
  }),
117
- zip: command_1.flags.boolean({ default: false, description: "download the generated SDK as a .zip archive" }),
118
- "auth-key": command_1.flags.string({
119
+ zip: core_1.Flags.boolean({ default: false, description: "download the generated SDK as a .zip archive" }),
120
+ "auth-key": core_1.Flags.string({
119
121
  default: "",
120
122
  description: "override current authentication state with an authentication key"
121
123
  })
@@ -133,3 +135,4 @@ Success! Your SDK is located at swagger_sdk_csharp
133
135
  `
134
136
  ];
135
137
  exports.default = SdkGenerate;
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc2RrL2dlbmVyYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFFL0Isc0NBQTZDO0FBQzdDLDhEQUEwRDtBQUMxRCx1Q0FBdUY7QUFFdkYsNkNBQXFGO0FBQ3JGLDZEQUEwRjtBQUkxRixNQUFxQixXQUFZLFNBQVEsY0FBTztJQWtEOUMsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQVcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBQSwyQkFBbUIsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsMkJBQW1CLEVBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9GLE1BQU0sYUFBYSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsUUFBUSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RyxNQUFNLGFBQWEsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxRQUFRLFFBQVEsS0FBSyxDQUFDLFFBQVEsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFbEgsa0hBQWtIO1FBQ2xILElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4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
@@ -0,0 +1,2 @@
1
+ declare const axiosInstance: import("axios").AxiosInstance;
2
+ export default axiosInstance;