@apimatic/cli 1.1.0-alpha.12 → 1.1.0-alpha.14
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 +22 -45
- package/lib/actions/actionResult.d.ts +8 -0
- package/lib/actions/actionResult.js +25 -0
- package/lib/actions/actionResult.js.map +1 -0
- package/lib/actions/portal/generatePortalAction.d.ts +15 -0
- package/lib/actions/portal/generatePortalAction.js +76 -0
- package/lib/actions/portal/generatePortalAction.js.map +1 -0
- package/lib/actions/portal/recipe/new-recipe.d.ts +3 -2
- package/lib/actions/portal/recipe/new-recipe.js +30 -32
- package/lib/actions/portal/recipe/new-recipe.js.map +1 -1
- package/lib/actions/portal/serve.d.ts +17 -0
- package/lib/actions/portal/serve.js +36 -0
- package/lib/actions/portal/serve.js.map +1 -0
- package/lib/actions/portal/toc/new-toc.d.ts +2 -1
- package/lib/actions/portal/toc/new-toc.js +21 -21
- package/lib/actions/portal/toc/new-toc.js.map +1 -1
- package/lib/application/portal/recipe/recipe-generator.js +1 -1
- package/lib/application/portal/recipe/recipe-generator.js.map +1 -1
- package/lib/application/portal/serve/portal-watcher.d.ts +8 -0
- package/lib/application/portal/serve/portal-watcher.js +60 -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 +90 -0
- package/lib/application/portal/serve/serve-handler.js.map +1 -0
- package/lib/application/portal/serve/watcher-handler.d.ts +5 -0
- package/lib/application/portal/serve/watcher-handler.js +27 -0
- package/lib/application/portal/serve/watcher-handler.js.map +1 -0
- package/lib/application/portal/toc/sdl-parser.d.ts +2 -1
- package/lib/application/portal/toc/sdl-parser.js +4 -4
- package/lib/application/portal/toc/sdl-parser.js.map +1 -1
- package/lib/client-utils/sdk-client.js +5 -22
- package/lib/client-utils/sdk-client.js.map +1 -1
- package/lib/commands/api/transform.js +2 -6
- package/lib/commands/api/transform.js.map +1 -1
- package/lib/commands/api/validate.js +4 -8
- package/lib/commands/api/validate.js.map +1 -1
- package/lib/commands/auth/login.js +31 -33
- package/lib/commands/auth/login.js.map +1 -1
- package/lib/commands/auth/logout.js +1 -5
- package/lib/commands/auth/logout.js.map +1 -1
- package/lib/commands/auth/status.js +1 -5
- package/lib/commands/auth/status.js.map +1 -1
- package/lib/commands/portal/generate.d.ts +7 -9
- package/lib/commands/portal/generate.js +17 -67
- package/lib/commands/portal/generate.js.map +1 -1
- package/lib/commands/portal/quickstart.d.ts +2 -2
- package/lib/commands/portal/quickstart.js +52 -20
- package/lib/commands/portal/quickstart.js.map +1 -1
- package/lib/commands/portal/recipe/new.d.ts +2 -3
- package/lib/commands/portal/recipe/new.js +16 -23
- package/lib/commands/portal/recipe/new.js.map +1 -1
- package/lib/commands/portal/serve.d.ts +7 -5
- package/lib/commands/portal/serve.js +60 -97
- package/lib/commands/portal/serve.js.map +1 -1
- package/lib/commands/portal/toc/new.d.ts +1 -1
- package/lib/commands/portal/toc/new.js +20 -24
- package/lib/commands/portal/toc/new.js.map +1 -1
- package/lib/commands/sdk/generate.js +4 -12
- package/lib/commands/sdk/generate.js.map +1 -1
- package/lib/controllers/api/validate.d.ts +2 -2
- package/lib/controllers/portal/quickstart.d.ts +2 -4
- package/lib/controllers/portal/quickstart.js +4 -63
- package/lib/controllers/portal/quickstart.js.map +1 -1
- package/lib/controllers/sdk/generate.d.ts +3 -3
- package/lib/infrastructure/file-service.d.ts +13 -0
- package/lib/infrastructure/file-service.js +54 -0
- package/lib/infrastructure/file-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +5 -4
- package/lib/infrastructure/services/portal-service.js +28 -42
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/zip-service.d.ts +6 -0
- package/lib/infrastructure/zip-service.js +25 -0
- package/lib/infrastructure/zip-service.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/generate.d.ts +3 -1
- package/lib/prompts/portal/generate.js +29 -16
- package/lib/prompts/portal/generate.js.map +1 -1
- package/lib/prompts/portal/quickstart.d.ts +5 -6
- package/lib/prompts/portal/quickstart.js +29 -21
- package/lib/prompts/portal/quickstart.js.map +1 -1
- package/lib/prompts/portal/recipe/new-recipe.js +4 -5
- package/lib/prompts/portal/recipe/new-recipe.js.map +1 -1
- package/lib/prompts/portal/serve.d.ts +4 -6
- package/lib/prompts/portal/serve.js +24 -15
- package/lib/prompts/portal/serve.js.map +1 -1
- package/lib/prompts/portal/toc/new-toc.js +5 -4
- package/lib/prompts/portal/toc/new-toc.js.map +1 -1
- 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/portal/quickstart.d.ts +1 -1
- package/lib/types/portal/serve.d.ts +13 -0
- package/lib/types/portal/serve.js +2 -0
- package/lib/types/portal/serve.js.map +1 -0
- package/lib/utils/utils.d.ts +1 -4
- package/lib/utils/utils.js +10 -25
- package/lib/utils/utils.js.map +1 -1
- package/lib/validators/common/directoryValidator.d.ts +3 -7
- package/lib/validators/common/directoryValidator.js +10 -37
- package/lib/validators/common/directoryValidator.js.map +1 -1
- 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 +5 -2
- package/lib/actions/portal/generate.d.ts +0 -7
- package/lib/actions/portal/generate.js +0 -54
- package/lib/actions/portal/generate.js.map +0 -1
- package/lib/controllers/portal/generate.d.ts +0 -3
- package/lib/controllers/portal/generate.js +0 -106
- package/lib/controllers/portal/generate.js.map +0 -1
- package/lib/controllers/portal/serve.d.ts +0 -3
- package/lib/controllers/portal/serve.js +0 -136
- package/lib/controllers/portal/serve.js.map +0 -1
- package/lib/services/portal/server.d.ts +0 -14
- package/lib/services/portal/server.js +0 -97
- package/lib/services/portal/server.js.map +0 -1
- package/lib/validators/common/portValidator.d.ts +0 -5
- package/lib/validators/common/portValidator.js +0 -16
- package/lib/validators/common/portValidator.js.map +0 -1
- package/lib/validators/portal/serveValidator.d.ts +0 -6
- package/lib/validators/portal/serveValidator.js +0 -17
- package/lib/validators/portal/serveValidator.js.map +0 -1
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { PortalPaths, GenerateFlags } from "../../types/portal/generate.js";
|
|
2
|
-
export declare class PortalGenerateAction {
|
|
3
|
-
private readonly prompts;
|
|
4
|
-
constructor();
|
|
5
|
-
generatePortal(paths: PortalPaths, flags: GenerateFlags, configDir: string): Promise<void>;
|
|
6
|
-
private saveGeneratedPortalStreamToZipFile;
|
|
7
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import fsExtra from "fs-extra";
|
|
3
|
-
import { PortalService } from "../../infrastructure/services/portal-service.js";
|
|
4
|
-
import { Result } from "../../types/common/result.js";
|
|
5
|
-
import { getGeneratedFilesPaths, validateAndZipPortalSource, deleteFile, extractZipFile, getMessageInRedColor } from "../../utils/utils.js";
|
|
6
|
-
import { PortalGeneratePrompts } from "../../prompts/portal/generate.js";
|
|
7
|
-
export class PortalGenerateAction {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.prompts = new PortalGeneratePrompts();
|
|
10
|
-
}
|
|
11
|
-
async generatePortal(paths, flags, configDir) {
|
|
12
|
-
var _a;
|
|
13
|
-
this.prompts.displayPortalGenerationMessage();
|
|
14
|
-
const pathsToIgnore = getGeneratedFilesPaths(paths.sourceFolderPath, paths.generatedPortalArtifactsFolderPath);
|
|
15
|
-
//TODO: Refactor this method, carries dual responsibility.
|
|
16
|
-
const sourceBuildInputZipFilePath = await validateAndZipPortalSource(paths.sourceFolderPath, path.join(paths.sourceFolderPath, ".portal_source.zip"), pathsToIgnore);
|
|
17
|
-
const generatePortalParams = {
|
|
18
|
-
sourceBuildInputZipFilePath: sourceBuildInputZipFilePath,
|
|
19
|
-
generatedPortalArtifactsFolderPath: paths.generatedPortalArtifactsFolderPath,
|
|
20
|
-
generatedPortalArtifactsZipFilePath: paths.generatedPortalArtifactsZipFilePath,
|
|
21
|
-
overrideAuthKey: (_a = flags["auth-key"]) !== null && _a !== void 0 ? _a : null,
|
|
22
|
-
generateZipFile: flags.zip
|
|
23
|
-
};
|
|
24
|
-
const docsPortalService = new PortalService();
|
|
25
|
-
const portalGenerationResult = await docsPortalService.generateOnPremPortal(generatePortalParams, configDir);
|
|
26
|
-
await deleteFile(sourceBuildInputZipFilePath);
|
|
27
|
-
if (portalGenerationResult.isSuccess()) {
|
|
28
|
-
await this.saveGeneratedPortalStreamToZipFile(portalGenerationResult.value, paths.generatedPortalArtifactsZipFilePath);
|
|
29
|
-
if (flags.zip) {
|
|
30
|
-
this.prompts.displayPortalGenerationSuccessMessage();
|
|
31
|
-
this.prompts.displayOutroMessage(paths.generatedPortalArtifactsZipFilePath);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
await extractZipFile(paths.generatedPortalArtifactsZipFilePath, paths.generatedPortalArtifactsFolderPath);
|
|
35
|
-
await deleteFile(paths.generatedPortalArtifactsZipFilePath);
|
|
36
|
-
this.prompts.displayPortalGenerationSuccessMessage();
|
|
37
|
-
this.prompts.displayOutroMessage(paths.generatedPortalArtifactsFolderPath);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.prompts.displayPortalGenerationErrorMessage();
|
|
41
|
-
this.prompts.logError(getMessageInRedColor(`${portalGenerationResult.error}`));
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async saveGeneratedPortalStreamToZipFile(data, generatedPortalArtifactsZipFilePath) {
|
|
45
|
-
const writeStream = fsExtra.createWriteStream(generatedPortalArtifactsZipFilePath);
|
|
46
|
-
await new Promise((resolve, reject) => {
|
|
47
|
-
data
|
|
48
|
-
.pipe(writeStream)
|
|
49
|
-
.on("finish", () => resolve())
|
|
50
|
-
.on("error", (error) => reject(Result.failure(`Failed to save downloaded portal to file: ${error.message}`)));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/actions/portal/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import fsExtra from "fs-extra";
|
|
2
|
-
import { deleteFile, extractZipFile, getMessageInRedColor, parseStreamBodyToJson } from "../../utils/utils.js";
|
|
3
|
-
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
4
|
-
import { ApiError, Client, ContentType, DocsPortalManagementController, FileWrapper, ProblemDetailsError, UnauthorizedResponseError } from "@apimatic/sdk";
|
|
5
|
-
import { Result } from "../../types/common/result.js";
|
|
6
|
-
const CONTENT_TYPE = ContentType.EnumMultipartformdata;
|
|
7
|
-
const TIMEOUT = 0;
|
|
8
|
-
export const downloadDocsPortal = async (params, configDir) => {
|
|
9
|
-
if (!(await fsExtra.pathExists(params.sourceBuildInputZipFilePath))) {
|
|
10
|
-
return Result.failure("Build file doesn't exist");
|
|
11
|
-
}
|
|
12
|
-
const authInfo = await getAuthInfo(configDir);
|
|
13
|
-
const authorizationHeader = createAuthorizationHeader(authInfo, params.overrideAuthKey);
|
|
14
|
-
const client = createApiClient(authorizationHeader);
|
|
15
|
-
const docsPortalManagementController = new DocsPortalManagementController(client);
|
|
16
|
-
try {
|
|
17
|
-
const stream = await generatePortalFromSyncEndpoint(docsPortalManagementController, params.sourceBuildInputZipFilePath);
|
|
18
|
-
await saveGeneratedPortalStreamToZipFile(stream, params.generatedPortalArtifactsZipFilePath);
|
|
19
|
-
await deleteFile(params.sourceBuildInputZipFilePath);
|
|
20
|
-
if (params.generateZipFile) {
|
|
21
|
-
return Result.success(params.generatedPortalArtifactsZipFilePath);
|
|
22
|
-
}
|
|
23
|
-
await extractZipFile(params.generatedPortalArtifactsZipFilePath, params.generatedPortalArtifactsFolderPath);
|
|
24
|
-
await deleteFile(params.generatedPortalArtifactsZipFilePath);
|
|
25
|
-
return Result.success(params.generatedPortalArtifactsFolderPath);
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
return handlePortalGenerationErrors(error, params);
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
const createAuthorizationHeader = (authInfo, overrideAuthKey) => {
|
|
32
|
-
if (overrideAuthKey) {
|
|
33
|
-
return `X-Auth-Key ${overrideAuthKey}`;
|
|
34
|
-
}
|
|
35
|
-
if (!authInfo) {
|
|
36
|
-
return "";
|
|
37
|
-
}
|
|
38
|
-
return `X-Auth-Key ${authInfo.authKey}`;
|
|
39
|
-
};
|
|
40
|
-
const createApiClient = (authorizationHeader) => {
|
|
41
|
-
return new Client({
|
|
42
|
-
customHeaderAuthenticationCredentials: {
|
|
43
|
-
Authorization: authorizationHeader
|
|
44
|
-
},
|
|
45
|
-
timeout: TIMEOUT
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
const generatePortalFromSyncEndpoint = async (docsPortalManagementController, zippedBuildFilePath) => {
|
|
49
|
-
const file = new FileWrapper(fsExtra.createReadStream(zippedBuildFilePath));
|
|
50
|
-
const response = await docsPortalManagementController.generateOnPremPortalViaBuildInput(CONTENT_TYPE, file);
|
|
51
|
-
return response.result;
|
|
52
|
-
};
|
|
53
|
-
const saveGeneratedPortalStreamToZipFile = async (data, generatedPortalArtifactsZipFilePath) => {
|
|
54
|
-
const writeStream = fsExtra.createWriteStream(generatedPortalArtifactsZipFilePath);
|
|
55
|
-
await new Promise((resolve, reject) => {
|
|
56
|
-
data
|
|
57
|
-
.pipe(writeStream)
|
|
58
|
-
.on("finish", () => resolve())
|
|
59
|
-
.on("error", (error) => reject(Result.failure(`Failed to save downloaded portal to file: ${error.message}`)));
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
const handlePortalGenerationErrors = async (error, params) => {
|
|
63
|
-
var _a, _b;
|
|
64
|
-
if (error instanceof UnauthorizedResponseError) {
|
|
65
|
-
//401
|
|
66
|
-
const body = await parseErrorResponse(error);
|
|
67
|
-
return Result.failure(getMessageInRedColor((_a = body.message) !== null && _a !== void 0 ? _a : "Unauthorized access"));
|
|
68
|
-
}
|
|
69
|
-
else if (error instanceof ProblemDetailsError) {
|
|
70
|
-
//400 & 403
|
|
71
|
-
const body = await parseErrorResponse(error);
|
|
72
|
-
const message = body.errors[Object.keys(body.errors)[0]][0];
|
|
73
|
-
return Result.failure(getMessageInRedColor(body.title + " " + ((_b = body.detail) !== null && _b !== void 0 ? _b : "") + ":\n" + message));
|
|
74
|
-
}
|
|
75
|
-
else if (error instanceof ApiError && error.statusCode === 422) {
|
|
76
|
-
//422
|
|
77
|
-
await extractErrorZipFile(error, params);
|
|
78
|
-
return Result.failure(getMessageInRedColor("An error occurred during portal generation due to an issue with the input. An error report has been written at the destination path: " +
|
|
79
|
-
params.generatedPortalArtifactsFolderPath));
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
return Result.failure(getMessageInRedColor(error instanceof Error ? error.message : String(error)));
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
const parseErrorResponse = async (error) => {
|
|
86
|
-
if (error instanceof Error && "body" in error) {
|
|
87
|
-
const stream = error.body;
|
|
88
|
-
return await parseStreamBodyToJson(stream);
|
|
89
|
-
}
|
|
90
|
-
throw error;
|
|
91
|
-
};
|
|
92
|
-
const extractErrorZipFile = async (error, params) => {
|
|
93
|
-
const data = error.body;
|
|
94
|
-
const writeStream = fsExtra.createWriteStream(params.generatedPortalArtifactsZipFilePath);
|
|
95
|
-
await new Promise((resolve, reject) => {
|
|
96
|
-
data
|
|
97
|
-
.pipe(writeStream)
|
|
98
|
-
.on("finish", () => resolve())
|
|
99
|
-
.on("error", reject);
|
|
100
|
-
});
|
|
101
|
-
if (!params.generateZipFile) {
|
|
102
|
-
await extractZipFile(params.generatedPortalArtifactsZipFilePath, params.generatedPortalArtifactsFolderPath);
|
|
103
|
-
await deleteFile(params.generatedPortalArtifactsZipFilePath);
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/controllers/portal/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import chokidar from "chokidar";
|
|
2
|
-
export declare const watchAndRegeneratePortal: (sourceDir: string, portalDir: string, configDir: string, overrideAuthKey: string | null, ignoredPaths?: string[]) => Promise<chokidar.FSWatcher>;
|
|
3
|
-
export declare const generatePortal: (sourceDir: string, portalDir: string, configDir: string, ignoredPaths?: string[], overrideAuthKey?: string | null) => Promise<void>;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
import chokidar from "chokidar";
|
|
4
|
-
import { cleanUpGeneratedPortalFiles, getGeneratedFilesPaths, getMessageInMagentaColor, getMessageInRedColor, validateAndZipPortalSource } from "../../utils/utils.js";
|
|
5
|
-
import { downloadDocsPortal } from "./generate.js";
|
|
6
|
-
const progressSpinner = {
|
|
7
|
-
frames: ["◒", "◐", "◓", "◑"].map((frame) => getMessageInMagentaColor(frame)),
|
|
8
|
-
isRunning: false,
|
|
9
|
-
interval: null,
|
|
10
|
-
frameIndex: 0,
|
|
11
|
-
text: "Regenerating portal... ",
|
|
12
|
-
start() {
|
|
13
|
-
if (this.interval) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
this.interval = setInterval(() => {
|
|
17
|
-
this.frameIndex = (this.frameIndex + 1) % this.frames.length;
|
|
18
|
-
process.stdout.write(`\r\u001b[K${this.format()}`);
|
|
19
|
-
}, 200);
|
|
20
|
-
},
|
|
21
|
-
stop() {
|
|
22
|
-
if (this.interval !== null) {
|
|
23
|
-
clearInterval(this.interval);
|
|
24
|
-
this.interval = null;
|
|
25
|
-
}
|
|
26
|
-
process.stdout.write("\r\u001b[K ✅ Portal regenerated successfully. ");
|
|
27
|
-
},
|
|
28
|
-
error() {
|
|
29
|
-
if (this.interval !== null) {
|
|
30
|
-
clearInterval(this.interval);
|
|
31
|
-
this.interval = null;
|
|
32
|
-
}
|
|
33
|
-
process.stdout.write("\r\u001b[K ❌ Portal regeneration unsuccessful. ");
|
|
34
|
-
},
|
|
35
|
-
format() {
|
|
36
|
-
return ` ${this.frames[this.frameIndex]} ${this.text}`;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
export const watchAndRegeneratePortal = async (sourceDir, portalDir, configDir, overrideAuthKey, ignoredPaths = []) => {
|
|
40
|
-
// Convert ignoredPaths to absolute paths for consistent comparison
|
|
41
|
-
const generatedFilesPaths = getGeneratedFilesPaths(sourceDir, portalDir);
|
|
42
|
-
const absoluteIgnoredPaths = [
|
|
43
|
-
...ignoredPaths.filter((ignoredPath) => ignoredPath.trim() !== ""),
|
|
44
|
-
...generatedFilesPaths
|
|
45
|
-
].map((ignoredPath) => path.resolve(sourceDir, ignoredPath));
|
|
46
|
-
const watcher = chokidar.watch(sourceDir, {
|
|
47
|
-
ignored: [...absoluteIgnoredPaths, /(^|[/\\])\..+/],
|
|
48
|
-
ignoreInitial: true,
|
|
49
|
-
persistent: true
|
|
50
|
-
});
|
|
51
|
-
const deletedDirectories = new Set();
|
|
52
|
-
watcher
|
|
53
|
-
.on("all", async (event, path) => {
|
|
54
|
-
if (event == "unlinkDir") {
|
|
55
|
-
deletedDirectories.add(path);
|
|
56
|
-
}
|
|
57
|
-
if (event == "unlink") {
|
|
58
|
-
for (const dir of deletedDirectories) {
|
|
59
|
-
if (path.startsWith(dir)) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
await handleFileChange(sourceDir, portalDir, configDir, overrideAuthKey, absoluteIgnoredPaths);
|
|
65
|
-
})
|
|
66
|
-
.on("error", (error) => {
|
|
67
|
-
console.error("Watcher error:", error);
|
|
68
|
-
});
|
|
69
|
-
return watcher;
|
|
70
|
-
};
|
|
71
|
-
export const generatePortal = async (sourceDir, portalDir, configDir, ignoredPaths = [], overrideAuthKey = null) => {
|
|
72
|
-
const zippedBuildFilePath = await validateAndZipPortalSource(sourceDir, path.join(sourceDir, ".portal_source.zip"), ignoredPaths);
|
|
73
|
-
const generatePortalParams = {
|
|
74
|
-
sourceBuildInputZipFilePath: zippedBuildFilePath,
|
|
75
|
-
generatedPortalArtifactsFolderPath: portalDir,
|
|
76
|
-
generatedPortalArtifactsZipFilePath: path.join(sourceDir, ".generated_portal.zip"),
|
|
77
|
-
overrideAuthKey,
|
|
78
|
-
generateZipFile: false
|
|
79
|
-
};
|
|
80
|
-
const generatedDocsResult = await downloadDocsPortal(generatePortalParams, configDir);
|
|
81
|
-
if (generatedDocsResult.isFailed()) {
|
|
82
|
-
throw new Error(generatedDocsResult.error);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
async function handleFileChange(sourceDir, portalDir, configDir, overrideAuthKey, absoluteIgnoredPaths) {
|
|
86
|
-
progressSpinner.start();
|
|
87
|
-
try {
|
|
88
|
-
await generatePortal(sourceDir, portalDir, configDir, absoluteIgnoredPaths, overrideAuthKey);
|
|
89
|
-
progressSpinner.stop();
|
|
90
|
-
await cleanUpGeneratedPortalFiles(sourceDir);
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
if (axios.isCancel(error)) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
progressSpinner.error();
|
|
97
|
-
await cleanUpGeneratedPortalFiles(sourceDir);
|
|
98
|
-
if (axios.isAxiosError(error)) {
|
|
99
|
-
if (error.response) {
|
|
100
|
-
if (error.response.status === 400) {
|
|
101
|
-
console.error(getMessageInRedColor(`Failed to regenerate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files.`));
|
|
102
|
-
}
|
|
103
|
-
else if (error.response.status === 403) {
|
|
104
|
-
console.error(getMessageInRedColor(`Access denied. It looks like you don't have access to APIMatic's Docs as Code offering. Check your subscription details and contact our team at support@apimatic.io if you believe this is a mistake.`));
|
|
105
|
-
}
|
|
106
|
-
else if (error.response.status === 422) {
|
|
107
|
-
console.error(getMessageInRedColor(`Failed to regenerate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files.`));
|
|
108
|
-
}
|
|
109
|
-
else if (error.response.status === 500) {
|
|
110
|
-
console.error(getMessageInRedColor(`Failed to regenerate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files. If the issue persists, reach out to our team at support@apimatic.io`));
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
console.error(getMessageInRedColor(`Failed to regenerate the portal. Please ensure that the provided build directory follows the correct structure and contains valid API definition and build files. If the issue persists, reach out to our team at support@apimatic.io`));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else if (error.request) {
|
|
117
|
-
if (error.code === "ECONNABORTED") {
|
|
118
|
-
console.error(getMessageInRedColor(`Your request timed out. Please try again or reach out to our team at support@apimatic.io for help if your problem persists.`));
|
|
119
|
-
}
|
|
120
|
-
else if (error.code === "ENOTFOUND" || error.code === "ERR_NETWORK") {
|
|
121
|
-
throw new Error(getMessageInRedColor(`Network error. Please check your internet connection and try again.`));
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
console.error(getMessageInRedColor(`No response received from the server. Please try again later.`));
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
console.error(getMessageInRedColor(`Failed to regenerate portal: ${error.message}`));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
console.error(getMessageInRedColor(`Failed to regenerate portal: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/controllers/portal/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { PortalServerConfig } from "../../types/portal/quickstart.js";
|
|
2
|
-
export declare class PortalServerService {
|
|
3
|
-
private server;
|
|
4
|
-
private liveReloadServer;
|
|
5
|
-
private readonly app;
|
|
6
|
-
private readonly port;
|
|
7
|
-
private readonly liveReloadPort;
|
|
8
|
-
constructor();
|
|
9
|
-
private findAvailablePort;
|
|
10
|
-
private createLiveReloadServer;
|
|
11
|
-
setupServer(generatedPortalPath: string): Promise<void>;
|
|
12
|
-
startServer(config: PortalServerConfig, noReload?: boolean, displayShutdownMessages?: boolean): Promise<boolean>;
|
|
13
|
-
stopServer(): Promise<void>;
|
|
14
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import express from "express";
|
|
2
|
-
import livereload from "livereload";
|
|
3
|
-
import connectLivereload from "connect-livereload";
|
|
4
|
-
import open from "open";
|
|
5
|
-
import { watchAndRegeneratePortal } from "../../controllers/portal/serve.js";
|
|
6
|
-
import { getMessageInRedColor, isPortInUse } from "../../utils/utils.js";
|
|
7
|
-
export class PortalServerService {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.port = 3000;
|
|
10
|
-
this.liveReloadPort = 35729;
|
|
11
|
-
this.app = express();
|
|
12
|
-
}
|
|
13
|
-
async findAvailablePort(startPort) {
|
|
14
|
-
let port = startPort;
|
|
15
|
-
const maxPort = startPort + 10; // Limit the port search range
|
|
16
|
-
while (port < maxPort) {
|
|
17
|
-
if (!(await isPortInUse(port))) {
|
|
18
|
-
return port;
|
|
19
|
-
}
|
|
20
|
-
port++;
|
|
21
|
-
}
|
|
22
|
-
// If no port is found in the range, return the original port
|
|
23
|
-
return startPort;
|
|
24
|
-
}
|
|
25
|
-
async createLiveReloadServer(generatedPortalPath) {
|
|
26
|
-
try {
|
|
27
|
-
const availablePort = await this.findAvailablePort(this.liveReloadPort);
|
|
28
|
-
this.liveReloadServer = livereload.createServer({
|
|
29
|
-
port: availablePort
|
|
30
|
-
});
|
|
31
|
-
this.liveReloadServer.watch(generatedPortalPath);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
console.log(getMessageInRedColor(`Unable to serve the portal: ${error.message}`));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
async setupServer(generatedPortalPath) {
|
|
38
|
-
await this.createLiveReloadServer(generatedPortalPath);
|
|
39
|
-
if (this.liveReloadServer) {
|
|
40
|
-
this.app.use(connectLivereload());
|
|
41
|
-
}
|
|
42
|
-
this.app.use(express.static(generatedPortalPath));
|
|
43
|
-
}
|
|
44
|
-
async startServer(config, noReload = false, displayShutdownMessages = true) {
|
|
45
|
-
const { generatedPortalPath, targetFolder, configDir, authKey, ignoredPaths, port, openInBrowser } = config;
|
|
46
|
-
const requestedPort = port !== null && port !== void 0 ? port : this.port;
|
|
47
|
-
return new Promise((resolve, reject) => {
|
|
48
|
-
this.server = this.app.listen(requestedPort, () => {
|
|
49
|
-
if (openInBrowser) {
|
|
50
|
-
open(`http://localhost:${requestedPort}`);
|
|
51
|
-
}
|
|
52
|
-
if (!noReload) {
|
|
53
|
-
watchAndRegeneratePortal(targetFolder, generatedPortalPath, configDir, authKey, ignoredPaths);
|
|
54
|
-
}
|
|
55
|
-
if (process.platform !== "darwin") {
|
|
56
|
-
//For non-macOS users.
|
|
57
|
-
if (process.stdin.setRawMode) {
|
|
58
|
-
process.stdin.setRawMode(false);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
resolve(true);
|
|
62
|
-
}).on('error', (err) => {
|
|
63
|
-
if (err.code === 'EADDRINUSE') {
|
|
64
|
-
console.error(getMessageInRedColor(`Port ${requestedPort} is not available. Unable to serve your portal.`));
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
console.error(getMessageInRedColor(`Unable to serve the portal: ${err.message}`));
|
|
68
|
-
}
|
|
69
|
-
reject(err);
|
|
70
|
-
});
|
|
71
|
-
const shutdown = async () => {
|
|
72
|
-
if (displayShutdownMessages) {
|
|
73
|
-
console.log("Shutting down server...");
|
|
74
|
-
}
|
|
75
|
-
await this.stopServer();
|
|
76
|
-
if (displayShutdownMessages) {
|
|
77
|
-
console.log("Server shut down successfully.");
|
|
78
|
-
}
|
|
79
|
-
resolve(true);
|
|
80
|
-
process.exit(0);
|
|
81
|
-
};
|
|
82
|
-
process.on("SIGINT", shutdown);
|
|
83
|
-
process.on("SIGTERM", shutdown);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
async stopServer() {
|
|
87
|
-
if (this.liveReloadServer) {
|
|
88
|
-
this.liveReloadServer.close();
|
|
89
|
-
}
|
|
90
|
-
if (this.server) {
|
|
91
|
-
await new Promise((resolve) => {
|
|
92
|
-
this.server.close(() => resolve());
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/portal/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { getMessageInRedColor, isPortInUse } from "../../utils/utils.js";
|
|
2
|
-
export class PortValidator {
|
|
3
|
-
constructor(error) {
|
|
4
|
-
this.error = error;
|
|
5
|
-
}
|
|
6
|
-
async validate(port) {
|
|
7
|
-
if (isNaN(port) || port < 1 || port > 65535) {
|
|
8
|
-
this.error(getMessageInRedColor("The specified port number is invalid. Please enter a valid port."));
|
|
9
|
-
}
|
|
10
|
-
const portInUse = await isPortInUse(port);
|
|
11
|
-
if (portInUse) {
|
|
12
|
-
this.error(getMessageInRedColor(`Port ${port} is already in use. Please provide an alternative port number to continue.`));
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=portValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portValidator.js","sourceRoot":"","sources":["../../../src/validators/common/portValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,OAAO,aAAa;IACxB,YAA6B,KAAgC;QAAhC,UAAK,GAAL,KAAK,CAA2B;IAAG,CAAC;IAEjE,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,kEAAkE,CAAC,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,IAAI,4EAA4E,CAAC,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DirectoryValidator } from "../common/directoryValidator.js";
|
|
2
|
-
import { PortValidator } from "../common/portValidator.js";
|
|
3
|
-
export class PortalServeValidator {
|
|
4
|
-
constructor(error) {
|
|
5
|
-
this.portValidator = new PortValidator(error);
|
|
6
|
-
this.directoryValidator = new DirectoryValidator(error);
|
|
7
|
-
}
|
|
8
|
-
async validate(port, destination, sourceDir, portalDir) {
|
|
9
|
-
await this.portValidator.validate(port);
|
|
10
|
-
this.directoryValidator.validateSourceDirectory(sourceDir);
|
|
11
|
-
await this.directoryValidator.validateGeneratedPortalDestinationDirectory(destination, portalDir);
|
|
12
|
-
this.directoryValidator.validatePortalSourceDirectory(sourceDir);
|
|
13
|
-
this.directoryValidator.validatePortalSourceSpecDirectory(sourceDir);
|
|
14
|
-
this.directoryValidator.validateGeneratedPortalDestinationDirectoryIsEmpty(destination);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=serveValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serveValidator.js","sourceRoot":"","sources":["../../../src/validators/portal/serveValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,OAAO,oBAAoB;IAI/B,YAAY,KAAgC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,WAAmB,EAAE,SAAiB,EAAE,SAAiB;QACpF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,kBAAkB,CAAC,2CAA2C,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAClG,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,CAAC,kDAAkD,CAAC,WAAW,CAAC,CAAC;IAC1F,CAAC;CACF"}
|