@apimatic/cli 1.1.0-alpha.20 → 1.1.0-alpha.22
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.
- package/README.md +119 -91
- package/lib/actions/action-result.d.ts +8 -3
- package/lib/actions/action-result.js +34 -15
- package/lib/actions/action-result.js.map +1 -1
- package/lib/actions/api/transform.d.ts +15 -0
- package/lib/actions/api/transform.js +48 -0
- package/lib/actions/api/transform.js.map +1 -0
- package/lib/actions/api/validate.d.ts +12 -0
- package/lib/actions/api/validate.js +41 -0
- package/lib/actions/api/validate.js.map +1 -0
- package/lib/actions/auth/login.d.ts +6 -5
- package/lib/actions/auth/login.js +25 -33
- package/lib/actions/auth/login.js.map +1 -1
- package/lib/actions/auth/logout.d.ts +8 -0
- package/lib/actions/auth/logout.js +15 -0
- package/lib/actions/auth/logout.js.map +1 -0
- package/lib/actions/auth/status.d.ts +11 -0
- package/lib/actions/auth/status.js +26 -0
- package/lib/actions/auth/status.js.map +1 -0
- package/lib/actions/portal/copilot.d.ts +7 -2
- package/lib/actions/portal/copilot.js +72 -32
- package/lib/actions/portal/copilot.js.map +1 -1
- package/lib/actions/portal/generate.d.ts +5 -5
- package/lib/actions/portal/generate.js +33 -35
- package/lib/actions/portal/generate.js.map +1 -1
- package/lib/actions/portal/quickstart.d.ts +16 -0
- package/lib/actions/portal/quickstart.js +145 -0
- package/lib/actions/portal/quickstart.js.map +1 -0
- package/lib/actions/portal/recipe/new-recipe.d.ts +11 -20
- package/lib/actions/portal/recipe/new-recipe.js +147 -221
- package/lib/actions/portal/recipe/new-recipe.js.map +1 -1
- package/lib/actions/portal/serve.d.ts +12 -10
- package/lib/actions/portal/serve.js +112 -17
- package/lib/actions/portal/serve.js.map +1 -1
- package/lib/actions/portal/toc/new-toc.d.ts +16 -15
- package/lib/actions/portal/toc/new-toc.js +80 -116
- package/lib/actions/portal/toc/new-toc.js.map +1 -1
- package/lib/actions/sdk/generate.d.ts +5 -6
- package/lib/actions/sdk/generate.js +22 -47
- package/lib/actions/sdk/generate.js.map +1 -1
- package/lib/application/portal/recipe/portal-recipe.d.ts +2 -2
- package/lib/application/portal/recipe/portal-recipe.js +9 -9
- package/lib/application/portal/recipe/portal-recipe.js.map +1 -1
- package/lib/application/portal/recipe/recipe-generator.d.ts +7 -2
- package/lib/application/portal/recipe/recipe-generator.js +21 -22
- package/lib/application/portal/recipe/recipe-generator.js.map +1 -1
- package/lib/client-utils/auth-manager.d.ts +1 -1
- package/lib/client-utils/auth-manager.js +3 -4
- package/lib/client-utils/auth-manager.js.map +1 -1
- package/lib/commands/api/transform.d.ts +6 -3
- package/lib/commands/api/transform.js +43 -91
- package/lib/commands/api/transform.js.map +1 -1
- package/lib/commands/api/validate.d.ts +6 -3
- package/lib/commands/api/validate.js +27 -60
- package/lib/commands/api/validate.js.map +1 -1
- package/lib/commands/auth/login.d.ts +2 -1
- package/lib/commands/auth/login.js +15 -9
- package/lib/commands/auth/login.js.map +1 -1
- package/lib/commands/auth/logout.d.ts +3 -1
- package/lib/commands/auth/logout.js +12 -13
- package/lib/commands/auth/logout.js.map +1 -1
- package/lib/commands/auth/status.d.ts +1 -0
- package/lib/commands/auth/status.js +13 -11
- package/lib/commands/auth/status.js.map +1 -1
- package/lib/commands/portal/copilot.d.ts +3 -2
- package/lib/commands/portal/copilot.js +23 -21
- package/lib/commands/portal/copilot.js.map +1 -1
- package/lib/commands/portal/generate.d.ts +3 -4
- package/lib/commands/portal/generate.js +18 -13
- package/lib/commands/portal/generate.js.map +1 -1
- package/lib/commands/portal/quickstart.d.ts +3 -4
- package/lib/commands/portal/quickstart.js +27 -95
- package/lib/commands/portal/quickstart.js.map +1 -1
- package/lib/commands/portal/recipe/new.d.ts +3 -1
- package/lib/commands/portal/recipe/new.js +31 -23
- package/lib/commands/portal/recipe/new.js.map +1 -1
- package/lib/commands/portal/serve.d.ts +5 -5
- package/lib/commands/portal/serve.js +31 -57
- package/lib/commands/portal/serve.js.map +1 -1
- package/lib/commands/portal/toc/new.d.ts +2 -2
- package/lib/commands/portal/toc/new.js +35 -26
- package/lib/commands/portal/toc/new.js.map +1 -1
- package/lib/commands/sdk/generate.d.ts +5 -4
- package/lib/commands/sdk/generate.js +26 -17
- package/lib/commands/sdk/generate.js.map +1 -1
- package/lib/hooks/not-found.d.ts +3 -0
- package/lib/hooks/not-found.js +52 -0
- package/lib/hooks/not-found.js.map +1 -0
- package/lib/hooks/utils.d.ts +5 -0
- package/lib/hooks/utils.js +51 -0
- package/lib/hooks/utils.js.map +1 -0
- package/lib/infrastructure/api-utils.js +3 -2
- package/lib/infrastructure/api-utils.js.map +1 -1
- package/lib/{application/portal/serve/watcher-handler.d.ts → infrastructure/debounce-service.d.ts} +3 -3
- package/lib/{application/portal/serve/watcher-handler.js → infrastructure/debounce-service.js} +5 -4
- package/lib/infrastructure/debounce-service.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +5 -1
- package/lib/infrastructure/env-info.js +23 -2
- package/lib/infrastructure/env-info.js.map +1 -1
- package/lib/infrastructure/file-service.d.ts +7 -2
- package/lib/infrastructure/file-service.js +49 -8
- package/lib/infrastructure/file-service.js.map +1 -1
- package/lib/infrastructure/launcher-service.d.ts +7 -0
- package/lib/infrastructure/launcher-service.js +51 -0
- package/lib/infrastructure/launcher-service.js.map +1 -0
- package/lib/infrastructure/network-service.d.ts +3 -0
- package/lib/infrastructure/network-service.js +7 -0
- package/lib/infrastructure/network-service.js.map +1 -0
- package/lib/infrastructure/services/api-client-factory.d.ts +6 -0
- package/lib/infrastructure/services/api-client-factory.js +20 -0
- package/lib/infrastructure/services/api-client-factory.js.map +1 -0
- package/lib/infrastructure/services/api-service.d.ts +2 -2
- package/lib/infrastructure/services/api-service.js +8 -7
- package/lib/infrastructure/services/api-service.js.map +1 -1
- package/lib/infrastructure/services/auth-service.d.ts +1 -1
- package/lib/infrastructure/services/auth-service.js +10 -6
- package/lib/infrastructure/services/auth-service.js.map +1 -1
- package/lib/infrastructure/services/file-download-service.d.ts +15 -0
- package/lib/infrastructure/services/file-download-service.js +104 -0
- package/lib/infrastructure/services/file-download-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +12 -11
- package/lib/infrastructure/services/portal-service.js +77 -83
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/services/telemetry-service.d.ts +3 -2
- package/lib/infrastructure/services/telemetry-service.js +4 -6
- package/lib/infrastructure/services/telemetry-service.js.map +1 -1
- package/lib/infrastructure/services/transformation-service.d.ts +23 -0
- package/lib/infrastructure/services/transformation-service.js +56 -0
- package/lib/infrastructure/services/transformation-service.js.map +1 -0
- package/lib/infrastructure/services/validation-service.d.ts +17 -0
- package/lib/infrastructure/services/validation-service.js +49 -0
- package/lib/infrastructure/services/validation-service.js.map +1 -0
- package/lib/prompts/api/transform.d.ts +11 -0
- package/lib/prompts/api/transform.js +30 -0
- package/lib/prompts/api/transform.js.map +1 -0
- package/lib/prompts/api/validate.d.ts +12 -0
- package/lib/prompts/api/validate.js +41 -0
- package/lib/prompts/api/validate.js.map +1 -0
- package/lib/prompts/auth/login.d.ts +6 -1
- package/lib/prompts/auth/login.js +12 -3
- package/lib/prompts/auth/login.js.map +1 -1
- package/lib/prompts/auth/logout.d.ts +3 -0
- package/lib/prompts/auth/logout.js +7 -0
- package/lib/prompts/auth/logout.js.map +1 -0
- package/lib/prompts/auth/status.d.ts +8 -0
- package/lib/prompts/auth/status.js +21 -0
- package/lib/prompts/auth/status.js.map +1 -0
- package/lib/prompts/format.d.ts +33 -0
- package/lib/prompts/format.js +99 -0
- package/lib/prompts/format.js.map +1 -0
- package/lib/prompts/portal/copilot.d.ts +15 -5
- package/lib/prompts/portal/copilot.js +49 -21
- package/lib/prompts/portal/copilot.js.map +1 -1
- package/lib/prompts/portal/generate.d.ts +9 -7
- package/lib/prompts/portal/generate.js +22 -23
- package/lib/prompts/portal/generate.js.map +1 -1
- package/lib/prompts/portal/quickstart.d.ts +30 -29
- package/lib/prompts/portal/quickstart.js +99 -193
- package/lib/prompts/portal/quickstart.js.map +1 -1
- package/lib/prompts/portal/recipe/new-recipe.d.ts +23 -18
- package/lib/prompts/portal/recipe/new-recipe.js +70 -108
- package/lib/prompts/portal/recipe/new-recipe.js.map +1 -1
- package/lib/prompts/portal/serve.d.ts +10 -3
- package/lib/prompts/portal/serve.js +30 -11
- package/lib/prompts/portal/serve.js.map +1 -1
- package/lib/prompts/portal/toc/new-toc.d.ts +12 -8
- package/lib/prompts/portal/toc/new-toc.js +20 -22
- package/lib/prompts/portal/toc/new-toc.js.map +1 -1
- package/lib/prompts/sdk/generate.d.ts +7 -7
- package/lib/prompts/sdk/generate.js +17 -23
- package/lib/prompts/sdk/generate.js.map +1 -1
- package/lib/types/api/account.d.ts +1 -1
- package/lib/types/api/transform.d.ts +14 -25
- package/lib/types/api/transform.js +16 -16
- package/lib/types/api/transform.js.map +1 -1
- package/lib/types/build/build.d.ts +9 -1
- package/lib/types/build/build.js +5 -2
- package/lib/types/build/build.js.map +1 -1
- package/lib/types/build-context.d.ts +5 -1
- package/lib/types/build-context.js +21 -4
- package/lib/types/build-context.js.map +1 -1
- package/lib/types/common/command-metadata.d.ts +4 -0
- package/lib/types/common/command-metadata.js +2 -0
- package/lib/types/common/command-metadata.js.map +1 -0
- package/lib/types/events/domain-event.d.ts +1 -1
- package/lib/types/events/domain-event.js.map +1 -1
- package/lib/types/events/quickstart-completed.d.ts +7 -0
- package/lib/types/events/quickstart-completed.js +10 -0
- package/lib/types/events/quickstart-completed.js.map +1 -0
- package/lib/types/events/quickstart-initiated.d.ts +7 -0
- package/lib/types/events/quickstart-initiated.js +10 -0
- package/lib/types/events/quickstart-initiated.js.map +1 -0
- package/lib/types/events/recipe-creation-failed.d.ts +1 -1
- package/lib/types/events/recipe-creation-failed.js +1 -1
- package/lib/types/events/recipe-creation-failed.js.map +1 -1
- package/lib/types/events/toc-creation-failed.d.ts +1 -1
- package/lib/types/events/toc-creation-failed.js +1 -1
- package/lib/types/events/toc-creation-failed.js.map +1 -1
- package/lib/types/file/directory.d.ts +17 -0
- package/lib/types/file/directory.js +86 -0
- package/lib/types/file/directory.js.map +1 -0
- package/lib/types/file/directoryPath.d.ts +3 -1
- package/lib/types/file/directoryPath.js +8 -2
- package/lib/types/file/directoryPath.js.map +1 -1
- package/lib/types/file/fileName.d.ts +3 -1
- package/lib/types/file/fileName.js +14 -2
- package/lib/types/file/fileName.js.map +1 -1
- package/lib/types/file/filePath.d.ts +2 -0
- package/lib/types/file/filePath.js +21 -0
- package/lib/types/file/filePath.js.map +1 -1
- package/lib/types/file/resource-input.d.ts +5 -0
- package/lib/types/file/resource-input.js +42 -0
- package/lib/types/file/resource-input.js.map +1 -0
- package/lib/types/file/urlPath.d.ts +6 -0
- package/lib/types/file/urlPath.js +22 -0
- package/lib/types/file/urlPath.js.map +1 -0
- package/lib/types/portal-context.d.ts +3 -1
- package/lib/types/portal-context.js +10 -0
- package/lib/types/portal-context.js.map +1 -1
- package/lib/types/recipe/recipe.d.ts +2 -17
- package/lib/types/recipe-context.d.ts +8 -0
- package/lib/types/recipe-context.js +21 -0
- package/lib/types/recipe-context.js.map +1 -0
- package/lib/types/resource-context.d.ts +12 -0
- package/lib/types/resource-context.js +30 -0
- package/lib/types/resource-context.js.map +1 -0
- package/lib/types/sdk/generate.d.ts +2 -15
- package/lib/types/sdk/generate.js +24 -10
- package/lib/types/sdk/generate.js.map +1 -1
- package/lib/types/sdk-context.d.ts +6 -5
- package/lib/types/sdk-context.js +12 -8
- package/lib/types/sdk-context.js.map +1 -1
- package/lib/types/sdl/sdl.d.ts +9 -0
- package/lib/types/sdl/sdl.js +46 -1
- package/lib/types/sdl/sdl.js.map +1 -1
- package/lib/types/spec-context.d.ts +3 -0
- package/lib/types/spec-context.js +7 -2
- package/lib/types/spec-context.js.map +1 -1
- package/lib/types/temp-context.d.ts +11 -0
- package/lib/types/temp-context.js +27 -0
- package/lib/types/temp-context.js.map +1 -0
- package/lib/types/toc-context.d.ts +12 -0
- package/lib/types/toc-context.js +26 -0
- package/lib/types/toc-context.js.map +1 -0
- package/lib/types/transform-context.d.ts +13 -0
- package/lib/types/transform-context.js +30 -0
- package/lib/types/transform-context.js.map +1 -0
- package/lib/types/utils.d.ts +0 -9
- package/lib/utils/string-utils.d.ts +1 -0
- package/lib/utils/string-utils.js +10 -0
- package/lib/utils/string-utils.js.map +1 -0
- package/lib/utils/utils.d.ts +2 -27
- package/lib/utils/utils.js +6 -145
- package/lib/utils/utils.js.map +1 -1
- package/package.json +11 -10
- package/lib/application/portal/serve/portal-watcher.d.ts +0 -11
- package/lib/application/portal/serve/portal-watcher.js +0 -64
- package/lib/application/portal/serve/portal-watcher.js.map +0 -1
- package/lib/application/portal/serve/serve-handler.d.ts +0 -16
- package/lib/application/portal/serve/serve-handler.js +0 -91
- package/lib/application/portal/serve/serve-handler.js.map +0 -1
- package/lib/application/portal/serve/watcher-handler.js.map +0 -1
- package/lib/application/portal/toc/sdl-parser.d.ts +0 -19
- package/lib/application/portal/toc/sdl-parser.js +0 -90
- package/lib/application/portal/toc/sdl-parser.js.map +0 -1
- package/lib/client-utils/sdk-client.d.ts +0 -22
- package/lib/client-utils/sdk-client.js +0 -89
- package/lib/client-utils/sdk-client.js.map +0 -1
- package/lib/config/env.d.ts +0 -26
- package/lib/config/env.js +0 -27
- package/lib/config/env.js.map +0 -1
- package/lib/controllers/api/transform.d.ts +0 -5
- package/lib/controllers/api/transform.js +0 -50
- package/lib/controllers/api/transform.js.map +0 -1
- package/lib/controllers/api/validate.d.ts +0 -3
- package/lib/controllers/api/validate.js +0 -29
- package/lib/controllers/api/validate.js.map +0 -1
- package/lib/controllers/portal/quickstart.d.ts +0 -15
- package/lib/controllers/portal/quickstart.js +0 -217
- package/lib/controllers/portal/quickstart.js.map +0 -1
- package/lib/prompts/portal/common/base-prompts.d.ts +0 -7
- package/lib/prompts/portal/common/base-prompts.js +0 -19
- package/lib/prompts/portal/common/base-prompts.js.map +0 -1
- package/lib/types/api/validate.d.ts +0 -12
- package/lib/types/api/validate.js +0 -2
- package/lib/types/api/validate.js.map +0 -1
- package/lib/types/common/result.d.ts +0 -17
- package/lib/types/common/result.js +0 -32
- package/lib/types/common/result.js.map +0 -1
- package/lib/types/portal/generate.d.ts +0 -13
- package/lib/types/portal/generate.js +0 -3
- package/lib/types/portal/generate.js.map +0 -1
- package/lib/types/portal/quickstart.d.ts +0 -17
- package/lib/types/portal/quickstart.js +0 -2
- package/lib/types/portal/quickstart.js.map +0 -1
- package/lib/types/portal/serve.d.ts +0 -12
- package/lib/types/portal/serve.js +0 -2
- package/lib/types/portal/serve.js.map +0 -1
- package/lib/validators/common/directoryValidator.d.ts +0 -5
- package/lib/validators/common/directoryValidator.js +0 -22
- package/lib/validators/common/directoryValidator.js.map +0 -1
- package/lib/validators/portal/serve-validator.d.ts +0 -6
- package/lib/validators/portal/serve-validator.js +0 -15
- package/lib/validators/portal/serve-validator.js.map +0 -1
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Result } from "../../types/common/result.js";
|
|
1
|
+
import { ReadStream } from "fs";
|
|
3
2
|
import { Sdl } from "../../types/sdl/sdl.js";
|
|
4
3
|
import { FilePath } from "../../types/file/filePath.js";
|
|
5
4
|
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
6
|
-
import {
|
|
5
|
+
import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
6
|
+
import { Result } from "neverthrow";
|
|
7
|
+
import { Language } from "../../types/sdk/generate.js";
|
|
8
|
+
import { ServiceError } from "../api-utils.js";
|
|
7
9
|
export declare class PortalService {
|
|
8
10
|
private readonly CONTENT_TYPE;
|
|
9
|
-
private readonly TIMEOUT;
|
|
10
11
|
private readonly fileService;
|
|
11
|
-
generatePortal(buildPath: FilePath, configDir: DirectoryPath, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string | NodeJS.ReadableStream>>;
|
|
12
|
-
generateSdk(specPath: FilePath,
|
|
13
|
-
generateSdl(specFileStream: ReadStream, configDir:
|
|
14
|
-
private createGenericErrorResult;
|
|
12
|
+
generatePortal(buildPath: FilePath, configDir: DirectoryPath, eventMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string | NodeJS.ReadableStream>>;
|
|
13
|
+
generateSdk(specPath: FilePath, language: Language, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, string>>;
|
|
14
|
+
generateSdl(specFileStream: ReadStream, configDir: DirectoryPath, commandMetadata: CommandMetadata): Promise<Result<Sdl, ServiceError>>;
|
|
15
15
|
private createAuthorizationHeader;
|
|
16
|
-
private
|
|
17
|
-
private handlePortalGenerationErrors;
|
|
18
|
-
private parseBadRequestResponse;
|
|
16
|
+
private createOriginQueryParameter;
|
|
17
|
+
private static handlePortalGenerationErrors;
|
|
19
18
|
private handleSdkGenerationErrors;
|
|
19
|
+
private parseBadRequestResponse;
|
|
20
|
+
private readonly languagePlatform;
|
|
20
21
|
}
|
|
@@ -1,144 +1,115 @@
|
|
|
1
|
-
|
|
1
|
+
var _a;
|
|
2
|
+
import { Accept, ApiError, BadRequestResponseSdkError, CodeGenerationExternalApisController, ContentType, DocsPortalManagementController, UnauthorizedResponseError, ProblemDetailsError, FileWrapper, TransformationController, ExportFormats, InternalServerErrorResponseError, Platforms } from "@apimatic/sdk";
|
|
2
3
|
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
3
|
-
import {
|
|
4
|
-
import { getMessageInRedColor, parseStreamBodyToJson } from "../../utils/utils.js";
|
|
4
|
+
import { parseStreamBodyToJson } from "../../utils/utils.js";
|
|
5
5
|
import { FileService } from "../file-service.js";
|
|
6
|
-
import {
|
|
6
|
+
import { apiClientFactory } from "./api-client-factory.js";
|
|
7
|
+
import { err, ok } from "neverthrow";
|
|
8
|
+
import { Language } from "../../types/sdk/generate.js";
|
|
9
|
+
import { handleServiceError } from "../api-utils.js";
|
|
7
10
|
export class PortalService {
|
|
8
11
|
constructor() {
|
|
9
12
|
this.CONTENT_TYPE = ContentType.EnumMultipartformdata;
|
|
10
|
-
this.TIMEOUT = 0;
|
|
11
13
|
this.fileService = new FileService();
|
|
12
14
|
this.createAuthorizationHeader = (authInfo, overrideAuthKey) => {
|
|
13
15
|
const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
14
16
|
return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
|
|
15
17
|
};
|
|
16
|
-
this.
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
userAgent: envInfo.getUserAgent(),
|
|
22
|
-
timeout: this.TIMEOUT
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
this.handlePortalGenerationErrors = async (error) => {
|
|
26
|
-
var _a, _b, _c, _d, _e;
|
|
27
|
-
if (error instanceof UnauthorizedResponseError) {
|
|
28
|
-
//401
|
|
29
|
-
const unAuthError = error;
|
|
30
|
-
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.");
|
|
31
|
-
}
|
|
32
|
-
else if (error instanceof ProblemDetailsError) {
|
|
33
|
-
//400 & 403
|
|
34
|
-
const probDetailsError = error;
|
|
35
|
-
const message = (_d = (_c = probDetailsError.result.errors) === null || _c === void 0 ? void 0 : _c[""]) === null || _d === void 0 ? void 0 : _d[0];
|
|
36
|
-
return getMessageInRedColor(probDetailsError.result.title + "\n- " + message);
|
|
37
|
-
}
|
|
38
|
-
else if (error instanceof ApiError && error.statusCode === 422) {
|
|
39
|
-
//422
|
|
40
|
-
return error.body;
|
|
41
|
-
}
|
|
42
|
-
else if (error instanceof InternalServerErrorResponseError) {
|
|
43
|
-
//500
|
|
44
|
-
const internalServerError = error;
|
|
45
|
-
const message = (_e = internalServerError.result) === null || _e === void 0 ? void 0 : _e.message;
|
|
46
|
-
return getMessageInRedColor(`${message !== null && message !== void 0 ? message : "An unkown error occurred."} Please try again later or reach out to our team at support@apimatic.io for help if your problem persists.`);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
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");
|
|
50
|
-
}
|
|
18
|
+
this.createOriginQueryParameter = (commandName) => {
|
|
19
|
+
return {
|
|
20
|
+
origin: `APIMATIC CLI ${commandName}`
|
|
21
|
+
};
|
|
51
22
|
};
|
|
52
23
|
this.handleSdkGenerationErrors = async (error) => {
|
|
53
|
-
var
|
|
24
|
+
var _b, _c, _d, _e, _f;
|
|
54
25
|
if (error instanceof BadRequestResponseSdkError) {
|
|
55
26
|
//400
|
|
56
|
-
|
|
57
|
-
const errorMessage = this.parseBadRequestResponse((_a = badRequestError.result) === null || _a === void 0 ? void 0 : _a.message);
|
|
58
|
-
return getMessageInRedColor(errorMessage);
|
|
27
|
+
return this.parseBadRequestResponse((_b = error.result) === null || _b === void 0 ? void 0 : _b.message);
|
|
59
28
|
}
|
|
60
|
-
|
|
29
|
+
if (error instanceof UnauthorizedResponseError) {
|
|
61
30
|
//401
|
|
62
|
-
|
|
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.");
|
|
31
|
+
return (_d = (_c = error.result) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : "Authorization has been denied for this request.";
|
|
64
32
|
}
|
|
65
|
-
|
|
33
|
+
if (error instanceof ProblemDetailsError) {
|
|
66
34
|
// 403
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
return getMessageInRedColor(probDetailsError.result.title + "\n- " + message);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
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");
|
|
35
|
+
const message = (_f = (_e = error.result.errors) === null || _e === void 0 ? void 0 : _e[""]) === null || _f === void 0 ? void 0 : _f[0];
|
|
36
|
+
return error.result.title + "\n- " + message;
|
|
73
37
|
}
|
|
38
|
+
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";
|
|
39
|
+
};
|
|
40
|
+
this.languagePlatform = {
|
|
41
|
+
[Language.CSHARP]: Platforms.CsNetStandardLib,
|
|
42
|
+
[Language.JAVA]: Platforms.JavaEclipseJreLib,
|
|
43
|
+
[Language.PHP]: Platforms.PhpGenericLibV2,
|
|
44
|
+
[Language.PYTHON]: Platforms.PythonGenericLib,
|
|
45
|
+
[Language.RUBY]: Platforms.RubyGenericLib,
|
|
46
|
+
[Language.TYPESCRIPT]: Platforms.TsGenericLib,
|
|
47
|
+
[Language.GO]: Platforms.GoGenericLib
|
|
74
48
|
};
|
|
75
49
|
}
|
|
76
|
-
//TODO: Pass stream as parameter instead of file path.
|
|
77
|
-
async generatePortal(buildPath, configDir, authKey) {
|
|
50
|
+
// TODO: Pass stream as parameter instead of file path.
|
|
51
|
+
async generatePortal(buildPath, configDir, eventMetadata, authKey) {
|
|
78
52
|
const buildFileStream = await this.fileService.getStream(buildPath);
|
|
79
53
|
const file = new FileWrapper(buildFileStream);
|
|
80
54
|
const authInfo = await getAuthInfo(configDir.toString());
|
|
81
55
|
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey);
|
|
82
|
-
const client =
|
|
56
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, eventMetadata.shell);
|
|
83
57
|
const docsPortalManagementController = new DocsPortalManagementController(client);
|
|
84
58
|
try {
|
|
85
|
-
const response = await docsPortalManagementController.generateOnPremPortalViaBuildInput(this.CONTENT_TYPE, file);
|
|
86
|
-
return
|
|
59
|
+
const response = await docsPortalManagementController.generateOnPremPortalViaBuildInput(this.CONTENT_TYPE, file, this.createOriginQueryParameter(eventMetadata.commandName));
|
|
60
|
+
return ok(response.result);
|
|
87
61
|
}
|
|
88
62
|
catch (error) {
|
|
89
|
-
return
|
|
63
|
+
return err(await _a.handlePortalGenerationErrors(error));
|
|
90
64
|
}
|
|
91
65
|
finally {
|
|
92
66
|
buildFileStream.close();
|
|
93
67
|
}
|
|
94
68
|
}
|
|
95
|
-
//TODO: Pass stream as parameter instead of file path.
|
|
96
|
-
async generateSdk(specPath,
|
|
69
|
+
// TODO: Pass stream as parameter instead of file path.
|
|
70
|
+
async generateSdk(specPath, language, configDir, commandMetadata, authKey) {
|
|
97
71
|
const specFileStream = await this.fileService.getStream(specPath);
|
|
98
72
|
const file = new FileWrapper(specFileStream);
|
|
99
73
|
const authInfo = await getAuthInfo(configDir.toString());
|
|
100
74
|
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey);
|
|
101
|
-
const client =
|
|
75
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
102
76
|
const sdkGenerationController = new CodeGenerationExternalApisController(client);
|
|
103
77
|
try {
|
|
104
|
-
const response = await sdkGenerationController.generateSdkViaFile(Accept.EnumApplicationjson, file,
|
|
78
|
+
const response = await sdkGenerationController.generateSdkViaFile(Accept.EnumApplicationjson, file, this.languagePlatform[language], this.createOriginQueryParameter(commandMetadata.commandName));
|
|
105
79
|
const sdkResponse = await sdkGenerationController.downloadSdk(response.result.id);
|
|
106
|
-
return
|
|
80
|
+
return ok(sdkResponse.result);
|
|
107
81
|
}
|
|
108
82
|
catch (error) {
|
|
109
|
-
return
|
|
83
|
+
return err(await this.handleSdkGenerationErrors(error));
|
|
110
84
|
}
|
|
111
85
|
finally {
|
|
112
86
|
specFileStream.close();
|
|
113
87
|
}
|
|
114
88
|
}
|
|
115
|
-
async generateSdl(specFileStream, configDir) {
|
|
89
|
+
async generateSdl(specFileStream, configDir, commandMetadata) {
|
|
116
90
|
const file = new FileWrapper(specFileStream);
|
|
117
|
-
const authInfo = await getAuthInfo(configDir);
|
|
91
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
118
92
|
const authorizationHeader = this.createAuthorizationHeader(authInfo, null);
|
|
119
|
-
const client =
|
|
93
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
120
94
|
const transformationController = new TransformationController(client);
|
|
121
95
|
try {
|
|
122
|
-
const generation = await transformationController.transformViaFile(ContentType.EnumMultipartformdata, file, ExportFormats.Apimatic);
|
|
96
|
+
const generation = await transformationController.transformViaFile(ContentType.EnumMultipartformdata, file, ExportFormats.Apimatic, this.createOriginQueryParameter(commandMetadata.commandName));
|
|
123
97
|
if (!generation.result.success) {
|
|
124
|
-
return
|
|
98
|
+
return err("INVALID_RESPONSE" /* ServiceError.InvalidResponse */);
|
|
125
99
|
}
|
|
126
100
|
const transformationId = generation.result.id;
|
|
127
101
|
const { result } = await transformationController.downloadTransformedFile(transformationId);
|
|
128
102
|
if (result.readable) {
|
|
129
|
-
return
|
|
103
|
+
return ok((await parseStreamBodyToJson(result)));
|
|
130
104
|
}
|
|
131
105
|
else {
|
|
132
|
-
return
|
|
106
|
+
return err("INVALID_RESPONSE" /* ServiceError.InvalidResponse */);
|
|
133
107
|
}
|
|
134
108
|
}
|
|
135
|
-
catch (
|
|
136
|
-
return
|
|
109
|
+
catch (error) {
|
|
110
|
+
return err(handleServiceError(error));
|
|
137
111
|
}
|
|
138
112
|
}
|
|
139
|
-
createGenericErrorResult() {
|
|
140
|
-
return Result.failure("An unexpected error occurred");
|
|
141
|
-
}
|
|
142
113
|
parseBadRequestResponse(errorMessage) {
|
|
143
114
|
// #TODO: Fix server-side error message and simplify this function
|
|
144
115
|
if (!errorMessage) {
|
|
@@ -146,13 +117,12 @@ export class PortalService {
|
|
|
146
117
|
}
|
|
147
118
|
// Parse the JSON string
|
|
148
119
|
const parsedResult = JSON.parse(errorMessage);
|
|
149
|
-
// Check if it has the expected structure with Errors
|
|
120
|
+
// Check if it has the expected structure with Errors
|
|
150
121
|
if (parsedResult.Errors && Array.isArray(parsedResult.Errors) && parsedResult.Errors.length > 0) {
|
|
151
122
|
// Get the first error and clean it up
|
|
152
|
-
|
|
153
|
-
// Split on <br/> and take first part, then strip remaining HTML tags
|
|
154
|
-
|
|
155
|
-
return cleanError;
|
|
123
|
+
return parsedResult.Errors[0].split(".")[0] + ".";
|
|
124
|
+
// Split on <br/> and take the first part, then strip remaining HTML tags
|
|
125
|
+
// return firstError.split("<br/>")[0].replace(/<[^<>]*?>/g, "");
|
|
156
126
|
}
|
|
157
127
|
else if (parsedResult.Success === false) {
|
|
158
128
|
return "API definition file validation failed.";
|
|
@@ -160,4 +130,28 @@ export class PortalService {
|
|
|
160
130
|
return errorMessage;
|
|
161
131
|
}
|
|
162
132
|
}
|
|
133
|
+
_a = PortalService;
|
|
134
|
+
PortalService.handlePortalGenerationErrors = async (error) => {
|
|
135
|
+
var _b, _c, _d, _e, _f;
|
|
136
|
+
if (error instanceof UnauthorizedResponseError) {
|
|
137
|
+
// 401
|
|
138
|
+
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.";
|
|
139
|
+
}
|
|
140
|
+
if (error instanceof ProblemDetailsError) {
|
|
141
|
+
// 400 & 403
|
|
142
|
+
const probDetailsError = error;
|
|
143
|
+
const message = (_e = (_d = Object.values(probDetailsError.result.errors)[0]) === null || _d === void 0 ? void 0 : _d[0]) !== null && _e !== void 0 ? _e : null;
|
|
144
|
+
return error.result.title + "\n- " + message;
|
|
145
|
+
}
|
|
146
|
+
if (error instanceof ApiError && error.statusCode === 422) {
|
|
147
|
+
// 422
|
|
148
|
+
return error.body;
|
|
149
|
+
}
|
|
150
|
+
if (error instanceof InternalServerErrorResponseError) {
|
|
151
|
+
// 422
|
|
152
|
+
const message = (_f = error.result) === null || _f === void 0 ? void 0 : _f.message;
|
|
153
|
+
return `${message !== null && message !== void 0 ? message : "An unknown error occurred."} Please try again later or reach out to our team at support@apimatic.io for help if your problem persists.`;
|
|
154
|
+
}
|
|
155
|
+
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";
|
|
156
|
+
};
|
|
163
157
|
//# sourceMappingURL=portal-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { DomainEvent } from "../../types/events/domain-event.js";
|
|
2
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
3
|
export declare class TelemetryService {
|
|
3
4
|
private readonly configDirectory;
|
|
4
5
|
private readonly apiService;
|
|
5
|
-
constructor(configDirectory:
|
|
6
|
-
trackEvent<T extends DomainEvent>(event: T): Promise<void>;
|
|
6
|
+
constructor(configDirectory: DirectoryPath);
|
|
7
|
+
trackEvent<T extends DomainEvent>(event: T, shell: string): Promise<void>;
|
|
7
8
|
private getAuthInfo;
|
|
8
9
|
}
|
|
@@ -9,8 +9,8 @@ export class TelemetryService {
|
|
|
9
9
|
this.configDirectory = configDirectory;
|
|
10
10
|
this.apiService = new ApiService();
|
|
11
11
|
}
|
|
12
|
-
async trackEvent(event) {
|
|
13
|
-
const authInfo = await this.getAuthInfo(this.configDirectory);
|
|
12
|
+
async trackEvent(event, shell) {
|
|
13
|
+
const authInfo = await this.getAuthInfo(this.configDirectory.toString());
|
|
14
14
|
const telemetryOptedOut = process.env.APIMATIC_CLI_TELEMETRY_OPTOUT === "1";
|
|
15
15
|
const authKey = authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey;
|
|
16
16
|
if (telemetryOptedOut || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.APIMATIC_CLI_TELEMETRY_OPTOUT) === "1" || !authKey) {
|
|
@@ -22,11 +22,9 @@ export class TelemetryService {
|
|
|
22
22
|
cliVersion: envInfo.getCLIVersion(),
|
|
23
23
|
platform: os.platform(),
|
|
24
24
|
releaseVersion: os.release(),
|
|
25
|
-
nodeVersion: process.version
|
|
25
|
+
nodeVersion: process.version
|
|
26
26
|
};
|
|
27
|
-
|
|
28
|
-
// eslint-disable-next-line no-undef
|
|
29
|
-
result.mapErr((err) => console.log(err));
|
|
27
|
+
await this.apiService.sendTelemetry(JSON.stringify(payload), authKey, shell);
|
|
30
28
|
}
|
|
31
29
|
async getAuthInfo(configDirectory) {
|
|
32
30
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/telemetry-service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,UAAU,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/telemetry-service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,UAAU,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9C,MAAM,OAAO,gBAAgB;IAG3B,YAA6B,eAA8B;QAA9B,oBAAe,GAAf,eAAe,CAAe;QAF1C,eAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEe,CAAC;IAExD,KAAK,CAAC,UAAU,CAAwB,KAAQ,EAAE,KAAa;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,GAAG,CAAC;QAC5E,MAAM,OAAO,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC;QAElC,IAAI,iBAAiB,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,6BAA6B,MAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE;YACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,cAAc,EAAE,EAAE,CAAC,OAAO,EAAE;YAC5B,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B,CAAC;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,eAAuB;QAC/C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1F,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ExportFormats, ApiValidationSummary } from "@apimatic/sdk";
|
|
2
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
3
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
4
|
+
import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
5
|
+
import { Result } from "neverthrow";
|
|
6
|
+
export interface TransformViaFileParams {
|
|
7
|
+
file: FilePath;
|
|
8
|
+
format: ExportFormats;
|
|
9
|
+
configDir: DirectoryPath;
|
|
10
|
+
commandMetadata: CommandMetadata;
|
|
11
|
+
authKey?: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface TransformationResultData {
|
|
14
|
+
stream: NodeJS.ReadableStream;
|
|
15
|
+
apiValidationSummary: ApiValidationSummary;
|
|
16
|
+
}
|
|
17
|
+
export declare class TransformationService {
|
|
18
|
+
private readonly CONTENT_TYPE;
|
|
19
|
+
transformViaFile({ file, format, configDir, commandMetadata, authKey }: TransformViaFileParams): Promise<Result<TransformationResultData, string>>;
|
|
20
|
+
private createAuthorizationHeader;
|
|
21
|
+
private readonly createOriginQueryParameter;
|
|
22
|
+
private readonly handleTransformationErrors;
|
|
23
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import fsExtra from "fs-extra";
|
|
2
|
+
import { ContentType, FileWrapper, TransformationController, ApiError } from "@apimatic/sdk";
|
|
3
|
+
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
4
|
+
import { apiClientFactory } from "./api-client-factory.js";
|
|
5
|
+
import { err, ok } from "neverthrow";
|
|
6
|
+
export class TransformationService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.CONTENT_TYPE = ContentType.EnumMultipartformdata;
|
|
9
|
+
this.createOriginQueryParameter = (commandName) => {
|
|
10
|
+
return {
|
|
11
|
+
origin: `APIMATIC CLI ${commandName}`
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
this.handleTransformationErrors = async (error) => {
|
|
15
|
+
if (error instanceof ApiError) {
|
|
16
|
+
const apiError = error;
|
|
17
|
+
if (apiError.statusCode === 400) {
|
|
18
|
+
return "Your API Definition is invalid. Please use the APIMatic VS Code Extension to fix the errors and try again.";
|
|
19
|
+
}
|
|
20
|
+
else if (apiError.statusCode === 401) {
|
|
21
|
+
const message = JSON.parse(apiError.body).message;
|
|
22
|
+
return `${message} You are not authorized to perform this action. Please run 'auth:login' or provide a valid auth key.`;
|
|
23
|
+
}
|
|
24
|
+
return `Error ${apiError.statusCode}: An error occurred during the transformation. Please try again or contact support@apimatic.io for assistance.`;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return "An unexpected error occurred while validating your API Definition. Please try again later. If the problem persists, please reach out to our team at support@apimatic.io";
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async transformViaFile({ file, format, configDir, commandMetadata, authKey }) {
|
|
32
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
33
|
+
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey !== null && authKey !== void 0 ? authKey : null);
|
|
34
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
35
|
+
const transformationController = new TransformationController(client);
|
|
36
|
+
try {
|
|
37
|
+
const fileStream = fsExtra.createReadStream(file.toString());
|
|
38
|
+
const fileWrapper = new FileWrapper(fileStream);
|
|
39
|
+
const generation = await transformationController.transformViaFile(this.CONTENT_TYPE, fileWrapper, format, this.createOriginQueryParameter(commandMetadata.commandName));
|
|
40
|
+
const { id, apiValidationSummary } = generation.result;
|
|
41
|
+
const { result } = await transformationController.downloadTransformedFile(id);
|
|
42
|
+
return ok({
|
|
43
|
+
stream: result,
|
|
44
|
+
apiValidationSummary
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return err(await this.handleTransformationErrors(error));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
createAuthorizationHeader(authInfo, overrideAuthKey) {
|
|
52
|
+
const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
53
|
+
return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=transformation-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformation-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/transformation-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiValidationSummary } from "@apimatic/sdk";
|
|
2
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
3
|
+
import { Result } from "neverthrow";
|
|
4
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
5
|
+
import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
6
|
+
export interface ValidateViaFileParams {
|
|
7
|
+
file: FilePath;
|
|
8
|
+
commandMetadata: CommandMetadata;
|
|
9
|
+
authKey?: string | null;
|
|
10
|
+
}
|
|
11
|
+
export declare class ValidationService {
|
|
12
|
+
private readonly configDir;
|
|
13
|
+
constructor(configDir: DirectoryPath);
|
|
14
|
+
validateViaFile({ file, commandMetadata, authKey }: ValidateViaFileParams): Promise<Result<ApiValidationSummary, string>>;
|
|
15
|
+
private createAuthorizationHeader;
|
|
16
|
+
private handleValidationErrors;
|
|
17
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import fsExtra from "fs-extra";
|
|
2
|
+
import { ApiValidationExternalApisController, ContentType, FileWrapper, ApiError } from "@apimatic/sdk";
|
|
3
|
+
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
4
|
+
import { apiClientFactory } from "./api-client-factory.js";
|
|
5
|
+
import { err, ok } from "neverthrow";
|
|
6
|
+
export class ValidationService {
|
|
7
|
+
constructor(configDir) {
|
|
8
|
+
this.configDir = configDir;
|
|
9
|
+
}
|
|
10
|
+
async validateViaFile({ file, commandMetadata, authKey }) {
|
|
11
|
+
const authInfo = await getAuthInfo(this.configDir.toString());
|
|
12
|
+
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey !== null && authKey !== void 0 ? authKey : null);
|
|
13
|
+
const client = apiClientFactory.createApiClient(authorizationHeader, commandMetadata.shell);
|
|
14
|
+
const controller = new ApiValidationExternalApisController(client);
|
|
15
|
+
try {
|
|
16
|
+
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);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return err(await this.handleValidationErrors(error));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
createAuthorizationHeader(authInfo, overrideAuthKey) {
|
|
26
|
+
const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
27
|
+
return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
|
|
28
|
+
}
|
|
29
|
+
async handleValidationErrors(error) {
|
|
30
|
+
if (error instanceof ApiError) {
|
|
31
|
+
const apiError = error;
|
|
32
|
+
if (apiError.statusCode === 400) {
|
|
33
|
+
return "Your API Definition is invalid. Please fix the issues and try again.";
|
|
34
|
+
}
|
|
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.";
|
|
37
|
+
}
|
|
38
|
+
else if (apiError.statusCode === 403) {
|
|
39
|
+
return "You do not have permission to perform this action.";
|
|
40
|
+
}
|
|
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";
|
|
43
|
+
}
|
|
44
|
+
return `Error ${apiError.statusCode}: An error occurred during validation.`;
|
|
45
|
+
}
|
|
46
|
+
return "Unexpected error occurred while validating API specification.";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=validation-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/validation-service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAEL,mCAAmC,EAEnC,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAU7C,MAAM,OAAO,iBAAiB;IAC5B,YAA6B,SAAwB;QAAxB,cAAS,GAAT,SAAS,CAAe;IAAG,CAAC;IAEzD,KAAK,CAAC,eAAe,CAAC,EACpB,IAAI,EACJ,eAAe,EACf,OAAO,EACe;QACtB,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,mBAAmB,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,IAAI,mCAAmC,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAClF,sDAAsD;YACtD,MAAM,UAAU,GAAsC,MAAM,UAAU,CAAC,kBAAkB,CACvF,WAAW,CAAC,qBAAqB,EACjC,cAAc,CACf,CAAC;YAEF,OAAO,EAAE,CAAC,UAAU,CAAC,MAA8B,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,QAAyB,EAAE,eAA8B;QACzF,MAAM,GAAG,GAAG,eAAe,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,CAAC;QACjD,OAAO,cAAc,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAAc;QACjD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAiB,CAAC;YAEnC,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAChC,OAAO,sEAAsE,CAAC;YAChF,CAAC;iBAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvC,OAAO,qGAAqG,CAAC;YAC/G,CAAC;iBAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvC,OAAO,oDAAoD,CAAC;YAC9D,CAAC;iBAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvC,OAAO,qKAAqK,CAAC;YAC/K,CAAC;YAED,OAAO,SAAS,QAAQ,CAAC,UAAU,wCAAwC,CAAC;QAC9E,CAAC;QAED,OAAO,+DAA+D,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
import { TransformationResultData } from "../../infrastructure/services/transformation-service.js";
|
|
4
|
+
import { ServiceError } from "../../infrastructure/api-utils.js";
|
|
5
|
+
export declare class ApiTransformPrompts {
|
|
6
|
+
overwriteApi(directory: DirectoryPath): Promise<boolean>;
|
|
7
|
+
transformedApiAlreadyExists(): void;
|
|
8
|
+
transformApi(fn: Promise<Result<TransformationResultData, string>>): Promise<Result<TransformationResultData, string>>;
|
|
9
|
+
logTransformationError(error: string): void;
|
|
10
|
+
networkError(serviceError: ServiceError): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { log, isCancel, confirm } from "@clack/prompts";
|
|
2
|
+
import { format as f, withSpinner } from "../format.js";
|
|
3
|
+
import { getErrorMessage } from "../../infrastructure/api-utils.js";
|
|
4
|
+
export class ApiTransformPrompts {
|
|
5
|
+
async overwriteApi(directory) {
|
|
6
|
+
const overwrite = await confirm({
|
|
7
|
+
message: `A specification file already exists at ${f.path(directory)}. Do you want to overwrite the existing file?`,
|
|
8
|
+
initialValue: false
|
|
9
|
+
});
|
|
10
|
+
if (isCancel(overwrite)) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return overwrite;
|
|
14
|
+
}
|
|
15
|
+
transformedApiAlreadyExists() {
|
|
16
|
+
const message = `Specification already exists.`;
|
|
17
|
+
log.error(message);
|
|
18
|
+
}
|
|
19
|
+
async transformApi(fn) {
|
|
20
|
+
return withSpinner("Transforming API", "API transformed successfully.", "API transformation failed.", fn);
|
|
21
|
+
}
|
|
22
|
+
logTransformationError(error) {
|
|
23
|
+
log.error(error);
|
|
24
|
+
}
|
|
25
|
+
networkError(serviceError) {
|
|
26
|
+
const message = getErrorMessage(serviceError);
|
|
27
|
+
log.error(message);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/prompts/api/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAgB,MAAM,mCAAmC,CAAC;AAElF,MAAM,OAAO,mBAAmB;IACvB,KAAK,CAAC,YAAY,CAAC,SAAwB;QAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,0CAA0C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,+CAA+C;YACnH,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,2BAA2B;QAChC,MAAM,OAAO,GAAG,+BAA+B,CAAC;QAChD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EAAqD;QAC7E,OAAO,WAAW,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,sBAAsB,CAAC,KAAa;QAClC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,YAAY,CAAC,YAA0B;QAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ValidationMessages } from "../../types/utils.js";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
import { ApiValidationSummary } from "@apimatic/sdk";
|
|
4
|
+
import { ServiceError } from "../../infrastructure/api-utils.js";
|
|
5
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
6
|
+
export declare class ApiValidatePrompts {
|
|
7
|
+
validateApi(fn: Promise<Result<ApiValidationSummary, string>>): Promise<Result<ApiValidationSummary, string>>;
|
|
8
|
+
displayValidationMessages({ warnings, errors, messages }: ValidationMessages): void;
|
|
9
|
+
logValidationError(error: string): void;
|
|
10
|
+
networkError(serviceError: ServiceError): void;
|
|
11
|
+
transformedApiSaved(filePath: FilePath): void;
|
|
12
|
+
}
|