@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
|
@@ -16,16 +16,16 @@ export class PortalNewTocAction {
|
|
|
16
16
|
this.tocGenerator = new TocStructureGenerator();
|
|
17
17
|
this.contentParser = new TocContentParser();
|
|
18
18
|
}
|
|
19
|
-
async createToc(
|
|
19
|
+
async createToc(buildDirectory, configDir, tocDirectory, force = false, expandEndpoints = false, expandModels = false) {
|
|
20
20
|
try {
|
|
21
|
-
const tocDir = await this.getDestinationPath(
|
|
21
|
+
const tocDir = await this.getDestinationPath(buildDirectory, tocDirectory);
|
|
22
22
|
const tocPath = path.join(tocDir, DEFAULT_TOC_FILENAME);
|
|
23
23
|
const tocCheckResult = await this.handleExistingToc(tocPath, force);
|
|
24
24
|
if (!tocCheckResult.isSuccess()) {
|
|
25
25
|
return tocCheckResult;
|
|
26
26
|
}
|
|
27
|
-
const { endpointGroups, models } = await this.extractSdlComponents(
|
|
28
|
-
const contentGroups = await this.extractContentGroups(
|
|
27
|
+
const { endpointGroups, models } = await this.extractSdlComponents(buildDirectory, configDir, expandEndpoints, expandModels);
|
|
28
|
+
const contentGroups = await this.extractContentGroups(buildDirectory);
|
|
29
29
|
const toc = this.tocGenerator.createTocStructure(endpointGroups, models, expandEndpoints, expandModels, contentGroups);
|
|
30
30
|
const yamlString = this.tocGenerator.transformToYaml(toc);
|
|
31
31
|
await this.writeToc(tocPath, yamlString, "utf8");
|
|
@@ -48,18 +48,18 @@ export class PortalNewTocAction {
|
|
|
48
48
|
}
|
|
49
49
|
return Result.success("TOC check passed.");
|
|
50
50
|
}
|
|
51
|
-
async extractSdlComponents(
|
|
51
|
+
async extractSdlComponents(buildDirectory, configDir, expandEndpoints, expandModels) {
|
|
52
52
|
if (!expandEndpoints && !expandModels) {
|
|
53
53
|
return { endpointGroups: new Map(), models: [] };
|
|
54
54
|
}
|
|
55
55
|
this.prompts.startProgressIndicatorWithMessage("Extracting endpoints and/or models from the API specification...");
|
|
56
|
-
const specFolderPath = await this.getSpecFolderPath(
|
|
56
|
+
const specFolderPath = await this.getSpecFolderPath(buildDirectory);
|
|
57
57
|
if (!(await fsExtra.pathExists(specFolderPath))) {
|
|
58
58
|
this.prompts.stopProgressIndicatorWithMessage(`⚠️ Could not find the specification folder at: ${specFolderPath}`);
|
|
59
59
|
this.prompts.displayInfo("Falling back to default TOC structure without expanded endpoints or models...");
|
|
60
60
|
return { endpointGroups: new Map(), models: [] };
|
|
61
61
|
}
|
|
62
|
-
const sdlResult = await this.sdlParser.getTocComponentsFromSdl(specFolderPath,
|
|
62
|
+
const sdlResult = await this.sdlParser.getTocComponentsFromSdl(specFolderPath, buildDirectory, configDir);
|
|
63
63
|
if (!sdlResult.isSuccess()) {
|
|
64
64
|
this.prompts.stopProgressIndicatorWithMessage(`⚠️ ${sdlResult.error}`);
|
|
65
65
|
this.prompts.displayInfo("Falling back to default TOC structure without expanded endpoints or models...");
|
|
@@ -68,8 +68,8 @@ export class PortalNewTocAction {
|
|
|
68
68
|
this.prompts.stopProgressIndicatorWithMessage("✅ Successfully extracted endpoints and/or models from the specification.");
|
|
69
69
|
return sdlResult.value;
|
|
70
70
|
}
|
|
71
|
-
async extractContentGroups(
|
|
72
|
-
const contentFolderPath = await this.getContentFolderPath(
|
|
71
|
+
async extractContentGroups(buildDirectory) {
|
|
72
|
+
const contentFolderPath = await this.getContentFolderPath(buildDirectory);
|
|
73
73
|
if (!(await fsExtra.pathExists(contentFolderPath))) {
|
|
74
74
|
this.prompts.displayInfo(`⚠️ Could not locate the content folder at: ${contentFolderPath}`);
|
|
75
75
|
this.prompts.displayInfo("Skipping custom content addition in TOC...");
|
|
@@ -77,12 +77,12 @@ export class PortalNewTocAction {
|
|
|
77
77
|
}
|
|
78
78
|
return await this.contentParser.parseContentFolder(contentFolderPath, contentFolderPath);
|
|
79
79
|
}
|
|
80
|
-
async getDestinationPath(
|
|
81
|
-
if (
|
|
82
|
-
const inferredDestination = await this.getContentFolderPath(
|
|
80
|
+
async getDestinationPath(buildDirectory, providedTocDirectory) {
|
|
81
|
+
if (providedTocDirectory === undefined) {
|
|
82
|
+
const inferredDestination = await this.getContentFolderPath(buildDirectory);
|
|
83
83
|
return inferredDestination;
|
|
84
84
|
}
|
|
85
|
-
return
|
|
85
|
+
return providedTocDirectory.toString();
|
|
86
86
|
}
|
|
87
87
|
async checkExistingToc(tocPath, force) {
|
|
88
88
|
if ((await fsExtra.pathExists(tocPath)) && !force) {
|
|
@@ -90,10 +90,10 @@ export class PortalNewTocAction {
|
|
|
90
90
|
}
|
|
91
91
|
return true;
|
|
92
92
|
}
|
|
93
|
-
async getContentFolderPath(
|
|
93
|
+
async getContentFolderPath(buildDirectory) {
|
|
94
94
|
var _a;
|
|
95
|
-
const buildFilePath = path.join(
|
|
96
|
-
const defaultContentFolder = path.join(
|
|
95
|
+
const buildFilePath = path.join(buildDirectory.toString(), APIMATIC_BUILD_FILENAME);
|
|
96
|
+
const defaultContentFolder = path.join(buildDirectory.toString(), "content");
|
|
97
97
|
if (!(await fsExtra.pathExists(buildFilePath))) {
|
|
98
98
|
return defaultContentFolder;
|
|
99
99
|
}
|
|
@@ -102,16 +102,16 @@ export class PortalNewTocAction {
|
|
|
102
102
|
if (((_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.contentFolder) == null) {
|
|
103
103
|
return defaultContentFolder;
|
|
104
104
|
}
|
|
105
|
-
return path.join(
|
|
105
|
+
return path.join(buildDirectory.toString(), buildConfig.generatePortal.contentFolder, "content");
|
|
106
106
|
}
|
|
107
107
|
catch (_b) {
|
|
108
108
|
return defaultContentFolder;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
async getSpecFolderPath(
|
|
111
|
+
async getSpecFolderPath(buildDirectory) {
|
|
112
112
|
var _a;
|
|
113
|
-
const buildFilePath = path.join(
|
|
114
|
-
const defaultSpecFolder = path.join(
|
|
113
|
+
const buildFilePath = path.join(buildDirectory.toString(), APIMATIC_BUILD_FILENAME);
|
|
114
|
+
const defaultSpecFolder = path.join(buildDirectory.toString(), "spec");
|
|
115
115
|
if (!(await fsExtra.pathExists(buildFilePath))) {
|
|
116
116
|
return defaultSpecFolder;
|
|
117
117
|
}
|
|
@@ -120,7 +120,7 @@ export class PortalNewTocAction {
|
|
|
120
120
|
if (((_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.apiSpecPath) == null) {
|
|
121
121
|
return defaultSpecFolder;
|
|
122
122
|
}
|
|
123
|
-
return path.join(
|
|
123
|
+
return path.join(buildDirectory.toString(), buildConfig.generatePortal.apiSpecPath);
|
|
124
124
|
}
|
|
125
125
|
catch (_b) {
|
|
126
126
|
return defaultSpecFolder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/actions/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uDAAuD,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/actions/portal/toc/new-toc.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ export class PortalRecipeGenerator {
|
|
|
47
47
|
if (!recipesConfig.workflows) {
|
|
48
48
|
recipesConfig.workflows = [];
|
|
49
49
|
}
|
|
50
|
-
const existingIndex = recipesConfig.workflows.findIndex((workflow) => workflow.
|
|
50
|
+
const existingIndex = recipesConfig.workflows.findIndex((workflow) => workflow.permalink === `page:recipes/${recipeFileName}`);
|
|
51
51
|
const newWorkflow = {
|
|
52
52
|
name: recipeName,
|
|
53
53
|
permalink: `page:recipes/${recipeFileName}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe-generator.js","sourceRoot":"","sources":["../../../../src/application/portal/recipe/recipe-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"recipe-generator.js","sourceRoot":"","sources":["../../../../src/application/portal/recipe/recipe-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import chokidar from "chokidar";
|
|
2
|
+
import { ServePaths } from "../../../types/portal/serve.js";
|
|
3
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
4
|
+
import { ActionResult } from "../../../actions/actionResult.js";
|
|
5
|
+
export declare class PortalWatcher {
|
|
6
|
+
watchAndRegeneratePortalOnChange(paths: ServePaths, ignoredPaths: string[], generatePortal: (buildDirectory: DirectoryPath, portalDirectory: DirectoryPath, force: boolean, zipPortal: boolean) => Promise<ActionResult>): Promise<chokidar.FSWatcher>;
|
|
7
|
+
protected handleFileChange(paths: ServePaths, eventQueue: Map<string, string>, eventId: string, generatePortal: (buildDirectory: DirectoryPath, portalDirectory: DirectoryPath, force: boolean, zipPortal: boolean) => Promise<ActionResult>): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import chokidar from "chokidar";
|
|
3
|
+
import crypto from "crypto";
|
|
4
|
+
import console from "console";
|
|
5
|
+
import { Mutex } from "async-mutex";
|
|
6
|
+
import { WatcherHandler } from "./watcher-handler.js";
|
|
7
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
8
|
+
export class PortalWatcher {
|
|
9
|
+
async watchAndRegeneratePortalOnChange(paths, ignoredPaths, generatePortal) {
|
|
10
|
+
// Convert ignoredPaths to absolute paths for consistent comparison
|
|
11
|
+
const absoluteIgnoredPaths = [...ignoredPaths.filter((ignoredPath) => ignoredPath.trim() !== "")].map((ignoredPath) => path.resolve(paths.sourceDirectoryPath, ignoredPath));
|
|
12
|
+
//Regex matches any hidden files and folders.
|
|
13
|
+
const watcher = chokidar.watch(paths.sourceDirectoryPath, {
|
|
14
|
+
ignored: [...absoluteIgnoredPaths, /(^|[/\\])\..+/],
|
|
15
|
+
ignoreInitial: true,
|
|
16
|
+
persistent: true,
|
|
17
|
+
awaitWriteFinish: true,
|
|
18
|
+
atomic: true
|
|
19
|
+
});
|
|
20
|
+
const deletedDirectories = new Set();
|
|
21
|
+
const eventQueue = new Map();
|
|
22
|
+
const handler = new WatcherHandler();
|
|
23
|
+
const mutex = new Mutex();
|
|
24
|
+
//TODO: Add debounce delay for reducing number of events (greater than 300 ms, already tried that value).
|
|
25
|
+
watcher
|
|
26
|
+
.on("all", async (event, path) => {
|
|
27
|
+
if (event == "unlinkDir") {
|
|
28
|
+
deletedDirectories.add(path);
|
|
29
|
+
}
|
|
30
|
+
if (event == "unlink") {
|
|
31
|
+
for (const dir of deletedDirectories) {
|
|
32
|
+
if (path.startsWith(dir)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const eventId = `${Date.now()}-${crypto.randomUUID()}`;
|
|
38
|
+
await mutex.runExclusive(async () => {
|
|
39
|
+
eventQueue.clear();
|
|
40
|
+
eventQueue.set(eventId, path);
|
|
41
|
+
});
|
|
42
|
+
await handler.execute(async () => {
|
|
43
|
+
await this.handleFileChange(paths, eventQueue, eventId, generatePortal);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.on("error", () => {
|
|
47
|
+
console.error("An unexpected error occurred while watching your build folder for changes. Please try again later. If the issue persists, contact our team at support@apimatic.io");
|
|
48
|
+
});
|
|
49
|
+
return watcher;
|
|
50
|
+
}
|
|
51
|
+
//TODO: This could be logically better.
|
|
52
|
+
async handleFileChange(paths, eventQueue, eventId, generatePortal) {
|
|
53
|
+
if (!eventQueue.has(eventId)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const result = await generatePortal(new DirectoryPath(paths.sourceDirectoryPath), new DirectoryPath(paths.destinationDirectoryPath), true, false);
|
|
57
|
+
result.map((error) => console.log(error));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=portal-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-watcher.js","sourceRoot":"","sources":["../../../../src/application/portal/serve/portal-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Result } from "../../../types/common/result.js";
|
|
2
|
+
import { ServeFlags, ServePaths } from "../../../types/portal/serve.js";
|
|
3
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
4
|
+
import { ActionResult } from "../../../actions/actionResult.js";
|
|
5
|
+
export declare class ServeHandler {
|
|
6
|
+
private server;
|
|
7
|
+
private liveReloadServer;
|
|
8
|
+
private readonly app;
|
|
9
|
+
private readonly portalWatcher;
|
|
10
|
+
constructor();
|
|
11
|
+
setupServer(generatedPortalArtifactsDirectoryPath: string): Promise<Result<string, string>>;
|
|
12
|
+
startServer(paths: ServePaths, flags: ServeFlags, ignoredPaths: string[], generatePortal: (buildDirectory: DirectoryPath, portalDirectory: DirectoryPath, force: boolean, zipPortal: boolean) => Promise<ActionResult>, displayShutdownMessages?: boolean): Promise<Result<boolean, string>>;
|
|
13
|
+
private stopServer;
|
|
14
|
+
private createLiveReloadServer;
|
|
15
|
+
private getPortForReloadServer;
|
|
16
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import express from "express";
|
|
2
|
+
import livereload from "livereload";
|
|
3
|
+
import connectLivereload from "connect-livereload";
|
|
4
|
+
import open from "open";
|
|
5
|
+
import process from "process";
|
|
6
|
+
import getPort from "get-port";
|
|
7
|
+
import console from "console";
|
|
8
|
+
import { Result } from "../../../types/common/result.js";
|
|
9
|
+
import { PortalWatcher } from "./portal-watcher.js";
|
|
10
|
+
export class ServeHandler {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.app = express();
|
|
13
|
+
this.portalWatcher = new PortalWatcher();
|
|
14
|
+
}
|
|
15
|
+
//TODO: Needs to be refactored after refactoring quickstart.
|
|
16
|
+
async setupServer(generatedPortalArtifactsDirectoryPath) {
|
|
17
|
+
const createLiveReloadServerResult = await this.createLiveReloadServer(generatedPortalArtifactsDirectoryPath);
|
|
18
|
+
if (createLiveReloadServerResult.isFailed()) {
|
|
19
|
+
return Result.failure(createLiveReloadServerResult.error);
|
|
20
|
+
}
|
|
21
|
+
this.app.use(express.static(generatedPortalArtifactsDirectoryPath, { extensions: ["html"] }));
|
|
22
|
+
return Result.success(`Server is set up and serving files from ${generatedPortalArtifactsDirectoryPath}`);
|
|
23
|
+
}
|
|
24
|
+
//TODO: Needs to be refactored after refactoring quickstart.
|
|
25
|
+
async startServer(paths, flags, ignoredPaths, generatePortal, displayShutdownMessages = true) {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
this.server = this.app
|
|
28
|
+
.listen(flags.port, async () => {
|
|
29
|
+
if (flags.open) {
|
|
30
|
+
await open(`http://localhost:${flags.port}`);
|
|
31
|
+
}
|
|
32
|
+
if (!flags["no-reload"]) {
|
|
33
|
+
await this.portalWatcher.watchAndRegeneratePortalOnChange(paths, ignoredPaths, generatePortal);
|
|
34
|
+
}
|
|
35
|
+
if (process.platform !== "darwin") {
|
|
36
|
+
//For non-macOS users.
|
|
37
|
+
if (process.stdin.setRawMode) {
|
|
38
|
+
process.stdin.setRawMode(false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
resolve(Result.success(true));
|
|
42
|
+
})
|
|
43
|
+
.on("error", () => {
|
|
44
|
+
reject(new Error(`Something went wrong while serving your portal. Please try again later. If the issue persists, contact our team at support@apimatic.io`));
|
|
45
|
+
});
|
|
46
|
+
const shutdown = async () => {
|
|
47
|
+
if (displayShutdownMessages) {
|
|
48
|
+
console.log("Shutting down server...");
|
|
49
|
+
}
|
|
50
|
+
await this.stopServer();
|
|
51
|
+
if (displayShutdownMessages) {
|
|
52
|
+
console.log("Server shut down successfully.");
|
|
53
|
+
}
|
|
54
|
+
resolve(Result.success(true));
|
|
55
|
+
process.exit(0);
|
|
56
|
+
};
|
|
57
|
+
process.on("SIGINT", shutdown);
|
|
58
|
+
process.on("SIGTERM", shutdown);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async stopServer() {
|
|
62
|
+
if (this.liveReloadServer) {
|
|
63
|
+
this.liveReloadServer.close();
|
|
64
|
+
}
|
|
65
|
+
if (this.server) {
|
|
66
|
+
await new Promise((resolve) => {
|
|
67
|
+
this.server.close(() => resolve());
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async createLiveReloadServer(generatedPortalPath) {
|
|
72
|
+
try {
|
|
73
|
+
const availablePort = await this.getPortForReloadServer();
|
|
74
|
+
this.liveReloadServer = livereload.createServer({
|
|
75
|
+
port: availablePort
|
|
76
|
+
});
|
|
77
|
+
this.liveReloadServer.watch(generatedPortalPath);
|
|
78
|
+
this.app.use(connectLivereload());
|
|
79
|
+
return Result.success("Live Reload Server setup successfully.");
|
|
80
|
+
}
|
|
81
|
+
catch (_a) {
|
|
82
|
+
return Result.failure("An unexpected error occurred while serving your portal, please try again later. If the issue persists, contact our team at support@apimatic.io for assistance.");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async getPortForReloadServer() {
|
|
86
|
+
const defaultPorts = [35729, 35730, 35731];
|
|
87
|
+
return await getPort({ port: defaultPorts });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=serve-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-handler.js","sourceRoot":"","sources":["../../../../src/application/portal/serve/serve-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class WatcherHandler {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.isProcessing = false;
|
|
4
|
+
this.latestHandler = null;
|
|
5
|
+
}
|
|
6
|
+
async execute(handler) {
|
|
7
|
+
// Always store the latest handler
|
|
8
|
+
this.latestHandler = handler;
|
|
9
|
+
// If already processing, just wait for current to finish
|
|
10
|
+
if (this.isProcessing) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
this.isProcessing = true;
|
|
14
|
+
try {
|
|
15
|
+
// Keep processing until no new handlers arrive
|
|
16
|
+
while (this.latestHandler) {
|
|
17
|
+
const currentHandler = this.latestHandler;
|
|
18
|
+
this.latestHandler = null;
|
|
19
|
+
await currentHandler();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
this.isProcessing = false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=watcher-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher-handler.js","sourceRoot":"","sources":["../../../../src/application/portal/serve/watcher-handler.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAA3B;QACU,iBAAY,GAAG,KAAK,CAAC;QACrB,kBAAa,GAAiC,IAAI,CAAC;IAyB7D,CAAC;IAvBC,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,kCAAkC;QAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAE7B,yDAAyD;QACzD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC;YACH,+CAA+C;YAC/C,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAE1B,MAAM,cAAc,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -2,10 +2,11 @@ import { PortalService } from "../../../infrastructure/services/portal-service.j
|
|
|
2
2
|
import { TocEndpoint, TocModel } from "../../../types/toc/toc.js";
|
|
3
3
|
import { Result } from "../../../types/common/result.js";
|
|
4
4
|
import { SdlEndpoint } from "../../../types/sdl/sdl.js";
|
|
5
|
+
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
5
6
|
export declare class SdlParser {
|
|
6
7
|
private readonly portalService;
|
|
7
8
|
constructor(portalService: PortalService);
|
|
8
|
-
getTocComponentsFromSdl(specFolderPath: string,
|
|
9
|
+
getTocComponentsFromSdl(specFolderPath: string, buildDirectory: DirectoryPath, configDir: string): Promise<Result<{
|
|
9
10
|
endpointGroups: Map<string, TocEndpoint[]>;
|
|
10
11
|
models: TocModel[];
|
|
11
12
|
}, string>>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as path from "path";
|
|
2
|
-
import {
|
|
2
|
+
import { zipPortalSource, deleteFile } from "../../../utils/utils.js";
|
|
3
3
|
import { Result } from "../../../types/common/result.js";
|
|
4
4
|
export class SdlParser {
|
|
5
5
|
constructor(portalService) {
|
|
6
6
|
this.portalService = portalService;
|
|
7
7
|
}
|
|
8
|
-
async getTocComponentsFromSdl(specFolderPath,
|
|
9
|
-
const sourceSpecInputZipFilePath = await
|
|
8
|
+
async getTocComponentsFromSdl(specFolderPath, buildDirectory, configDir) {
|
|
9
|
+
const sourceSpecInputZipFilePath = await zipPortalSource(specFolderPath, path.join(buildDirectory.toString(), ".spec_source.zip"));
|
|
10
10
|
try {
|
|
11
11
|
const result = await this.portalService.generateSdl(sourceSpecInputZipFilePath, configDir);
|
|
12
12
|
if (!result.isSuccess()) {
|
|
@@ -22,7 +22,7 @@ export class SdlParser {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
async getEndpointGroupsFromSdl(specFolderPath, contentFolderPath, configDir) {
|
|
25
|
-
const sourceSpecInputZipFilePath = await
|
|
25
|
+
const sourceSpecInputZipFilePath = await zipPortalSource(specFolderPath, path.join(contentFolderPath, ".spec_source.zip"));
|
|
26
26
|
const sdlResult = await this.portalService.generateSdl(sourceSpecInputZipFilePath, configDir);
|
|
27
27
|
if (!sdlResult.isSuccess()) {
|
|
28
28
|
return Result.failure("Failed to extract endpoints from the API specification. Please validate your spec using APIMatic's interactive VS Code Extension and then try again.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdl-parser.js","sourceRoot":"","sources":["../../../../src/application/portal/toc/sdl-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sdl-parser.js","sourceRoot":"","sources":["../../../../src/application/portal/toc/sdl-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,30 +30,13 @@ export class SDKClient {
|
|
|
30
30
|
* executed on its instance.
|
|
31
31
|
*/
|
|
32
32
|
async login(email, password, configDir) {
|
|
33
|
-
let storedAuthInfo = await getAuthInfo(configDir);
|
|
34
|
-
// If no config file or no credentials exist in the config file
|
|
35
|
-
if (!storedAuthInfo) {
|
|
36
|
-
storedAuthInfo = { email: "", authKey: "" };
|
|
37
|
-
}
|
|
38
33
|
const credentials = { email, password };
|
|
39
34
|
const authKey = await this.getAuthKey(credentials);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return "Logged in";
|
|
46
|
-
}
|
|
47
|
-
else if (authKey === storedAuthInfo.authKey) {
|
|
48
|
-
return "Already logged in";
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
setAuthInfo({
|
|
52
|
-
email,
|
|
53
|
-
authKey
|
|
54
|
-
}, configDir);
|
|
55
|
-
return "Logged in";
|
|
56
|
-
}
|
|
35
|
+
setAuthInfo({
|
|
36
|
+
email,
|
|
37
|
+
authKey
|
|
38
|
+
}, configDir);
|
|
39
|
+
return "✅ Logged in successfully as " + email;
|
|
57
40
|
}
|
|
58
41
|
async logout(configDir) {
|
|
59
42
|
setAuthInfo({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../../src/client-utils/sdk-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AASvE,MAAM,OAAO,SAAS;IAAtB;
|
|
1
|
+
{"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../../src/client-utils/sdk-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,12 +80,8 @@ class Transform extends Command {
|
|
|
80
80
|
_a = Transform;
|
|
81
81
|
Transform.description = `Transform API specifications from one format to another. Supports [10+ different formats](https://www.apimatic.io/transformer/#supported-formats) including OpenApi/Swagger, RAML, WSDL and Postman Collections.`;
|
|
82
82
|
Transform.examples = [
|
|
83
|
-
`$ apimatic api:transform --format="OpenApi3Json" --file="./specs/sample.json" --destination="D:/"
|
|
84
|
-
|
|
85
|
-
`,
|
|
86
|
-
`$ apimatic api:transform --format=RAML --url="https://petstore.swagger.io/v2/swagger.json" --destination="D:/"
|
|
87
|
-
Success! Your transformed file is located at D:/swagger_raml.yaml
|
|
88
|
-
`
|
|
83
|
+
`$ apimatic api:transform --format="OpenApi3Json" --file="./specs/sample.json" --destination="D:/"`,
|
|
84
|
+
`$ apimatic api:transform --format=RAML --url="https://petstore.swagger.io/v2/swagger.json" --destination="D:/"`
|
|
89
85
|
];
|
|
90
86
|
Transform.flags = {
|
|
91
87
|
format: Flags.string({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/api/transform.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAoC,MAAM,eAAe,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErH,MAAM,OAAO,GAAW,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,MAAqB,SAAU,SAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/api/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fsExtra from "fs-extra";
|
|
2
2
|
import { ux, Flags, Command } from "@oclif/core";
|
|
3
|
-
import {
|
|
3
|
+
import { ApiValidationExternalApisController } from "@apimatic/sdk";
|
|
4
4
|
import { SDKClient } from "../../client-utils/sdk-client.js";
|
|
5
5
|
import { getValidationSummary } from "../../controllers/api/validate.js";
|
|
6
6
|
import { printValidationMessages, replaceHTML } from "../../utils/utils.js";
|
|
@@ -13,7 +13,7 @@ class Validate extends Command {
|
|
|
13
13
|
}
|
|
14
14
|
const overrideAuthKey = flags["auth-key"] ? flags["auth-key"] : null;
|
|
15
15
|
const client = await SDKClient.getInstance().getClient(overrideAuthKey, this.config.configDir);
|
|
16
|
-
const apiValidationController = new
|
|
16
|
+
const apiValidationController = new ApiValidationExternalApisController(client);
|
|
17
17
|
ux.action.start("Validating specification file");
|
|
18
18
|
const validationSummary = await getValidationSummary(flags, apiValidationController);
|
|
19
19
|
ux.action.stop();
|
|
@@ -57,12 +57,8 @@ class Validate extends Command {
|
|
|
57
57
|
}
|
|
58
58
|
Validate.description = "Validate the syntactic and semantic correctness of an API specification";
|
|
59
59
|
Validate.examples = [
|
|
60
|
-
`$ apimatic api:validate --file="./specs/sample.json"
|
|
61
|
-
|
|
62
|
-
`,
|
|
63
|
-
`$ apimatic api:validate --url=https://petstore.swagger.io/v2/swagger.json
|
|
64
|
-
Specification file provided is valid
|
|
65
|
-
`
|
|
60
|
+
`$ apimatic api:validate --file="./specs/sample.json"`,
|
|
61
|
+
`$ apimatic api:validate --url=https://petstore.swagger.io/v2/swagger.json`
|
|
66
62
|
];
|
|
67
63
|
Validate.flags = {
|
|
68
64
|
file: Flags.string({ default: "", description: "Path to the API specification file to validate" }),
|