@apimatic/cli 1.1.0-alpha.5 → 1.1.0-alpha.6
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 +115 -37
- package/bin/run +5 -1
- package/lib/client-utils/auth-manager.js +3 -3
- package/lib/client-utils/sdk-client.js +1 -0
- package/lib/commands/api/transform.d.ts +7 -7
- package/lib/commands/api/transform.js +18 -15
- package/lib/commands/api/validate.d.ts +4 -4
- package/lib/commands/api/validate.js +13 -10
- package/lib/commands/auth/login.d.ts +2 -2
- package/lib/commands/auth/login.js +29 -12
- package/lib/commands/auth/logout.d.ts +1 -1
- package/lib/commands/auth/logout.js +3 -2
- package/lib/commands/auth/status.d.ts +1 -1
- package/lib/commands/auth/status.js +3 -2
- package/lib/commands/portal/generate.d.ts +6 -6
- package/lib/commands/portal/generate.js +16 -11
- package/lib/commands/portal/quickstart.d.ts +10 -0
- package/lib/commands/portal/quickstart.js +83 -0
- package/lib/commands/portal/serve.d.ts +17 -0
- package/lib/commands/portal/serve.js +143 -0
- package/lib/commands/sdk/generate.d.ts +8 -8
- package/lib/commands/sdk/generate.js +16 -13
- package/lib/config/axios-config.d.ts +2 -0
- package/lib/config/axios-config.js +12 -0
- package/lib/config/env.d.ts +26 -0
- package/lib/config/env.js +28 -1
- package/lib/controllers/api/transform.js +6 -5
- package/lib/controllers/api/validate.d.ts +1 -1
- package/lib/controllers/api/validate.js +25 -8
- package/lib/controllers/portal/generate.d.ts +2 -1
- package/lib/controllers/portal/generate.js +19 -11
- package/lib/controllers/portal/quickstart.d.ts +14 -0
- package/lib/controllers/portal/quickstart.js +206 -0
- package/lib/controllers/portal/serve.d.ts +4 -0
- package/lib/controllers/portal/serve.js +152 -0
- package/lib/controllers/sdk/generate.js +7 -6
- package/lib/index.d.ts +1 -1
- package/lib/index.js +3 -3
- package/lib/prompts/portal/quickstart.d.ts +32 -0
- package/lib/prompts/portal/quickstart.js +216 -0
- package/lib/prompts/portal/serve.d.ts +7 -0
- package/lib/prompts/portal/serve.js +25 -0
- package/lib/services/portal/server.d.ts +11 -0
- package/lib/services/portal/server.js +71 -0
- package/lib/types/api/transform.d.ts +0 -1
- package/lib/types/api/transform.js +1 -0
- package/lib/types/api/validate.js +1 -0
- package/lib/types/portal/generate.js +1 -0
- package/lib/types/portal/quickstart.d.ts +17 -0
- package/lib/types/portal/quickstart.js +3 -0
- package/lib/types/sdk/generate.js +1 -0
- package/lib/types/utils.js +1 -0
- package/lib/utils/utils.d.ts +28 -4
- package/lib/utils/utils.js +289 -53
- package/lib/validators/common/directoryValidator.d.ts +9 -0
- package/lib/validators/common/directoryValidator.js +53 -0
- package/lib/validators/common/portValidator.d.ts +5 -0
- package/lib/validators/common/portValidator.js +20 -0
- package/lib/validators/portal/serveValidator.d.ts +6 -0
- package/lib/validators/portal/serveValidator.js +21 -0
- package/package.json +59 -23
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePortal = exports.watchAndRegeneratePortal = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const chokidar = require("chokidar");
|
|
6
|
+
const sdk_1 = require("@apimatic/sdk");
|
|
7
|
+
const sdk_client_1 = require("../../client-utils/sdk-client");
|
|
8
|
+
const utils_1 = require("../../utils/utils");
|
|
9
|
+
const generate_1 = require("./generate");
|
|
10
|
+
const axios_1 = require("axios");
|
|
11
|
+
const progressSpinner = {
|
|
12
|
+
frames: ["◒", "◐", "◓", "◑"].map((frame) => (0, utils_1.getMessageInMagentaColor)(frame)),
|
|
13
|
+
isRunning: false,
|
|
14
|
+
interval: null,
|
|
15
|
+
frameIndex: 0,
|
|
16
|
+
text: "Regenerating portal... ",
|
|
17
|
+
start() {
|
|
18
|
+
if (this.interval) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
this.interval = setInterval(() => {
|
|
22
|
+
this.frameIndex = (this.frameIndex + 1) % this.frames.length;
|
|
23
|
+
process.stdout.write(`\r\u001b[K${this.format()}`);
|
|
24
|
+
}, 200);
|
|
25
|
+
},
|
|
26
|
+
stop() {
|
|
27
|
+
if (this.interval !== null) {
|
|
28
|
+
clearInterval(this.interval);
|
|
29
|
+
this.interval = null;
|
|
30
|
+
}
|
|
31
|
+
process.stdout.write("\r\u001b[K ✅ Portal regenerated successfully. ");
|
|
32
|
+
},
|
|
33
|
+
error() {
|
|
34
|
+
if (this.interval !== null) {
|
|
35
|
+
clearInterval(this.interval);
|
|
36
|
+
this.interval = null;
|
|
37
|
+
}
|
|
38
|
+
process.stdout.write("\r\u001b[K ❌ Portal regeneration unsuccessful. ");
|
|
39
|
+
},
|
|
40
|
+
format() {
|
|
41
|
+
return ` ${this.frames[this.frameIndex]} ${this.text}`;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const watchAndRegeneratePortal = async (sourceDir, portalDir, configDir, overrideAuthKey, ignoredPaths = []) => {
|
|
45
|
+
// Convert ignoredPaths to absolute paths for consistent comparison
|
|
46
|
+
const generatedZipPath = path.join(sourceDir, "portal_source.zip");
|
|
47
|
+
const generatedPortalZipPath = path.join(sourceDir, "generated_portal.zip");
|
|
48
|
+
const generatedPortalPath = path.join(path.dirname(portalDir), "api-portal");
|
|
49
|
+
const absoluteIgnoredPaths = [
|
|
50
|
+
...ignoredPaths.filter((ignoredPath) => ignoredPath.trim() !== ""),
|
|
51
|
+
generatedZipPath,
|
|
52
|
+
generatedPortalZipPath,
|
|
53
|
+
generatedPortalPath
|
|
54
|
+
].map((ignoredPath) => path.resolve(sourceDir, ignoredPath));
|
|
55
|
+
const watcher = chokidar.watch(sourceDir, {
|
|
56
|
+
ignored: [...absoluteIgnoredPaths, /(^|[/\\])\..+/],
|
|
57
|
+
ignoreInitial: true,
|
|
58
|
+
persistent: true
|
|
59
|
+
});
|
|
60
|
+
const deletedDirectories = new Set();
|
|
61
|
+
let cancellationToken = null;
|
|
62
|
+
watcher
|
|
63
|
+
.on("all", async (event, path) => {
|
|
64
|
+
if (event == "unlinkDir") {
|
|
65
|
+
deletedDirectories.add(path);
|
|
66
|
+
}
|
|
67
|
+
if (cancellationToken) {
|
|
68
|
+
cancellationToken.cancel("New portal regeneration request, operation cancelled.");
|
|
69
|
+
}
|
|
70
|
+
cancellationToken = axios_1.default.CancelToken.source();
|
|
71
|
+
if (event == "unlink") {
|
|
72
|
+
for (const dir of deletedDirectories) {
|
|
73
|
+
if (path.startsWith(dir)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
await handleFileChange(sourceDir, portalDir, configDir, overrideAuthKey, absoluteIgnoredPaths, cancellationToken);
|
|
79
|
+
})
|
|
80
|
+
.on("error", (error) => {
|
|
81
|
+
console.error("Watcher error:", error);
|
|
82
|
+
});
|
|
83
|
+
return watcher;
|
|
84
|
+
};
|
|
85
|
+
exports.watchAndRegeneratePortal = watchAndRegeneratePortal;
|
|
86
|
+
const generatePortal = async (sourceDir, portalDir, configDir, ignoredPaths = [], overrideAuthKey = null, cancellationToken = null) => {
|
|
87
|
+
const client = await sdk_client_1.SDKClient.getInstance().getClient(overrideAuthKey, configDir);
|
|
88
|
+
const docsPortalController = new sdk_1.DocsPortalManagementController(client);
|
|
89
|
+
const zippedBuildFilePath = await (0, utils_1.validateAndZipPortalSource)(sourceDir, path.join(sourceDir, "portal_source.zip"), ignoredPaths);
|
|
90
|
+
const generatePortalParams = {
|
|
91
|
+
zippedBuildFilePath,
|
|
92
|
+
portalFolderPath: portalDir,
|
|
93
|
+
zippedPortalPath: path.join(sourceDir, "generated_portal.zip"),
|
|
94
|
+
docsPortalController,
|
|
95
|
+
overrideAuthKey,
|
|
96
|
+
zip: false
|
|
97
|
+
};
|
|
98
|
+
await (0, generate_1.downloadDocsPortal)(generatePortalParams, configDir, cancellationToken);
|
|
99
|
+
};
|
|
100
|
+
exports.generatePortal = generatePortal;
|
|
101
|
+
async function handleFileChange(sourceDir, portalDir, configDir, overrideAuthKey, absoluteIgnoredPaths, cancellationToken) {
|
|
102
|
+
progressSpinner.start();
|
|
103
|
+
try {
|
|
104
|
+
await (0, exports.generatePortal)(sourceDir, portalDir, configDir, absoluteIgnoredPaths, overrideAuthKey, cancellationToken);
|
|
105
|
+
progressSpinner.stop();
|
|
106
|
+
await (0, utils_1.cleanUpGeneratedPortalFiles)(sourceDir);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (axios_1.default.isCancel(error)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
progressSpinner.error();
|
|
113
|
+
await (0, utils_1.cleanUpGeneratedPortalFiles)(sourceDir);
|
|
114
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
115
|
+
if (error.response) {
|
|
116
|
+
if (error.response.status === 400) {
|
|
117
|
+
console.error((0, utils_1.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.`));
|
|
118
|
+
}
|
|
119
|
+
else if (error.response.status === 403) {
|
|
120
|
+
console.error((0, utils_1.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.`));
|
|
121
|
+
}
|
|
122
|
+
else if (error.response.status === 422) {
|
|
123
|
+
console.error((0, utils_1.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.`));
|
|
124
|
+
}
|
|
125
|
+
else if (error.response.status === 500) {
|
|
126
|
+
console.error((0, utils_1.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`));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.error((0, utils_1.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`));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else if (error.request) {
|
|
133
|
+
if (error.code === "ECONNABORTED") {
|
|
134
|
+
console.error((0, utils_1.getMessageInRedColor)(`Your request timed out. Please try again or reach out to our team at support@apimatic.io for help if your problem persists.`));
|
|
135
|
+
}
|
|
136
|
+
else if (error.code === "ENOTFOUND" || error.code === "ERR_NETWORK") {
|
|
137
|
+
throw new Error((0, utils_1.getMessageInRedColor)(`Network error. Please check your internet connection and try again.`));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
console.error((0, utils_1.getMessageInRedColor)(`No response received from the server. Please try again later.`));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
console.error((0, utils_1.getMessageInRedColor)(`Failed to regenerate portal: ${error.message}`));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.error((0, utils_1.getMessageInRedColor)(`Failed to regenerate portal: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJvbGxlcnMvcG9ydGFsL3NlcnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFDckMsdUNBQXVFO0FBQ3ZFLDhEQUEwRDtBQUMxRCw2Q0FLMkI7QUFFM0IseUNBQWdEO0FBQ2hELGlDQUFpRDtBQUVqRCxNQUFNLGVBQWUsR0FBRztJQUN0QixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUEsZ0NBQXdCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUUsU0FBUyxFQUFFLEtBQUs7SUFDaEIsUUFBUSxFQUFFLElBQTZCO0lBQ3ZDLFVBQVUsRUFBRSxDQUFDO0lBQ2IsSUFBSSxFQUFFLHlCQUF5QjtJQUMvQixLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDN0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEs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
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.downloadGeneratedSDK = exports.getSDKGenerationId = void 0;
|
|
4
4
|
const fs = require("fs-extra");
|
|
5
|
-
const
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
6
|
const sdk_1 = require("@apimatic/sdk");
|
|
7
7
|
const sdk_2 = require("@apimatic/sdk");
|
|
8
8
|
const generate_1 = require("../../types/sdk/generate");
|
|
9
9
|
const utils_1 = require("../../utils/utils");
|
|
10
10
|
const getSDKGenerationId = async ({ file, url, platform }, sdkGenerationController) => {
|
|
11
|
-
|
|
11
|
+
core_1.ux.action.start("Generating SDK");
|
|
12
12
|
let generation;
|
|
13
13
|
const sdkPlatform = getSDKPlatform(platform);
|
|
14
14
|
if (file) {
|
|
@@ -26,7 +26,7 @@ const getSDKGenerationId = async ({ file, url, platform }, sdkGenerationControll
|
|
|
26
26
|
else {
|
|
27
27
|
throw new Error("Please provide a specification file");
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
core_1.ux.action.stop();
|
|
30
30
|
return generation.result.id;
|
|
31
31
|
};
|
|
32
32
|
exports.getSDKGenerationId = getSDKGenerationId;
|
|
@@ -45,17 +45,17 @@ const getSDKPlatform = (platform) => {
|
|
|
45
45
|
};
|
|
46
46
|
// Download Platform
|
|
47
47
|
const downloadGeneratedSDK = async ({ codeGenId, zippedSDKPath, sdkFolderPath, zip }, sdkGenerationController) => {
|
|
48
|
-
|
|
48
|
+
core_1.ux.action.start("Downloading SDK");
|
|
49
49
|
const { result } = await sdkGenerationController.downloadSDK(codeGenId);
|
|
50
50
|
if (result.readable) {
|
|
51
51
|
if (!zip) {
|
|
52
52
|
await (0, utils_1.unzipFile)(result, sdkFolderPath);
|
|
53
|
-
|
|
53
|
+
core_1.ux.action.stop();
|
|
54
54
|
return sdkFolderPath;
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
57
|
await (0, utils_1.writeFileUsingReadableStream)(result, zippedSDKPath);
|
|
58
|
-
|
|
58
|
+
core_1.ux.action.stop();
|
|
59
59
|
return zippedSDKPath;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -64,3 +64,4 @@ const downloadGeneratedSDK = async ({ codeGenId, zippedSDKPath, sdkFolderPath, z
|
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
exports.downloadGeneratedSDK = downloadGeneratedSDK;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJvbGxlcnMvc2RrL2dlbmVyYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixzQ0FBaUM7QUFFakMsdUNBS3VCO0FBQ3ZCLHVDQUF5RDtBQUN6RCx1REFBa0c7QUFDbEcsNkNBQTRFO0FBRXJFLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxFQUNyQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFzQixFQUMzQyx1QkFBNkQsRUFDNUMsRUFBRTtJQUNuQixTQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWxDLElBQUksVUFBMkMsQ0FBQztJQUNoRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFjLENBQUM7SUFDMUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sY0FBYyxHQUFHLElBQUksaUJBQVcsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRSxVQUFVLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDN0YsQ0FBQztTQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixrQ0FBa0M7UUFDbEMsTUFBTSxJQUFJLEdBQTZCO1lBQ3JDLEdBQUcsRUFBRSxHQUFHO1lBQ1IsUUFBUSxFQUFFLFdBQVc7U0FDdEIsQ0FBQztRQUNGLFVBQVUsR0FBRyxNQUFNLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxTQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsa0JBQWtCLHNCQXVCN0I7QUFFRiw4RkFBOEY7QUFDOUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFnQixFQUErQixFQUFFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTywwQkFBZSxDQUFDLFFBQXdDLENBQUMsQ0FBQztJQUNuRSxDQUFDO1NBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFxQixDQUFDLEVBQUUsQ0FBQztRQUNwRSxPQUFPLFFBQXFCLENBQUM7SUFDL0IsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixvQkFBb0I7QUFDYixNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDdkMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQXFCLEVBQ25FLHVCQUE2RCxFQUM1QyxFQUFFO0lBQ25CLFNBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUE4QyxNQUFNLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuSCxJQUFLLE1BQWdDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFBLGlCQUFTLEVBQUMsTUFBK0IsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNoRSxTQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFBLG9DQUE0QixFQUFDLE1BQStCLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDbkYsU0FBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDL0MsQ0FBQztBQUNILENBQUMsQ0FBQztBQW5CVyxRQUFBLG9CQUFvQix3QkFtQi9CIn0=
|
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,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var core_1 = require("@oclif/core");
|
|
4
|
+
Object.defineProperty(exports, "run", { enumerable: true, get: function () { return core_1.run; } });
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBa0M7QUFBekIsMkZBQUEsR0FBRyxPQUFBIn0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare class PortalQuickstartPrompts {
|
|
2
|
+
private readonly spin;
|
|
3
|
+
private readonly vscodeExtensionUrl;
|
|
4
|
+
private readonly serverUrl;
|
|
5
|
+
private readonly referenceDocumentation;
|
|
6
|
+
private readonly customizeTheSdks;
|
|
7
|
+
private readonly portalDirectory;
|
|
8
|
+
private readonly defaultPortalDirectory;
|
|
9
|
+
displayWelcomeMessage(): void;
|
|
10
|
+
loginPrompt(): Promise<{
|
|
11
|
+
email: string;
|
|
12
|
+
password: string;
|
|
13
|
+
}>;
|
|
14
|
+
displayLoggingInMessage(): void;
|
|
15
|
+
displayLoggingInErrorMessage(): void;
|
|
16
|
+
displayLoggedInMessage(): void;
|
|
17
|
+
specPrompt(): Promise<string>;
|
|
18
|
+
displaySpecValidationMessage(): void;
|
|
19
|
+
displaySpecValidationSuccessMessage(): void;
|
|
20
|
+
displaySpecValidationErrorMessage(): void;
|
|
21
|
+
displaySpecValidationFailureMessage(): void;
|
|
22
|
+
specValidationFailurePrompt(): Promise<void>;
|
|
23
|
+
sdkLanguagesPrompt(): Promise<string[]>;
|
|
24
|
+
buildDirectoryPrompt(): Promise<string>;
|
|
25
|
+
displayBuildDirectoryGenerationMessage(): void;
|
|
26
|
+
displayBuildDirectoryGenerationErrorMessage(): void;
|
|
27
|
+
displayBuildDirectoryGenerationSuccessMessage(targetFolder: string): void;
|
|
28
|
+
displayBuildDirectoryAsTree(targetFolder: string): void;
|
|
29
|
+
displayPortalGenerationMessage(): void;
|
|
30
|
+
displayPortalGenerationSuccessMessage(): void;
|
|
31
|
+
displayOutroMessage(): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PortalQuickstartPrompts = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const treeify = require("treeify");
|
|
7
|
+
const prompts_1 = require("@clack/prompts");
|
|
8
|
+
const utils_1 = require("../../utils/utils");
|
|
9
|
+
class PortalQuickstartPrompts {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.spin = (0, prompts_1.spinner)();
|
|
12
|
+
this.vscodeExtensionUrl = "\u001b[4mhttps://marketplace.visualstudio.com/items?itemName=apimatic-developers.apimatic-for-vscode\u001b[0m";
|
|
13
|
+
this.serverUrl = "\u001b[4mhttp://localhost:3000\u001b[0m";
|
|
14
|
+
this.referenceDocumentation = "\u001b[4mhttps://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/overview-generating-api-portal\u001b[0m";
|
|
15
|
+
this.customizeTheSdks = "\u001b[4mhttps://docs.apimatic.io/generate-sdks/codegen-settings/codegen-settings-overview\u001b[0m";
|
|
16
|
+
this.portalDirectory = "apimatic-quickstart-portal";
|
|
17
|
+
this.defaultPortalDirectory = path.join(process.cwd(), this.portalDirectory);
|
|
18
|
+
}
|
|
19
|
+
displayWelcomeMessage() {
|
|
20
|
+
(0, prompts_1.intro)(`Hello there 👋`);
|
|
21
|
+
prompts_1.log.message(`This wizard will help you set up an API Portal via APIMatic's Docs as Code workflow in 4 simple steps.`);
|
|
22
|
+
prompts_1.log.message(`Let's get started! 🚀`);
|
|
23
|
+
}
|
|
24
|
+
async loginPrompt() {
|
|
25
|
+
prompts_1.log.message(`Please log in to continue.`);
|
|
26
|
+
const email = await (0, prompts_1.text)({
|
|
27
|
+
message: "Enter your registered email:",
|
|
28
|
+
validate: (input) => {
|
|
29
|
+
if (!input) {
|
|
30
|
+
return (0, utils_1.getMessageInRedColor)("Email is required.");
|
|
31
|
+
}
|
|
32
|
+
const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
33
|
+
if (!emailRegex.test(input)) {
|
|
34
|
+
return (0, utils_1.getMessageInRedColor)("Please enter a valid email address.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if ((0, prompts_1.isCancel)(email)) {
|
|
39
|
+
(0, prompts_1.cancel)("Operation cancelled.");
|
|
40
|
+
return process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
const pass = await (0, prompts_1.password)({
|
|
43
|
+
message: "Enter your password:",
|
|
44
|
+
validate: (input) => {
|
|
45
|
+
if (!input) {
|
|
46
|
+
return (0, utils_1.getMessageInRedColor)("Password is required.");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
if ((0, prompts_1.isCancel)(pass)) {
|
|
51
|
+
(0, prompts_1.cancel)("Operation cancelled.");
|
|
52
|
+
return process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
return { email: String(email), password: String(pass) };
|
|
55
|
+
}
|
|
56
|
+
displayLoggingInMessage() {
|
|
57
|
+
this.spin.start((0, utils_1.getMessageInMagentaColor)("Logging in"));
|
|
58
|
+
}
|
|
59
|
+
displayLoggingInErrorMessage() {
|
|
60
|
+
this.spin.stop((0, utils_1.getMessageInRedColor)(`There was a problem logging in. Please verify your credentials and try again.`));
|
|
61
|
+
}
|
|
62
|
+
displayLoggedInMessage() {
|
|
63
|
+
this.spin.stop((0, utils_1.getMessageInCyanColor)("✅ Login successful!"));
|
|
64
|
+
}
|
|
65
|
+
async specPrompt() {
|
|
66
|
+
prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 1 of 4: Import your OpenAPI Definition`));
|
|
67
|
+
const spec = await (0, prompts_1.text)({
|
|
68
|
+
message: `Provide a local path or a public URL for your OpenAPI Definition file:`,
|
|
69
|
+
placeholder: "Press Enter to use a sample OpenAPI file for APIMatic",
|
|
70
|
+
defaultValue: "",
|
|
71
|
+
validate: (input) => {
|
|
72
|
+
if (!input)
|
|
73
|
+
return;
|
|
74
|
+
if ((0, utils_1.isValidUrl)(input))
|
|
75
|
+
return;
|
|
76
|
+
const resolvedPath = path.resolve(input);
|
|
77
|
+
if (fs.existsSync(resolvedPath)) {
|
|
78
|
+
if (fs.statSync(resolvedPath).isFile()) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
return (0, utils_1.getMessageInRedColor)("Error: The specified path does not point to a valid API Definition file or a zip archive containing API definition files. Please try again.");
|
|
82
|
+
}
|
|
83
|
+
return (0, utils_1.getMessageInRedColor)("Error: The specified file does not exist. Please enter a valid file path.");
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
if ((0, prompts_1.isCancel)(spec)) {
|
|
87
|
+
(0, prompts_1.cancel)("Operation cancelled.");
|
|
88
|
+
return process.exit(0);
|
|
89
|
+
}
|
|
90
|
+
return String(spec);
|
|
91
|
+
}
|
|
92
|
+
displaySpecValidationMessage() {
|
|
93
|
+
prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 2 of 4: Validate and Lint your OpenAPI file`));
|
|
94
|
+
this.spin.start((0, utils_1.getMessageInMagentaColor)(`Running your API Definition through APIMatic's 1200+ CodeGen Specific validation and linting rules 🔍 `));
|
|
95
|
+
}
|
|
96
|
+
displaySpecValidationSuccessMessage() {
|
|
97
|
+
this.spin.stop((0, utils_1.getMessageInCyanColor)(`✅ Validation Successful.`));
|
|
98
|
+
}
|
|
99
|
+
displaySpecValidationErrorMessage() {
|
|
100
|
+
this.spin.stop((0, utils_1.getMessageInRedColor)(`Something went wrong while validating your spec.`));
|
|
101
|
+
}
|
|
102
|
+
displaySpecValidationFailureMessage() {
|
|
103
|
+
this.spin.stop((0, utils_1.getMessageInRedColor)(`❗ Oops, it looks like there are some errors in your API Definition.`));
|
|
104
|
+
}
|
|
105
|
+
async specValidationFailurePrompt() {
|
|
106
|
+
const useSampleSpec = await (0, prompts_1.select)({
|
|
107
|
+
message: `How would you like to proceed?`,
|
|
108
|
+
options: [
|
|
109
|
+
{ value: "exit", label: `1. Fix the issues using APIMatic's interactive VS Code Extension: ${this.vscodeExtensionUrl}` },
|
|
110
|
+
{ value: "continue", label: `2. Use an example API spec instead (recommended)` }
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
if ((0, prompts_1.isCancel)(useSampleSpec)) {
|
|
114
|
+
(0, prompts_1.cancel)("Operation cancelled.");
|
|
115
|
+
return process.exit(0);
|
|
116
|
+
}
|
|
117
|
+
if (useSampleSpec === "exit") {
|
|
118
|
+
(0, prompts_1.outro)((0, utils_1.getMessageInCyanColor)("Good luck fixing your API definition! 🛠️ Feel free to run this command again once you're done."));
|
|
119
|
+
process.exit(0);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async sdkLanguagesPrompt() {
|
|
123
|
+
prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 3 of 4: Select programming languages`));
|
|
124
|
+
const languages = (await (0, prompts_1.multiselect)({
|
|
125
|
+
message: "💻 Your API Portal will contain SDKs and SDK Documentation in the following Languages. Press enter to continue with all languages, or use the arrow keys and spacebar to customize your selection:",
|
|
126
|
+
options: [
|
|
127
|
+
{ label: "HTTP", value: "http" },
|
|
128
|
+
{ label: "Typescript", value: "typescript" },
|
|
129
|
+
{ label: "Ruby", value: "ruby" },
|
|
130
|
+
{ label: "Python", value: "python" },
|
|
131
|
+
{ label: "Java", value: "java" },
|
|
132
|
+
{ label: "C#", value: "csharp" },
|
|
133
|
+
{ label: "PHP", value: "php" },
|
|
134
|
+
{ label: "Go", value: "go" }
|
|
135
|
+
],
|
|
136
|
+
initialValues: ["http", "typescript", "ruby", "python", "java", "csharp", "php", "go"]
|
|
137
|
+
}));
|
|
138
|
+
if ((0, prompts_1.isCancel)(languages)) {
|
|
139
|
+
(0, prompts_1.cancel)("Operation cancelled.");
|
|
140
|
+
return process.exit(0);
|
|
141
|
+
}
|
|
142
|
+
return languages;
|
|
143
|
+
}
|
|
144
|
+
async buildDirectoryPrompt() {
|
|
145
|
+
prompts_1.log.step((0, utils_1.getMessageInOrangeColor)(`Step 4 of 4: Generate source files for Docs as Code`));
|
|
146
|
+
const directory = await (0, prompts_1.text)({
|
|
147
|
+
message: "Enter the directory path where you would like to setup the API Portal :",
|
|
148
|
+
placeholder: "Enter absolute path to the directory or leave it empty to use the current directory.",
|
|
149
|
+
defaultValue: "./",
|
|
150
|
+
validate: (input) => {
|
|
151
|
+
const dirPath = path.resolve(input.trim() || this.portalDirectory);
|
|
152
|
+
if (!fs.existsSync(dirPath) && dirPath != this.defaultPortalDirectory) {
|
|
153
|
+
return (0, utils_1.getMessageInRedColor)("Error: The specified directory path does not exist. Please try again.");
|
|
154
|
+
}
|
|
155
|
+
if (dirPath !== this.defaultPortalDirectory) {
|
|
156
|
+
const files = fs.readdirSync(dirPath).filter(item => !item.startsWith('.'));
|
|
157
|
+
;
|
|
158
|
+
if (files.length > 0) {
|
|
159
|
+
return (0, utils_1.getMessageInRedColor)("Error: The target directory is not empty. Please provide a path to an empty directory or clear its contents.");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else if (fs.existsSync(dirPath) && fs.readdirSync(dirPath).length > 0) {
|
|
163
|
+
return (0, utils_1.getMessageInRedColor)("Error: The target directory is not empty. Please provide a path to an empty directory or clear its contents.");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
if ((0, prompts_1.isCancel)(directory)) {
|
|
168
|
+
(0, prompts_1.cancel)("Operation cancelled.");
|
|
169
|
+
return process.exit(0);
|
|
170
|
+
}
|
|
171
|
+
if (directory === "./") {
|
|
172
|
+
return this.defaultPortalDirectory;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return path.join(String(directory), this.portalDirectory);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
displayBuildDirectoryGenerationMessage() {
|
|
179
|
+
this.spin.start((0, utils_1.getMessageInMagentaColor)("Generating build directory... ⚙️"));
|
|
180
|
+
}
|
|
181
|
+
displayBuildDirectoryGenerationErrorMessage() {
|
|
182
|
+
this.spin.stop((0, utils_1.getMessageInRedColor)(`Something went wrong while setting up your build directory.`));
|
|
183
|
+
}
|
|
184
|
+
displayBuildDirectoryGenerationSuccessMessage(targetFolder) {
|
|
185
|
+
this.spin.stop((0, utils_1.getMessageInCyanColor)(`📁 Directory created at ${targetFolder}`));
|
|
186
|
+
}
|
|
187
|
+
displayBuildDirectoryAsTree(targetFolder) {
|
|
188
|
+
const buildDirectory = (0, utils_1.directoryToJson)(targetFolder);
|
|
189
|
+
const tree = treeify.asTree(buildDirectory, true, true);
|
|
190
|
+
const coloredLogString = tree
|
|
191
|
+
.split("\n")
|
|
192
|
+
.map((line) => line.replace(/#.*/, (match) => (0, utils_1.getMessageInGreenColor)(match)))
|
|
193
|
+
.join("\n");
|
|
194
|
+
prompts_1.log.info(coloredLogString);
|
|
195
|
+
}
|
|
196
|
+
displayPortalGenerationMessage() {
|
|
197
|
+
this.spin.start((0, utils_1.getMessageInMagentaColor)("Setting up portal"));
|
|
198
|
+
}
|
|
199
|
+
displayPortalGenerationSuccessMessage() {
|
|
200
|
+
this.spin.stop((0, utils_1.getMessageInCyanColor)("✅ Portal setup complete!"));
|
|
201
|
+
}
|
|
202
|
+
displayOutroMessage() {
|
|
203
|
+
prompts_1.log.step((0, utils_1.getMessageInCyanColor)(`📢 Your API Portal is live at: ${this.serverUrl}\n`) +
|
|
204
|
+
(0, utils_1.getMessageInCyanColor)(`Hot reload enabled! Edit files in ./apimatic-quickstart-portal to see changes instantly reflected in your API Portal.\n`) +
|
|
205
|
+
(0, utils_1.getMessageInCyanColor)(`Press CTRL+C to stop the server.\n\n`) +
|
|
206
|
+
(0, utils_1.getMessageInCyanColor)(`What's next?\n`) +
|
|
207
|
+
(0, utils_1.getMessageInCyanColor)(`- Check out the Interactive Playground in your API Portal.\n`) +
|
|
208
|
+
(0, utils_1.getMessageInCyanColor)(`- Read the reference documentation to learn more about how you can customize this API Portal: ${this.referenceDocumentation}`) +
|
|
209
|
+
(0, utils_1.getMessageInCyanColor)(` \n`) +
|
|
210
|
+
(0, utils_1.getMessageInCyanColor)(`- Review the SDK Documentation for your favourite programming language and download an SDK from the API Portal.\n`) +
|
|
211
|
+
(0, utils_1.getMessageInCyanColor)(`- Check out how you can customize the SDKs using Code Generation settings: ${this.customizeTheSdks}`) +
|
|
212
|
+
(0, utils_1.getMessageInCyanColor)(` \n`));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.PortalQuickstartPrompts = PortalQuickstartPrompts;
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2tzdGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm9tcHRzL3BvcnRhbC9xdWlja3N0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLDRDQUFtSDtBQUNuSCw2Q0FRMkI7QUFFM0IsTUFBYSx1QkFBdUI7SUFBcEM7UUFDbUIsU0FBSSxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFDO1FBQ2pCLHVCQUFrQixHQUNqQywrR0FBK0csQ0FBQztRQUNqRyxjQUFTLEdBQUcseUNBQXlDLENBQUM7UUFDdEQsMkJBQXNCLEdBQ3JDLG9JQUFvSSxDQUFDO1FBQ3RILHFCQUFnQixHQUMvQixxR0FBcUcsQ0FBQztRQUN2RixvQkFBZSxHQUFHLDRCQUE0QixDQUFDO1FBQy9DLDJCQUFzQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQW1RM0YsQ0FBQztJQWpRQyxxQkFBcUI7UUFDbkIsSUFBQSxlQUFLLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QixhQUFHLENBQUMsT0FBTyxDQUNULHdHQUF3RyxDQUN6RyxDQUFDO1FBQ0YsYUFBRyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLGFBQUcsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUUxQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsY0FBSSxFQUFDO1lBQ3ZCLE9BQU8sRUFBRSw4QkFBOEI7WUFDdkMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDWCxPQUFPLElBQUEsNEJBQW9CLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFD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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PortalServePrompts = void 0;
|
|
4
|
+
const prompts_1 = require("@clack/prompts");
|
|
5
|
+
const utils_1 = require("../../utils/utils");
|
|
6
|
+
class PortalServePrompts {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.spin = (0, prompts_1.spinner)();
|
|
9
|
+
}
|
|
10
|
+
displayGeneratingPortalMessage() {
|
|
11
|
+
this.spin.start(`Generating portal`);
|
|
12
|
+
}
|
|
13
|
+
displayGeneratingPortalErrorMessage() {
|
|
14
|
+
this.spin.stop((0, utils_1.getMessageInRedColor)(`There was an error while generating the portal.`));
|
|
15
|
+
}
|
|
16
|
+
displayGeneratedPortalMessage(portalDir) {
|
|
17
|
+
this.spin.stop(`Portal generated successfully at ${portalDir}`);
|
|
18
|
+
}
|
|
19
|
+
displayOutroMessage(port) {
|
|
20
|
+
prompts_1.log.message(`Server started at http://localhost:${port}`);
|
|
21
|
+
(0, prompts_1.outro)(`Press CTRL+C to stop the server.`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.PortalServePrompts = PortalServePrompts;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvbXB0cy9wb3J0YWwvc2VydmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQXFEO0FBQ3JELDZDQUF5RDtBQUV6RCxNQUFhLGtCQUFrQjtJQUEvQjtRQUNtQixTQUFJLEdBQUcsSUFBQSxpQkFBTyxHQUFFLENBQUM7SUFrQnBDLENBQUM7SUFoQkMsOEJBQThCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELG1DQUFtQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLDRCQUFvQixFQUFDLGlEQUFpRCxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsNkJBQTZCLENBQUMsU0FBaUI7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0NBQW9DLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDOUIsYUFBRyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFBLGVBQUssRUFBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQW5CRCxnREFtQkMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PortalServerConfig } from "../../types/portal/quickstart";
|
|
2
|
+
export declare class PortalServerService {
|
|
3
|
+
private server;
|
|
4
|
+
private liveReloadServer;
|
|
5
|
+
private readonly app;
|
|
6
|
+
private readonly port;
|
|
7
|
+
constructor();
|
|
8
|
+
setupServer(generatedPortalPath: string): void;
|
|
9
|
+
startServer(config: PortalServerConfig, noReload?: boolean, displayShutdownMessages?: boolean): Promise<void>;
|
|
10
|
+
stopServer(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PortalServerService = void 0;
|
|
4
|
+
const express = require("express");
|
|
5
|
+
const livereload = require("livereload");
|
|
6
|
+
const connectLivereload = require("connect-livereload");
|
|
7
|
+
const open = require("open");
|
|
8
|
+
const serve_1 = require("../../controllers/portal/serve");
|
|
9
|
+
const utils_1 = require("../../utils/utils");
|
|
10
|
+
class PortalServerService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.port = 3000;
|
|
13
|
+
this.app = express();
|
|
14
|
+
}
|
|
15
|
+
setupServer(generatedPortalPath) {
|
|
16
|
+
this.liveReloadServer = livereload.createServer();
|
|
17
|
+
this.liveReloadServer.watch(generatedPortalPath);
|
|
18
|
+
this.app.use(connectLivereload());
|
|
19
|
+
this.app.use(express.static(generatedPortalPath));
|
|
20
|
+
}
|
|
21
|
+
startServer(config, noReload = false, displayShutdownMessages = true) {
|
|
22
|
+
const { generatedPortalPath, targetFolder, configDir, authKey, ignoredPaths, port, openInBrowser } = config;
|
|
23
|
+
const serverPort = port !== null && port !== void 0 ? port : this.port;
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
try {
|
|
26
|
+
this.server = this.app.listen(serverPort, () => {
|
|
27
|
+
if (openInBrowser) {
|
|
28
|
+
open(`http://localhost:${serverPort}`);
|
|
29
|
+
}
|
|
30
|
+
if (!noReload) {
|
|
31
|
+
(0, serve_1.watchAndRegeneratePortal)(targetFolder, generatedPortalPath, configDir, authKey, ignoredPaths);
|
|
32
|
+
}
|
|
33
|
+
if (process.platform !== "darwin") {
|
|
34
|
+
//For non-macOS users.
|
|
35
|
+
if (process.stdin.setRawMode) {
|
|
36
|
+
process.stdin.setRawMode(false);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new Error((0, utils_1.getMessageInRedColor)(`There was an error starting the server: ${error}`));
|
|
43
|
+
}
|
|
44
|
+
const shutdown = async () => {
|
|
45
|
+
if (displayShutdownMessages) {
|
|
46
|
+
console.log("Shutting down server...");
|
|
47
|
+
}
|
|
48
|
+
await this.stopServer();
|
|
49
|
+
if (displayShutdownMessages) {
|
|
50
|
+
console.log("Server shut down successfully.");
|
|
51
|
+
}
|
|
52
|
+
resolve();
|
|
53
|
+
process.exit(0);
|
|
54
|
+
};
|
|
55
|
+
process.on("SIGINT", shutdown);
|
|
56
|
+
process.on("SIGTERM", shutdown);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async stopServer() {
|
|
60
|
+
if (this.liveReloadServer) {
|
|
61
|
+
this.liveReloadServer.close();
|
|
62
|
+
}
|
|
63
|
+
if (this.server) {
|
|
64
|
+
await new Promise((resolve) => {
|
|
65
|
+
this.server.close(() => resolve());
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.PortalServerService = PortalServerService;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3BvcnRhbC9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBQ25DLHlDQUF5QztBQUN6Qyx3REFBd0Q7QUFDeEQsNkJBQTZCO0FBQzdCLDBEQUEwRTtBQUcxRSw2Q0FBeUQ7QUFFekQsTUFBYSxtQkFBbUI7SUFNOUI7UUFGaUIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUczQixJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsbUJBQTJCO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQTBCLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSx1QkFBdUIsR0FBRyxJQUFJO1FBQ3RGLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUM1RyxNQUFNLFVBQVUsR0FBRyxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXJDLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO29CQUM3QyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsb0JBQW9CLFVBQVUsRUFBRSxDQUFDLENBQUM7b0JBQ3pDLENBQUM7b0JBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNkLElBQUEsZ0NBQXdCLEVBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQ2hHLENBQUM7b0JBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO3dCQUNsQyxzQkFBc0I7d0JBQ3RCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQzs0QkFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBQSw0QkFBb0IsRUFBQywyQ0FBMkMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRTtnQkFDMUIsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDL0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhFRCxrREF3RUMifQ==
|
|
@@ -16,3 +16,4 @@ exports.DestinationFormats = {
|
|
|
16
16
|
Postman20: "json",
|
|
17
17
|
GraphQlSchema: "json"
|
|
18
18
|
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2FwaS90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JhLFFBQUEsa0JBQWtCLEdBQUc7SUFDaEMsWUFBWSxFQUFFLE1BQU07SUFDcEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsUUFBUSxFQUFFLE1BQU07SUFDaEIsUUFBUSxFQUFFLEtBQUs7SUFDZixJQUFJLEVBQUUsS0FBSztJQUNYLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFdBQVcsRUFBRSxNQUFNO0lBQ25CLElBQUksRUFBRSxNQUFNO0lBQ1osTUFBTSxFQUFFLE1BQU07SUFDZCxTQUFTLEVBQUUsTUFBTTtJQUNqQixTQUFTLEVBQUUsTUFBTTtJQUNqQixhQUFhLEVBQUUsTUFBTTtDQUN0QixDQUFDIn0=
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvYXBpL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|