@apimatic/cli 1.1.0-beta.1 → 1.1.0-beta.11

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 (136) hide show
  1. package/README.md +53 -10
  2. package/lib/actions/action-result.d.ts +12 -6
  3. package/lib/actions/action-result.js +36 -10
  4. package/lib/actions/action-result.js.map +1 -1
  5. package/lib/actions/api/validate.d.ts +3 -1
  6. package/lib/actions/api/validate.js +14 -3
  7. package/lib/actions/api/validate.js.map +1 -1
  8. package/lib/actions/portal/copilot.js +2 -2
  9. package/lib/actions/portal/generate.js +7 -1
  10. package/lib/actions/portal/generate.js.map +1 -1
  11. package/lib/actions/portal/quickstart.d.ts +4 -3
  12. package/lib/actions/portal/quickstart.js +42 -19
  13. package/lib/actions/portal/quickstart.js.map +1 -1
  14. package/lib/actions/portal/serve.js +0 -14
  15. package/lib/actions/portal/serve.js.map +1 -1
  16. package/lib/actions/portal/toc/new-toc.d.ts +5 -5
  17. package/lib/actions/portal/toc/new-toc.js +39 -40
  18. package/lib/actions/portal/toc/new-toc.js.map +1 -1
  19. package/lib/actions/sdk/generate.d.ts +4 -1
  20. package/lib/actions/sdk/generate.js +62 -17
  21. package/lib/actions/sdk/generate.js.map +1 -1
  22. package/lib/actions/sdk/merge-source-tree.d.ts +12 -0
  23. package/lib/actions/sdk/merge-source-tree.js +78 -0
  24. package/lib/actions/sdk/merge-source-tree.js.map +1 -0
  25. package/lib/actions/sdk/quickstart.d.ts +6 -3
  26. package/lib/actions/sdk/quickstart.js +48 -26
  27. package/lib/actions/sdk/quickstart.js.map +1 -1
  28. package/lib/actions/sdk/save-changes.d.ts +8 -0
  29. package/lib/actions/sdk/save-changes.js +93 -0
  30. package/lib/actions/sdk/save-changes.js.map +1 -0
  31. package/lib/application/portal/toc/toc-structure-generator.d.ts +23 -2
  32. package/lib/application/portal/toc/toc-structure-generator.js +131 -60
  33. package/lib/application/portal/toc/toc-structure-generator.js.map +1 -1
  34. package/lib/commands/portal/recipe/new.js +2 -2
  35. package/lib/commands/portal/recipe/new.js.map +1 -1
  36. package/lib/commands/portal/toc/new.d.ts +5 -3
  37. package/lib/commands/portal/toc/new.js +34 -26
  38. package/lib/commands/portal/toc/new.js.map +1 -1
  39. package/lib/commands/quickstart.js +1 -1
  40. package/lib/commands/quickstart.js.map +1 -1
  41. package/lib/commands/sdk/generate.d.ts +4 -2
  42. package/lib/commands/sdk/generate.js +29 -11
  43. package/lib/commands/sdk/generate.js.map +1 -1
  44. package/lib/commands/sdk/save-changes.d.ts +14 -0
  45. package/lib/commands/sdk/save-changes.js +51 -0
  46. package/lib/commands/sdk/save-changes.js.map +1 -0
  47. package/lib/hooks/not-found.js +1 -1
  48. package/lib/hooks/not-found.js.map +1 -1
  49. package/lib/infrastructure/debounce-service.js +3 -0
  50. package/lib/infrastructure/debounce-service.js.map +1 -1
  51. package/lib/infrastructure/file-service.d.ts +6 -0
  52. package/lib/infrastructure/file-service.js +58 -1
  53. package/lib/infrastructure/file-service.js.map +1 -1
  54. package/lib/infrastructure/git-service.d.ts +15 -0
  55. package/lib/infrastructure/git-service.js +93 -0
  56. package/lib/infrastructure/git-service.js.map +1 -0
  57. package/lib/infrastructure/launcher-service.d.ts +2 -0
  58. package/lib/infrastructure/launcher-service.js +22 -1
  59. package/lib/infrastructure/launcher-service.js.map +1 -1
  60. package/lib/infrastructure/service-error.d.ts +13 -2
  61. package/lib/infrastructure/service-error.js +23 -9
  62. package/lib/infrastructure/service-error.js.map +1 -1
  63. package/lib/infrastructure/services/api-service.d.ts +2 -1
  64. package/lib/infrastructure/services/api-service.js +24 -0
  65. package/lib/infrastructure/services/api-service.js.map +1 -1
  66. package/lib/infrastructure/services/portal-service.d.ts +6 -4
  67. package/lib/infrastructure/services/portal-service.js +96 -59
  68. package/lib/infrastructure/services/portal-service.js.map +1 -1
  69. package/lib/infrastructure/services/validation-service.d.ts +28 -2
  70. package/lib/infrastructure/services/validation-service.js +108 -15
  71. package/lib/infrastructure/services/validation-service.js.map +1 -1
  72. package/lib/infrastructure/zip-service.js +1 -1
  73. package/lib/infrastructure/zip-service.js.map +1 -1
  74. package/lib/prompts/api/validate.d.ts +5 -2
  75. package/lib/prompts/api/validate.js +36 -0
  76. package/lib/prompts/api/validate.js.map +1 -1
  77. package/lib/prompts/format.d.ts +1 -1
  78. package/lib/prompts/format.js.map +1 -1
  79. package/lib/prompts/portal/generate.d.ts +1 -1
  80. package/lib/prompts/portal/generate.js +9 -3
  81. package/lib/prompts/portal/generate.js.map +1 -1
  82. package/lib/prompts/portal/quickstart.d.ts +3 -0
  83. package/lib/prompts/portal/quickstart.js +39 -2
  84. package/lib/prompts/portal/quickstart.js.map +1 -1
  85. package/lib/prompts/portal/toc/new-toc.d.ts +1 -1
  86. package/lib/prompts/portal/toc/new-toc.js +10 -2
  87. package/lib/prompts/portal/toc/new-toc.js.map +1 -1
  88. package/lib/prompts/sdk/generate.d.ts +11 -4
  89. package/lib/prompts/sdk/generate.js +37 -11
  90. package/lib/prompts/sdk/generate.js.map +1 -1
  91. package/lib/prompts/sdk/merge-source-tree.d.ts +22 -0
  92. package/lib/prompts/sdk/merge-source-tree.js +90 -0
  93. package/lib/prompts/sdk/merge-source-tree.js.map +1 -0
  94. package/lib/prompts/sdk/quickstart.d.ts +4 -1
  95. package/lib/prompts/sdk/quickstart.js +41 -4
  96. package/lib/prompts/sdk/quickstart.js.map +1 -1
  97. package/lib/prompts/sdk/save-changes.d.ts +21 -0
  98. package/lib/prompts/sdk/save-changes.js +84 -0
  99. package/lib/prompts/sdk/save-changes.js.map +1 -0
  100. package/lib/types/build/build.d.ts +2 -0
  101. package/lib/types/build/build.js.map +1 -1
  102. package/lib/types/build-context.d.ts +10 -0
  103. package/lib/types/build-context.js +71 -1
  104. package/lib/types/build-context.js.map +1 -1
  105. package/lib/types/events/sdk-changes-saved.d.ts +8 -0
  106. package/lib/types/events/sdk-changes-saved.js +11 -0
  107. package/lib/types/events/sdk-changes-saved.js.map +1 -0
  108. package/lib/types/events/sdk-changes-tracked.d.ts +8 -0
  109. package/lib/types/events/sdk-changes-tracked.js +11 -0
  110. package/lib/types/events/sdk-changes-tracked.js.map +1 -0
  111. package/lib/types/events/sdk-conflicts-resolved.d.ts +8 -0
  112. package/lib/types/events/sdk-conflicts-resolved.js +11 -0
  113. package/lib/types/events/sdk-conflicts-resolved.js.map +1 -0
  114. package/lib/types/file/directory.d.ts +10 -1
  115. package/lib/types/file/directory.js +63 -5
  116. package/lib/types/file/directory.js.map +1 -1
  117. package/lib/types/file/directoryPath.js.map +1 -1
  118. package/lib/types/merge-source-tree-context.d.ts +28 -0
  119. package/lib/types/merge-source-tree-context.js +62 -0
  120. package/lib/types/merge-source-tree-context.js.map +1 -0
  121. package/lib/types/save-changes-context.d.ts +17 -0
  122. package/lib/types/save-changes-context.js +42 -0
  123. package/lib/types/save-changes-context.js.map +1 -0
  124. package/lib/types/sdk-context.d.ts +5 -4
  125. package/lib/types/sdk-context.js +26 -13
  126. package/lib/types/sdk-context.js.map +1 -1
  127. package/lib/types/sdl/sdl.d.ts +20 -3
  128. package/lib/types/sdl/sdl.js +120 -22
  129. package/lib/types/sdl/sdl.js.map +1 -1
  130. package/lib/types/spec-context.js.map +1 -1
  131. package/lib/types/temp-context.js.map +1 -1
  132. package/lib/types/toc/toc.d.ts +31 -6
  133. package/lib/utils/string-utils.d.ts +1 -0
  134. package/lib/utils/string-utils.js +42 -0
  135. package/lib/utils/string-utils.js.map +1 -1
  136. package/package.json +3 -2
@@ -1,28 +1,42 @@
1
1
  var _a;
2
2
  import axios from "axios";
3
3
  import { format as f } from "../prompts/format.js";
4
+ export var ServiceErrorCode;
5
+ (function (ServiceErrorCode) {
6
+ ServiceErrorCode["NotFound"] = "NOT_FOUND";
7
+ ServiceErrorCode["ServerError"] = "SERVER_ERROR";
8
+ ServiceErrorCode["NetworkError"] = "NETWORK_ERROR";
9
+ ServiceErrorCode["InvalidResponse"] = "INVALID_RESPONSE";
10
+ ServiceErrorCode["UnAuthorized"] = "UNAUTHORIZED";
11
+ ServiceErrorCode["BadRequest"] = "BAD_REQUEST";
12
+ ServiceErrorCode["Forbidden"] = "FORBIDDEN";
13
+ })(ServiceErrorCode || (ServiceErrorCode = {}));
4
14
  export class ServiceError {
5
- static badRequest(customMessage) {
6
- return new _a("BAD_REQUEST", customMessage);
15
+ static badRequest(customMessage, errors) {
16
+ return new _a(ServiceErrorCode.BadRequest, customMessage, errors);
7
17
  }
8
18
  static forbidden(customMessage) {
9
- return new _a("FORBIDDEN", customMessage);
19
+ return new _a(ServiceErrorCode.Forbidden, customMessage, {});
10
20
  }
11
- constructor(code, defaultMessage) {
21
+ constructor(code, defaultMessage, errors) {
12
22
  this.code = code;
13
23
  this.defaultMessage = defaultMessage;
24
+ this.errors = errors;
14
25
  }
15
26
  get errorMessage() {
16
27
  return this.defaultMessage;
17
28
  }
29
+ getError(key) {
30
+ return this.errors[key];
31
+ }
18
32
  }
19
33
  _a = ServiceError;
20
34
  ServiceError.defaultErrorMessage = `An unexpected error occurred, please try again later. If the problem persists, please reach out to our team at ${f.var("support@apimatic.io")}`;
21
- ServiceError.NotFound = new _a("NOT_FOUND", "Resource not found.");
22
- ServiceError.ServerError = new _a("SERVER_ERROR", _a.defaultErrorMessage);
23
- ServiceError.NetworkError = new _a("NETWORK_ERROR", "Unable to connect to the server.");
24
- ServiceError.InvalidResponse = new _a("INVALID_RESPONSE", _a.defaultErrorMessage);
25
- ServiceError.UnAuthorized = new _a("UNAUTHORIZED", "Unauthorized access.");
35
+ ServiceError.NotFound = new _a(ServiceErrorCode.NotFound, "Resource not found.", {});
36
+ ServiceError.ServerError = new _a(ServiceErrorCode.ServerError, _a.defaultErrorMessage, {});
37
+ ServiceError.NetworkError = new _a(ServiceErrorCode.NetworkError, "Unable to connect to the server.", {});
38
+ ServiceError.InvalidResponse = new _a(ServiceErrorCode.InvalidResponse, _a.defaultErrorMessage, {});
39
+ ServiceError.UnAuthorized = new _a(ServiceErrorCode.UnAuthorized, "Unauthorized access.", {});
26
40
  ServiceError.values = [
27
41
  _a.NotFound,
28
42
  _a.ServerError,
@@ -1 +1 @@
1
- {"version":3,"file":"service-error.js","sourceRoot":"","sources":["../../src/infrastructure/service-error.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAO,YAAY;IAUvB,MAAM,CAAC,UAAU,CAAC,aAAqB;QACrC,OAAO,IAAI,EAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,aAAqB;QACpC,OAAO,IAAI,EAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAUD,YAAoC,IAAY,EAAmB,cAAsB;QAArD,SAAI,GAAJ,IAAI,CAAQ;QAAmB,mBAAc,GAAd,cAAc,CAAQ;IAAG,CAAC;IAE7F,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;;;AA5Bc,gCAAmB,GAAG,kHAAkH,CAAC,CAAC,GAAG,CAC1J,qBAAqB,CACtB,EAAE,AAF+B,CAE9B;AAEY,qBAAQ,GAAG,IAAI,EAAY,CAAC,WAAW,EAAE,qBAAqB,CAAC,AAAvD,CAAwD;AAChE,wBAAW,GAAG,IAAI,EAAY,CAAC,cAAc,EAAE,EAAI,CAAC,mBAAmB,CAAC,AAA7D,CAA8D;AACzE,yBAAY,GAAG,IAAI,EAAY,CAAC,eAAe,EAAE,kCAAkC,CAAC,AAAxE,CAAyE;AACrF,4BAAe,GAAG,IAAI,EAAY,CAAC,kBAAkB,EAAE,EAAI,CAAC,mBAAmB,CAAC,AAAjE,CAAkE;AACjF,yBAAY,GAAG,IAAI,EAAY,CAAC,cAAc,EAAE,sBAAsB,CAAC,AAA3D,CAA4D;AAQxE,mBAAM,GAAmB;IACvC,EAAY,CAAC,QAAQ;IACrB,EAAY,CAAC,WAAW;IACxB,EAAY,CAAC,YAAY;IACzB,EAAY,CAAC,eAAe;IAC5B,EAAY,CAAC,YAAY;CAC1B,AANqB,CAMpB;AASJ,MAAM,UAAU,kBAAkB,CAAC,KAAc;;IAC/C,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,CAAC;QACtC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,YAAY,CAAC,YAAY,CAAC;QACrD,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;QACjD,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,YAAY,CAAC,WAAW,CAAC;QAEpD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjG,OAAO,YAAY,CAAC,YAAY,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,WAAW,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"service-error.js","sourceRoot":"","sources":["../../src/infrastructure/service-error.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,12 @@ import { DirectoryPath } from "../../types/file/directoryPath.js";
2
2
  import { SubscriptionInfo } from "../../types/api/account.js";
3
3
  import { Result } from "neverthrow";
4
4
  import { ServiceError } from "../service-error.js";
5
- import { PortalGenerationStatusResponse } from "@apimatic/sdk";
5
+ import { PortalGenerationStatusResponse, SdkGenerationStatusResponse } from "@apimatic/sdk";
6
6
  export declare class ApiService {
7
7
  private readonly apiBaseUrl;
8
8
  getAccountInfo(configDir: DirectoryPath, shell: string, authKey: string | null): Promise<Result<SubscriptionInfo, ServiceError>>;
9
9
  getPortalGenerationStatus(requestId: string, configDir: DirectoryPath, shell: string, authKey: string | null): Promise<Result<PortalGenerationStatusResponse, ServiceError>>;
10
+ getSdkGenerationStatus(requestId: string, configDir: DirectoryPath, shell: string, authKey: string | null): Promise<Result<SdkGenerationStatusResponse, ServiceError>>;
10
11
  sendTelemetry(payload: string, authKey: string, shell: string): Promise<Result<string, string | ServiceError>>;
11
12
  private axiosInstance;
12
13
  }
@@ -48,6 +48,30 @@ export class ApiService {
48
48
  return err(handleServiceError(error));
49
49
  }
50
50
  }
51
+ async getSdkGenerationStatus(requestId, configDir, shell, authKey) {
52
+ const authInfo = await getAuthInfo(configDir.toString());
53
+ if (authInfo === null && !authKey) {
54
+ return err(ServiceError.UnAuthorized);
55
+ }
56
+ try {
57
+ const token = authKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
58
+ const response = await this.axiosInstance(shell, token).get(`/sdk/${requestId}/status`, {
59
+ headers: { Accept: "application/json" },
60
+ maxRedirects: 0,
61
+ validateStatus: () => true
62
+ });
63
+ if (response.status === 200) {
64
+ return ok(response.data);
65
+ }
66
+ if (response.status === 302) {
67
+ return ok({ status: "Completed" });
68
+ }
69
+ return err(ServiceError.InvalidResponse);
70
+ }
71
+ catch (error) {
72
+ return err(handleServiceError(error));
73
+ }
74
+ }
51
75
  async sendTelemetry(payload, authKey, shell) {
52
76
  try {
53
77
  const response = await this.axiosInstance(shell, authKey).post("/telemetry/track", payload, {
@@ -1 +1 @@
1
- {"version":3,"file":"api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/api-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/api-service.ts"],"names":[],"mappings":"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"}
@@ -6,16 +6,18 @@ import { CommandMetadata } from "../../types/common/command-metadata.js";
6
6
  import { Result } from "neverthrow";
7
7
  import { Language } from "../../types/sdk/generate.js";
8
8
  import { ServiceError } from "../service-error.js";
9
+ export interface GeneratedSdkResult {
10
+ sdk: NodeJS.ReadableStream;
11
+ sdkSourceTree: NodeJS.ReadableStream;
12
+ }
9
13
  export declare class PortalService {
10
14
  private readonly CONTENT_TYPE;
11
15
  private readonly fileService;
12
16
  private readonly apiService;
13
17
  generatePortal(buildPath: FilePath, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, ServiceError | NodeJS.ReadableStream>>;
14
- generateSdk(specPath: FilePath, language: Language, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string>>;
18
+ generateSdk(buildPath: FilePath, language: Language, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<GeneratedSdkResult, ServiceError>>;
15
19
  generateSdl(specFileStream: ReadStream, configDir: DirectoryPath, commandMetadata: CommandMetadata): Promise<Result<Sdl, ServiceError>>;
16
20
  private createAuthorizationHeader;
17
21
  private createOriginQueryParameter;
18
- private handleSdkGenerationErrors;
19
- private parseBadRequestResponse;
20
- private readonly languagePlatform;
22
+ private readonly languageSdk;
21
23
  }
@@ -1,4 +1,4 @@
1
- import { Accept, ApiError, BadRequestResponseSdkError, CodeGenerationExternalApisController, ContentType, DocsPortalGenerationAsyncController, UnauthorizedResponseError, ProblemDetailsError, FileWrapper, TransformationController, ExportFormats, Platforms } from "@apimatic/sdk";
1
+ import { ApiError, SdkGenerationAsyncController, ContentType, DocsPortalGenerationAsyncController, SdkSourceTreeGenerationAsyncController, ProblemDetailsError, FileWrapper, TransformationController, ExportFormats, SdkLanguages, Status, } from "@apimatic/sdk";
2
2
  import { getAuthInfo } from "../../client-utils/auth-manager.js";
3
3
  import { parseStreamBodyToJson } from "../../utils/utils.js";
4
4
  import { FileService } from "../file-service.js";
@@ -21,36 +21,19 @@ export class PortalService {
21
21
  origin: `APIMATIC CLI ${commandName}`
22
22
  };
23
23
  };
24
- this.handleSdkGenerationErrors = async (error) => {
25
- var _a, _b, _c, _d, _e;
26
- if (error instanceof BadRequestResponseSdkError) {
27
- //400
28
- return this.parseBadRequestResponse((_a = error.result) === null || _a === void 0 ? void 0 : _a.message);
29
- }
30
- if (error instanceof UnauthorizedResponseError) {
31
- //401
32
- return (_c = (_b = error.result) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : "Authorization has been denied for this request.";
33
- }
34
- if (error instanceof ProblemDetailsError) {
35
- // 403
36
- const message = (_e = (_d = error.result.errors) === null || _d === void 0 ? void 0 : _d[""]) === null || _e === void 0 ? void 0 : _e[0];
37
- return error.result.title + "\n- " + message;
38
- }
39
- return "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";
40
- };
41
- this.languagePlatform = {
42
- [Language.CSHARP]: Platforms.CsNetStandardLib,
43
- [Language.JAVA]: Platforms.JavaEclipseJreLib,
44
- [Language.PHP]: Platforms.PhpGenericLibV2,
45
- [Language.PYTHON]: Platforms.PythonGenericLib,
46
- [Language.RUBY]: Platforms.RubyGenericLib,
47
- [Language.TYPESCRIPT]: Platforms.TsGenericLib,
48
- [Language.GO]: Platforms.GoGenericLib
24
+ this.languageSdk = {
25
+ [Language.CSHARP]: SdkLanguages.Csharp,
26
+ [Language.JAVA]: SdkLanguages.Java,
27
+ [Language.PHP]: SdkLanguages.Php,
28
+ [Language.PYTHON]: SdkLanguages.Python,
29
+ [Language.RUBY]: SdkLanguages.Ruby,
30
+ [Language.TYPESCRIPT]: SdkLanguages.Typescript,
31
+ [Language.GO]: SdkLanguages.Go
49
32
  };
50
33
  }
51
34
  // TODO: Pass stream as parameter instead of file path.
52
35
  async generatePortal(buildPath, configDir, commandMetadata, authKey) {
53
- var _a, _b;
36
+ var _a, _b, _c, _d, _e, _f;
54
37
  const buildFileStream = await this.fileService.getStream(buildPath);
55
38
  const file = new FileWrapper(buildFileStream);
56
39
  const authInfo = await getAuthInfo(configDir.toString());
@@ -64,10 +47,12 @@ export class PortalService {
64
47
  }
65
48
  catch (error) {
66
49
  if (error instanceof ProblemDetailsError) {
67
- const message = (_b = (_a = Object.values(error.result.errors)[0]) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
50
+ const errors = error.result.errors;
51
+ // TODO: This only picks the first error message, improve it to show all errors.
52
+ const message = (_b = (_a = Object.values(errors)[0]) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
68
53
  const errorMessage = error.result.title + "\n- " + message;
69
54
  if (error.statusCode === 400) {
70
- return err(ServiceError.badRequest(errorMessage));
55
+ return err(ServiceError.badRequest(errorMessage, errors));
71
56
  }
72
57
  if (error.statusCode === 403) {
73
58
  return err(ServiceError.forbidden(errorMessage));
@@ -86,10 +71,24 @@ export class PortalService {
86
71
  if (statusResult.isErr()) {
87
72
  return err(statusResult.error);
88
73
  }
89
- if (statusResult.value.status === "Failed") {
74
+ if (statusResult.value.status === Status.Failed) {
90
75
  return err(ServiceError.ServerError);
91
76
  }
92
- } while (statusResult.value.status !== "Completed");
77
+ if (statusResult.value.errors && statusResult.value.status === Status.ValidationError) {
78
+ const errors = statusResult.value.errors;
79
+ const message = (_d = (_c = Object.values(errors)[0]) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : null;
80
+ const errorMessage = "One or more validation errors occurred." +
81
+ "\n- " + message;
82
+ return err(ServiceError.badRequest(errorMessage, errors));
83
+ }
84
+ if (statusResult.value.errors && statusResult.value.status === Status.SubscriptionError) {
85
+ const errors = statusResult.value.errors;
86
+ // TODO: This only picks the first error message, improve it to show all errors.
87
+ const message = (_f = (_e = Object.values(errors)[0]) === null || _e === void 0 ? void 0 : _e[0]) !== null && _f !== void 0 ? _f : null;
88
+ const errorMessage = "Access denied to resource." + "\n- " + message;
89
+ return err(ServiceError.forbidden(errorMessage));
90
+ }
91
+ } while (statusResult.value.status !== Status.Completed);
93
92
  try {
94
93
  const portalDownloadResponse = await docsPortalAsyncController.downloadGeneratedPortal(generationId);
95
94
  return ok(portalDownloadResponse.result);
@@ -102,23 +101,80 @@ export class PortalService {
102
101
  }
103
102
  }
104
103
  // TODO: Pass stream as parameter instead of file path.
105
- async generateSdk(specPath, language, configDir, commandMetadata, authKey) {
106
- const specFileStream = await this.fileService.getStream(specPath);
107
- const file = new FileWrapper(specFileStream);
104
+ async generateSdk(buildPath, language, configDir, commandMetadata, authKey) {
105
+ var _a, _b, _c;
106
+ const buildFileStream = await this.fileService.getStream(buildPath);
107
+ const file = new FileWrapper(buildFileStream);
108
108
  const authInfo = await getAuthInfo(configDir.toString());
109
109
  const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey);
110
110
  const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
111
- const sdkGenerationController = new CodeGenerationExternalApisController(client);
111
+ const sdkGenerationController = new SdkGenerationAsyncController(client);
112
+ let generationId;
112
113
  try {
113
- const response = await sdkGenerationController.generateSdkViaFile(Accept.EnumApplicationjson, file, this.languagePlatform[language], this.createOriginQueryParameter(commandMetadata.commandName));
114
- const sdkResponse = await sdkGenerationController.downloadSdk(response.result.id);
115
- return ok(sdkResponse.result);
114
+ const response = await sdkGenerationController.generateSdkViaBuildInputAsync(this.CONTENT_TYPE, file, this.languageSdk[language]);
115
+ generationId = response.result.id;
116
116
  }
117
117
  catch (error) {
118
- return err(await this.handleSdkGenerationErrors(error));
118
+ if (error instanceof ProblemDetailsError) {
119
+ // TODO: This only picks the first error message, improve it to show all errors.
120
+ const errors = error.result.errors;
121
+ const message = (_b = (_a = Object.values(errors)[0]) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
122
+ const errorMessage = error.result.title + "\n- " + message;
123
+ if (error.statusCode === 400) {
124
+ return err(ServiceError.badRequest(errorMessage, errors));
125
+ }
126
+ if (error.statusCode === 403) {
127
+ return err(ServiceError.forbidden(errorMessage));
128
+ }
129
+ }
130
+ const serviceError = handleServiceError(error);
131
+ return err(serviceError);
119
132
  }
120
133
  finally {
121
- specFileStream.close();
134
+ buildFileStream.close();
135
+ }
136
+ let statusResult;
137
+ do {
138
+ await new Promise((resolve) => setTimeout(resolve, 3000));
139
+ statusResult = await this.apiService.getSdkGenerationStatus(generationId, configDir, commandMetadata.shell, authKey);
140
+ if (statusResult.isErr()) {
141
+ return err(statusResult.error);
142
+ }
143
+ if (statusResult.value.status === Status.Failed) {
144
+ return err(ServiceError.ServerError);
145
+ }
146
+ if (statusResult.value.errors && statusResult.value.status === Status.ValidationError) {
147
+ const errors = statusResult.value.errors;
148
+ const sdkMergeFailedLanguages = errors.sdkMergeFailed;
149
+ if (sdkMergeFailedLanguages === null || sdkMergeFailedLanguages === void 0 ? void 0 : sdkMergeFailedLanguages.length) {
150
+ const errorMessage = "SDK generation failed for these languages due to merge conflict." +
151
+ "\n- " +
152
+ sdkMergeFailedLanguages.join("\n- ");
153
+ return err(ServiceError.badRequest(errorMessage, errors));
154
+ }
155
+ const messages = Object.values(errors).flat();
156
+ const errorMessage = "One or more validation errors occurred." +
157
+ (messages.length ? "\n- " + messages.join("\n- ") : "");
158
+ return err(ServiceError.badRequest(errorMessage, errors));
159
+ }
160
+ if (statusResult.value.errors && statusResult.value.status === Status.SubscriptionError) {
161
+ const errors = statusResult.value.errors;
162
+ const message = (_c = Object.values(errors).flat()[0]) !== null && _c !== void 0 ? _c : null;
163
+ const errorMessage = "Access denied to resource." + "\n- " + message;
164
+ return err(ServiceError.forbidden(errorMessage));
165
+ }
166
+ } while (statusResult.value.status !== Status.Completed);
167
+ try {
168
+ const sdkResponse = await sdkGenerationController.downloadGeneratedSdk(generationId);
169
+ const sdkSourceTreeController = new SdkSourceTreeGenerationAsyncController(client);
170
+ const sdkSourceTreeResponse = await sdkSourceTreeController.downloadGeneratedSdkSourceTree(generationId);
171
+ return ok({
172
+ sdk: sdkResponse.result,
173
+ sdkSourceTree: sdkSourceTreeResponse.result
174
+ });
175
+ }
176
+ catch (error) {
177
+ return err(handleServiceError(error));
122
178
  }
123
179
  }
124
180
  async generateSdl(specFileStream, configDir, commandMetadata) {
@@ -145,24 +201,5 @@ export class PortalService {
145
201
  return err(handleServiceError(error));
146
202
  }
147
203
  }
148
- parseBadRequestResponse(errorMessage) {
149
- // #TODO: Fix server-side error message and simplify this function
150
- if (!errorMessage) {
151
- return "Bad request.";
152
- }
153
- // Parse the JSON string
154
- const parsedResult = JSON.parse(errorMessage);
155
- // Check if it has the expected structure with Errors
156
- if (parsedResult.Errors && Array.isArray(parsedResult.Errors) && parsedResult.Errors.length > 0) {
157
- // Get the first error and clean it up
158
- return parsedResult.Errors[0].split(".")[0] + ".";
159
- // Split on <br/> and take the first part, then strip remaining HTML tags
160
- // return firstError.split("<br/>")[0].replace(/<[^<>]*?>/g, "");
161
- }
162
- else if (parsedResult.Success === false) {
163
- return "API definition file validation failed.";
164
- }
165
- return errorMessage;
166
- }
167
204
  }
168
205
  //# sourceMappingURL=portal-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,43 @@
1
- import { ApiValidationSummary } from "@apimatic/sdk";
1
+ import { ValidateApiResult } from "@apimatic/sdk";
2
2
  import { DirectoryPath } from "../../types/file/directoryPath.js";
3
3
  import { Result } from "neverthrow";
4
4
  import { FilePath } from "../../types/file/filePath.js";
5
5
  import { CommandMetadata } from "../../types/common/command-metadata.js";
6
+ import { ServiceError } from "../service-error.js";
7
+ export declare enum RemovableFeature {
8
+ Merging = "Merging",
9
+ Pagination = "Pagination",
10
+ Webhooks = "Webhooks",
11
+ Callbacks = "Callbacks",
12
+ MultipleAuthSchemes = "MultipleAuthSchemes",
13
+ Oauth2 = "OAuth2"
14
+ }
15
+ export interface FeaturesToRemove {
16
+ features?: RemovableFeature[];
17
+ endpointsToKeep?: number;
18
+ }
6
19
  export interface ValidateViaFileParams {
7
20
  file: FilePath;
8
21
  commandMetadata: CommandMetadata;
9
22
  authKey?: string | null;
10
23
  }
24
+ export interface UnallowedFeaturesResponse {
25
+ Features: RemovableFeature[];
26
+ EndpointLimit: number;
27
+ EndpointCount: number;
28
+ IsSplitSpec: boolean;
29
+ }
30
+ export interface ValidateApiResponse {
31
+ result: ValidateApiResult;
32
+ unallowedFeatures: UnallowedFeaturesResponse | null;
33
+ }
11
34
  export declare class ValidationService {
12
35
  private readonly configDir;
36
+ private readonly apiBaseUrl;
13
37
  constructor(configDir: DirectoryPath);
14
- validateViaFile({ file, commandMetadata, authKey }: ValidateViaFileParams): Promise<Result<ApiValidationSummary, string>>;
38
+ validateViaFile({ file, commandMetadata, authKey }: ValidateViaFileParams): Promise<Result<ValidateApiResponse, string>>;
39
+ stripUnallowedFeatures(specPath: FilePath, featuresToRemove: FeaturesToRemove, authKey?: string | null): Promise<Result<NodeJS.ReadableStream, ServiceError>>;
15
40
  private createAuthorizationHeader;
16
41
  private handleValidationErrors;
42
+ private parseErrorResponse;
17
43
  }
@@ -1,27 +1,80 @@
1
+ import { __asyncValues } from "tslib";
2
+ import { createReadStream } from "node:fs";
1
3
  import fsExtra from "fs-extra";
2
- import { ApiValidationExternalApisController, ContentType, FileWrapper, ApiError } from "@apimatic/sdk";
4
+ import { ApiValidationV2ExternalApisController, ContentType, FileWrapper, ApiError } from "@apimatic/sdk";
3
5
  import { getAuthInfo } from "../../client-utils/auth-manager.js";
4
6
  import { apiClientFactory } from "./api-client-factory.js";
5
7
  import { err, ok } from "neverthrow";
8
+ import FormData from "form-data";
9
+ import { handleServiceError } from "../service-error.js";
10
+ import axios from "axios";
11
+ import { envInfo } from "../env-info.js";
12
+ import { Buffer } from "node:buffer";
13
+ export var RemovableFeature;
14
+ (function (RemovableFeature) {
15
+ RemovableFeature["Merging"] = "Merging";
16
+ RemovableFeature["Pagination"] = "Pagination";
17
+ RemovableFeature["Webhooks"] = "Webhooks";
18
+ RemovableFeature["Callbacks"] = "Callbacks";
19
+ RemovableFeature["MultipleAuthSchemes"] = "MultipleAuthSchemes";
20
+ RemovableFeature["Oauth2"] = "OAuth2";
21
+ })(RemovableFeature || (RemovableFeature = {}));
6
22
  export class ValidationService {
7
23
  constructor(configDir) {
8
24
  this.configDir = configDir;
25
+ this.apiBaseUrl = "https://api.apimatic.io";
9
26
  }
10
27
  async validateViaFile({ file, commandMetadata, authKey }) {
28
+ var _a;
11
29
  const authInfo = await getAuthInfo(this.configDir.toString());
12
30
  const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey !== null && authKey !== void 0 ? authKey : null);
13
31
  const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
14
- const controller = new ApiValidationExternalApisController(client);
32
+ const controller = new ApiValidationV2ExternalApisController(client);
15
33
  try {
16
34
  const fileDescriptor = new FileWrapper(fsExtra.createReadStream(file.toString()));
17
- //TODO: Update spec to include origin query parameter.
18
- const validation = await controller.validateApiViaFile(ContentType.EnumMultipartformdata, fileDescriptor);
19
- return ok(validation.result);
35
+ const validation = await controller.validateApiViaFileV2(ContentType.EnumMultipartformdata, fileDescriptor);
36
+ const headerValue = (_a = validation.headers) === null || _a === void 0 ? void 0 : _a["x-unallowed-features"];
37
+ let unallowedFeatures = null;
38
+ if (headerValue) {
39
+ const decodedJson = globalThis.Buffer.from(headerValue, "base64").toString("utf8");
40
+ const parsed = JSON.parse(decodedJson);
41
+ unallowedFeatures = parsed;
42
+ }
43
+ return ok({
44
+ result: validation.result,
45
+ unallowedFeatures
46
+ });
20
47
  }
21
48
  catch (error) {
22
49
  return err(await this.handleValidationErrors(error));
23
50
  }
24
51
  }
52
+ async stripUnallowedFeatures(specPath, featuresToRemove, authKey) {
53
+ var _a;
54
+ const authInfo = await getAuthInfo(this.configDir.toString());
55
+ const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey !== null && authKey !== void 0 ? authKey : null);
56
+ const formData = new FormData();
57
+ formData.append("file", createReadStream(specPath.toString()));
58
+ formData.append("featuresToRemove", JSON.stringify(featuresToRemove));
59
+ const baseURL = (_a = envInfo.getBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl;
60
+ try {
61
+ const response = await axios({
62
+ method: "POST",
63
+ url: `${baseURL}/api-features/strip`,
64
+ data: formData,
65
+ headers: Object.assign(Object.assign({}, formData.getHeaders()), { Authorization: authorizationHeader }),
66
+ responseType: "stream",
67
+ validateStatus: () => true
68
+ });
69
+ if (response.status >= 400) {
70
+ return err(await this.parseErrorResponse(response));
71
+ }
72
+ return ok(response.data);
73
+ }
74
+ catch (error) {
75
+ return err(handleServiceError(error));
76
+ }
77
+ }
25
78
  createAuthorizationHeader(authInfo, overrideAuthKey) {
26
79
  const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
27
80
  return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
@@ -29,21 +82,61 @@ export class ValidationService {
29
82
  async handleValidationErrors(error) {
30
83
  if (error instanceof ApiError) {
31
84
  const apiError = error;
32
- if (apiError.statusCode === 400) {
33
- return "Your API Definition is invalid. Please fix the issues and try again.";
85
+ switch (apiError.statusCode) {
86
+ case 400:
87
+ return "Your API Definition is invalid. Please fix the issues and try again.";
88
+ case 401:
89
+ return "You are not authorized to perform this action. Please run 'auth:login' or provide a valid auth key.";
90
+ case 403:
91
+ return "You do not have permission to perform this action.";
92
+ case 500:
93
+ return "An unexpected error occurred validating the API specification, please try again later. If the problem persists, please reach out to our team at support@apimatic.io";
94
+ default:
95
+ return `Error ${apiError.statusCode}: An error occurred during validation.`;
96
+ }
97
+ }
98
+ return "Unexpected error occurred while validating API specification.";
99
+ }
100
+ async parseErrorResponse(response) {
101
+ var _a, e_1, _b, _c;
102
+ var _d, _e;
103
+ const chunks = [];
104
+ try {
105
+ for (var _f = true, _g = __asyncValues(response.data), _h; _h = await _g.next(), _a = _h.done, !_a; _f = true) {
106
+ _c = _h.value;
107
+ _f = false;
108
+ const chunk = _c;
109
+ chunks.push(Buffer.from(chunk));
110
+ }
111
+ }
112
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
113
+ finally {
114
+ try {
115
+ if (!_f && !_a && (_b = _g.return)) await _b.call(_g);
34
116
  }
35
- else if (apiError.statusCode === 401) {
36
- return "You are not authorized to perform this action. Please run 'auth:login' or provide a valid auth key.";
117
+ finally { if (e_1) throw e_1.error; }
118
+ }
119
+ const errorBody = Buffer.concat(chunks).toString('utf-8');
120
+ let errorMessage = `Error ${response.status}: Failed to strip unallowed features.`;
121
+ try {
122
+ const errorData = JSON.parse(errorBody);
123
+ if ((_e = (_d = errorData.errors) === null || _d === void 0 ? void 0 : _d.summary) === null || _e === void 0 ? void 0 : _e[0]) {
124
+ errorMessage = errorData.errors.summary[0];
37
125
  }
38
- else if (apiError.statusCode === 403) {
39
- return "You do not have permission to perform this action.";
126
+ else if (errorData.message) {
127
+ errorMessage = errorData.message;
40
128
  }
41
- else if (apiError.statusCode === 500) {
42
- return "An unexpected error occurred validating the API specification, please try again later. If the problem persists, please reach out to our team at support@apimatic.io";
129
+ else if (errorData.title) {
130
+ errorMessage = errorData.title;
43
131
  }
44
- return `Error ${apiError.statusCode}: An error occurred during validation.`;
45
132
  }
46
- return "Unexpected error occurred while validating API specification.";
133
+ catch (_j) {
134
+ errorMessage = errorBody || errorMessage;
135
+ }
136
+ return {
137
+ message: errorMessage,
138
+ statusCode: response.status
139
+ };
47
140
  }
48
141
  }
49
142
  //# sourceMappingURL=validation-service.js.map