@apimatic/cli 1.1.0-alpha.2 → 1.1.0-alpha.21
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 +257 -101
- package/bin/run.js +5 -0
- package/lib/actions/action-result.d.ts +8 -0
- package/lib/actions/action-result.js +25 -0
- package/lib/actions/action-result.js.map +1 -0
- package/lib/actions/auth/login.d.ts +12 -0
- package/lib/actions/auth/login.js +63 -0
- package/lib/actions/auth/login.js.map +1 -0
- package/lib/actions/portal/copilot.d.ts +14 -0
- package/lib/actions/portal/copilot.js +79 -0
- package/lib/actions/portal/copilot.js.map +1 -0
- package/lib/actions/portal/generate.d.ts +14 -0
- package/lib/actions/portal/generate.js +66 -0
- package/lib/actions/portal/generate.js.map +1 -0
- package/lib/actions/portal/recipe/new-recipe.d.ts +24 -0
- package/lib/actions/portal/recipe/new-recipe.js +250 -0
- package/lib/actions/portal/recipe/new-recipe.js.map +1 -0
- package/lib/actions/portal/serve.d.ts +14 -0
- package/lib/actions/portal/serve.js +24 -0
- package/lib/actions/portal/serve.js.map +1 -0
- package/lib/actions/portal/toc/new-toc.d.ts +20 -0
- package/lib/actions/portal/toc/new-toc.js +133 -0
- package/lib/actions/portal/toc/new-toc.js.map +1 -0
- package/lib/actions/sdk/generate.d.ts +14 -0
- package/lib/actions/sdk/generate.js +72 -0
- package/lib/actions/sdk/generate.js.map +1 -0
- package/lib/application/portal/recipe/portal-recipe.d.ts +8 -0
- package/lib/application/portal/recipe/portal-recipe.js +33 -0
- package/lib/application/portal/recipe/portal-recipe.js.map +1 -0
- package/lib/application/portal/recipe/recipe-generator.d.ts +16 -0
- package/lib/application/portal/recipe/recipe-generator.js +147 -0
- package/lib/application/portal/recipe/recipe-generator.js.map +1 -0
- package/lib/application/portal/serve/portal-watcher.d.ts +11 -0
- package/lib/application/portal/serve/portal-watcher.js +64 -0
- package/lib/application/portal/serve/portal-watcher.js.map +1 -0
- package/lib/application/portal/serve/serve-handler.d.ts +16 -0
- package/lib/application/portal/serve/serve-handler.js +91 -0
- package/lib/application/portal/serve/serve-handler.js.map +1 -0
- package/lib/application/portal/serve/watcher-handler.d.ts +10 -0
- package/lib/application/portal/serve/watcher-handler.js +51 -0
- package/lib/application/portal/serve/watcher-handler.js.map +1 -0
- package/lib/application/portal/toc/sdl-parser.d.ts +19 -0
- package/lib/application/portal/toc/sdl-parser.js +90 -0
- package/lib/application/portal/toc/sdl-parser.js.map +1 -0
- package/lib/application/portal/toc/toc-content-parser.d.ts +5 -0
- package/lib/application/portal/toc/toc-content-parser.js +44 -0
- package/lib/application/portal/toc/toc-content-parser.js.map +1 -0
- package/lib/application/portal/toc/toc-structure-generator.d.ts +6 -0
- package/lib/application/portal/toc/toc-structure-generator.js +84 -0
- package/lib/application/portal/toc/toc-structure-generator.js.map +1 -0
- package/lib/client-utils/auth-manager.d.ts +8 -3
- package/lib/client-utils/auth-manager.js +23 -10
- package/lib/client-utils/auth-manager.js.map +1 -0
- package/lib/client-utils/sdk-client.d.ts +4 -9
- package/lib/client-utils/sdk-client.js +9 -87
- package/lib/client-utils/sdk-client.js.map +1 -0
- package/lib/commands/api/transform.d.ts +7 -7
- package/lib/commands/api/transform.js +46 -51
- package/lib/commands/api/transform.js.map +1 -0
- package/lib/commands/api/validate.d.ts +4 -4
- package/lib/commands/api/validate.js +35 -36
- package/lib/commands/api/validate.js.map +1 -0
- package/lib/commands/auth/login.d.ts +3 -2
- package/lib/commands/auth/login.js +22 -53
- package/lib/commands/auth/login.js.map +1 -0
- package/lib/commands/auth/logout.d.ts +1 -1
- package/lib/commands/auth/logout.js +8 -13
- package/lib/commands/auth/logout.js.map +1 -0
- package/lib/commands/auth/status.d.ts +1 -1
- package/lib/commands/auth/status.js +9 -13
- package/lib/commands/auth/status.js.map +1 -0
- package/lib/commands/portal/copilot.d.ts +13 -0
- package/lib/commands/portal/copilot.js +32 -0
- package/lib/commands/portal/copilot.js.map +1 -0
- package/lib/commands/portal/generate.d.ts +10 -8
- package/lib/commands/portal/generate.js +28 -107
- package/lib/commands/portal/generate.js.map +1 -0
- package/lib/commands/portal/quickstart.d.ts +10 -0
- package/lib/commands/portal/quickstart.js +114 -0
- package/lib/commands/portal/quickstart.js.map +1 -0
- package/lib/commands/portal/recipe/new.d.ts +10 -0
- package/lib/commands/portal/recipe/new.js +38 -0
- package/lib/commands/portal/recipe/new.js.map +1 -0
- package/lib/commands/portal/serve.d.ts +16 -0
- package/lib/commands/portal/serve.js +80 -0
- package/lib/commands/portal/serve.js.map +1 -0
- package/lib/commands/portal/toc/new.d.ts +14 -0
- package/lib/commands/portal/toc/new.js +52 -0
- package/lib/commands/portal/toc/new.js.map +1 -0
- package/lib/commands/sdk/generate.d.ts +9 -8
- package/lib/commands/sdk/generate.js +39 -128
- package/lib/commands/sdk/generate.js.map +1 -0
- package/lib/config/axios-config.d.ts +2 -0
- package/lib/config/axios-config.js +10 -0
- package/lib/config/axios-config.js.map +1 -0
- package/lib/config/env.d.ts +26 -1
- package/lib/config/env.js +27 -4
- package/lib/config/env.js.map +1 -0
- package/lib/controllers/api/transform.d.ts +1 -1
- package/lib/controllers/api/transform.js +23 -22
- package/lib/controllers/api/transform.js.map +1 -0
- package/lib/controllers/api/validate.d.ts +3 -3
- package/lib/controllers/api/validate.js +19 -12
- package/lib/controllers/api/validate.js.map +1 -0
- package/lib/controllers/portal/quickstart.d.ts +13 -0
- package/lib/controllers/portal/quickstart.js +214 -0
- package/lib/controllers/portal/quickstart.js.map +1 -0
- 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/index.d.ts +1 -1
- package/lib/index.js +2 -4
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/api-client-utils.d.ts +6 -0
- package/lib/infrastructure/api-client-utils.js +34 -0
- package/lib/infrastructure/api-client-utils.js.map +1 -0
- package/lib/infrastructure/api-utils.d.ts +9 -0
- package/lib/infrastructure/api-utils.js +33 -0
- package/lib/infrastructure/api-utils.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +12 -0
- package/lib/infrastructure/env-info.js +58 -0
- package/lib/infrastructure/env-info.js.map +1 -0
- package/lib/infrastructure/file-service.d.ts +18 -0
- package/lib/infrastructure/file-service.js +76 -0
- package/lib/infrastructure/file-service.js.map +1 -0
- package/lib/infrastructure/launcher-service.d.ts +5 -0
- package/lib/infrastructure/launcher-service.js +47 -0
- package/lib/infrastructure/launcher-service.js.map +1 -0
- package/lib/infrastructure/services/api-service.d.ts +10 -0
- package/lib/infrastructure/services/api-service.js +55 -0
- package/lib/infrastructure/services/api-service.js.map +1 -0
- package/lib/infrastructure/services/auth-service.d.ts +11 -0
- package/lib/infrastructure/services/auth-service.js +35 -0
- package/lib/infrastructure/services/auth-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +23 -0
- package/lib/infrastructure/services/portal-service.js +186 -0
- package/lib/infrastructure/services/portal-service.js.map +1 -0
- package/lib/infrastructure/services/telemetry-service.d.ts +8 -0
- package/lib/infrastructure/services/telemetry-service.js +40 -0
- package/lib/infrastructure/services/telemetry-service.js.map +1 -0
- package/lib/infrastructure/tmp-extensions.d.ts +2 -0
- package/lib/infrastructure/tmp-extensions.js +6 -0
- package/lib/infrastructure/tmp-extensions.js.map +1 -0
- package/lib/infrastructure/zip-service.d.ts +6 -0
- package/lib/infrastructure/zip-service.js +39 -0
- package/lib/infrastructure/zip-service.js.map +1 -0
- package/lib/prompts/auth/login.d.ts +5 -0
- package/lib/prompts/auth/login.js +13 -0
- package/lib/prompts/auth/login.js.map +1 -0
- package/lib/prompts/portal/common/base-prompts.d.ts +7 -0
- package/lib/prompts/portal/common/base-prompts.js +19 -0
- package/lib/prompts/portal/common/base-prompts.js.map +1 -0
- package/lib/prompts/portal/copilot.d.ts +14 -0
- package/lib/prompts/portal/copilot.js +71 -0
- package/lib/prompts/portal/copilot.js.map +1 -0
- package/lib/prompts/portal/generate.d.ts +11 -0
- package/lib/prompts/portal/generate.js +42 -0
- package/lib/prompts/portal/generate.js.map +1 -0
- package/lib/prompts/portal/quickstart.d.ts +30 -0
- package/lib/prompts/portal/quickstart.js +240 -0
- package/lib/prompts/portal/quickstart.js.map +1 -0
- package/lib/prompts/portal/recipe/new-recipe.d.ts +24 -0
- package/lib/prompts/portal/recipe/new-recipe.js +203 -0
- package/lib/prompts/portal/recipe/new-recipe.js.map +1 -0
- package/lib/prompts/portal/serve.d.ts +4 -0
- package/lib/prompts/portal/serve.js +14 -0
- package/lib/prompts/portal/serve.js.map +1 -0
- package/lib/prompts/portal/toc/new-toc.d.ts +11 -0
- package/lib/prompts/portal/toc/new-toc.js +39 -0
- package/lib/prompts/portal/toc/new-toc.js.map +1 -0
- package/lib/prompts/sdk/generate.d.ts +11 -0
- package/lib/prompts/sdk/generate.js +42 -0
- package/lib/prompts/sdk/generate.js.map +1 -0
- package/lib/types/api/account.d.ts +10 -0
- package/lib/types/api/account.js +2 -0
- package/lib/types/api/account.js.map +1 -0
- package/lib/types/api/transform.d.ts +19 -4
- package/lib/types/api/transform.js +19 -4
- package/lib/types/api/transform.js.map +1 -0
- package/lib/types/api/validate.d.ts +3 -3
- package/lib/types/api/validate.js +2 -2
- package/lib/types/api/validate.js.map +1 -0
- package/lib/types/build/build.d.ts +14 -0
- package/lib/types/build/build.js +4 -0
- package/lib/types/build/build.js.map +1 -0
- package/lib/types/build-context.d.ts +13 -0
- package/lib/types/build-context.js +30 -0
- package/lib/types/build-context.js.map +1 -0
- package/lib/types/common/result.d.ts +17 -0
- package/lib/types/common/result.js +32 -0
- package/lib/types/common/result.js.map +1 -0
- package/lib/types/events/domain-event.d.ts +8 -0
- package/lib/types/events/domain-event.js +11 -0
- package/lib/types/events/domain-event.js.map +1 -0
- 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 +5 -0
- package/lib/types/events/recipe-creation-failed.js +8 -0
- package/lib/types/events/recipe-creation-failed.js.map +1 -0
- package/lib/types/events/toc-creation-failed.d.ts +5 -0
- package/lib/types/events/toc-creation-failed.js +8 -0
- package/lib/types/events/toc-creation-failed.js.map +1 -0
- package/lib/types/file/directoryPath.d.ts +7 -0
- package/lib/types/file/directoryPath.js +16 -0
- package/lib/types/file/directoryPath.js.map +1 -0
- package/lib/types/file/fileName.d.ts +5 -0
- package/lib/types/file/fileName.js +9 -0
- package/lib/types/file/fileName.js.map +1 -0
- package/lib/types/file/filePath.d.ts +8 -0
- package/lib/types/file/filePath.js +11 -0
- package/lib/types/file/filePath.js.map +1 -0
- package/lib/types/flags-provider.d.ts +15 -0
- package/lib/types/flags-provider.js +34 -0
- package/lib/types/flags-provider.js.map +1 -0
- package/lib/types/portal/generate.d.ts +13 -9
- package/lib/types/portal/generate.js +3 -2
- package/lib/types/portal/generate.js.map +1 -0
- package/lib/types/portal/quickstart.d.ts +17 -0
- package/lib/types/portal/quickstart.js +2 -0
- package/lib/types/portal/quickstart.js.map +1 -0
- package/lib/types/portal/serve.d.ts +12 -0
- package/lib/types/portal/serve.js +2 -0
- package/lib/types/portal/serve.js.map +1 -0
- package/lib/types/portal-context.d.ts +11 -0
- package/lib/types/portal-context.js +28 -0
- package/lib/types/portal-context.js.map +1 -0
- package/lib/types/recipe/recipe.d.ts +37 -0
- package/lib/types/recipe/recipe.js +6 -0
- package/lib/types/recipe/recipe.js.map +1 -0
- package/lib/types/sdk/generate.d.ts +11 -10
- package/lib/types/sdk/generate.js +11 -12
- package/lib/types/sdk/generate.js.map +1 -0
- package/lib/types/sdk-context.d.ts +13 -0
- package/lib/types/sdk-context.js +28 -0
- package/lib/types/sdk-context.js.map +1 -0
- package/lib/types/sdl/sdl.d.ts +12 -0
- package/lib/types/sdl/sdl.js +2 -0
- package/lib/types/sdl/sdl.js.map +1 -0
- package/lib/types/spec-context.d.ts +7 -0
- package/lib/types/spec-context.js +12 -0
- package/lib/types/spec-context.js.map +1 -0
- package/lib/types/toc/toc.d.ts +31 -0
- package/lib/types/toc/toc.js +9 -0
- package/lib/types/toc/toc.js.map +1 -0
- package/lib/types/utils.d.ts +3 -3
- package/lib/types/utils.js +2 -2
- package/lib/types/utils.js.map +1 -0
- package/lib/utils/utils.d.ts +16 -7
- package/lib/utils/utils.js +142 -86
- package/lib/utils/utils.js.map +1 -0
- package/lib/validators/common/directoryValidator.d.ts +5 -0
- package/lib/validators/common/directoryValidator.js +22 -0
- package/lib/validators/common/directoryValidator.js.map +1 -0
- package/lib/validators/portal/serve-validator.d.ts +6 -0
- package/lib/validators/portal/serve-validator.js +15 -0
- package/lib/validators/portal/serve-validator.js.map +1 -0
- package/package.json +100 -43
- package/bin/run +0 -5
- package/lib/controllers/portal/generate.d.ts +0 -2
- package/lib/controllers/portal/generate.js +0 -49
- package/lib/controllers/sdk/generate.d.ts +0 -4
- package/lib/controllers/sdk/generate.js +0 -64
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import filetype from "file-type";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import fsExtra from "fs-extra";
|
|
6
|
+
import { readdir } from "fs/promises";
|
|
7
|
+
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
8
|
+
import { createTempDirectory, isValidUrl, getMessageInRedColor, clearDirectory, deleteFile } from "../../utils/utils.js";
|
|
9
|
+
import { getValidationSummary } from "../api/validate.js";
|
|
10
|
+
import { metadataFileContent } from "../../config/env.js";
|
|
11
|
+
import { ZipService } from "../../infrastructure/zip-service.js";
|
|
12
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
13
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
14
|
+
import { FileName } from "../../types/file/fileName.js";
|
|
15
|
+
import { withDirPath } from "../../infrastructure/tmp-extensions.js";
|
|
16
|
+
import { FileService } from "../../infrastructure/file-service.js";
|
|
17
|
+
export class PortalQuickstartController {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.zipService = new ZipService();
|
|
20
|
+
this.fileService = new FileService();
|
|
21
|
+
this.specUrl = "https://github.com/apimatic/static-portal-workflow/blob/master/spec/openapi.json";
|
|
22
|
+
}
|
|
23
|
+
async isUserAuthenticated(configDir) {
|
|
24
|
+
const storedAuth = await getAuthInfo(configDir);
|
|
25
|
+
if (!(storedAuth === null || storedAuth === void 0 ? void 0 : storedAuth.authKey)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
async getSpecFile(spec) {
|
|
31
|
+
const tempSpecDir = await createTempDirectory();
|
|
32
|
+
if (spec) {
|
|
33
|
+
let specPath = String(spec);
|
|
34
|
+
if (isValidUrl(specPath)) {
|
|
35
|
+
try {
|
|
36
|
+
const response = await axios.head(specPath);
|
|
37
|
+
if (response.headers["content-type"].includes("text/html")) {
|
|
38
|
+
throw new Error(getMessageInRedColor(`Invalid URL. Please check the URL and ensure it points to a valid OpenAPI definition.`));
|
|
39
|
+
}
|
|
40
|
+
const specFile = await axios.get(specPath, { responseType: "arraybuffer" });
|
|
41
|
+
const fileName = path.basename(specPath);
|
|
42
|
+
const filePath = path.join(tempSpecDir, fileName);
|
|
43
|
+
await fsExtra.writeFile(filePath, specFile.data);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (axios.isAxiosError(error)) {
|
|
47
|
+
if (error.response) {
|
|
48
|
+
if (error.response.status === 404) {
|
|
49
|
+
throw new Error(getMessageInRedColor(`Unable to download the API Definition. The server returned a 404 Not Found error. Please verify that the provided URL is correct and publicly accessible.`));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw new Error(getMessageInRedColor(`Unable to download the API Definition. The server returned ${error.response.status} ${error.response.statusText}`));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (error.request) {
|
|
56
|
+
if (error.code === "ECONNABORTED") {
|
|
57
|
+
throw new Error(getMessageInRedColor(`Unable to download the API Definition, your request timed out. Please check your internet connection and try again, or contact APIMatic support for help if your problem persists.`));
|
|
58
|
+
}
|
|
59
|
+
else if (error.code === "ENOTFOUND" || error.code === "ERR_NETWORK") {
|
|
60
|
+
throw new Error(getMessageInRedColor(`Failed to download the API Definition file due to network issues. Please check your internet connection and try again.`));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
throw new Error(getMessageInRedColor(`Failed to download the API Definition file, no response was received from the server. Please try again later.`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw new Error(getMessageInRedColor(`Failed to download API Definition: ${error.message}`));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new Error(getMessageInRedColor(`Unable to save API Definition : ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
specPath = path.normalize(specPath);
|
|
77
|
+
const fileType = await filetype.fromFile(specPath);
|
|
78
|
+
if ((fileType === null || fileType === void 0 ? void 0 : fileType.ext) === "zip") {
|
|
79
|
+
await this.zipService.unArchive(new FilePath(new DirectoryPath(path.dirname(specPath)), new FileName(path.basename(specPath))), new DirectoryPath(tempSpecDir));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const destinationPath = path.join(tempSpecDir, path.basename(specPath));
|
|
83
|
+
await fsExtra.copy(specPath, destinationPath);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { localPath: tempSpecDir, url: this.specUrl };
|
|
88
|
+
}
|
|
89
|
+
async getSpecValidationSummary(prompts, specFile, apiValidationController) {
|
|
90
|
+
const validationFlags = {
|
|
91
|
+
file: specFile.localPath,
|
|
92
|
+
url: specFile.url
|
|
93
|
+
};
|
|
94
|
+
try {
|
|
95
|
+
const validationSummary = await getValidationSummary(validationFlags, apiValidationController);
|
|
96
|
+
return validationSummary;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
prompts.displaySpecValidationErrorMessage();
|
|
100
|
+
if (axios.isAxiosError(error)) {
|
|
101
|
+
if (error.response) {
|
|
102
|
+
if (error.response.status === 400) {
|
|
103
|
+
throw new Error(getMessageInRedColor(`The provided spec file is not valid. Please ensure that the spec you have provided is a valid API definition file.`));
|
|
104
|
+
}
|
|
105
|
+
else if (error.response.status === 500) {
|
|
106
|
+
throw new Error(getMessageInRedColor(`The server encountered an error while validating your spec file, please try again later. If the issue persists, contact our team at support@apimatic.io`));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
throw new Error(getMessageInRedColor(`Something went wrong while validating your spec file. The server returned the following error ${error.response.status} ${error.response.statusText}. Please try again later. If the issue persists, contact our team at support@apimatic.io`));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (error.request) {
|
|
113
|
+
if (error.code === "ECONNABORTED") {
|
|
114
|
+
throw new Error(getMessageInRedColor(`The spec validation request timed out. Please try again.`));
|
|
115
|
+
}
|
|
116
|
+
else if (error.code === "ENOTFOUND" || error.code === "ERR_NETWORK") {
|
|
117
|
+
throw new Error(getMessageInRedColor(`Network error encountered while validating the spec file. Please check your connection and try again.`));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
throw new Error(getMessageInRedColor(`Something went wrong while validating the spec file, please try again. If the issue persists, reach out to our support team at support@apimatic.io`));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
throw new Error(getMessageInRedColor(`Failed to validate spec file: ${error.message}`));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else if (error.result) {
|
|
128
|
+
const apiError = error;
|
|
129
|
+
if (error.body && apiError.statusCode === 401) {
|
|
130
|
+
throw new Error("You are not authorized to perform this action.");
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
throw new Error(error.message);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else if (error.statusCode === 401) {
|
|
137
|
+
throw new Error("You are not authorized to perform this action.");
|
|
138
|
+
}
|
|
139
|
+
else if (error.statusCode === 402 &&
|
|
140
|
+
error.body &&
|
|
141
|
+
typeof error.body === "string") {
|
|
142
|
+
throw new Error(error.body);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
throw new Error(getMessageInRedColor(`Something went wrong while validating the spec file, please try again later. If the issue persists, contact our team at support@apimatic.io`));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async downloadRepositoryFromGitHub(targetFolder) {
|
|
150
|
+
return await withDirPath(async (tempDirectory) => {
|
|
151
|
+
const zipUrl = `https://github.com/apimatic/static-portal-workflow/archive/refs/heads/master.zip`;
|
|
152
|
+
const response = await fetch(zipUrl);
|
|
153
|
+
const repositoryFolderName = "static-portal-workflow-master";
|
|
154
|
+
if (!response.ok) {
|
|
155
|
+
throw new Error(`Unable to setup your portal, please try again later.`);
|
|
156
|
+
}
|
|
157
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
158
|
+
const tempZipPath = new FilePath(tempDirectory, new FileName("static-repo.zip"));
|
|
159
|
+
await this.fileService.writeBuffer(tempZipPath, Buffer.from(arrayBuffer));
|
|
160
|
+
await this.zipService.unArchive(tempZipPath, tempDirectory);
|
|
161
|
+
const extractedFolderPath = new DirectoryPath(tempDirectory.toString(), repositoryFolderName);
|
|
162
|
+
await this.fileService.copyDirectoryContents(extractedFolderPath, new DirectoryPath(targetFolder));
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async setupBuildDirectory(prompts, targetFolder, specFile, validationSummary, languages) {
|
|
166
|
+
fsExtra.emptyDirSync(targetFolder);
|
|
167
|
+
try {
|
|
168
|
+
await this.downloadRepositoryFromGitHub(targetFolder);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
prompts.displayBuildDirectoryGenerationErrorMessage();
|
|
172
|
+
if (error instanceof Error) {
|
|
173
|
+
if (error.message.includes("timed out") || error.message.includes("timeout")) {
|
|
174
|
+
throw new Error(getMessageInRedColor("The operation timed out while setting up the build directory. Please check your internet connection and try again."));
|
|
175
|
+
}
|
|
176
|
+
else if (error.message.includes("Could not resolve host")) {
|
|
177
|
+
throw new Error(getMessageInRedColor("Unable to resolve the host. Please check your network settings and try again."));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
throw new Error(getMessageInRedColor(`Failed to set up the build directory. ${error.message}`));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
throw new Error(getMessageInRedColor(`Failed to set up the build directory. ${error}`));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
await clearDirectory(path.join(targetFolder, ".github"));
|
|
188
|
+
if (specFile.localPath && validationSummary.success) {
|
|
189
|
+
const specFolder = path.join(targetFolder, "spec");
|
|
190
|
+
await deleteFile(path.join(specFolder, "openapi.json"));
|
|
191
|
+
const files = await readdir(specFile.localPath);
|
|
192
|
+
for (const file of files) {
|
|
193
|
+
const srcPath = path.join(specFile.localPath, file);
|
|
194
|
+
const destPath = path.join(specFolder, file);
|
|
195
|
+
await fsExtra.copy(srcPath, destPath);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
const buildFilePath = path.join(targetFolder, "APIMATIC-BUILD.json");
|
|
199
|
+
const buildFileContent = JSON.parse(fs.readFileSync(buildFilePath, "utf8"));
|
|
200
|
+
const languageConfig = languages.reduce((config, lang) => {
|
|
201
|
+
config[lang] = {};
|
|
202
|
+
return config;
|
|
203
|
+
}, {});
|
|
204
|
+
buildFileContent.generatePortal.languageConfig = languageConfig;
|
|
205
|
+
fs.writeFileSync(buildFilePath, JSON.stringify(buildFileContent, null, 2));
|
|
206
|
+
const specFolder = path.join(targetFolder, "spec");
|
|
207
|
+
const metadataFile = fs.readdirSync(specFolder).find((file) => file.startsWith("APIMATIC-META"));
|
|
208
|
+
if (!metadataFile) {
|
|
209
|
+
const newMetadataFilePath = path.join(specFolder, "APIMATIC-META.json");
|
|
210
|
+
fs.writeFileSync(newMetadataFilePath, JSON.stringify(metadataFileContent, null, 2));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=quickstart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/controllers/portal/quickstart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// This code was originally forked from https://github.com/oclif/plugin-not-found/blob/main/src/index.ts
|
|
2
|
+
import { toConfiguredId } from "@oclif/core";
|
|
3
|
+
import { cyan, yellow } from "ansis";
|
|
4
|
+
import utils from "./utils.js";
|
|
5
|
+
const hook = async function (opts) {
|
|
6
|
+
var _a;
|
|
7
|
+
const hiddenCommandIds = new Set(opts.config.commands.filter((c) => c.hidden).map((c) => c.id));
|
|
8
|
+
const commandIDs = [...opts.config.commandIDs, ...opts.config.commands.flatMap((c) => c.aliases)].filter((c) => !hiddenCommandIds.has(c));
|
|
9
|
+
if (commandIDs.length === 0)
|
|
10
|
+
return;
|
|
11
|
+
let binHelp = `${opts.config.bin} help`;
|
|
12
|
+
const idSplit = opts.id.split(":");
|
|
13
|
+
if (opts.config.findTopic(idSplit[0])) {
|
|
14
|
+
binHelp = `${binHelp} ${idSplit[0]}`;
|
|
15
|
+
}
|
|
16
|
+
let suggestion;
|
|
17
|
+
if (/:?help:?/.test(opts.id)) {
|
|
18
|
+
suggestion = ["help", ...opts.id.split(":").filter((cmd) => cmd !== "help")].join(":");
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
suggestion = utils.closest(opts.id, commandIDs);
|
|
22
|
+
}
|
|
23
|
+
const readableSuggestion = suggestion ? toConfiguredId(suggestion, this.config) : null;
|
|
24
|
+
const originalCmd = toConfiguredId(opts.id, this.config);
|
|
25
|
+
this.warn(`${yellow(originalCmd)} is not a ${opts.config.bin} command.`);
|
|
26
|
+
if (!process.stdin.isTTY || !suggestion) {
|
|
27
|
+
this.error(`Run ${cyan.bold(binHelp)} for a list of available commands.`, {
|
|
28
|
+
exit: 127
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
let response = false;
|
|
32
|
+
try {
|
|
33
|
+
response = await utils.getConfirmation(readableSuggestion);
|
|
34
|
+
}
|
|
35
|
+
catch (_b) {
|
|
36
|
+
response = false;
|
|
37
|
+
}
|
|
38
|
+
if (response) {
|
|
39
|
+
const confirmedSuggestion = suggestion;
|
|
40
|
+
let argv = ((_a = opts.argv) === null || _a === void 0 ? void 0 : _a.length) ? opts.argv : opts.id.split(":").slice(confirmedSuggestion.split(":").length);
|
|
41
|
+
if (confirmedSuggestion.startsWith("help:")) {
|
|
42
|
+
argv = confirmedSuggestion.split(":").slice(1);
|
|
43
|
+
suggestion = "help";
|
|
44
|
+
}
|
|
45
|
+
return this.config.runCommand(confirmedSuggestion, argv);
|
|
46
|
+
}
|
|
47
|
+
this.error(`Run ${cyan.bold(binHelp)} for a list of available commands.`, {
|
|
48
|
+
exit: 127
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
export default hook;
|
|
52
|
+
//# sourceMappingURL=not-found.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found.js","sourceRoot":"","sources":["../../src/hooks/not-found.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// This code was originally forked from https://github.com/oclif/plugin-not-found/blob/main/src/utils.ts
|
|
2
|
+
import readline from 'node:readline';
|
|
3
|
+
import { blueBright, reset } from 'ansis';
|
|
4
|
+
import levenshtein from 'fast-levenshtein';
|
|
5
|
+
const getConfirmation = async (suggestion) => {
|
|
6
|
+
if (!process.stdin.isTTY)
|
|
7
|
+
return false;
|
|
8
|
+
const question = `${reset('Did you mean ' + blueBright(suggestion) + '?')} (Y/n) `;
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
const rl = readline.createInterface({
|
|
11
|
+
input: process.stdin,
|
|
12
|
+
output: process.stdout,
|
|
13
|
+
});
|
|
14
|
+
let settled = false;
|
|
15
|
+
const cleanup = () => {
|
|
16
|
+
rl.close();
|
|
17
|
+
clearTimeout(timeout);
|
|
18
|
+
};
|
|
19
|
+
const finish = (result) => {
|
|
20
|
+
if (!settled) {
|
|
21
|
+
settled = true;
|
|
22
|
+
cleanup();
|
|
23
|
+
resolve(result);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const timeout = setTimeout(() => {
|
|
27
|
+
finish(false);
|
|
28
|
+
}, 10000);
|
|
29
|
+
rl.question(question, (answer) => {
|
|
30
|
+
const a = (answer !== null && answer !== void 0 ? answer : '').trim().toLowerCase();
|
|
31
|
+
finish(a === '' || a === 'y' || a === 'yes');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const closest = (target, possibilities) => {
|
|
36
|
+
let best = null;
|
|
37
|
+
let bestDistance = Infinity;
|
|
38
|
+
for (const id of possibilities) {
|
|
39
|
+
const distance = levenshtein.get(target, id, { useCollator: true });
|
|
40
|
+
if (distance < bestDistance) {
|
|
41
|
+
bestDistance = distance;
|
|
42
|
+
best = id;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return best;
|
|
46
|
+
};
|
|
47
|
+
export default {
|
|
48
|
+
closest,
|
|
49
|
+
getConfirmation,
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/hooks/utils.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,MAAM,eAAe,GAAG,KAAK,EAAE,UAAkB,EAAoB,EAAE;IACrE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC;IAEnF,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,MAAe,EAAE,EAAE;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,EAAE,KAAM,CAAC,CAAC;QAEX,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,aAAuB,EAAiB,EAAE;IACzE,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,YAAY,GAAG,QAAQ,CAAC;IAE5B,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe;IACb,OAAO;IACP,eAAe;CAChB,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { run } from "@oclif/
|
|
1
|
+
export { run } from "@oclif/core";
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var command_1 = require("@oclif/command");
|
|
4
|
-
Object.defineProperty(exports, "run", { enumerable: true, get: function () { return command_1.run; } });
|
|
1
|
+
export { run } from "@oclif/core";
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Client } from "@apimatic/sdk";
|
|
2
|
+
import { AuthInfo } from "../client-utils/auth-manager.js";
|
|
3
|
+
export declare function createAuthorizationHeader(authInfo: AuthInfo | null, overrideAuthKey: string | null): string;
|
|
4
|
+
export declare function createApiClient(authorizationHeader: string, timeout: number): Client;
|
|
5
|
+
export declare function createProductionApiClient(authorizationHeader: string, timeout: number): Client;
|
|
6
|
+
export declare function createTestingApiClient(authorizationHeader: string, timeout: number): Client;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Client, Environment } from "@apimatic/sdk";
|
|
2
|
+
import { envInfo } from "./env-info.js";
|
|
3
|
+
export function createAuthorizationHeader(authInfo, overrideAuthKey) {
|
|
4
|
+
const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
5
|
+
return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
|
|
6
|
+
}
|
|
7
|
+
export function createApiClient(authorizationHeader, timeout) {
|
|
8
|
+
if (envInfo.getBaseUrl()) {
|
|
9
|
+
return createTestingApiClient(authorizationHeader, timeout);
|
|
10
|
+
}
|
|
11
|
+
return createProductionApiClient(authorizationHeader, timeout);
|
|
12
|
+
}
|
|
13
|
+
export function createProductionApiClient(authorizationHeader, timeout) {
|
|
14
|
+
return new Client({
|
|
15
|
+
customHeaderAuthenticationCredentials: {
|
|
16
|
+
Authorization: authorizationHeader
|
|
17
|
+
},
|
|
18
|
+
userAgent: envInfo.getUserAgent(),
|
|
19
|
+
timeout: timeout,
|
|
20
|
+
environment: Environment.Production
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function createTestingApiClient(authorizationHeader, timeout) {
|
|
24
|
+
return new Client({
|
|
25
|
+
customHeaderAuthenticationCredentials: {
|
|
26
|
+
Authorization: authorizationHeader
|
|
27
|
+
},
|
|
28
|
+
userAgent: envInfo.getUserAgent(),
|
|
29
|
+
timeout: timeout,
|
|
30
|
+
environment: Environment.Testing,
|
|
31
|
+
customUrl: envInfo.getBaseUrl()
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=api-client-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client-utils.js","sourceRoot":"","sources":["../../src/infrastructure/api-client-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,UAAU,yBAAyB,CAAC,QAAyB,EAAE,eAA8B;IACjG,MAAM,GAAG,GAAG,eAAe,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,CAAC;IACjD,OAAO,cAAc,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,mBAA2B,EAAE,OAAe;IAC1E,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACzB,OAAO,sBAAsB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,yBAAyB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,mBAA2B,EAAE,OAAe;IACpF,OAAO,IAAI,MAAM,CAAC;QAChB,qCAAqC,EAAE;YACrC,aAAa,EAAE,mBAAmB;SACnC;QACD,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE;QACjC,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,WAAW,CAAC,UAAU;KACpC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,mBAA2B,EAAE,OAAe;IACjF,OAAO,IAAI,MAAM,CAAC;QAChB,qCAAqC,EAAE;YACrC,aAAa,EAAE,mBAAmB;SACnC;QACD,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE;QACjC,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,WAAW,CAAC,OAAO;QAChC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE;KAChC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const enum ServiceError {
|
|
2
|
+
NotFound = "NOT_FOUND",
|
|
3
|
+
ServerError = "SERVER_ERROR",
|
|
4
|
+
NetworkError = "NETWORK_ERROR",
|
|
5
|
+
InvalidResponse = "INVALID_RESPONSE",
|
|
6
|
+
UnAuthorized = "UNAUTHORIZED"
|
|
7
|
+
}
|
|
8
|
+
export declare function getErrorMessage(error: ServiceError): string;
|
|
9
|
+
export declare function handleServiceError(error: unknown): ServiceError;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
export function getErrorMessage(error) {
|
|
3
|
+
switch (error) {
|
|
4
|
+
case "NETWORK_ERROR" /* ServiceError.NetworkError */:
|
|
5
|
+
return "Unable to connect to the server.";
|
|
6
|
+
case "UNAUTHORIZED" /* ServiceError.UnAuthorized */:
|
|
7
|
+
return "Unauthorized access.";
|
|
8
|
+
case "NOT_FOUND" /* ServiceError.NotFound */:
|
|
9
|
+
case "SERVER_ERROR" /* ServiceError.ServerError */:
|
|
10
|
+
case "INVALID_RESPONSE" /* ServiceError.InvalidResponse */:
|
|
11
|
+
default:
|
|
12
|
+
return "An unexpected error occurred, please try again later. If the problem persists, please reach out to our team at support@apimatic.io";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function handleServiceError(error) {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
if (axios.isAxiosError(error)) {
|
|
18
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
19
|
+
return "UNAUTHORIZED" /* ServiceError.UnAuthorized */;
|
|
20
|
+
}
|
|
21
|
+
if (((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 404) {
|
|
22
|
+
return "NOT_FOUND" /* ServiceError.NotFound */;
|
|
23
|
+
}
|
|
24
|
+
if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 500) {
|
|
25
|
+
return "SERVER_ERROR" /* ServiceError.ServerError */;
|
|
26
|
+
}
|
|
27
|
+
if (error.code === "ECONNABORTED" || error.code === "ECONNREFUSED") {
|
|
28
|
+
return "NETWORK_ERROR" /* ServiceError.NetworkError */;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return "SERVER_ERROR" /* ServiceError.ServerError */;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=api-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-utils.js","sourceRoot":"","sources":["../../src/infrastructure/api-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,QAAQ,KAAK,EAAE,CAAC;QACd;YACE,OAAO,kCAAkC,CAAC;QAC5C;YACE,OAAO,sBAAsB,CAAC;QAChC,6CAA2B;QAC3B,mDAA8B;QAC9B,2DAAkC;QAClC;YACE,OAAO,oIAAoI,CAAC;IAChJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;;IAC/C,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACnC,sDAAkC;QACpC,CAAC;QACD,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACnC,+CAA6B;QAC/B,CAAC;QACD,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACnC,qDAAgC;QAClC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnE,uDAAiC;QACnC,CAAC;IACH,CAAC;IACD,qDAAgC;AAClC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare class EnvInfo {
|
|
2
|
+
private static cachedCliVersion;
|
|
3
|
+
private static cachedUserAgent;
|
|
4
|
+
private static cachedBaseUrl;
|
|
5
|
+
private static cachedAuthBaseUrl;
|
|
6
|
+
getUserAgent(): string;
|
|
7
|
+
getCLIVersion(): string;
|
|
8
|
+
getBaseUrl(): string | undefined;
|
|
9
|
+
getAuthBaseUrl(): string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare const envInfo: EnvInfo;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import os from "os";
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import { dirname, join } from "path";
|
|
4
|
+
import fs from "fs-extra";
|
|
5
|
+
class EnvInfo {
|
|
6
|
+
getUserAgent() {
|
|
7
|
+
if (!EnvInfo.cachedUserAgent) {
|
|
8
|
+
const osInfo = `${os.platform()} ${os.release()}`;
|
|
9
|
+
const engine = "Node.js";
|
|
10
|
+
const engineVersion = process.version;
|
|
11
|
+
EnvInfo.cachedUserAgent = `APIMATIC CLI/${this.getCLIVersion()} - (OS: ${osInfo}, Engine: ${engine}/${engineVersion})`;
|
|
12
|
+
}
|
|
13
|
+
return EnvInfo.cachedUserAgent;
|
|
14
|
+
}
|
|
15
|
+
getCLIVersion() {
|
|
16
|
+
if (EnvInfo.cachedCliVersion) {
|
|
17
|
+
return EnvInfo.cachedCliVersion;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
+
const __dirname = dirname(__filename);
|
|
22
|
+
const pkgPath = join(__dirname, "../../package.json");
|
|
23
|
+
const pkgJson = fs.readFileSync(pkgPath, "utf-8");
|
|
24
|
+
const pkg = JSON.parse(pkgJson);
|
|
25
|
+
const version = pkg.version || "unknown";
|
|
26
|
+
EnvInfo.cachedCliVersion = version;
|
|
27
|
+
return version;
|
|
28
|
+
}
|
|
29
|
+
catch (_a) {
|
|
30
|
+
return "unknown";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
getBaseUrl() {
|
|
34
|
+
if (EnvInfo.cachedBaseUrl) {
|
|
35
|
+
return EnvInfo.cachedBaseUrl;
|
|
36
|
+
}
|
|
37
|
+
const envBaseUrls = process.env.APIMATIC_BASE_URL;
|
|
38
|
+
if (envBaseUrls) {
|
|
39
|
+
EnvInfo.cachedBaseUrl = envBaseUrls.split(";")[0];
|
|
40
|
+
}
|
|
41
|
+
return EnvInfo.cachedBaseUrl;
|
|
42
|
+
}
|
|
43
|
+
getAuthBaseUrl() {
|
|
44
|
+
if (EnvInfo.cachedAuthBaseUrl) {
|
|
45
|
+
return EnvInfo.cachedAuthBaseUrl;
|
|
46
|
+
}
|
|
47
|
+
const envBaseUrls = process.env.APIMATIC_BASE_URL;
|
|
48
|
+
if (envBaseUrls) {
|
|
49
|
+
const baseUrls = envBaseUrls.split(";");
|
|
50
|
+
EnvInfo.cachedAuthBaseUrl = baseUrls.length === 2 ? baseUrls[1] : undefined;
|
|
51
|
+
}
|
|
52
|
+
return EnvInfo.cachedAuthBaseUrl;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
EnvInfo.cachedCliVersion = null;
|
|
56
|
+
EnvInfo.cachedUserAgent = null;
|
|
57
|
+
export const envInfo = new EnvInfo();
|
|
58
|
+
//# sourceMappingURL=env-info.js.map
|
|
@@ -0,0 +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;IAMJ,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;IAEM,UAAU;QACf,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAEM,cAAc;QACnB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,iBAAiB,CAAC;QACnC,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,OAAO,OAAO,CAAC,iBAAiB,CAAC;IACnC,CAAC;;AAvDc,wBAAgB,GAAkB,IAAI,CAAC;AACvC,uBAAe,GAAkB,IAAI,CAAC;AAwDvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import { FilePath } from "../types/file/filePath.js";
|
|
3
|
+
import { DirectoryPath } from "../types/file/directoryPath.js";
|
|
4
|
+
export declare class FileService {
|
|
5
|
+
fileExists(file: FilePath): Promise<boolean>;
|
|
6
|
+
directoryExists(dir: DirectoryPath): Promise<boolean>;
|
|
7
|
+
directoryEmpty(dir: DirectoryPath): Promise<boolean>;
|
|
8
|
+
cleanDirectory(dir: DirectoryPath): Promise<void>;
|
|
9
|
+
copyDirectory(source: DirectoryPath, destination: DirectoryPath): Promise<void>;
|
|
10
|
+
copyDirectoryContents(source: DirectoryPath, destination: DirectoryPath): Promise<void>;
|
|
11
|
+
deleteFile(filePath: FilePath): Promise<void>;
|
|
12
|
+
getStream(filePath: FilePath): Promise<fs.ReadStream>;
|
|
13
|
+
getContents(filePath: FilePath): Promise<string>;
|
|
14
|
+
writeFile(filePath: FilePath, stream: NodeJS.ReadableStream): Promise<void>;
|
|
15
|
+
writeContents(filePath: FilePath, contents: string): Promise<void>;
|
|
16
|
+
writeBuffer(filePath: FilePath, buffer: Buffer): Promise<void>;
|
|
17
|
+
copy(source: FilePath, destination: FilePath): Promise<void>;
|
|
18
|
+
}
|