@apimatic/cli 1.1.0-alpha.18 → 1.1.0-alpha.19

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 (46) hide show
  1. package/README.md +3 -5
  2. package/lib/actions/portal/recipe/new-recipe.js +2 -2
  3. package/lib/actions/portal/recipe/new-recipe.js.map +1 -1
  4. package/lib/actions/portal/serve.d.ts +0 -3
  5. package/lib/actions/portal/serve.js +2 -14
  6. package/lib/actions/portal/serve.js.map +1 -1
  7. package/lib/actions/portal/toc/new-toc.js +1 -1
  8. package/lib/actions/portal/toc/new-toc.js.map +1 -1
  9. package/lib/application/portal/serve/portal-watcher.d.ts +1 -1
  10. package/lib/application/portal/serve/portal-watcher.js +2 -5
  11. package/lib/application/portal/serve/portal-watcher.js.map +1 -1
  12. package/lib/application/portal/serve/serve-handler.d.ts +1 -1
  13. package/lib/application/portal/serve/serve-handler.js +2 -2
  14. package/lib/application/portal/serve/serve-handler.js.map +1 -1
  15. package/lib/application/portal/toc/sdl-parser.d.ts +5 -3
  16. package/lib/application/portal/toc/sdl-parser.js +36 -20
  17. package/lib/application/portal/toc/sdl-parser.js.map +1 -1
  18. package/lib/commands/portal/quickstart.js +0 -1
  19. package/lib/commands/portal/quickstart.js.map +1 -1
  20. package/lib/commands/portal/serve.d.ts +0 -1
  21. package/lib/commands/portal/serve.js +1 -6
  22. package/lib/commands/portal/serve.js.map +1 -1
  23. package/lib/controllers/portal/quickstart.d.ts +1 -0
  24. package/lib/controllers/portal/quickstart.js +8 -3
  25. package/lib/controllers/portal/quickstart.js.map +1 -1
  26. package/lib/infrastructure/env-info.js +1 -1
  27. package/lib/infrastructure/env-info.js.map +1 -1
  28. package/lib/infrastructure/services/api-service.js +3 -1
  29. package/lib/infrastructure/services/api-service.js.map +1 -1
  30. package/lib/infrastructure/services/portal-service.d.ts +3 -2
  31. package/lib/infrastructure/services/portal-service.js +38 -27
  32. package/lib/infrastructure/services/portal-service.js.map +1 -1
  33. package/lib/infrastructure/zip-service.js +20 -6
  34. package/lib/infrastructure/zip-service.js.map +1 -1
  35. package/lib/prompts/portal/common/base-prompts.js +2 -2
  36. package/lib/prompts/portal/common/base-prompts.js.map +1 -1
  37. package/lib/prompts/portal/serve.d.ts +0 -1
  38. package/lib/prompts/portal/serve.js +1 -17
  39. package/lib/prompts/portal/serve.js.map +1 -1
  40. package/lib/prompts/portal/toc/new-toc.js +1 -1
  41. package/lib/prompts/portal/toc/new-toc.js.map +1 -1
  42. package/lib/types/portal/serve.d.ts +0 -1
  43. package/lib/utils/utils.d.ts +0 -14
  44. package/lib/utils/utils.js +0 -172
  45. package/lib/utils/utils.js.map +1 -1
  46. package/package.json +12 -11
@@ -1 +1 @@
1
- {"version":3,"file":"env-info.js","sourceRoot":"","sources":["../../src/infrastructure/env-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,OAAO;IAIJ,YAAY;QACjB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;YACtC,OAAO,CAAC,eAAe,GAAG,gBAAgB,IAAI,CAAC,aAAa,EAAE,WAAW,MAAM,aAAa,MAAM,IAAI,aAAa,GAAG,CAAC;QACzH,CAAC;QACD,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAEM,aAAa;QAClB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;YACzC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;;AA9Bc,wBAAgB,GAAkB,IAAI,CAAC;AACvC,uBAAe,GAAkB,IAAI,CAAC;AA+BvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"env-info.js","sourceRoot":"","sources":["../../src/infrastructure/env-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,OAAO;IAIJ,YAAY;QACjB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;YACtC,OAAO,CAAC,eAAe,GAAG,gBAAgB,IAAI,CAAC,aAAa,EAAE,WAAW,MAAM,aAAa,MAAM,IAAI,aAAa,GAAG,CAAC;QACzH,CAAC;QACD,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAEM,aAAa;QAClB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;YACzC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;;AA9Bc,wBAAgB,GAAkB,IAAI,CAAC;AACvC,uBAAe,GAAkB,IAAI,CAAC;AA+BvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
@@ -26,7 +26,9 @@ export class ApiService {
26
26
  }
27
27
  async sendTelemetry(payload, authKey) {
28
28
  try {
29
- const response = await this.axiosInstance(authKey).post("/telemetry/track", payload);
29
+ const response = await this.axiosInstance(authKey).post("/telemetry/track", payload, {
30
+ headers: { "Content-Type": "application/json" }
31
+ });
30
32
  if (response.status === 200) {
31
33
  return ok("telemetry sent");
32
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/api-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AAEnE,MAAM,OAAO,UAAU;IAAvB;QACmB,eAAU,GAAG,yBAAkC,CAAC;IAmDnE,CAAC;IAjDQ,KAAK,CAAC,cAAc,CACzB,SAAwB,EACxB,OAAsB;QAEtB,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,GAAG,gDAA2B,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAEzE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAwB,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,GAAG,uDAA8B,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,OAAe;QACzD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAErF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAA0B;QAC9C,MAAM,OAAO,GAA2B;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;SACrC,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,aAAa,GAAG,cAAc,MAAM,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/api-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AAEnE,MAAM,OAAO,UAAU;IAAvB;QACmB,eAAU,GAAG,yBAAkC,CAAC;IAqDnE,CAAC;IAnDQ,KAAK,CAAC,cAAc,CACzB,SAAwB,EACxB,OAAsB;QAEtB,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,GAAG,gDAA2B,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAEzE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAwB,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,GAAG,uDAA8B,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,OAAe;QACzD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE;gBACnF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAA0B;QAC9C,MAAM,OAAO,GAA2B;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;SACrC,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,aAAa,GAAG,cAAc,MAAM,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -3,17 +3,18 @@ import { Result } from "../../types/common/result.js";
3
3
  import { Sdl } from "../../types/sdl/sdl.js";
4
4
  import { FilePath } from "../../types/file/filePath.js";
5
5
  import { DirectoryPath } from "../../types/file/directoryPath.js";
6
+ import { ReadStream } from "fs";
6
7
  export declare class PortalService {
7
8
  private readonly CONTENT_TYPE;
8
9
  private readonly TIMEOUT;
9
10
  private readonly fileService;
10
11
  generatePortal(buildPath: FilePath, configDir: DirectoryPath, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string | NodeJS.ReadableStream>>;
11
12
  generateSdk(specPath: FilePath, sdkPlatform: Platforms, configDir: DirectoryPath, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string>>;
12
- generateSdl(specPath: string, configDir: string): Promise<Result<Sdl, string>>;
13
+ generateSdl(specFileStream: ReadStream, configDir: string): Promise<Result<Sdl, string>>;
13
14
  private createGenericErrorResult;
14
15
  private createAuthorizationHeader;
15
16
  private createApiClient;
16
17
  private handlePortalGenerationErrors;
17
- private parseErrorResponse;
18
+ private parseBadRequestResponse;
18
19
  private handleSdkGenerationErrors;
19
20
  }
@@ -1,5 +1,4 @@
1
- import fs from "fs-extra";
2
- import { ContentType, DocsPortalManagementController, Client, UnauthorizedResponseError, ProblemDetailsError, FileWrapper, ApiError, TransformationController, ExportFormats, InternalServerErrorResponseError, CodeGenerationExternalApisController } from "@apimatic/sdk";
1
+ import { ContentType, DocsPortalManagementController, Client, UnauthorizedResponseError, ProblemDetailsError, FileWrapper, ApiError, TransformationController, ExportFormats, InternalServerErrorResponseError, CodeGenerationExternalApisController, BadRequestResponseSdkError, Accept } from "@apimatic/sdk";
3
2
  import { getAuthInfo } from "../../client-utils/auth-manager.js";
4
3
  import { Result } from "../../types/common/result.js";
5
4
  import { getMessageInRedColor, parseStreamBodyToJson } from "../../utils/utils.js";
@@ -33,7 +32,7 @@ export class PortalService {
33
32
  else if (error instanceof ProblemDetailsError) {
34
33
  //400 & 403
35
34
  const probDetailsError = error;
36
- const message = (_d = (_c = probDetailsError.result.errors) === null || _c === void 0 ? void 0 : _c['']) === null || _d === void 0 ? void 0 : _d[0];
35
+ const message = (_d = (_c = probDetailsError.result.errors) === null || _c === void 0 ? void 0 : _c[""]) === null || _d === void 0 ? void 0 : _d[0];
37
36
  return getMessageInRedColor(probDetailsError.result.title + "\n- " + message);
38
37
  }
39
38
  else if (error instanceof ApiError && error.statusCode === 422) {
@@ -50,37 +49,31 @@ export class PortalService {
50
49
  return getMessageInRedColor("An unexpected error occurred while generating the portal, please try again later. If the problem persists, please reach out to our team at support@apimatic.io");
51
50
  }
52
51
  };
53
- this.parseErrorResponse = async (error) => {
54
- if (error instanceof Error && "body" in error) {
55
- const stream = error.body;
56
- return await parseStreamBodyToJson(stream);
57
- }
58
- throw error;
59
- };
60
52
  this.handleSdkGenerationErrors = async (error) => {
61
- var _a, _b, _c, _d;
62
- //TODO: Update the spec file to define different error code response types so that they can be handled here. Currently all failures go to the last else statement
63
- if (error instanceof UnauthorizedResponseError) {
53
+ var _a, _b, _c, _d, _e;
54
+ if (error instanceof BadRequestResponseSdkError) {
55
+ //400
56
+ const badRequestError = error;
57
+ const errorMessage = this.parseBadRequestResponse((_a = badRequestError.result) === null || _a === void 0 ? void 0 : _a.message);
58
+ return getMessageInRedColor(errorMessage);
59
+ }
60
+ else if (error instanceof UnauthorizedResponseError) {
64
61
  //401
65
62
  const unAuthError = error;
66
- return getMessageInRedColor((_b = (_a = unAuthError.result) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : "Authorization has been denied for this request.");
63
+ return getMessageInRedColor((_c = (_b = unAuthError.result) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : "Authorization has been denied for this request.");
67
64
  }
68
65
  else if (error instanceof ProblemDetailsError) {
69
- //400 & 403
66
+ // 403
70
67
  const probDetailsError = error;
71
- const message = (_d = (_c = probDetailsError.result.errors) === null || _c === void 0 ? void 0 : _c['']) === null || _d === void 0 ? void 0 : _d[0];
68
+ const message = (_e = (_d = probDetailsError.result.errors) === null || _d === void 0 ? void 0 : _d[""]) === null || _e === void 0 ? void 0 : _e[0];
72
69
  return getMessageInRedColor(probDetailsError.result.title + "\n- " + message);
73
70
  }
74
- else if (error instanceof InternalServerErrorResponseError) {
75
- //500
76
- const body = await this.parseErrorResponse(error);
77
- return getMessageInRedColor(`${body.message} Please try again later or reach out to our team at support@apimatic.io for help if your problem persists.`);
78
- }
79
71
  else {
80
72
  return getMessageInRedColor("An unexpected error occurred while generating the SDK, please try again later. If the problem persists, please reach out to our team at support@apimatic.io");
81
73
  }
82
74
  };
83
75
  }
76
+ //TODO: Pass stream as parameter instead of file path.
84
77
  async generatePortal(buildPath, configDir, authKey) {
85
78
  const buildFileStream = await this.fileService.getStream(buildPath);
86
79
  const file = new FileWrapper(buildFileStream);
@@ -99,6 +92,7 @@ export class PortalService {
99
92
  buildFileStream.close();
100
93
  }
101
94
  }
95
+ //TODO: Pass stream as parameter instead of file path.
102
96
  async generateSdk(specPath, sdkPlatform, configDir, authKey) {
103
97
  const specFileStream = await this.fileService.getStream(specPath);
104
98
  const file = new FileWrapper(specFileStream);
@@ -107,7 +101,7 @@ export class PortalService {
107
101
  const client = this.createApiClient(authorizationHeader);
108
102
  const sdkGenerationController = new CodeGenerationExternalApisController(client);
109
103
  try {
110
- const response = await sdkGenerationController.generateSdkViaFile(file, sdkPlatform);
104
+ const response = await sdkGenerationController.generateSdkViaFile(Accept.EnumApplicationjson, file, sdkPlatform);
111
105
  const sdkResponse = await sdkGenerationController.downloadSdk(response.result.id);
112
106
  return Result.success(sdkResponse.result);
113
107
  }
@@ -118,16 +112,13 @@ export class PortalService {
118
112
  specFileStream.close();
119
113
  }
120
114
  }
121
- async generateSdl(specPath, configDir) {
122
- if (!(await fs.pathExists(specPath))) {
123
- return Result.failure("Spec file doesn't exist");
124
- }
115
+ async generateSdl(specFileStream, configDir) {
116
+ const file = new FileWrapper(specFileStream);
125
117
  const authInfo = await getAuthInfo(configDir);
126
118
  const authorizationHeader = this.createAuthorizationHeader(authInfo, null);
127
119
  const client = this.createApiClient(authorizationHeader);
128
120
  const transformationController = new TransformationController(client);
129
121
  try {
130
- const file = new FileWrapper(fs.createReadStream(specPath));
131
122
  const generation = await transformationController.transformViaFile(ContentType.EnumMultipartformdata, file, ExportFormats.Apimatic);
132
123
  if (!generation.result.success) {
133
124
  return this.createGenericErrorResult();
@@ -148,5 +139,25 @@ export class PortalService {
148
139
  createGenericErrorResult() {
149
140
  return Result.failure("An unexpected error occurred");
150
141
  }
142
+ parseBadRequestResponse(errorMessage) {
143
+ // #TODO: Fix server-side error message and simplify this function
144
+ if (!errorMessage) {
145
+ return "Bad request.";
146
+ }
147
+ // Parse the JSON string
148
+ const parsedResult = JSON.parse(errorMessage);
149
+ // Check if it has the expected structure with Errors array
150
+ if (parsedResult.Errors && Array.isArray(parsedResult.Errors) && parsedResult.Errors.length > 0) {
151
+ // Get the first error and clean it up
152
+ const firstError = parsedResult.Errors[0];
153
+ // Split on <br/> and take first part, then strip remaining HTML tags
154
+ const cleanError = firstError.split("<br/>")[0].replace(/<[^<>]*?>/g, "");
155
+ return cleanError;
156
+ }
157
+ else if (parsedResult.Success === false) {
158
+ return "API definition file validation failed.";
159
+ }
160
+ return errorMessage;
161
+ }
151
162
  }
152
163
  //# sourceMappingURL=portal-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,MAAM,EACN,yBAAyB,EACzB,mBAAmB,EACnB,WAAW,EAEX,QAAQ,EACR,wBAAwB,EAExB,aAAa,EACb,gCAAgC,EAChC,oCAAoC,EAErC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAKnF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,aAAa;IAA1B;QACmB,iBAAY,GAAG,WAAW,CAAC,qBAAqB,CAAC;QACjD,YAAO,GAAG,CAAC,CAAC;QACZ,gBAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAsFzC,8BAAyB,GAAG,CAAC,QAAyB,EAAE,eAA8B,EAAU,EAAE;YACxG,MAAM,GAAG,GAAG,eAAe,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,CAAC;YACjD,OAAO,cAAc,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,EAAE,CAAC;QACnC,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,mBAA2B,EAAU,EAAE;YAChE,OAAO,IAAI,MAAM,CAAC;gBAChB,qCAAqC,EAAE;oBACrC,aAAa,EAAE,mBAAmB;iBACnC;gBACD,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,iCAA4B,GAAG,KAAK,EAAE,KAAc,EAA2C,EAAE;;YACvG,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,KAAK;gBACL,MAAM,WAAW,GAAG,KAAkC,CAAC;gBACvD,OAAO,oBAAoB,CAAC,MAAA,MAAA,WAAW,CAAC,MAAM,0CAAE,OAAO,mCAAI,iDAAiD,CAAC,CAAC;YAChH,CAAC;iBAAM,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBAChD,WAAW;gBACX,MAAM,gBAAgB,GAAG,KAA4B,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAA,MAAC,gBAAgB,CAAC,MAAO,CAAC,MAAmC,0CAAG,EAAE,CAAC,0CAAG,CAAC,CAAC,CAAC;gBACzF,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,MAAO,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;YACjF,CAAC;iBAAM,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACjE,KAAK;gBACL,OAAO,KAAK,CAAC,IAA6B,CAAC;YAC7C,CAAC;iBAAM,IAAI,KAAK,YAAY,gCAAgC,EAAE,CAAC;gBAC7D,KAAK;gBACL,MAAM,mBAAmB,GAAG,KAAyC,CAAC;gBACtE,MAAM,OAAO,GAAG,MAAA,mBAAmB,CAAC,MAAM,0CAAE,OAAO,CAAC;gBACpD,OAAO,oBAAoB,CACzB,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,2BAA2B,4GAA4G,CACtJ,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,oBAAoB,CACzB,gKAAgK,CACjK,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,KAAK,EAAE,KAAc,EAA0B,EAAE;YAC5E,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAI,KAAyC,CAAC,IAAI,CAAC;gBAC/D,OAAO,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC,CAAC;QAEM,8BAAyB,GAAG,KAAK,EAAE,KAAc,EAAmB,EAAE;;YAC5E,iKAAiK;YACjK,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,KAAK;gBACL,MAAM,WAAW,GAAG,KAAkC,CAAC;gBACvD,OAAO,oBAAoB,CAAC,MAAA,MAAA,WAAW,CAAC,MAAM,0CAAE,OAAO,mCAAI,iDAAiD,CAAC,CAAC;YAChH,CAAC;iBAAM,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBAChD,WAAW;gBACX,MAAM,gBAAgB,GAAG,KAA4B,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAA,MAAC,gBAAgB,CAAC,MAAO,CAAC,MAAmC,0CAAG,EAAE,CAAC,0CAAG,CAAC,CAAC,CAAC;gBACzF,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,MAAO,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;YACjF,CAAC;iBAAM,IAAI,KAAK,YAAY,gCAAgC,EAAE,CAAC;gBAC7D,KAAK;gBACL,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAClD,OAAO,oBAAoB,CACzB,GAAG,IAAI,CAAC,OAAO,4GAA4G,CAC5H,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,oBAAoB,CACzB,6JAA6J,CAC9J,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IA7JC,KAAK,CAAC,cAAc,CAClB,SAAmB,EACnB,SAAwB,EACxB,OAAsB;QAEtB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACzD,MAAM,8BAA8B,GAAG,IAAI,8BAA8B,CAAC,MAAM,CAAC,CAAC;QAElF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,8BAA8B,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACjH,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAA+B,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,QAAkB,EAClB,WAAsB,EACtB,SAAwB,EACxB,OAAsB;QAEtB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACzD,MAAM,uBAAuB,GAAG,IAAI,oCAAoC,CAAC,MAAM,CAAC,CAAC;QAEjF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACrF,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,MAA+B,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,SAAiB;QAC1D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACzD,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAgC,MAAM,wBAAwB,CAAC,gBAAgB,CAC7F,WAAW,CAAC,qBAAqB,EACjC,IAAI,EACJ,aAAa,CAAC,QAAQ,CACvB,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzC,CAAC;YAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,EAAE,MAAM,EAAE,GAAuB,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;YAChH,IAAK,MAAgC,CAAC,QAAQ,EAAE,CAAC;gBAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAA+B,CAAC,CAAQ,CAAC,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC9B,OAAO,MAAM,CAAC,OAAO,CAAc,8BAA8B,CAAC,CAAC;IACrE,CAAC;CA2EF"}
1
+ {"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import fs from "fs";
2
2
  import archiver from "archiver";
3
- import unzipper from "unzipper";
3
+ import extract from "extract-zip";
4
4
  export class ZipService {
5
5
  async archive(sourceDir, outputZipPath) {
6
6
  return new Promise((resolve, reject) => {
@@ -14,11 +14,25 @@ export class ZipService {
14
14
  });
15
15
  }
16
16
  async unArchive(sourceFile, destinationDirectory) {
17
- return new Promise((resolve, reject) => {
18
- fs.createReadStream(sourceFile.toString())
19
- .pipe(unzipper.Extract({ path: destinationDirectory.toString() }))
20
- .on("close", () => resolve())
21
- .on("error", (err) => reject(err));
17
+ const MAX_FILES = 100000;
18
+ const MAX_SIZE = 1000000000; // 1 GB
19
+ let fileCount = 0;
20
+ let totalSize = 0;
21
+ await extract(sourceFile.toString(), {
22
+ dir: destinationDirectory.toString(),
23
+ onEntry: function (entry) {
24
+ fileCount++;
25
+ if (fileCount > MAX_FILES) {
26
+ throw new Error("Reached max. file count");
27
+ }
28
+ // The uncompressedSize comes from the zip headers, so it might not be trustworthy.
29
+ // Alternatively, calculate the size from the readStream.
30
+ let entrySize = entry.uncompressedSize;
31
+ totalSize += entrySize;
32
+ if (totalSize > MAX_SIZE) {
33
+ throw new Error("Reached max. size");
34
+ }
35
+ }
22
36
  });
23
37
  }
24
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"zip-service.js","sourceRoot":"","sources":["../../src/infrastructure/zip-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAIhC,MAAM,OAAO,UAAU;IACd,KAAK,CAAC,OAAO,CAAC,SAAwB,EAAE,aAAuB;QACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEhC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAE1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,iCAAiC;YACjF,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAoB,EAAE,oBAAmC;QACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;iBACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;iBACjE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;iBAC5B,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"zip-service.js","sourceRoot":"","sources":["../../src/infrastructure/zip-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAIlC,MAAM,OAAO,UAAU;IACd,KAAK,CAAC,OAAO,CAAC,SAAwB,EAAE,aAAuB;QACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEhC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAE1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,iCAAiC;YACjF,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,UAAoB,EAAE,oBAAmC;QAC9E,MAAM,SAAS,GAAG,MAAO,CAAC;QAC1B,MAAM,QAAQ,GAAG,UAAa,CAAC,CAAC,OAAO;QACvC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YACnC,GAAG,EAAE,oBAAoB,CAAC,QAAQ,EAAE;YACpC,OAAO,EAAE,UAAU,KAAK;gBACtB,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,CAAC;gBACD,mFAAmF;gBACnF,yDAAyD;gBACzD,IAAI,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBACvC,SAAS,IAAI,SAAS,CAAC;gBACvB,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { log, outro, spinner } from "@clack/prompts";
1
+ import { log, spinner } from "@clack/prompts";
2
2
  export class BasePrompts {
3
3
  constructor() {
4
4
  this.spin = spinner();
@@ -13,7 +13,7 @@ export class BasePrompts {
13
13
  log.step(message);
14
14
  }
15
15
  logError(errorMessage) {
16
- outro(errorMessage);
16
+ log.error(errorMessage);
17
17
  }
18
18
  }
19
19
  //# sourceMappingURL=base-prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-prompts.js","sourceRoot":"","sources":["../../../../src/prompts/portal/common/base-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,OAAgB,WAAW;IAAjC;QACuB,SAAI,GAAG,OAAO,EAAE,CAAC;IAiBxC,CAAC;IAfU,sBAAsB,CAAC,OAAe;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEM,qBAAqB,CAAC,OAAe;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,WAAW,CAAC,OAAe;QAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,YAAoB;QAChC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;CACJ"}
1
+ {"version":3,"file":"base-prompts.js","sourceRoot":"","sources":["../../../../src/prompts/portal/common/base-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,OAAgB,WAAW;IAAjC;QACuB,SAAI,GAAG,OAAO,EAAE,CAAC;IAiBxC,CAAC;IAfU,sBAAsB,CAAC,OAAe;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEM,qBAAqB,CAAC,OAAe;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,WAAW,CAAC,OAAe;QAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,YAAoB;QAChC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CACJ"}
@@ -1,5 +1,4 @@
1
1
  import { BasePrompts } from "./common/base-prompts.js";
2
2
  export declare class PortalServePrompts extends BasePrompts {
3
- overwriteExistingPortalArtifactsPrompt(): Promise<boolean>;
4
3
  displayOutroMessage(buildDirectory: string, portalDirectory: string, port: number, hotReloadDisabled: boolean): void;
5
4
  }
@@ -1,22 +1,6 @@
1
- import process from "process";
2
- import { cancel, isCancel, log, outro, select } from "@clack/prompts";
1
+ import { log, outro } from "@clack/prompts";
3
2
  import { BasePrompts } from "./common/base-prompts.js";
4
3
  export class PortalServePrompts extends BasePrompts {
5
- async overwriteExistingPortalArtifactsPrompt() {
6
- const useExistingFolder = await select({
7
- message: `⚠️ The destination folder is not empty, do you want to overwrite the existing files?`,
8
- options: [
9
- { value: "yes", label: "Yes" },
10
- { value: "no", label: "No" }
11
- ],
12
- initialValue: "no"
13
- });
14
- if (isCancel(useExistingFolder)) {
15
- cancel("Operation cancelled.");
16
- return process.exit(1);
17
- }
18
- return useExistingFolder === "yes";
19
- }
20
4
  displayOutroMessage(buildDirectory, portalDirectory, port, hotReloadDisabled) {
21
5
  log.message(`The generated portal can be found at ${portalDirectory}`);
22
6
  log.message(`Server started at http://localhost:${port}`);
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/prompts/portal/serve.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAC1C,KAAK,CAAC,sCAAsC;QACjD,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC;YACrC,OAAO,EAAE,uFAAuF;YAChG,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;aAC7B;YACD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,iBAAiB,KAAK,KAAK,CAAC;IACrC,CAAC;IAEM,mBAAmB,CACxB,cAAsB,EACtB,eAAuB,EACvB,IAAY,EACZ,iBAA0B;QAE1B,GAAG,CAAC,OAAO,CAAC,wCAAwC,eAAe,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/prompts/portal/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAC1C,mBAAmB,CACxB,cAAsB,EACtB,eAAuB,EACvB,IAAY,EACZ,iBAA0B;QAE1B,GAAG,CAAC,OAAO,CAAC,wCAAwC,eAAe,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -13,7 +13,7 @@ export class PortalNewTocPrompts {
13
13
  return false;
14
14
  }
15
15
  if (!overwrite) {
16
- outro("Please enter a different destination path or delete the existing toc.yml file and try again.");
16
+ log.error("Please enter a different destination path or delete the existing toc.yml file and try again.");
17
17
  }
18
18
  return overwrite;
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/prompts/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGhF,MAAM,OAAO,mBAAmB;IAAhC;QACmB,SAAI,GAAG,OAAO,EAAE,CAAC;IA2CpC,CAAC;IAzCC,KAAK,CAAC,0BAA0B,CAAC,OAAiB;QAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,4BAA4B,OAAO,gDAAgD;YAC5F,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,CAAC,8FAA8F,CAAC,CAAC;QACxG,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC,CAAC,OAAe;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,gCAAgC,CAAC,OAAe;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAAC,OAAiB;QACnC,KAAK,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/prompts/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGhF,MAAM,OAAO,mBAAmB;IAAhC;QACmB,SAAI,GAAG,OAAO,EAAE,CAAC;IA2CpC,CAAC;IAzCC,KAAK,CAAC,0BAA0B,CAAC,OAAiB;QAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,4BAA4B,OAAO,gDAAgD;YAC5F,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAC5G,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC,CAAC,OAAe;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,gCAAgC,CAAC,OAAe;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAAC,OAAiB;QACnC,KAAK,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;CACF"}
@@ -2,7 +2,6 @@ export interface ServeFlags {
2
2
  readonly port: number;
3
3
  readonly folder: string;
4
4
  readonly destination: string;
5
- readonly ignore: string;
6
5
  readonly open: boolean;
7
6
  readonly "auth-key": string | undefined;
8
7
  readonly "no-reload": boolean;
@@ -1,9 +1,6 @@
1
1
  import { loggers, ValidationMessages } from "../types/utils.js";
2
- import { ApiValidationSummary } from "@apimatic/sdk";
3
- export declare const unzipFile: (stream: NodeJS.ReadableStream, destination: string) => Promise<unknown>;
4
2
  export declare const createTempDirectory: () => Promise<string>;
5
3
  export declare const clearDirectory: (folderPath: string) => Promise<void>;
6
- export declare const validationMessagesToJson: (validationMessages: ApiValidationSummary) => object;
7
4
  interface DirectoryNode {
8
5
  [key: string]: DirectoryNode | string | null | undefined;
9
6
  }
@@ -11,7 +8,6 @@ export declare const directoryToJson: (dirPath: string, parentPath?: string) =>
11
8
  export declare const isValidUrl: (input: string) => boolean;
12
9
  export declare const deleteFile: (filePath: string) => Promise<void>;
13
10
  export declare const writeFileUsingReadableStream: (stream: NodeJS.ReadableStream, destinationPath: string) => Promise<unknown>;
14
- export declare const zipDirectoryToStream: (sourcePath: string) => Promise<NodeJS.ReadableStream>;
15
11
  /**
16
12
  * Packages local files into a ZIP archive
17
13
  *
@@ -21,18 +17,8 @@ export declare const zipDirectoryToStream: (sourcePath: string) => Promise<NodeJ
21
17
  */
22
18
  export declare const zipDirectory: (sourcePath: string, destinationPath: string) => Promise<string>;
23
19
  export declare const replaceHTML: (string: string) => string;
24
- export declare const isJSONParsable: (json: string) => boolean;
25
20
  export declare const getFileNameFromPath: (filePath: string) => string;
26
21
  export declare const printValidationMessages: ({ warnings, errors, messages }: ValidationMessages, { log, warn, error }: loggers) => void;
27
- /**
28
- * Extracts a ZIP file to a specified destination directory.
29
- *
30
- * @param zipFilePath Path to the ZIP file.
31
- * @param destinationDir Path to the destination directory where files will be extracted.
32
- */
33
- export declare function extractZipFile(zipFilePath: string, destinationDir: string): Promise<void>;
34
- export declare function zipPortalSource(sourceDirectoryPath: string, generatedZipFilePath: string, ignoredPaths?: string[]): Promise<string>;
35
- export declare function isPortInUse(port: number): Promise<boolean>;
36
22
  export declare function parseStreamBodyToJson(body: NodeJS.ReadableStream): Promise<any>;
37
23
  export declare const getMessageInOrangeColor: (message: string) => string;
38
24
  export declare const getMessageInBlueColor: (message: string) => string;
@@ -1,25 +1,11 @@
1
1
  import { __asyncValues } from "tslib";
2
2
  import * as path from "path";
3
- import net from "net";
4
3
  import fs from "fs";
5
4
  import fsExtra from "fs-extra";
6
5
  import os from "os";
7
6
  import archiver from "archiver";
8
- import unzipper from "unzipper";
9
7
  import stripTags from "striptags";
10
- import AdmZip from "adm-zip";
11
8
  import colors from "picocolors";
12
- import { PassThrough } from "stream";
13
- export const unzipFile = (stream, destination) => {
14
- return new Promise((resolve, reject) => {
15
- const extractStream = unzipper.Extract({ path: destination });
16
- stream
17
- .pipe(extractStream)
18
- .on("error", (error) => reject(new Error("Error during extraction: " + error.message)));
19
- extractStream.on("close", () => resolve("Extracted"));
20
- extractStream.on("error", (error) => reject(new Error("Error during extraction: " + error.message)));
21
- });
22
- };
23
9
  export const createTempDirectory = async () => {
24
10
  return fs.mkdtempSync(path.join(os.tmpdir(), "apimatic-cli-"));
25
11
  };
@@ -34,31 +20,6 @@ export const clearDirectory = async (folderPath) => {
34
20
  }
35
21
  await deleteFile(folderPath);
36
22
  };
37
- export const validationMessagesToJson = (validationMessages) => {
38
- const structuredValidationMessages = {
39
- "Validation Messages": {
40
- Errors: [],
41
- Warnings: [],
42
- Messages: []
43
- }
44
- };
45
- if (validationMessages.errors) {
46
- validationMessages.errors.forEach((error) => {
47
- structuredValidationMessages["Validation Messages"]["Errors"].push(replaceHTML(error));
48
- });
49
- }
50
- if (validationMessages.warnings) {
51
- validationMessages.warnings.forEach((warning) => {
52
- structuredValidationMessages["Validation Messages"]["Warnings"].push(replaceHTML(warning));
53
- });
54
- }
55
- if (validationMessages.messages) {
56
- validationMessages.messages.forEach((message) => {
57
- structuredValidationMessages["Validation Messages"]["Messages"].push(replaceHTML(message));
58
- });
59
- }
60
- return structuredValidationMessages;
61
- };
62
23
  // TODO: Move to portal:quickstart command.
63
24
  const descriptions = Object.entries({
64
25
  "APIMATIC-BUILD.json": "# Defines all configurations for the API portal, including programming languages and themes",
@@ -126,21 +87,6 @@ export const writeFileUsingReadableStream = (stream, destinationPath) => {
126
87
  });
127
88
  });
128
89
  };
129
- export const zipDirectoryToStream = async (sourcePath) => {
130
- // Check if the directory exists for the user or not
131
- await fsExtra.ensureDir(sourcePath);
132
- const archive = archiver("zip");
133
- return new Promise((resolve, reject) => {
134
- archive.on("error", (err) => {
135
- reject(new Error(err.message));
136
- });
137
- const passThroughStream = new PassThrough();
138
- archive.pipe(passThroughStream);
139
- archive.directory(sourcePath, false);
140
- archive.finalize().catch(reject);
141
- resolve(passThroughStream);
142
- });
143
- };
144
90
  /**
145
91
  * Packages local files into a ZIP archive
146
92
  *
@@ -172,15 +118,6 @@ export const zipDirectory = async (sourcePath, destinationPath) => {
172
118
  export const replaceHTML = (string) => {
173
119
  return stripTags(string);
174
120
  };
175
- export const isJSONParsable = (json) => {
176
- try {
177
- JSON.parse(json);
178
- return true;
179
- }
180
- catch (e) {
181
- return false;
182
- }
183
- };
184
121
  export const getFileNameFromPath = (filePath) => {
185
122
  return path.basename(filePath).split(".")[0];
186
123
  };
@@ -198,115 +135,6 @@ export const printValidationMessages = ({ warnings, errors, messages }, { log, w
198
135
  error(replaceHTML(singleError));
199
136
  }
200
137
  };
201
- /**
202
- * Extracts a ZIP file to a specified destination directory.
203
- *
204
- * @param zipFilePath Path to the ZIP file.
205
- * @param destinationDir Path to the destination directory where files will be extracted.
206
- */
207
- export async function extractZipFile(zipFilePath, destinationDir) {
208
- const MAX_ZIP_SIZE = 300 * 1024 * 1024;
209
- return new Promise((resolve, reject) => {
210
- try {
211
- const zip = new AdmZip(zipFilePath);
212
- const zipEntries = zip.getEntries();
213
- let totalSize = 0;
214
- zipEntries.forEach((entry) => {
215
- totalSize += entry.getData().length;
216
- const normalizedPath = path.normalize(entry.entryName);
217
- if (normalizedPath.startsWith("..") || path.isAbsolute(normalizedPath)) {
218
- return reject(new Error(`Blocked potentially unsafe path: ${normalizedPath}`));
219
- }
220
- });
221
- if (totalSize > MAX_ZIP_SIZE) {
222
- return reject(new Error(getMessageInRedColor("Archive size is too large for safe extraction.")));
223
- }
224
- if (!fs.existsSync(destinationDir)) {
225
- fs.mkdirSync(destinationDir, { recursive: true });
226
- }
227
- zipEntries.forEach((entry) => {
228
- const resolvedPath = path.resolve(destinationDir, entry.entryName);
229
- if (!resolvedPath.startsWith(path.resolve(destinationDir))) {
230
- return reject(new Error("An error occurred while extracting zip file."));
231
- }
232
- zip.extractEntryTo(entry, destinationDir, true, true);
233
- });
234
- resolve();
235
- }
236
- catch (error) {
237
- return reject(new Error(`Failed to extract ZIP File: ${error}`));
238
- }
239
- });
240
- }
241
- //TODO: Refactor this method, carries dual responsibility.
242
- export async function zipPortalSource(sourceDirectoryPath, generatedZipFilePath, ignoredPaths = []) {
243
- if (await fsExtra.pathExists(generatedZipFilePath)) {
244
- await deleteFile(generatedZipFilePath);
245
- }
246
- const output = fs.createWriteStream(generatedZipFilePath);
247
- const archive = archiver("zip", {
248
- zlib: { level: 9 }
249
- });
250
- return new Promise((resolve, reject) => {
251
- output.on("close", () => resolve(generatedZipFilePath));
252
- output.on("error", (err) => {
253
- return reject(new Error(`Failed to zip the source directory: ${err.message}`));
254
- });
255
- archive.on("error", (err) => {
256
- return reject(new Error(`Failed to zip the source directory: ${err.message}`));
257
- });
258
- archive.pipe(output);
259
- // Function to recursively add files and directories to the archive, excluding ignored paths
260
- const addItemsToArchive = async (currentPath, archivePath) => {
261
- const items = await fsExtra.readdir(currentPath);
262
- for (const item of items) {
263
- const fullPath = path.join(currentPath, item);
264
- const relativePath = path.relative(sourceDirectoryPath, fullPath);
265
- // Check if the path is ignored.
266
- const isIgnored = ignoredPaths.some((ignoredPath) => fullPath === ignoredPath ||
267
- relativePath === ignoredPath ||
268
- fullPath === path.resolve(ignoredPath) ||
269
- relativePath.startsWith(ignoredPath + "/") ||
270
- relativePath.startsWith(ignoredPath + "\\"));
271
- if (!isIgnored) {
272
- const stats = await fsExtra.stat(fullPath);
273
- if (stats.isDirectory()) {
274
- await addItemsToArchive(fullPath, archivePath ? path.join(archivePath, item) : item);
275
- }
276
- else {
277
- archive.file(fullPath, { name: archivePath ? path.join(archivePath, item) : item });
278
- }
279
- }
280
- }
281
- };
282
- // Start adding items from the source directory
283
- addItemsToArchive(sourceDirectoryPath, false)
284
- .then(() => {
285
- archive.finalize();
286
- })
287
- .catch((err) => {
288
- return reject(new Error(`Failed to add items to the zip created for source directory: ${err.message}`));
289
- });
290
- });
291
- }
292
- export async function isPortInUse(port) {
293
- return new Promise((resolve) => {
294
- const server = net.createServer();
295
- server.once("error", (err) => {
296
- if (err.code === "EADDRINUSE") {
297
- resolve(true);
298
- }
299
- else {
300
- resolve(false);
301
- }
302
- });
303
- server.once("listening", () => {
304
- server.close();
305
- resolve(false);
306
- });
307
- server.listen(port);
308
- });
309
- }
310
138
  export async function parseStreamBodyToJson(body) {
311
139
  var _a, e_1, _b, _c;
312
140
  const chunks = [];