@apimatic/cli 1.1.0-alpha.13 → 1.1.0-alpha.15
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 +96 -95
- package/lib/actions/action-result.d.ts +8 -0
- package/lib/actions/action-result.js +25 -0
- package/lib/actions/action-result.js.map +1 -0
- package/lib/actions/auth/login.d.ts +12 -0
- package/lib/actions/auth/login.js +63 -0
- package/lib/actions/auth/login.js.map +1 -0
- package/lib/actions/portal/copilot.d.ts +11 -0
- package/lib/actions/portal/copilot.js +46 -0
- package/lib/actions/portal/copilot.js.map +1 -0
- package/lib/actions/portal/generate.d.ts +11 -5
- package/lib/actions/portal/generate.js +54 -47
- package/lib/actions/portal/generate.js.map +1 -1
- package/lib/actions/portal/recipe/new-recipe.d.ts +3 -3
- package/lib/actions/portal/recipe/new-recipe.js +18 -31
- 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 +4 -1
- package/lib/actions/portal/toc/new-toc.js +37 -34
- package/lib/actions/portal/toc/new-toc.js.map +1 -1
- package/lib/actions/sdk/generate.d.ts +13 -0
- package/lib/actions/sdk/generate.js +49 -0
- package/lib/actions/sdk/generate.js.map +1 -0
- package/lib/application/portal/serve/portal-watcher.d.ts +11 -0
- package/lib/application/portal/serve/portal-watcher.js +67 -0
- package/lib/application/portal/serve/portal-watcher.js.map +1 -0
- package/lib/application/portal/serve/serve-handler.d.ts +16 -0
- package/lib/application/portal/serve/serve-handler.js +91 -0
- package/lib/application/portal/serve/serve-handler.js.map +1 -0
- package/lib/application/portal/serve/watcher-handler.d.ts +10 -0
- package/lib/application/portal/serve/watcher-handler.js +51 -0
- package/lib/application/portal/serve/watcher-handler.js.map +1 -0
- package/lib/application/portal/toc/sdl-parser.d.ts +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/auth-manager.d.ts +7 -2
- package/lib/client-utils/auth-manager.js +24 -7
- package/lib/client-utils/auth-manager.js.map +1 -1
- package/lib/client-utils/sdk-client.d.ts +0 -1
- package/lib/client-utils/sdk-client.js +7 -38
- package/lib/client-utils/sdk-client.js.map +1 -1
- package/lib/commands/api/transform.d.ts +2 -2
- package/lib/commands/api/transform.js +10 -19
- package/lib/commands/api/transform.js.map +1 -1
- package/lib/commands/api/validate.d.ts +1 -1
- package/lib/commands/api/validate.js +5 -13
- package/lib/commands/api/validate.js.map +1 -1
- package/lib/commands/auth/login.d.ts +2 -1
- package/lib/commands/auth/login.js +19 -65
- package/lib/commands/auth/login.js.map +1 -1
- package/lib/commands/auth/logout.js +2 -6
- package/lib/commands/auth/logout.js.map +1 -1
- package/lib/commands/auth/status.js +3 -6
- package/lib/commands/auth/status.js.map +1 -1
- package/lib/commands/portal/copilot.d.ts +12 -0
- package/lib/commands/portal/copilot.js +35 -0
- package/lib/commands/portal/copilot.js.map +1 -0
- package/lib/commands/portal/generate.d.ts +7 -10
- package/lib/commands/portal/generate.js +18 -83
- package/lib/commands/portal/generate.js.map +1 -1
- package/lib/commands/portal/quickstart.d.ts +2 -2
- package/lib/commands/portal/quickstart.js +58 -29
- package/lib/commands/portal/quickstart.js.map +1 -1
- package/lib/commands/portal/recipe/new.d.ts +1 -3
- package/lib/commands/portal/recipe/new.js +21 -27
- package/lib/commands/portal/recipe/new.js.map +1 -1
- package/lib/commands/portal/serve.d.ts +7 -6
- package/lib/commands/portal/serve.js +62 -112
- package/lib/commands/portal/serve.js.map +1 -1
- package/lib/commands/portal/toc/new.d.ts +4 -5
- package/lib/commands/portal/toc/new.js +26 -37
- package/lib/commands/portal/toc/new.js.map +1 -1
- package/lib/commands/sdk/generate.d.ts +8 -6
- package/lib/commands/sdk/generate.js +53 -124
- package/lib/commands/sdk/generate.js.map +1 -1
- package/lib/controllers/portal/quickstart.d.ts +0 -2
- package/lib/controllers/portal/quickstart.js +2 -60
- package/lib/controllers/portal/quickstart.js.map +1 -1
- package/lib/infrastructure/api-utils.d.ts +9 -0
- package/lib/infrastructure/api-utils.js +33 -0
- package/lib/infrastructure/api-utils.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +8 -0
- package/lib/infrastructure/env-info.js +37 -0
- package/lib/infrastructure/env-info.js.map +1 -0
- package/lib/infrastructure/file-service.d.ts +15 -0
- package/lib/infrastructure/file-service.js +61 -0
- package/lib/infrastructure/file-service.js.map +1 -0
- package/lib/infrastructure/services/api-service.d.ts +10 -0
- package/lib/infrastructure/services/api-service.js +52 -0
- package/lib/infrastructure/services/api-service.js.map +1 -0
- package/lib/infrastructure/services/auth-service.d.ts +11 -0
- package/lib/infrastructure/services/auth-service.js +33 -0
- package/lib/infrastructure/services/auth-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +7 -4
- package/lib/infrastructure/services/portal-service.js +70 -49
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/services/telemetry-service.d.ts +8 -0
- package/lib/infrastructure/services/telemetry-service.js +40 -0
- package/lib/infrastructure/services/telemetry-service.js.map +1 -0
- package/lib/infrastructure/tmp-extensions.d.ts +2 -0
- package/lib/infrastructure/tmp-extensions.js +6 -0
- package/lib/infrastructure/tmp-extensions.js.map +1 -0
- package/lib/infrastructure/zip-service.d.ts +6 -0
- package/lib/infrastructure/zip-service.js +25 -0
- package/lib/infrastructure/zip-service.js.map +1 -0
- package/lib/prompts/auth/login.d.ts +5 -0
- package/lib/prompts/auth/login.js +13 -0
- package/lib/prompts/auth/login.js.map +1 -0
- package/lib/prompts/portal/common/base-prompts.d.ts +7 -0
- package/lib/prompts/portal/common/base-prompts.js +19 -0
- package/lib/prompts/portal/common/base-prompts.js.map +1 -0
- package/lib/prompts/portal/copilot.d.ts +6 -0
- package/lib/prompts/portal/copilot.js +35 -0
- package/lib/prompts/portal/copilot.js.map +1 -0
- package/lib/prompts/portal/generate.d.ts +3 -2
- package/lib/prompts/portal/generate.js +21 -36
- package/lib/prompts/portal/generate.js.map +1 -1
- package/lib/prompts/portal/quickstart.d.ts +8 -9
- package/lib/prompts/portal/quickstart.js +44 -32
- package/lib/prompts/portal/quickstart.js.map +1 -1
- package/lib/prompts/portal/recipe/new-recipe.d.ts +1 -0
- package/lib/prompts/portal/recipe/new-recipe.js +18 -8
- 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.d.ts +3 -2
- package/lib/prompts/portal/toc/new-toc.js +11 -14
- package/lib/prompts/portal/toc/new-toc.js.map +1 -1
- package/lib/prompts/sdk/generate.d.ts +11 -0
- package/lib/prompts/sdk/generate.js +42 -0
- package/lib/prompts/sdk/generate.js.map +1 -0
- package/lib/types/api/account.d.ts +10 -0
- package/lib/types/api/account.js +2 -0
- package/lib/types/api/account.js.map +1 -0
- package/lib/types/build/build.d.ts +14 -0
- package/lib/types/build/build.js +4 -0
- package/lib/types/build/build.js.map +1 -0
- package/lib/types/build-context.d.ts +13 -0
- package/lib/types/build-context.js +30 -0
- package/lib/types/build-context.js.map +1 -0
- package/lib/types/events/domain-event.d.ts +8 -0
- package/lib/types/events/domain-event.js +11 -0
- package/lib/types/events/domain-event.js.map +1 -0
- package/lib/types/events/recipe-creation-failed.d.ts +5 -0
- package/lib/types/events/recipe-creation-failed.js +8 -0
- package/lib/types/events/recipe-creation-failed.js.map +1 -0
- package/lib/types/events/toc-creation-failed.d.ts +5 -0
- package/lib/types/events/toc-creation-failed.js +8 -0
- package/lib/types/events/toc-creation-failed.js.map +1 -0
- package/lib/types/file/directoryPath.d.ts +7 -0
- package/lib/types/file/directoryPath.js +16 -0
- package/lib/types/file/directoryPath.js.map +1 -0
- package/lib/types/file/fileName.d.ts +5 -0
- package/lib/types/file/fileName.js +9 -0
- package/lib/types/file/fileName.js.map +1 -0
- package/lib/types/file/filePath.d.ts +8 -0
- package/lib/types/file/filePath.js +11 -0
- package/lib/types/file/filePath.js.map +1 -0
- package/lib/types/flags-provider.d.ts +15 -0
- package/lib/types/flags-provider.js +34 -0
- package/lib/types/flags-provider.js.map +1 -0
- package/lib/types/portal/generate.d.ts +0 -13
- 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/types/portal-context.d.ts +11 -0
- package/lib/types/portal-context.js +28 -0
- package/lib/types/portal-context.js.map +1 -0
- package/lib/types/sdk/generate.d.ts +8 -8
- package/lib/types/sdk/generate.js +10 -10
- package/lib/types/sdk/generate.js.map +1 -1
- package/lib/types/sdk-context.d.ts +13 -0
- package/lib/types/sdk-context.js +28 -0
- package/lib/types/sdk-context.js.map +1 -0
- package/lib/types/spec-context.d.ts +7 -0
- package/lib/types/spec-context.js +12 -0
- package/lib/types/spec-context.js.map +1 -0
- package/lib/utils/utils.d.ts +1 -4
- package/lib/utils/utils.js +18 -32
- 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 +6 -3
- 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/controllers/sdk/generate.d.ts +0 -4
- package/lib/controllers/sdk/generate.js +0 -61
- package/lib/controllers/sdk/generate.js.map +0 -1
- package/lib/services/portal/server.d.ts +0 -14
- package/lib/services/portal/server.js +0 -97
- package/lib/services/portal/server.js.map +0 -1
- package/lib/validators/common/portValidator.d.ts +0 -5
- package/lib/validators/common/portValidator.js +0 -16
- package/lib/validators/common/portValidator.js.map +0 -1
- package/lib/validators/portal/serveValidator.d.ts +0 -6
- package/lib/validators/portal/serveValidator.js +0 -17
- package/lib/validators/portal/serveValidator.js.map +0 -1
|
@@ -1,57 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getMessageInRedColor } from "../../utils/utils.js";
|
|
1
|
+
import { outro, spinner, isCancel, confirm, log } from "@clack/prompts";
|
|
2
|
+
import { getMessageInRedColor, getMessageInMagentaColor, getMessageInCyanColor } from "../../utils/utils.js";
|
|
3
3
|
export class PortalGeneratePrompts {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.spin = spinner();
|
|
6
6
|
}
|
|
7
|
-
async
|
|
8
|
-
const
|
|
9
|
-
message: `The destination
|
|
10
|
-
|
|
11
|
-
{ value: "yes", label: "Yes" },
|
|
12
|
-
{ value: "no", label: "No" }
|
|
13
|
-
]
|
|
7
|
+
async overwritePortal(directory) {
|
|
8
|
+
const overwrite = await confirm({
|
|
9
|
+
message: `The destination '${directory}' is not empty, do you want to overwrite?`,
|
|
10
|
+
initialValue: false
|
|
14
11
|
});
|
|
15
|
-
if (isCancel(
|
|
16
|
-
|
|
17
|
-
return process.exit(1);
|
|
12
|
+
if (isCancel(overwrite)) {
|
|
13
|
+
return false;
|
|
18
14
|
}
|
|
19
|
-
|
|
20
|
-
outro("Please enter a different destination folder or remove the existing files and try again.");
|
|
21
|
-
}
|
|
22
|
-
return useExistingFolder === "yes";
|
|
23
|
-
}
|
|
24
|
-
async existingDestinationPortalZipPrompt() {
|
|
25
|
-
const useExistingZip = await select({
|
|
26
|
-
message: `A zip file already exists at the specified destination path, do you want to overwrite it?`,
|
|
27
|
-
options: [
|
|
28
|
-
{ value: "yes", label: "Yes" },
|
|
29
|
-
{ value: "no", label: "No" }
|
|
30
|
-
]
|
|
31
|
-
});
|
|
32
|
-
if (isCancel(useExistingZip)) {
|
|
33
|
-
cancel("Operation cancelled.");
|
|
34
|
-
return process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
if (useExistingZip === "no") {
|
|
37
|
-
outro("Please enter a different destination path or delete the existing zip file and try again.");
|
|
38
|
-
}
|
|
39
|
-
return useExistingZip === "yes";
|
|
15
|
+
return overwrite;
|
|
40
16
|
}
|
|
41
17
|
displayPortalGenerationMessage() {
|
|
42
|
-
this.spin.start("Generating portal
|
|
18
|
+
this.spin.start(getMessageInMagentaColor("Generating portal"));
|
|
43
19
|
}
|
|
44
20
|
displayPortalGenerationSuccessMessage() {
|
|
45
|
-
this.spin.stop("✅
|
|
21
|
+
this.spin.stop(getMessageInCyanColor("✅ Portal generated successfully."));
|
|
22
|
+
this.cleanUpStandardInput();
|
|
46
23
|
}
|
|
47
24
|
displayPortalGenerationErrorMessage() {
|
|
48
25
|
this.spin.stop(getMessageInRedColor(`Portal Generation failed.`));
|
|
26
|
+
this.cleanUpStandardInput();
|
|
49
27
|
}
|
|
50
28
|
displayOutroMessage(generatedPortalPath) {
|
|
51
29
|
outro(`The generated portal can be found at ${generatedPortalPath}`);
|
|
52
30
|
}
|
|
53
31
|
logError(error) {
|
|
54
|
-
|
|
32
|
+
log.error(error);
|
|
33
|
+
}
|
|
34
|
+
//This clears the standard input to allow interrupts like CTRL+C to work properly.
|
|
35
|
+
cleanUpStandardInput() {
|
|
36
|
+
if (process.stdin.isTTY) {
|
|
37
|
+
process.stdin.setRawMode(false);
|
|
38
|
+
process.stdin.pause();
|
|
39
|
+
}
|
|
55
40
|
}
|
|
56
41
|
}
|
|
57
42
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/portal/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/portal/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAG7G,MAAM,OAAO,qBAAqB;IAAlC;QACmB,SAAI,GAAG,OAAO,EAAE,CAAC;IA4CpC,CAAC;IA1CQ,KAAK,CAAC,eAAe,CAAC,SAAwB;QACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,oBAAoB,SAAS,2CAA2C;YACjF,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8BAA8B;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,qCAAqC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,mCAAmC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,mBAAmB,CAAC,mBAA2B;QAC7C,KAAK,CAAC,wCAAwC,mBAAmB,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,kFAAkF;IAC1E,oBAAoB;QAC1B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { BasePrompts } from "./common/base-prompts.js";
|
|
2
|
+
export declare class PortalQuickstartPrompts extends BasePrompts {
|
|
3
3
|
private readonly vscodeExtensionUrl;
|
|
4
4
|
private readonly serverUrl;
|
|
5
5
|
private readonly referenceDocumentationUrl;
|
|
@@ -10,9 +10,7 @@ export declare class PortalQuickstartPrompts {
|
|
|
10
10
|
email: string;
|
|
11
11
|
password: string;
|
|
12
12
|
}>;
|
|
13
|
-
|
|
14
|
-
displayLoggingInErrorMessage(): void;
|
|
15
|
-
displayLoggedInMessage(): void;
|
|
13
|
+
removeQuotes(str: string): string;
|
|
16
14
|
specPrompt(): Promise<string>;
|
|
17
15
|
displaySpecValidationMessage(): void;
|
|
18
16
|
displaySpecValidationSuccessMessage(): void;
|
|
@@ -20,12 +18,13 @@ export declare class PortalQuickstartPrompts {
|
|
|
20
18
|
displaySpecValidationFailureMessage(): void;
|
|
21
19
|
specValidationFailurePrompt(): Promise<void>;
|
|
22
20
|
sdkLanguagesPrompt(): Promise<string[]>;
|
|
23
|
-
|
|
21
|
+
workingDirectoryPrompt(): Promise<string>;
|
|
24
22
|
displayBuildDirectoryGenerationMessage(): void;
|
|
25
23
|
displayBuildDirectoryGenerationErrorMessage(): void;
|
|
26
24
|
displayBuildDirectoryGenerationSuccessMessage(targetFolder: string): void;
|
|
27
25
|
displayBuildDirectoryAsTree(targetFolder: string): void;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
displayOutroMessage(buildDirectory: string): void;
|
|
27
|
+
getLoggedInFirst(): void;
|
|
28
|
+
displayLoggedInMessage(email: string): void;
|
|
29
|
+
logError(error: string): void;
|
|
31
30
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import treeify from "treeify";
|
|
4
|
-
import { intro, outro, text,
|
|
4
|
+
import { intro, outro, text, select, multiselect, log, isCancel, cancel, password } from "@clack/prompts";
|
|
5
5
|
import { getMessageInCyanColor, getMessageInGreenColor, getMessageInOrangeColor, getMessageInMagentaColor, getMessageInRedColor, isValidUrl, directoryToJson } from "../../utils/utils.js";
|
|
6
|
-
|
|
6
|
+
import { BasePrompts } from "./common/base-prompts.js";
|
|
7
|
+
export class PortalQuickstartPrompts extends BasePrompts {
|
|
7
8
|
constructor() {
|
|
8
|
-
|
|
9
|
+
super(...arguments);
|
|
9
10
|
this.vscodeExtensionUrl = "\u001b[4mhttps://marketplace.visualstudio.com/items?itemName=apimatic-developers.apimatic-for-vscode\u001b[0m";
|
|
10
11
|
this.serverUrl = "\u001b[4mhttp://localhost:3000\u001b[0m";
|
|
11
12
|
this.referenceDocumentationUrl = "\u001b[4mhttps://docs.apimatic.io/platform-api/#/http/guides/generating-on-prem-api-portal/overview-generating-api-portal\u001b[0m";
|
|
@@ -49,27 +50,29 @@ export class PortalQuickstartPrompts {
|
|
|
49
50
|
}
|
|
50
51
|
return { email: String(email).trim(), password: String(pass).trim() };
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
removeQuotes(str) {
|
|
54
|
+
const quotes = ['"', "'"];
|
|
55
|
+
for (const quote of quotes) {
|
|
56
|
+
if (str.startsWith(quote) && str.endsWith(quote) && str.length > 1) {
|
|
57
|
+
return this.removeQuotes(str.slice(1, -1)); // Recursive call
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return str;
|
|
60
61
|
}
|
|
61
62
|
async specPrompt() {
|
|
62
63
|
log.step(getMessageInOrangeColor(`Step 1 of 4: Import your OpenAPI Definition`));
|
|
63
64
|
const spec = await text({
|
|
64
|
-
message: `Provide a local path or a public URL for your OpenAPI
|
|
65
|
-
placeholder: "
|
|
65
|
+
message: `Provide a local path or a public URL for your OpenAPI definition file:`,
|
|
66
|
+
placeholder: "Provide absolute URL/local path or press Enter to use sample OpenAPI file from APIMatic.",
|
|
66
67
|
defaultValue: "https://raw.githubusercontent.com/apimatic/static-portal-workflow/refs/heads/master/spec/Apimatic-Calculator.json",
|
|
67
68
|
validate: (input) => {
|
|
69
|
+
var _a;
|
|
68
70
|
if (!input)
|
|
69
71
|
return;
|
|
70
72
|
if (isValidUrl(input))
|
|
71
73
|
return;
|
|
72
|
-
const
|
|
74
|
+
const cleanedPath = this.removeQuotes((_a = input.trim()) !== null && _a !== void 0 ? _a : "");
|
|
75
|
+
const dirPath = path.resolve(cleanedPath);
|
|
73
76
|
if (fs.existsSync(dirPath)) {
|
|
74
77
|
if (fs.statSync(dirPath).isFile()) {
|
|
75
78
|
return;
|
|
@@ -83,7 +86,7 @@ export class PortalQuickstartPrompts {
|
|
|
83
86
|
cancel("Operation cancelled.");
|
|
84
87
|
return process.exit(0);
|
|
85
88
|
}
|
|
86
|
-
return String(spec).trim();
|
|
89
|
+
return this.removeQuotes(String(spec).trim());
|
|
87
90
|
}
|
|
88
91
|
displaySpecValidationMessage() {
|
|
89
92
|
log.step(getMessageInOrangeColor(`Step 2 of 4: Validate and Lint your OpenAPI file`));
|
|
@@ -140,14 +143,16 @@ export class PortalQuickstartPrompts {
|
|
|
140
143
|
}
|
|
141
144
|
return languages;
|
|
142
145
|
}
|
|
143
|
-
async
|
|
146
|
+
async workingDirectoryPrompt() {
|
|
144
147
|
log.step(getMessageInOrangeColor(`Step 4 of 4: Generate source files for Docs as Code`));
|
|
145
148
|
const directory = await text({
|
|
146
|
-
message: "Enter the directory path where you would like to setup the API Portal :",
|
|
147
|
-
placeholder: "
|
|
149
|
+
message: "Enter the directory path where you would like to setup the API Portal (Requires an empty directory):",
|
|
150
|
+
placeholder: "Provide absolute path to the directory or press Enter to use the current directory.",
|
|
148
151
|
defaultValue: "./",
|
|
149
152
|
validate: (input) => {
|
|
150
|
-
|
|
153
|
+
var _a;
|
|
154
|
+
const cleanedPath = this.removeQuotes((_a = input === null || input === void 0 ? void 0 : input.trim()) !== null && _a !== void 0 ? _a : "");
|
|
155
|
+
const dirPath = path.resolve(cleanedPath);
|
|
151
156
|
if (!fs.existsSync(dirPath) && dirPath != this.defaultPortalDirectoryPath) {
|
|
152
157
|
return getMessageInRedColor("Error: The specified directory path does not exist. Please try again.");
|
|
153
158
|
}
|
|
@@ -157,8 +162,12 @@ export class PortalQuickstartPrompts {
|
|
|
157
162
|
return getMessageInRedColor("Error: The target directory is not empty. Please provide a path to an empty directory or clear its contents.");
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
|
-
else if (fs.existsSync(dirPath)
|
|
161
|
-
|
|
165
|
+
else if (fs.existsSync(dirPath)) {
|
|
166
|
+
// For ignoring hidden files and folders in the current directory in MacOS.
|
|
167
|
+
const files = fs.readdirSync(dirPath).filter((item) => !item.startsWith("."));
|
|
168
|
+
if (files.length > 0) {
|
|
169
|
+
return getMessageInRedColor("Error: The target directory is not empty. Please provide a path to an empty directory or clear its contents.");
|
|
170
|
+
}
|
|
162
171
|
}
|
|
163
172
|
}
|
|
164
173
|
});
|
|
@@ -170,11 +179,11 @@ export class PortalQuickstartPrompts {
|
|
|
170
179
|
return this.defaultPortalDirectoryPath;
|
|
171
180
|
}
|
|
172
181
|
else {
|
|
173
|
-
return String(directory).trim();
|
|
182
|
+
return this.removeQuotes(String(directory).trim());
|
|
174
183
|
}
|
|
175
184
|
}
|
|
176
185
|
displayBuildDirectoryGenerationMessage() {
|
|
177
|
-
this.spin.start(getMessageInMagentaColor("Generating build directory
|
|
186
|
+
this.spin.start(getMessageInMagentaColor("Generating build directory ⚙️"));
|
|
178
187
|
}
|
|
179
188
|
displayBuildDirectoryGenerationErrorMessage() {
|
|
180
189
|
this.spin.stop(getMessageInRedColor(`Something went wrong while setting up your build directory.`));
|
|
@@ -189,17 +198,11 @@ export class PortalQuickstartPrompts {
|
|
|
189
198
|
.split("\n")
|
|
190
199
|
.map((line) => line.replace(/#.*/, (match) => getMessageInGreenColor(match)))
|
|
191
200
|
.join("\n");
|
|
192
|
-
log.
|
|
193
|
-
}
|
|
194
|
-
displayPortalGenerationMessage() {
|
|
195
|
-
this.spin.start(getMessageInMagentaColor("Setting up portal"));
|
|
196
|
-
}
|
|
197
|
-
displayPortalGenerationSuccessMessage() {
|
|
198
|
-
this.spin.stop(getMessageInCyanColor("✅ Portal setup complete!"));
|
|
201
|
+
log.step(coloredLogString);
|
|
199
202
|
}
|
|
200
|
-
displayOutroMessage(
|
|
203
|
+
displayOutroMessage(buildDirectory) {
|
|
201
204
|
log.step(getMessageInCyanColor(`📢 Your API Portal is live at: ${this.serverUrl}\n`) +
|
|
202
|
-
getMessageInCyanColor(`Hot reload enabled! Edit files in ${
|
|
205
|
+
getMessageInCyanColor(`Hot reload enabled! Edit files in ${buildDirectory} to see changes instantly reflected in your API Portal.\n`) +
|
|
203
206
|
getMessageInCyanColor(`Press CTRL+C to stop the server.`));
|
|
204
207
|
outro(getMessageInCyanColor(`What's next?\n`) +
|
|
205
208
|
getMessageInCyanColor(`- Check out the Interactive Playground in your API Portal.\n`) +
|
|
@@ -208,5 +211,14 @@ export class PortalQuickstartPrompts {
|
|
|
208
211
|
getMessageInCyanColor(`- Review the SDK Documentation for your favourite programming language and download an SDK from the API Portal.\n`) +
|
|
209
212
|
getMessageInCyanColor(`- Check out how you can customize the SDKs using Code Generation settings: ${this.customizeTheSdksUrl}`));
|
|
210
213
|
}
|
|
214
|
+
getLoggedInFirst() {
|
|
215
|
+
log.step("You need to be logged in to continue.");
|
|
216
|
+
}
|
|
217
|
+
displayLoggedInMessage(email) {
|
|
218
|
+
log.success(`Successfully logged in as ${email}`);
|
|
219
|
+
}
|
|
220
|
+
logError(error) {
|
|
221
|
+
log.error(error);
|
|
222
|
+
}
|
|
211
223
|
}
|
|
212
224
|
//# sourceMappingURL=quickstart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/prompts/portal/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/prompts/portal/quickstart.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export declare class PortalRecipePrompts {
|
|
|
4
4
|
private readonly spin;
|
|
5
5
|
displayWelcomeMessage(): void;
|
|
6
6
|
recipeNamePrompt(): Promise<string>;
|
|
7
|
+
removeQuotes(str: string): string;
|
|
7
8
|
buildConfigFilePathPrompt(buildDirectoryPath: string): Promise<string>;
|
|
8
9
|
stepNamePrompt(defaultStepName: string): Promise<string>;
|
|
9
10
|
displayStepsInformation(): void;
|
|
@@ -30,17 +30,28 @@ export class PortalRecipePrompts {
|
|
|
30
30
|
}
|
|
31
31
|
return recipeName.trim();
|
|
32
32
|
}
|
|
33
|
+
//Todo: Find a better place for this function
|
|
34
|
+
removeQuotes(str) {
|
|
35
|
+
const quotes = ['"', "'"];
|
|
36
|
+
for (const quote of quotes) {
|
|
37
|
+
if (str.startsWith(quote) && str.endsWith(quote) && str.length > 1) {
|
|
38
|
+
return this.removeQuotes(str.slice(1, -1)); // Recursive call
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return str;
|
|
42
|
+
}
|
|
33
43
|
async buildConfigFilePathPrompt(buildDirectoryPath) {
|
|
34
44
|
const buildConfigFilePath = await text({
|
|
35
|
-
message: `⚠️
|
|
45
|
+
message: `⚠️ APIMATIC-BUILD.json is required and was not found in "${buildDirectoryPath}".\nPlease enter the path to your build config file (relative to this directory):`,
|
|
36
46
|
validate: (filePath) => {
|
|
37
47
|
if (!filePath) {
|
|
38
48
|
return "Build config file path cannot be empty. Please provide a valid file path.";
|
|
39
49
|
}
|
|
40
|
-
|
|
50
|
+
const cleanedPath = this.removeQuotes(filePath.trim());
|
|
51
|
+
const resolvedPath = path.resolve(buildDirectoryPath, cleanedPath);
|
|
52
|
+
if (!resolvedPath.endsWith(".json")) {
|
|
41
53
|
return "The content file must be a JSON (.json) file. Please provide a valid file path.";
|
|
42
54
|
}
|
|
43
|
-
const resolvedPath = path.resolve(buildDirectoryPath, filePath);
|
|
44
55
|
if (fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isFile()) {
|
|
45
56
|
return;
|
|
46
57
|
}
|
|
@@ -51,7 +62,7 @@ export class PortalRecipePrompts {
|
|
|
51
62
|
cancel("Operation cancelled.");
|
|
52
63
|
return process.exit(0);
|
|
53
64
|
}
|
|
54
|
-
return path.resolve(buildDirectoryPath, buildConfigFilePath.trim());
|
|
65
|
+
return path.resolve(buildDirectoryPath, this.removeQuotes(buildConfigFilePath.trim()));
|
|
55
66
|
}
|
|
56
67
|
async stepNamePrompt(defaultStepName) {
|
|
57
68
|
const stepName = await text({
|
|
@@ -141,7 +152,8 @@ export class PortalRecipePrompts {
|
|
|
141
152
|
options: [
|
|
142
153
|
{ value: "yes", label: "Yes" },
|
|
143
154
|
{ value: "no", label: "No" }
|
|
144
|
-
]
|
|
155
|
+
],
|
|
156
|
+
initialValue: "yes"
|
|
145
157
|
});
|
|
146
158
|
if (isCancel(addAnotherStep)) {
|
|
147
159
|
cancel("Operation cancelled.");
|
|
@@ -167,8 +179,7 @@ export class PortalRecipePrompts {
|
|
|
167
179
|
log.step(`✅ Step has been added successfully.`);
|
|
168
180
|
}
|
|
169
181
|
displayRecipeGenerationSuccessMessage(buildDirectoryPath) {
|
|
170
|
-
log.
|
|
171
|
-
log.message(`📦 Generated recipe has been added to build directory at: ${buildDirectoryPath}`);
|
|
182
|
+
log.message(`🎉 Generated recipe has been added to build directory at: ${buildDirectoryPath}`);
|
|
172
183
|
outro(`▶ Run the command 'apimatic portal:serve' to preview your documentation portal.`);
|
|
173
184
|
}
|
|
174
185
|
startProgressIndicatorWithMessage(message) {
|
|
@@ -184,7 +195,6 @@ export class PortalRecipePrompts {
|
|
|
184
195
|
.map((line) => line.replace(/#.*/, (match) => getMessageInGreenColor(match)))
|
|
185
196
|
.join("\n");
|
|
186
197
|
log.step(`🛠️ You can edit the following files to customize your API Recipe :\n\n` + coloredLogString);
|
|
187
|
-
log.message(`💡 Modify the TOC file to change the position of the API Recipes section in the navbar.`);
|
|
188
198
|
}
|
|
189
199
|
logError(error) {
|
|
190
200
|
outro(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-recipe.js","sourceRoot":"","sources":["../../../../src/prompts/portal/recipe/new-recipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,MAAM,OAAO,mBAAmB;IAAhC;QACmB,SAAI,GAAG,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"new-recipe.js","sourceRoot":"","sources":["../../../../src/prompts/portal/recipe/new-recipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
displayGeneratedPortalMessage(portalDir: string): void;
|
|
6
|
-
displayOutroMessage(port: number): void;
|
|
1
|
+
import { BasePrompts } from "./common/base-prompts.js";
|
|
2
|
+
export declare class PortalServePrompts extends BasePrompts {
|
|
3
|
+
overwriteExistingPortalArtifactsPrompt(): Promise<boolean>;
|
|
4
|
+
displayOutroMessage(buildDirectory: string, portalDirectory: string, port: number, hotReloadDisabled: boolean): void;
|
|
7
5
|
}
|
|
@@ -1,20 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import process from "process";
|
|
2
|
+
import { cancel, isCancel, log, outro, select } from "@clack/prompts";
|
|
3
|
+
import { BasePrompts } from "./common/base-prompts.js";
|
|
4
|
+
export class PortalServePrompts extends BasePrompts {
|
|
5
|
+
async overwriteExistingPortalArtifactsPrompt() {
|
|
6
|
+
const useExistingFolder = await select({
|
|
7
|
+
message: `⚠️ The destination folder is not empty, do you want to overwrite the existing files?`,
|
|
8
|
+
options: [
|
|
9
|
+
{ value: "yes", label: "Yes" },
|
|
10
|
+
{ value: "no", label: "No" }
|
|
11
|
+
],
|
|
12
|
+
initialValue: "no"
|
|
13
|
+
});
|
|
14
|
+
if (isCancel(useExistingFolder)) {
|
|
15
|
+
cancel("Operation cancelled.");
|
|
16
|
+
return process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
return useExistingFolder === "yes";
|
|
6
19
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
displayGeneratingPortalErrorMessage() {
|
|
11
|
-
this.spin.stop(getMessageInRedColor(`There was an error while generating the portal.`));
|
|
12
|
-
}
|
|
13
|
-
displayGeneratedPortalMessage(portalDir) {
|
|
14
|
-
this.spin.stop(`Portal generated successfully at ${portalDir}`);
|
|
15
|
-
}
|
|
16
|
-
displayOutroMessage(port) {
|
|
20
|
+
displayOutroMessage(buildDirectory, portalDirectory, port, hotReloadDisabled) {
|
|
21
|
+
log.message(`The generated portal can be found at ${portalDirectory}`);
|
|
17
22
|
log.message(`Server started at http://localhost:${port}`);
|
|
23
|
+
if (!hotReloadDisabled) {
|
|
24
|
+
log.message(`🔍 Hot reload enabled. Watching the following build folder for any changes:`);
|
|
25
|
+
log.message(`${buildDirectory}`);
|
|
26
|
+
}
|
|
18
27
|
outro(`Press CTRL+C to stop the server.`);
|
|
19
28
|
}
|
|
20
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/prompts/portal/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/prompts/portal/serve.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAC1C,KAAK,CAAC,sCAAsC;QACjD,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC;YACrC,OAAO,EAAE,uFAAuF;YAChG,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;aAC7B;YACD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,iBAAiB,KAAK,KAAK,CAAC;IACrC,CAAC;IAEM,mBAAmB,CACxB,cAAsB,EACtB,eAAuB,EACvB,IAAY,EACZ,iBAA0B;QAE1B,GAAG,CAAC,OAAO,CAAC,wCAAwC,eAAe,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { FilePath } from "../../../types/file/filePath.js";
|
|
1
2
|
export declare class PortalNewTocPrompts {
|
|
2
3
|
private readonly spin;
|
|
3
|
-
overwriteExistingTocPrompt(): Promise<boolean>;
|
|
4
|
+
overwriteExistingTocPrompt(tocPath: FilePath): Promise<boolean>;
|
|
4
5
|
startProgressIndicatorWithMessage(message: string): void;
|
|
5
6
|
stopProgressIndicatorWithMessage(message: string): void;
|
|
6
|
-
displayOutroMessage(tocPath:
|
|
7
|
+
displayOutroMessage(tocPath: FilePath): void;
|
|
7
8
|
logError(error: string): void;
|
|
8
9
|
displayWarning(message: string): void;
|
|
9
10
|
displayInfo(message: string): void;
|
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
import { cancel, outro,
|
|
1
|
+
import { cancel, outro, confirm, spinner, isCancel, log } from "@clack/prompts";
|
|
2
2
|
export class PortalNewTocPrompts {
|
|
3
3
|
constructor() {
|
|
4
4
|
this.spin = spinner();
|
|
5
5
|
}
|
|
6
|
-
async overwriteExistingTocPrompt() {
|
|
7
|
-
const
|
|
8
|
-
message:
|
|
9
|
-
|
|
10
|
-
{ value: "yes", label: "Yes" },
|
|
11
|
-
{ value: "no", label: "No" }
|
|
12
|
-
]
|
|
6
|
+
async overwriteExistingTocPrompt(tocPath) {
|
|
7
|
+
const overwrite = await confirm({
|
|
8
|
+
message: `⚠️ The destination file '${tocPath}' already exists, do you want to overwrite it?`,
|
|
9
|
+
initialValue: false
|
|
13
10
|
});
|
|
14
|
-
if (isCancel(
|
|
11
|
+
if (isCancel(overwrite)) {
|
|
15
12
|
cancel("Operation cancelled.");
|
|
16
|
-
return
|
|
13
|
+
return false;
|
|
17
14
|
}
|
|
18
|
-
if (
|
|
19
|
-
outro("Please enter a different destination path or delete the existing toc file and try again.");
|
|
15
|
+
if (!overwrite) {
|
|
16
|
+
outro("Please enter a different destination path or delete the existing toc.yml file and try again.");
|
|
20
17
|
}
|
|
21
|
-
return
|
|
18
|
+
return overwrite;
|
|
22
19
|
}
|
|
23
20
|
startProgressIndicatorWithMessage(message) {
|
|
24
21
|
this.spin.start(message);
|
|
@@ -27,7 +24,7 @@ export class PortalNewTocPrompts {
|
|
|
27
24
|
this.spin.stop(message);
|
|
28
25
|
}
|
|
29
26
|
displayOutroMessage(tocPath) {
|
|
30
|
-
outro(`✅
|
|
27
|
+
outro(`✅ toc.yml file successfully created at: ${tocPath}`);
|
|
31
28
|
}
|
|
32
29
|
logError(error) {
|
|
33
30
|
outro(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/prompts/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/prompts/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGhF,MAAM,OAAO,mBAAmB;IAAhC;QACmB,SAAI,GAAG,OAAO,EAAE,CAAC;IA2CpC,CAAC;IAzCC,KAAK,CAAC,0BAA0B,CAAC,OAAiB;QAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,4BAA4B,OAAO,gDAAgD;YAC5F,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,CAAC,8FAA8F,CAAC,CAAC;QACxG,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC,CAAC,OAAe;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,gCAAgC,CAAC,OAAe;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAAC,OAAiB;QACnC,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
|
+
export declare class SdkGeneratePrompts {
|
|
3
|
+
private readonly spin;
|
|
4
|
+
overwriteSdk(directory: DirectoryPath): Promise<boolean>;
|
|
5
|
+
displaySdkGenerationMessage(): void;
|
|
6
|
+
displaySdkGenerationSuccessMessage(): void;
|
|
7
|
+
displaySdkGenerationErrorMessage(): void;
|
|
8
|
+
displayOutroMessage(generatedSdkPath: DirectoryPath): void;
|
|
9
|
+
logError(error: string): void;
|
|
10
|
+
private cleanUpStandardInput;
|
|
11
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { outro, spinner, isCancel, confirm, log } from "@clack/prompts";
|
|
2
|
+
import { getMessageInRedColor, getMessageInMagentaColor, getMessageInCyanColor } from "../../utils/utils.js";
|
|
3
|
+
export class SdkGeneratePrompts {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.spin = spinner();
|
|
6
|
+
}
|
|
7
|
+
async overwriteSdk(directory) {
|
|
8
|
+
const overwrite = await confirm({
|
|
9
|
+
message: `The destination '${directory}' is not empty, do you want to overwrite?`,
|
|
10
|
+
initialValue: false
|
|
11
|
+
});
|
|
12
|
+
if (isCancel(overwrite)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return overwrite;
|
|
16
|
+
}
|
|
17
|
+
displaySdkGenerationMessage() {
|
|
18
|
+
this.spin.start(getMessageInMagentaColor("Generating SDK"));
|
|
19
|
+
}
|
|
20
|
+
displaySdkGenerationSuccessMessage() {
|
|
21
|
+
this.spin.stop(getMessageInCyanColor("✅ SDK generated successfully."));
|
|
22
|
+
this.cleanUpStandardInput();
|
|
23
|
+
}
|
|
24
|
+
displaySdkGenerationErrorMessage() {
|
|
25
|
+
this.spin.stop(getMessageInRedColor(`Sdk Generation failed.`));
|
|
26
|
+
this.cleanUpStandardInput();
|
|
27
|
+
}
|
|
28
|
+
displayOutroMessage(generatedSdkPath) {
|
|
29
|
+
outro(`The generated SDK can be found at ${generatedSdkPath}`);
|
|
30
|
+
}
|
|
31
|
+
logError(error) {
|
|
32
|
+
log.error(error);
|
|
33
|
+
}
|
|
34
|
+
//This clears the standard input to allow interrupts like CTRL+C to work properly.
|
|
35
|
+
cleanUpStandardInput() {
|
|
36
|
+
if (process.stdin.isTTY) {
|
|
37
|
+
process.stdin.setRawMode(false);
|
|
38
|
+
process.stdin.pause();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=generate.js.map
|