@apimatic/cli 1.1.0-alpha.8 → 1.1.0-alpha.9

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 CHANGED
@@ -42,7 +42,7 @@ USAGE
42
42
  * [`apimatic autocomplete [SHELL]`](#apimatic-autocomplete-shell)
43
43
  * [`apimatic help [COMMAND]`](#apimatic-help-command)
44
44
  * [`apimatic portal:generate`](#apimatic-portalgenerate)
45
- * [`apimatic portal:new:toc`](#apimatic-portalnewtoc)
45
+ * [`apimatic portal:toc:new`](#apimatic-portaltocnew)
46
46
  * [`apimatic portal:quickstart`](#apimatic-portalquickstart)
47
47
  * [`apimatic portal:serve`](#apimatic-portalserve)
48
48
  * [`apimatic sdk:generate`](#apimatic-sdkgenerate)
@@ -244,13 +244,13 @@ EXAMPLES
244
244
 
245
245
  _See code: [src/commands/portal/generate.ts](https://github.com/apimatic/apimatic-cli/blob/alpha/src/commands/portal/generate.ts)_
246
246
 
247
- ## `apimatic portal:new:toc`
247
+ ## `apimatic portal:toc:new`
248
248
 
249
249
  Generates a TOC file based on the content directory and spec folder provided in your working directory
250
250
 
251
251
  ```
252
252
  USAGE
253
- $ apimatic portal:new:toc [--destination <value>] [--folder <value>] [--force] [--expand-endpoints]
253
+ $ apimatic portal:toc:new [--destination <value>] [--folder <value>] [--force] [--expand-endpoints]
254
254
  [--expand-models]
255
255
 
256
256
  FLAGS
@@ -276,17 +276,17 @@ DESCRIPTION
276
276
  https://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/overview-generating-api-portal
277
277
 
278
278
  EXAMPLES
279
- $ apimatic portal:new:toc --destination="./portal/content/"
279
+ $ apimatic portal:toc:new --destination="./portal/content/"
280
280
  A new toc file has been created at ./portal/content/toc.yml
281
281
 
282
- $ apimatic portal:new:toc --folder="./my-project"
282
+ $ apimatic portal:toc:new --folder="./my-project"
283
283
  A new toc file has been created at ./my-project/content/toc.yml
284
284
 
285
- $ apimatic portal:new:toc --folder="./my-project" --destination="./portal/content/"
285
+ $ apimatic portal:toc:new --folder="./my-project" --destination="./portal/content/"
286
286
  A new toc file has been created at ./portal/content/toc.yml
287
287
  ```
288
288
 
289
- _See code: [src/commands/portal/new/toc.ts](https://github.com/apimatic/apimatic-cli/blob/alpha/src/commands/portal/new/toc.ts)_
289
+ _See code: [src/commands/portal/toc/new/toc.ts](https://github.com/apimatic/apimatic-cli/blob/alpha/src/commands/portal/toc/new/toc.ts)_
290
290
 
291
291
  ## `apimatic portal:quickstart`
292
292
 
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PortalNewTocAction = void 0;
4
+ const path = require("path");
5
+ const fs = require("fs-extra");
6
+ const new_toc_1 = require("../../../prompts/portal/toc/new-toc");
7
+ const result_1 = require("../../../types/common/result");
8
+ const utils_1 = require("../../../utils/utils");
9
+ const sdl_parser_1 = require("../../../application/portal/toc/sdl-parser");
10
+ const toc_structure_generator_1 = require("../../../application/portal/toc/toc-structure-generator");
11
+ const toc_content_parser_1 = require("../../../application/portal/toc/toc-content-parser");
12
+ const portal_service_1 = require("../../../infrastructure/services/portal-service");
13
+ const DEFAULT_TOC_FILENAME = "toc.yml";
14
+ const APIMATIC_BUILD_FILENAME = "APIMATIC-BUILD.json";
15
+ class PortalNewTocAction {
16
+ constructor() {
17
+ this.prompts = new new_toc_1.PortalNewTocPrompts();
18
+ this.sdlParser = new sdl_parser_1.SdlParser(new portal_service_1.PortalService());
19
+ this.tocGenerator = new toc_structure_generator_1.TocStructureGenerator();
20
+ this.contentParser = new toc_content_parser_1.TocContentParser();
21
+ }
22
+ async createToc(workingDirectory, configDir, destination, force = false, expandEndpoints = false, expandModels = false) {
23
+ try {
24
+ const tocDir = await this.getDestinationPath(workingDirectory, destination);
25
+ const tocPath = path.join(tocDir, DEFAULT_TOC_FILENAME);
26
+ const tocCheckResult = await this.handleExistingToc(tocPath, force);
27
+ if (!tocCheckResult.isSuccess()) {
28
+ return tocCheckResult;
29
+ }
30
+ const { endpointGroups, models } = await this.extractSdlComponents(workingDirectory, configDir, expandEndpoints, expandModels);
31
+ const contentGroups = await this.extractContentGroups(workingDirectory);
32
+ const toc = this.tocGenerator.createTocStructure(endpointGroups, models, expandEndpoints, expandModels, contentGroups);
33
+ const yamlString = this.tocGenerator.transformToYaml(toc);
34
+ await this.writeToc(tocPath, yamlString, "utf8");
35
+ this.prompts.displayOutroMessage(tocPath);
36
+ return result_1.Result.success(tocPath);
37
+ }
38
+ catch (error) {
39
+ this.prompts.logError((0, utils_1.getMessageInRedColor)(`${error}`));
40
+ return result_1.Result.failure(`❌ An unexpected error occurred while generating the TOC file.`);
41
+ }
42
+ }
43
+ async writeToc(path, content, encoding) {
44
+ await fs.ensureFile(path);
45
+ await fs.writeFile(path, content, encoding);
46
+ }
47
+ async handleExistingToc(tocPath, force) {
48
+ const shouldContinue = await this.checkExistingToc(tocPath, force);
49
+ if (!shouldContinue) {
50
+ return result_1.Result.cancelled("Operation was cancelled by the user.");
51
+ }
52
+ return result_1.Result.success("TOC check passed.");
53
+ }
54
+ async extractSdlComponents(workingDirectory, configDir, expandEndpoints, expandModels) {
55
+ if (!expandEndpoints && !expandModels) {
56
+ return { endpointGroups: new Map(), models: [] };
57
+ }
58
+ this.prompts.startProgressIndicatorWithMessage("Extracting endpoints and/or models from the API specification...");
59
+ const specFolderPath = await this.getSpecFolderPath(workingDirectory);
60
+ if (!(await fs.pathExists(specFolderPath))) {
61
+ this.prompts.stopProgressIndicatorWithMessage(`⚠️ Could not find the specification folder at: ${specFolderPath}`);
62
+ this.prompts.displayInfo("Falling back to default TOC structure without expanded endpoints or models...");
63
+ return { endpointGroups: new Map(), models: [] };
64
+ }
65
+ const sdlResult = await this.sdlParser.getTocComponentsFromSdl(specFolderPath, workingDirectory, configDir);
66
+ if (!sdlResult.isSuccess()) {
67
+ this.prompts.stopProgressIndicatorWithMessage(`⚠️ ${sdlResult.error}`);
68
+ this.prompts.displayInfo("Falling back to default TOC structure without expanded endpoints or models...");
69
+ return { endpointGroups: new Map(), models: [] };
70
+ }
71
+ this.prompts.stopProgressIndicatorWithMessage("✅ Successfully extracted endpoints and/or models from the specification.");
72
+ return sdlResult.value;
73
+ }
74
+ async extractContentGroups(workingDirectory) {
75
+ const contentFolderPath = await this.getContentFolderPath(workingDirectory);
76
+ if (!(await fs.pathExists(contentFolderPath))) {
77
+ this.prompts.displayInfo(`⚠️ Could not locate the content folder at: ${contentFolderPath}`);
78
+ this.prompts.displayInfo("Skipping custom content addition in TOC...");
79
+ return [];
80
+ }
81
+ return await this.contentParser.parseContentFolder(contentFolderPath, contentFolderPath);
82
+ }
83
+ async getDestinationPath(workingDirectory, providedDestination) {
84
+ if (providedDestination === undefined) {
85
+ const inferredDestination = await this.getContentFolderPath(workingDirectory);
86
+ return inferredDestination;
87
+ }
88
+ return providedDestination;
89
+ }
90
+ async checkExistingToc(tocPath, force) {
91
+ if ((await fs.pathExists(tocPath)) && !force) {
92
+ return await this.prompts.overwriteExistingTocPrompt();
93
+ }
94
+ return true;
95
+ }
96
+ async getContentFolderPath(workingDirectory) {
97
+ var _a;
98
+ const buildFilePath = path.join(workingDirectory, APIMATIC_BUILD_FILENAME);
99
+ const defaultContentFolder = path.join(workingDirectory, "content");
100
+ if (!(await fs.pathExists(buildFilePath))) {
101
+ return defaultContentFolder;
102
+ }
103
+ try {
104
+ const buildConfig = await fs.readJson(buildFilePath, "utf8");
105
+ if (((_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.contentFolder) == null) {
106
+ return defaultContentFolder;
107
+ }
108
+ return path.join(workingDirectory, buildConfig.generatePortal.contentFolder, "content");
109
+ }
110
+ catch (_b) {
111
+ return defaultContentFolder;
112
+ }
113
+ }
114
+ async getSpecFolderPath(workingDirectory) {
115
+ var _a;
116
+ const buildFilePath = path.join(workingDirectory, APIMATIC_BUILD_FILENAME);
117
+ const defaultSpecFolder = path.join(workingDirectory, "spec");
118
+ if (!(await fs.pathExists(buildFilePath))) {
119
+ return defaultSpecFolder;
120
+ }
121
+ try {
122
+ const buildConfig = await fs.readJson(buildFilePath, "utf8");
123
+ if (((_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.apiSpecPath) == null) {
124
+ return defaultSpecFolder;
125
+ }
126
+ return path.join(workingDirectory, buildConfig.generatePortal.apiSpecPath);
127
+ }
128
+ catch (_b) {
129
+ return defaultSpecFolder;
130
+ }
131
+ }
132
+ }
133
+ exports.PortalNewTocAction = PortalNewTocAction;
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY3Rpb25zL3BvcnRhbC90b2MvbmV3LXRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLGlFQUEwRTtBQUMxRSx5REFBc0Q7QUFDdEQsZ0RBQTREO0FBQzVELDJFQUF1RTtBQUN2RSxxR0FBZ0c7QUFDaEcsMkZBQXNGO0FBRXRGLG9GQUFnRjtBQUVoRixNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLHVCQUF1QixHQUFHLHFCQUFxQixDQUFDO0FBRXRELE1BQWEsa0JBQWtCO0lBTTdCO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDZCQUFtQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsSUFBSSw4QkFBYSxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksK0NBQXFCLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUkscUNBQWdCLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FDYixnQkFBd0IsRUFDeEIsU0FBaUIsRUFDakIsV0FBb0IsRUFDcEIsUUFBaUIsS0FBSyxFQUN0QixrQkFBMkIsS0FBSyxFQUNoQyxlQUF3QixLQUFLO1FBRTdCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDeEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxD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
@@ -1,6 +1,6 @@
1
- import { PortalService } from "../../../../infrastructure/services/portal-service";
2
- import { TocEndpoint, TocModel } from "../../../../types/toc/toc";
3
- import { Result } from "../../../../types/common/result";
1
+ import { PortalService } from "../../../infrastructure/services/portal-service";
2
+ import { TocEndpoint, TocModel } from "../../../types/toc/toc";
3
+ import { Result } from "../../../types/common/result";
4
4
  export declare class SdlParser {
5
5
  private readonly portalService;
6
6
  constructor(portalService: PortalService);
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SdlParser = void 0;
4
+ const path = require("path");
5
+ const utils_1 = require("../../../utils/utils");
6
+ const result_1 = require("../../../types/common/result");
7
+ class SdlParser {
8
+ constructor(portalService) {
9
+ this.portalService = portalService;
10
+ }
11
+ async getTocComponentsFromSdl(specFolderPath, workingDirectory, configDir) {
12
+ const sourceSpecInputZipFilePath = await (0, utils_1.validateAndZipPortalSource)(specFolderPath, path.join(workingDirectory, ".spec_source.zip"));
13
+ try {
14
+ const result = await this.portalService.generateSdl(sourceSpecInputZipFilePath, configDir);
15
+ if (!result.isSuccess()) {
16
+ return result_1.Result.failure("Failed to extract endpoints/models from the specification. Please validate your spec using APIMatic's interactive VS Code extension");
17
+ }
18
+ const sdl = result.value;
19
+ const endpointGroups = this.extractEndpointGroups(sdl);
20
+ const models = this.extractModels(sdl);
21
+ return result_1.Result.success({ endpointGroups, models });
22
+ }
23
+ finally {
24
+ await (0, utils_1.deleteFile)(sourceSpecInputZipFilePath);
25
+ }
26
+ }
27
+ extractEndpointGroups(sdl) {
28
+ const endpointGroups = new Map();
29
+ const endpoints = sdl.Endpoints.map((e) => ({
30
+ generate: null,
31
+ from: "endpoint",
32
+ endpointName: e.Name,
33
+ endpointGroup: e.Group
34
+ }));
35
+ endpoints.forEach((endpoint) => {
36
+ const group = endpoint.endpointGroup;
37
+ if (!endpointGroups.has(group)) {
38
+ endpointGroups.set(group, []);
39
+ }
40
+ endpointGroups.get(group).push(endpoint);
41
+ });
42
+ return endpointGroups;
43
+ }
44
+ extractModels(sdl) {
45
+ return sdl.CustomTypes.map((e) => ({
46
+ generate: null,
47
+ from: "model",
48
+ modelName: e.Name
49
+ }));
50
+ }
51
+ }
52
+ exports.SdlParser = SdlParser;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RsLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9wb3J0YWwvdG9jL3NkbC1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBRTdCLGdEQUE4RTtBQUU5RSx5REFBc0Q7QUFHdEQsTUFBYSxTQUFTO0lBQ3BCLFlBQTZCLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUU3RCxLQUFLLENBQUMsdUJBQXVCLENBQUMsY0FBc0IsRUFBRSxnQkFBd0IsRUFBRSxTQUFpQjtRQUMvRixNQUFNLDBCQUEwQixHQUFHLE1BQU0sSUFBQSxrQ0FBMEIsRUFDakUsY0FBYyxFQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FDaEQsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFM0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixPQUFPLGVBQU0sQ0FBQyxPQUFPLENBQUMscUlBQXFJLENBQUMsQ0FBQTtZQUM5SixDQUFDO1lBRUQsTUFBTSxHQUFHLEdBQVMsTUFBTSxDQUFDLEtBQU0sQ0FBQTtZQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV2QyxPQUFPLGVBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO2dCQUFTLENBQUM7WUFDVCxNQUFNLElBQUEsa0JBQVUsRUFBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsR0FBUTtRQUNwQyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUV4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQWMsRUFBZSxFQUFFLENBQUMsQ0FBQztZQUNwRSxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxVQUFVO1lBQ2hCLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNwQixhQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQUs7U0FDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO1lBQzFDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFRO1FBQzVCLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFXLEVBQVksRUFBRSxDQUFDLENBQUM7WUFDckQsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQXRERCw4QkFzREMifQ==
@@ -1,4 +1,4 @@
1
- import { TocGroup } from "../../../../types/toc/toc";
1
+ import { TocGroup } from "../../../types/toc/toc";
2
2
  export declare class TocContentParser {
3
3
  parseContentFolder(contentFolderPath: string, workingDirectory: string): Promise<TocGroup[]>;
4
4
  private normalizePath;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TocContentParser = void 0;
4
+ const path = require("path");
5
+ const fs = require("fs-extra");
6
+ class TocContentParser {
7
+ async parseContentFolder(contentFolderPath, workingDirectory) {
8
+ const items = await fs.readdir(contentFolderPath);
9
+ const contentItems = [];
10
+ for (const item of items) {
11
+ const itemPath = path.join(contentFolderPath, item);
12
+ const stats = await fs.stat(itemPath);
13
+ if (stats.isDirectory()) {
14
+ const subItems = await this.parseContentFolder(itemPath, workingDirectory);
15
+ if (subItems.length > 0) {
16
+ contentItems.push({
17
+ group: item,
18
+ items: subItems[0].items // Take items from the Custom Content group
19
+ });
20
+ }
21
+ }
22
+ else if (stats.isFile() && item.endsWith(".md")) {
23
+ const relativePath = path.relative(workingDirectory, itemPath);
24
+ const pageName = path.basename(item, ".md");
25
+ contentItems.push({
26
+ page: pageName,
27
+ file: this.normalizePath(relativePath)
28
+ });
29
+ }
30
+ }
31
+ // Return empty array if no markdown files were found
32
+ if (contentItems.length === 0) {
33
+ return [];
34
+ }
35
+ // Wrap everything under a "Custom Content" group
36
+ return [{
37
+ group: "Custom Content",
38
+ items: contentItems
39
+ }];
40
+ }
41
+ normalizePath(path) {
42
+ return path.replace(/\\/g, '/');
43
+ }
44
+ }
45
+ exports.TocContentParser = TocContentParser;
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLWNvbnRlbnQtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3BvcnRhbC90b2MvdG9jLWNvbnRlbnQtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFHL0IsTUFBYSxnQkFBZ0I7SUFDM0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGlCQUF5QixFQUFFLGdCQUF3QjtRQUMxRSxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxNQUFNLFlBQVksR0FBaUMsRUFBRSxDQUFDO1FBRXRELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwRCxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQzNFLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDaEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsMkNBQTJDO3FCQUNyRSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFNUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2lCQUN2QyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELHFEQUFxRDtRQUNyRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsaURBQWlEO1FBQ2pELE9BQU8sQ0FBQztnQkFDTixLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixLQUFLLEVBQUUsWUFBWTthQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVk7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUEzQ0QsNENBMkNDIn0=
@@ -1,4 +1,4 @@
1
- import { Toc, TocGroup, TocEndpoint, TocModel } from "../../../../types/toc/toc";
1
+ import { Toc, TocGroup, TocEndpoint, TocModel } from "../../../types/toc/toc";
2
2
  export declare class TocStructureGenerator {
3
3
  createTocStructure(endpointGroups: Map<string, TocEndpoint[]>, models: TocModel[], expandEndpoints?: boolean, expandModels?: boolean, contentGroups?: TocGroup[]): Toc;
4
4
  transformToYaml(toc: Toc): string;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TocStructureGenerator = void 0;
4
+ const yaml_1 = require("yaml");
5
+ class TocStructureGenerator {
6
+ createTocStructure(endpointGroups, models, expandEndpoints = false, expandModels = false, contentGroups = []) {
7
+ const tocStructure = {
8
+ toc: []
9
+ };
10
+ // Add Getting Started section
11
+ tocStructure.toc.push({
12
+ group: "Getting Started",
13
+ items: [
14
+ {
15
+ generate: "How to Get Started",
16
+ from: "getting-started"
17
+ }
18
+ ]
19
+ });
20
+ // Add content groups
21
+ if (contentGroups.length > 0) {
22
+ tocStructure.toc.push(...contentGroups);
23
+ }
24
+ // Add API Endpoints section
25
+ if (!expandEndpoints || endpointGroups.size === 0) {
26
+ tocStructure.toc.push({
27
+ generate: "API Endpoints",
28
+ from: "endpoints"
29
+ });
30
+ }
31
+ else {
32
+ tocStructure.toc.push({
33
+ group: "API Endpoints",
34
+ items: Array.from(endpointGroups).map(([groupName, endpoints]) => ({
35
+ group: groupName,
36
+ items: [
37
+ {
38
+ generate: null,
39
+ from: "endpoint-group-overview",
40
+ endpointGroup: groupName
41
+ },
42
+ ...endpoints
43
+ ]
44
+ }))
45
+ });
46
+ }
47
+ // Add Models section
48
+ if (!expandModels || models.length === 0) {
49
+ tocStructure.toc.push({
50
+ generate: "Models",
51
+ from: "models"
52
+ });
53
+ }
54
+ else {
55
+ tocStructure.toc.push({
56
+ group: "Models",
57
+ items: models
58
+ });
59
+ }
60
+ //Add Sdk Infra section
61
+ tocStructure.toc.push({
62
+ generate: "SDK Infrastructure",
63
+ from: "sdk-infra"
64
+ });
65
+ return tocStructure;
66
+ }
67
+ transformToYaml(toc) {
68
+ const transformedToc = this.transformKeys(toc);
69
+ return (0, yaml_1.stringify)(transformedToc, {
70
+ indent: 2,
71
+ nullStr: ""
72
+ });
73
+ }
74
+ transformKeys(obj) {
75
+ if (Array.isArray(obj)) {
76
+ return obj.map((item) => this.transformKeys(item));
77
+ }
78
+ if (obj !== null && typeof obj === "object") {
79
+ return Object.fromEntries(Object.entries(obj).map(([key, value]) => [
80
+ key.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(),
81
+ this.transformKeys(value)
82
+ ]));
83
+ }
84
+ return obj;
85
+ }
86
+ }
87
+ exports.TocStructureGenerator = TocStructureGenerator;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLXN0cnVjdHVyZS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcG9ydGFsL3RvYy90b2Mtc3RydWN0dXJlLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBaUM7QUFHakMsTUFBYSxxQkFBcUI7SUFDaEMsa0JBQWtCLENBQ2hCLGNBQTBDLEVBQzFDLE1BQWtCLEVBQ2xCLGtCQUEyQixLQUFLLEVBQ2hDLGVBQXdCLEtBQUssRUFDN0IsZ0JBQTRCLEVBQUU7UUFFOUIsTUFBTSxZQUFZLEdBQVE7WUFDeEIsR0FBRyxFQUFFLEVBQUU7U0FDUixDQUFDO1FBRUYsOEJBQThCO1FBQzlCLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLElBQUksRUFBRSxpQkFBaUI7aUJBQ3hCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxxQkFBcUI7UUFDckIsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsZUFBZSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNwQixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2pFLEtBQUssRUFBRSxTQUFTO29CQUNoQixLQUFLLEVBQUU7d0JBQ0w7NEJBQ0UsUUFBUSxFQUFFLElBQUk7NEJBQ2QsSUFBSSxFQUFFLHlCQUF5Qjs0QkFDL0IsYUFBYSxFQUFFLFNBQVM7eUJBQ0c7d0JBQzdCLEdBQUcsU0FBUztxQkFDYjtpQkFDRixDQUFDLENBQUM7YUFDSixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDcEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDcEIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsS0FBSyxFQUFFLE1BQU07YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsSUFBSSxFQUFFLFdBQVc7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFRO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFBLGdCQUFTLEVBQUMsY0FBYyxFQUFFO1lBQy9CLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVE7UUFDNUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxHQUFHLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7YUFDMUIsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUEvRkQsc0RBK0ZDIn0=
@@ -1,5 +1,5 @@
1
1
  import { Command } from "@oclif/core";
2
- export default class PortalNewToc extends Command {
2
+ export default class PortalTocNew extends Command {
3
3
  static summary: string;
4
4
  static description: string;
5
5
  static flags: {
@@ -3,31 +3,31 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const path = require("path");
5
5
  const core_1 = require("@oclif/core");
6
- const toc_1 = require("../../../actions/portal/new/toc");
6
+ const new_toc_1 = require("../../../actions/portal/toc/new-toc");
7
7
  const DEFAULT_FOLDER = process.cwd();
8
- class PortalNewToc extends core_1.Command {
8
+ class PortalTocNew extends core_1.Command {
9
9
  constructor(argv, config) {
10
10
  super(argv, config);
11
11
  }
12
12
  async run() {
13
13
  const { flags } = await this.parse(_a);
14
- const portalNewTocAction = new toc_1.PortalNewTocAction();
14
+ const portalNewTocAction = new new_toc_1.PortalNewTocAction();
15
15
  const result = await portalNewTocAction.createToc(flags.folder, this.config.configDir, flags.destination, flags.force, flags["expand-endpoints"], flags["expand-models"]);
16
16
  if (result.isFailed()) {
17
17
  this.error(result.error);
18
18
  }
19
19
  }
20
20
  }
21
- _a = PortalNewToc;
22
- PortalNewToc.summary = 'Generates a TOC file based on the content directory and spec folder provided in your working directory';
23
- PortalNewToc.description = `This command generates a new Table of Contents (TOC) file used in the
21
+ _a = PortalTocNew;
22
+ PortalTocNew.summary = 'Generates a TOC file based on the content directory and spec folder provided in your working directory';
23
+ PortalTocNew.description = `This command generates a new Table of Contents (TOC) file used in the
24
24
  generation of your API documentation portal.
25
25
 
26
26
  The output is a YAML file with the .yml extension.
27
27
 
28
28
  To learn more about the TOC file and APIMatic build directory structure, visit:
29
29
  https://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/overview-generating-api-portal`;
30
- PortalNewToc.flags = {
30
+ PortalTocNew.flags = {
31
31
  destination: core_1.Flags.string({
32
32
  parse: async (input) => path.resolve(input),
33
33
  description: "optional path where the generated TOC file will be saved. Defaults to the current working directory if not provided.",
@@ -50,16 +50,16 @@ PortalNewToc.flags = {
50
50
  description: "include individual entries for each model in the generated TOC. Requires a valid API specification in the working directory."
51
51
  })
52
52
  };
53
- PortalNewToc.examples = [
54
- `$ apimatic portal:new:toc --destination="./portal/content/"
53
+ PortalTocNew.examples = [
54
+ `$ apimatic portal:toc:new --destination="./portal/content/"
55
55
  A new toc file has been created at ./portal/content/toc.yml
56
56
  `,
57
- `$ apimatic portal:new:toc --folder="./my-project"
57
+ `$ apimatic portal:toc:new --folder="./my-project"
58
58
  A new toc file has been created at ./my-project/content/toc.yml
59
59
  `,
60
- `$ apimatic portal:new:toc --folder="./my-project" --destination="./portal/content/"
60
+ `$ apimatic portal:toc:new --folder="./my-project" --destination="./portal/content/"
61
61
  A new toc file has been created at ./portal/content/toc.yml
62
62
  `
63
63
  ];
64
- exports.default = PortalNewToc;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3BvcnRhbC9uZXcvdG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QixzQ0FBNkM7QUFDN0MseURBQXFFO0FBRXJFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVyQyxNQUFxQixZQUFhLFNBQVEsY0FBTztJQStDL0MsWUFBWSxJQUFjLEVBQUUsTUFBVztRQUNyQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBWSxDQUFDLENBQUM7UUFDakQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHdCQUFrQixFQUFFLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxTQUFTLENBQy9DLEtBQUssQ0FBQyxNQUFNLEVBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQ3JCLEtBQUssQ0FBQyxXQUFXLEVBQ2pCLEtBQUssQ0FBQyxLQUFLLEVBQ1gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQ3pCLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FDdkIsQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7OztBQWpFTSxvQkFBTyxHQUFHLHdHQUF3RyxBQUEzRyxDQUE0RztBQUVuSCx3QkFBVyxHQUFHOzs7Ozs7aUhBTTBGLEFBTjdGLENBTThGO0FBRXpHLGtCQUFLLEdBQUc7SUFDYixXQUFXLEVBQUUsWUFBSyxDQUFDLE1BQU0sQ0FBQztRQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkQsV0FBVyxFQUFFLHNIQUFzSDtLQUNwSSxDQUFDO0lBQ0YsTUFBTSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25ELFdBQVcsRUFBRSw2SEFBNkg7UUFDMUksT0FBTyxFQUFFLGNBQWM7S0FDeEIsQ0FBQztJQUNGLEtBQUssRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1FBQ25CLE9BQU8sRUFBRSxLQUFLO1FBQ2QsV0FBVyxFQUFFLGtFQUFrRTtLQUNoRixDQUFDO0lBQ0Ysa0JBQWtCLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxPQUFPLEVBQUUsS0FBSztRQUNkLFdBQVcsRUFBRSxpSUFBaUk7S0FDL0ksQ0FBQztJQUNGLGVBQWUsRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsV0FBVyxFQUFFLDhIQUE4SDtLQUM1SSxDQUFDO0NBQ0gsQUF0QlcsQ0FzQlY7QUFFSyxxQkFBUSxHQUFHO0lBQ2hCOztDQUVIO0lBQ0c7O0NBRUg7SUFDRzs7Q0FFSDtDQUNFLEFBVmMsQ0FVYjtrQkE3Q2lCLFlBQVkifQ==
64
+ exports.default = PortalTocNew;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3BvcnRhbC90b2MvbmV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QixzQ0FBNkM7QUFDN0MsaUVBQXlFO0FBRXpFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVyQyxNQUFxQixZQUFhLFNBQVEsY0FBTztJQStDL0MsWUFBWSxJQUFjLEVBQUUsTUFBVztRQUNyQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBWSxDQUFDLENBQUM7UUFDakQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLDRCQUFrQixFQUFFLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxTQUFTLENBQy9DLEtBQUssQ0FBQyxNQUFNLEVBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQ3JCLEtBQUssQ0FBQyxXQUFXLEVBQ2pCLEtBQUssQ0FBQyxLQUFLLEVBQ1gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQ3pCLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FDdkIsQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7OztBQWpFTSxvQkFBTyxHQUFHLHdHQUF3RyxBQUEzRyxDQUE0RztBQUVuSCx3QkFBVyxHQUFHOzs7Ozs7aUhBTTBGLEFBTjdGLENBTThGO0FBRXpHLGtCQUFLLEdBQUc7SUFDYixXQUFXLEVBQUUsWUFBSyxDQUFDLE1BQU0sQ0FBQztRQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkQsV0FBVyxFQUFFLHNIQUFzSDtLQUNwSSxDQUFDO0lBQ0YsTUFBTSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25ELFdBQVcsRUFBRSw2SEFBNkg7UUFDMUksT0FBTyxFQUFFLGNBQWM7S0FDeEIsQ0FBQztJQUNGLEtBQUssRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1FBQ25CLE9BQU8sRUFBRSxLQUFLO1FBQ2QsV0FBVyxFQUFFLGtFQUFrRTtLQUNoRixDQUFDO0lBQ0Ysa0JBQWtCLEVBQUUsWUFBSyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxPQUFPLEVBQUUsS0FBSztRQUNkLFdBQVcsRUFBRSxpSUFBaUk7S0FDL0ksQ0FBQztJQUNGLGVBQWUsRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsV0FBVyxFQUFFLDhIQUE4SDtLQUM1SSxDQUFDO0NBQ0gsQUF0QlcsQ0FzQlY7QUFFSyxxQkFBUSxHQUFHO0lBQ2hCOztDQUVIO0lBQ0c7O0NBRUg7SUFDRzs7Q0FFSDtDQUNFLEFBVmMsQ0FVYjtrQkE3Q2lCLFlBQVkifQ==
@@ -43,4 +43,4 @@ class PortalNewTocPrompts {
43
43
  }
44
44
  }
45
45
  exports.PortalNewTocPrompts = PortalNewTocPrompts;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb21wdHMvcG9ydGFsL25ldy90b2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQStFO0FBRS9FLE1BQWEsbUJBQW1CO0lBQWhDO1FBQ21CLFNBQUksR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztJQThDcEMsQ0FBQztJQTVDQyxLQUFLLENBQUMsMEJBQTBCO1FBQzlCLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDO1lBQ25DLE9BQU8sRUFBRSwyRkFBMkY7WUFDcEcsT0FBTyxFQUFFO2dCQUNQLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUM5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM3QjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksSUFBQSxrQkFBUSxFQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBQSxnQkFBTSxFQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDL0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFBLGVBQUssRUFBQywwRkFBMEYsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFFRCxPQUFPLGVBQWUsS0FBSyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE9BQWU7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGdDQUFnQyxDQUFDLE9BQWU7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWU7UUFDakMsSUFBQSxlQUFLLEVBQUMsdUNBQXVDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUEsZUFBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLGFBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLGFBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBL0NELGtEQStDQyJ9
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm9tcHRzL3BvcnRhbC90b2MvbmV3LXRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0Q0FBK0U7QUFFL0UsTUFBYSxtQkFBbUI7SUFBaEM7UUFDbUIsU0FBSSxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFDO0lBOENwQyxDQUFDO0lBNUNDLEtBQUssQ0FBQywwQkFBMEI7UUFDOUIsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFBLGdCQUFNLEVBQUM7WUFDbkMsT0FBTyxFQUFFLDJGQUEyRjtZQUNwRyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQzlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFBLGtCQUFRLEVBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFBLGdCQUFNLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMvQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksZUFBZSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUEsZUFBSyxFQUFDLDBGQUEwRixDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUVELE9BQU8sZUFBZSxLQUFLLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUNBQWlDLENBQUMsT0FBZTtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsT0FBZTtRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBZTtRQUNqQyxJQUFBLGVBQUssRUFBQyx1Q0FBdUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBQSxlQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDNUIsYUFBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWU7UUFDekIsYUFBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUEvQ0Qsa0RBK0NDIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@apimatic/cli",
3
3
  "description": "The official CLI for APIMatic.",
4
- "version": "1.1.0-alpha.8",
4
+ "version": "1.1.0-alpha.9",
5
5
  "author": "APIMatic",
6
6
  "bin": {
7
7
  "apimatic": "./bin/run"
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PortalNewTocAction = void 0;
4
- const path = require("path");
5
- const fs = require("fs-extra");
6
- const toc_1 = require("../../../prompts/portal/new/toc");
7
- const result_1 = require("../../../types/common/result");
8
- const utils_1 = require("../../../utils/utils");
9
- const sdl_parser_1 = require("../../../application/portal/new/toc/sdl-parser");
10
- const toc_structure_generator_1 = require("../../../application/portal/new/toc/toc-structure-generator");
11
- const toc_content_parser_1 = require("../../../application/portal/new/toc/toc-content-parser");
12
- const portal_service_1 = require("../../../infrastructure/services/portal-service");
13
- const DEFAULT_TOC_FILENAME = "toc.yml";
14
- const APIMATIC_BUILD_FILENAME = "APIMATIC-BUILD.json";
15
- class PortalNewTocAction {
16
- constructor() {
17
- this.prompts = new toc_1.PortalNewTocPrompts();
18
- this.sdlParser = new sdl_parser_1.SdlParser(new portal_service_1.PortalService());
19
- this.tocGenerator = new toc_structure_generator_1.TocStructureGenerator();
20
- this.contentParser = new toc_content_parser_1.TocContentParser();
21
- }
22
- async createToc(workingDirectory, configDir, destination, force = false, expandEndpoints = false, expandModels = false) {
23
- try {
24
- const tocDir = await this.getDestinationPath(workingDirectory, destination);
25
- const tocPath = path.join(tocDir, DEFAULT_TOC_FILENAME);
26
- const tocCheckResult = await this.handleExistingToc(tocPath, force);
27
- if (!tocCheckResult.isSuccess()) {
28
- return tocCheckResult;
29
- }
30
- const { endpointGroups, models } = await this.extractSdlComponents(workingDirectory, configDir, expandEndpoints, expandModels);
31
- const contentGroups = await this.extractContentGroups(workingDirectory);
32
- const toc = this.tocGenerator.createTocStructure(endpointGroups, models, expandEndpoints, expandModels, contentGroups);
33
- const yamlString = this.tocGenerator.transformToYaml(toc);
34
- await this.writeToc(tocPath, yamlString, "utf8");
35
- this.prompts.displayOutroMessage(tocPath);
36
- return result_1.Result.success(tocPath);
37
- }
38
- catch (error) {
39
- this.prompts.logError((0, utils_1.getMessageInRedColor)(`${error}`));
40
- return result_1.Result.failure(`❌ An unexpected error occurred while generating the TOC file.`);
41
- }
42
- }
43
- async writeToc(path, content, encoding) {
44
- await fs.ensureFile(path);
45
- await fs.writeFile(path, content, encoding);
46
- }
47
- async handleExistingToc(tocPath, force) {
48
- const shouldContinue = await this.checkExistingToc(tocPath, force);
49
- if (!shouldContinue) {
50
- return result_1.Result.cancelled("Operation was cancelled by the user.");
51
- }
52
- return result_1.Result.success("TOC check passed.");
53
- }
54
- async extractSdlComponents(workingDirectory, configDir, expandEndpoints, expandModels) {
55
- if (!expandEndpoints && !expandModels) {
56
- return { endpointGroups: new Map(), models: [] };
57
- }
58
- this.prompts.startProgressIndicatorWithMessage("Extracting endpoints and/or models from the API specification...");
59
- const specFolderPath = await this.getSpecFolderPath(workingDirectory);
60
- if (!(await fs.pathExists(specFolderPath))) {
61
- this.prompts.stopProgressIndicatorWithMessage(`⚠️ Could not find the specification folder at: ${specFolderPath}`);
62
- this.prompts.displayInfo("Falling back to default TOC structure without expanded endpoints or models...");
63
- return { endpointGroups: new Map(), models: [] };
64
- }
65
- const sdlResult = await this.sdlParser.getTocComponentsFromSdl(specFolderPath, workingDirectory, configDir);
66
- if (!sdlResult.isSuccess()) {
67
- this.prompts.stopProgressIndicatorWithMessage(`⚠️ ${sdlResult.error}`);
68
- this.prompts.displayInfo("Falling back to default TOC structure without expanded endpoints or models...");
69
- return { endpointGroups: new Map(), models: [] };
70
- }
71
- this.prompts.stopProgressIndicatorWithMessage("✅ Successfully extracted endpoints and/or models from the specification.");
72
- return sdlResult.value;
73
- }
74
- async extractContentGroups(workingDirectory) {
75
- const contentFolderPath = await this.getContentFolderPath(workingDirectory);
76
- if (!(await fs.pathExists(contentFolderPath))) {
77
- this.prompts.displayInfo(`⚠️ Could not locate the content folder at: ${contentFolderPath}`);
78
- this.prompts.displayInfo("Skipping custom content addition in TOC...");
79
- return [];
80
- }
81
- return await this.contentParser.parseContentFolder(contentFolderPath, contentFolderPath);
82
- }
83
- async getDestinationPath(workingDirectory, providedDestination) {
84
- if (providedDestination === undefined) {
85
- const inferredDestination = await this.getContentFolderPath(workingDirectory);
86
- return inferredDestination;
87
- }
88
- return providedDestination;
89
- }
90
- async checkExistingToc(tocPath, force) {
91
- if ((await fs.pathExists(tocPath)) && !force) {
92
- return await this.prompts.overwriteExistingTocPrompt();
93
- }
94
- return true;
95
- }
96
- async getContentFolderPath(workingDirectory) {
97
- var _a;
98
- const buildFilePath = path.join(workingDirectory, APIMATIC_BUILD_FILENAME);
99
- const defaultContentFolder = path.join(workingDirectory, "content");
100
- if (!(await fs.pathExists(buildFilePath))) {
101
- return defaultContentFolder;
102
- }
103
- try {
104
- const buildConfig = await fs.readJson(buildFilePath, "utf8");
105
- if (((_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.contentFolder) == null) {
106
- return defaultContentFolder;
107
- }
108
- return path.join(workingDirectory, buildConfig.generatePortal.contentFolder, "content");
109
- }
110
- catch (_b) {
111
- return defaultContentFolder;
112
- }
113
- }
114
- async getSpecFolderPath(workingDirectory) {
115
- var _a;
116
- const buildFilePath = path.join(workingDirectory, APIMATIC_BUILD_FILENAME);
117
- const defaultSpecFolder = path.join(workingDirectory, "spec");
118
- if (!(await fs.pathExists(buildFilePath))) {
119
- return defaultSpecFolder;
120
- }
121
- try {
122
- const buildConfig = await fs.readJson(buildFilePath, "utf8");
123
- if (((_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.apiSpecPath) == null) {
124
- return defaultSpecFolder;
125
- }
126
- return path.join(workingDirectory, buildConfig.generatePortal.apiSpecPath);
127
- }
128
- catch (_b) {
129
- return defaultSpecFolder;
130
- }
131
- }
132
- }
133
- exports.PortalNewTocAction = PortalNewTocAction;
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjdGlvbnMvcG9ydGFsL25ldy90b2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQix5REFBc0U7QUFDdEUseURBQXNEO0FBQ3RELGdEQUE0RDtBQUM1RCwrRUFBMkU7QUFDM0UseUdBQW9HO0FBQ3BHLCtGQUEwRjtBQUUxRixvRkFBZ0Y7QUFFaEYsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUFDdkMsTUFBTSx1QkFBdUIsR0FBRyxxQkFBcUIsQ0FBQztBQUV0RCxNQUFhLGtCQUFrQjtJQU03QjtRQUNFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx5QkFBbUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxzQkFBUyxDQUFDLElBQUksOEJBQWEsRUFBRSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLCtDQUFxQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHFDQUFnQixFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQ2IsZ0JBQXdCLEVBQ3hCLFNBQWlCLEVBQ2pCLFdBQW9CLEVBQ3BCLFFBQWlCLEtBQUssRUFDdEIsa0JBQTJCLEtBQUssRUFDaEMsZUFBd0IsS0FBSztRQUU3QixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM1RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNw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
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SdlParser = void 0;
4
- const path = require("path");
5
- const utils_1 = require("../../../../utils/utils");
6
- const result_1 = require("../../../../types/common/result");
7
- class SdlParser {
8
- constructor(portalService) {
9
- this.portalService = portalService;
10
- }
11
- async getTocComponentsFromSdl(specFolderPath, workingDirectory, configDir) {
12
- const sourceSpecInputZipFilePath = await (0, utils_1.validateAndZipPortalSource)(specFolderPath, path.join(workingDirectory, ".spec_source.zip"));
13
- try {
14
- const result = await this.portalService.generateSdl(sourceSpecInputZipFilePath, configDir);
15
- if (!result.isSuccess()) {
16
- return result_1.Result.failure("Failed to extract endpoints/models from the specification. Please validate your spec using APIMatic's interactive VS Code extension");
17
- }
18
- const sdl = result.value;
19
- const endpointGroups = this.extractEndpointGroups(sdl);
20
- const models = this.extractModels(sdl);
21
- return result_1.Result.success({ endpointGroups, models });
22
- }
23
- finally {
24
- await (0, utils_1.deleteFile)(sourceSpecInputZipFilePath);
25
- }
26
- }
27
- extractEndpointGroups(sdl) {
28
- const endpointGroups = new Map();
29
- const endpoints = sdl.Endpoints.map((e) => ({
30
- generate: null,
31
- from: "endpoint",
32
- endpointName: e.Name,
33
- endpointGroup: e.Group
34
- }));
35
- endpoints.forEach((endpoint) => {
36
- const group = endpoint.endpointGroup;
37
- if (!endpointGroups.has(group)) {
38
- endpointGroups.set(group, []);
39
- }
40
- endpointGroups.get(group).push(endpoint);
41
- });
42
- return endpointGroups;
43
- }
44
- extractModels(sdl) {
45
- return sdl.CustomTypes.map((e) => ({
46
- generate: null,
47
- from: "model",
48
- modelName: e.Name
49
- }));
50
- }
51
- }
52
- exports.SdlParser = SdlParser;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RsLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9wb3J0YWwvbmV3L3RvYy9zZGwtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUU3QixtREFBaUY7QUFFakYsNERBQXlEO0FBR3pELE1BQWEsU0FBUztJQUNwQixZQUE2QixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUFHLENBQUM7SUFFN0QsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGNBQXNCLEVBQUUsZ0JBQXdCLEVBQUUsU0FBaUI7UUFDL0YsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLElBQUEsa0NBQTBCLEVBQ2pFLGNBQWMsRUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQ2hELENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLDBCQUEwQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTNGLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxlQUFNLENBQUMsT0FBTyxDQUFDLHFJQUFxSSxDQUFDLENBQUE7WUFDOUosQ0FBQztZQUVELE1BQU0sR0FBRyxHQUFTLE1BQU0sQ0FBQyxLQUFNLENBQUE7WUFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdkMsT0FBTyxlQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxJQUFBLGtCQUFVLEVBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEdBQVE7UUFDcEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFjLEVBQWUsRUFBRSxDQUFDLENBQUM7WUFDcEUsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsVUFBVTtZQUNoQixZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDcEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUosU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQXFCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBUTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBVyxFQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLE9BQU87WUFDYixTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUk7U0FDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUF0REQsOEJBc0RDIn0=
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TocContentParser = void 0;
4
- const path = require("path");
5
- const fs = require("fs-extra");
6
- class TocContentParser {
7
- async parseContentFolder(contentFolderPath, workingDirectory) {
8
- const items = await fs.readdir(contentFolderPath);
9
- const contentItems = [];
10
- for (const item of items) {
11
- const itemPath = path.join(contentFolderPath, item);
12
- const stats = await fs.stat(itemPath);
13
- if (stats.isDirectory()) {
14
- const subItems = await this.parseContentFolder(itemPath, workingDirectory);
15
- if (subItems.length > 0) {
16
- contentItems.push({
17
- group: item,
18
- items: subItems[0].items // Take items from the Custom Content group
19
- });
20
- }
21
- }
22
- else if (stats.isFile() && item.endsWith(".md")) {
23
- const relativePath = path.relative(workingDirectory, itemPath);
24
- const pageName = path.basename(item, ".md");
25
- contentItems.push({
26
- page: pageName,
27
- file: this.normalizePath(relativePath)
28
- });
29
- }
30
- }
31
- // Return empty array if no markdown files were found
32
- if (contentItems.length === 0) {
33
- return [];
34
- }
35
- // Wrap everything under a "Custom Content" group
36
- return [{
37
- group: "Custom Content",
38
- items: contentItems
39
- }];
40
- }
41
- normalizePath(path) {
42
- return path.replace(/\\/g, '/');
43
- }
44
- }
45
- exports.TocContentParser = TocContentParser;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLWNvbnRlbnQtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3BvcnRhbC9uZXcvdG9jL3RvYy1jb250ZW50LXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQStCO0FBRy9CLE1BQWEsZ0JBQWdCO0lBQzNCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBeUIsRUFBRSxnQkFBd0I7UUFDMUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQWlDLEVBQUUsQ0FBQztRQUV0RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLEtBQUssRUFBRSxJQUFJO3dCQUNYLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLDJDQUEyQztxQkFDckUsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTVDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztpQkFDdkMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxxREFBcUQ7UUFDckQsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxPQUFPLENBQUM7Z0JBQ04sS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsS0FBSyxFQUFFLFlBQVk7YUFDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBM0NELDRDQTJDQyJ9
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TocStructureGenerator = void 0;
4
- const yaml_1 = require("yaml");
5
- class TocStructureGenerator {
6
- createTocStructure(endpointGroups, models, expandEndpoints = false, expandModels = false, contentGroups = []) {
7
- const tocStructure = {
8
- toc: []
9
- };
10
- // Add Getting Started section
11
- tocStructure.toc.push({
12
- group: "Getting Started",
13
- items: [
14
- {
15
- generate: "How to Get Started",
16
- from: "getting-started"
17
- }
18
- ]
19
- });
20
- // Add content groups
21
- if (contentGroups.length > 0) {
22
- tocStructure.toc.push(...contentGroups);
23
- }
24
- // Add API Endpoints section
25
- if (!expandEndpoints || endpointGroups.size === 0) {
26
- tocStructure.toc.push({
27
- generate: "API Endpoints",
28
- from: "endpoints"
29
- });
30
- }
31
- else {
32
- tocStructure.toc.push({
33
- group: "API Endpoints",
34
- items: Array.from(endpointGroups).map(([groupName, endpoints]) => ({
35
- group: groupName,
36
- items: [
37
- {
38
- generate: null,
39
- from: "endpoint-group-overview",
40
- endpointGroup: groupName
41
- },
42
- ...endpoints
43
- ]
44
- }))
45
- });
46
- }
47
- // Add Models section
48
- if (!expandModels || models.length === 0) {
49
- tocStructure.toc.push({
50
- generate: "Models",
51
- from: "models"
52
- });
53
- }
54
- else {
55
- tocStructure.toc.push({
56
- group: "Models",
57
- items: models
58
- });
59
- }
60
- //Add Sdk Infra section
61
- tocStructure.toc.push({
62
- generate: "SDK Infrastructure",
63
- from: "sdk-infra"
64
- });
65
- return tocStructure;
66
- }
67
- transformToYaml(toc) {
68
- const transformedToc = this.transformKeys(toc);
69
- return (0, yaml_1.stringify)(transformedToc, {
70
- indent: 2,
71
- nullStr: ""
72
- });
73
- }
74
- transformKeys(obj) {
75
- if (Array.isArray(obj)) {
76
- return obj.map((item) => this.transformKeys(item));
77
- }
78
- if (obj !== null && typeof obj === "object") {
79
- return Object.fromEntries(Object.entries(obj).map(([key, value]) => [
80
- key.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(),
81
- this.transformKeys(value)
82
- ]));
83
- }
84
- return obj;
85
- }
86
- }
87
- exports.TocStructureGenerator = TocStructureGenerator;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLXN0cnVjdHVyZS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcG9ydGFsL25ldy90b2MvdG9jLXN0cnVjdHVyZS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQWlDO0FBR2pDLE1BQWEscUJBQXFCO0lBQ2hDLGtCQUFrQixDQUNoQixjQUEwQyxFQUMxQyxNQUFrQixFQUNsQixrQkFBMkIsS0FBSyxFQUNoQyxlQUF3QixLQUFLLEVBQzdCLGdCQUE0QixFQUFFO1FBRTlCLE1BQU0sWUFBWSxHQUFRO1lBQ3hCLEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixJQUFJLEVBQUUsaUJBQWlCO2lCQUN4QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgscUJBQXFCO1FBQ3JCLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGVBQWUsSUFBSSxjQUFjLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xELFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNwQixRQUFRLEVBQUUsZUFBZTtnQkFDekIsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDcEIsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNqRSxLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFO3dCQUNMOzRCQUNFLFFBQVEsRUFBRSxJQUFJOzRCQUNkLElBQUksRUFBRSx5QkFBeUI7NEJBQy9CLGFBQWEsRUFBRSxTQUFTO3lCQUNHO3dCQUM3QixHQUFHLFNBQVM7cUJBQ2I7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixJQUFJLEVBQUUsUUFBUTthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxRQUFRO2dCQUNmLEtBQUssRUFBRSxNQUFNO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNwQixRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLElBQUksRUFBRSxXQUFXO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBUTtRQUN0QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sSUFBQSxnQkFBUyxFQUFDLGNBQWMsRUFBRTtZQUMvQixNQUFNLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFRO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO2FBQzFCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBL0ZELHNEQStGQyJ9