@apimatic/cli 1.1.0 → 1.2.1
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/lib/actions/auth/status.js +5 -1
- package/lib/actions/auth/status.js.map +1 -1
- package/lib/actions/portal/copilot.js +1 -1
- package/lib/actions/portal/copilot.js.map +1 -1
- package/lib/actions/portal/quickstart.js +51 -16
- package/lib/actions/portal/quickstart.js.map +1 -1
- package/lib/actions/portal/toc/new-toc.js +27 -16
- package/lib/actions/portal/toc/new-toc.js.map +1 -1
- package/lib/actions/sdk/quickstart.d.ts +1 -0
- package/lib/actions/sdk/quickstart.js +18 -2
- package/lib/actions/sdk/quickstart.js.map +1 -1
- package/lib/commands/portal/generate.js +1 -1
- package/lib/commands/portal/generate.js.map +1 -1
- package/lib/commands/quickstart.js +1 -1
- package/lib/commands/quickstart.js.map +1 -1
- package/lib/infrastructure/service-error.d.ts +1 -0
- package/lib/infrastructure/service-error.js +55 -0
- package/lib/infrastructure/service-error.js.map +1 -1
- package/lib/infrastructure/services/api-service.d.ts +7 -4
- package/lib/infrastructure/services/api-service.js +18 -48
- package/lib/infrastructure/services/api-service.js.map +1 -1
- package/lib/infrastructure/services/portal-service.d.ts +7 -0
- package/lib/infrastructure/services/portal-service.js +64 -126
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/services/publishing-api-service.js +12 -6
- package/lib/infrastructure/services/publishing-api-service.js.map +1 -1
- package/lib/infrastructure/services/transformation-service.d.ts +1 -0
- package/lib/infrastructure/services/transformation-service.js +29 -14
- package/lib/infrastructure/services/transformation-service.js.map +1 -1
- package/lib/infrastructure/services/validation-service.d.ts +21 -0
- package/lib/infrastructure/services/validation-service.js +95 -5
- package/lib/infrastructure/services/validation-service.js.map +1 -1
- package/lib/prompts/auth/login.js +9 -2
- package/lib/prompts/auth/login.js.map +1 -1
- package/lib/prompts/auth/status.d.ts +1 -0
- package/lib/prompts/auth/status.js +5 -0
- package/lib/prompts/auth/status.js.map +1 -1
- package/lib/prompts/portal/generate.js +1 -1
- package/lib/prompts/portal/generate.js.map +1 -1
- package/lib/prompts/portal/quickstart.d.ts +8 -3
- package/lib/prompts/portal/quickstart.js +69 -17
- package/lib/prompts/portal/quickstart.js.map +1 -1
- package/lib/prompts/portal/toc/new-toc.d.ts +3 -2
- package/lib/prompts/portal/toc/new-toc.js +7 -3
- package/lib/prompts/portal/toc/new-toc.js.map +1 -1
- package/lib/prompts/quickstart.js +4 -4
- package/lib/prompts/quickstart.js.map +1 -1
- package/lib/prompts/sdk/quickstart.d.ts +4 -1
- package/lib/prompts/sdk/quickstart.js +32 -13
- package/lib/prompts/sdk/quickstart.js.map +1 -1
- package/lib/types/api/account.d.ts +1 -0
- package/lib/types/api/generation-status-endpoint.d.ts +8 -0
- package/lib/types/api/generation-status-endpoint.js +12 -0
- package/lib/types/api/generation-status-endpoint.js.map +1 -0
- package/lib/types/api/generation-status.d.ts +5 -0
- package/lib/types/api/generation-status.js +2 -0
- package/lib/types/api/generation-status.js.map +1 -0
- package/lib/types/build/build.d.ts +2 -0
- package/lib/types/build/build.js +18 -1
- package/lib/types/build/build.js.map +1 -1
- package/lib/types/build-context.d.ts +2 -0
- package/lib/types/build-context.js +4 -0
- package/lib/types/build-context.js.map +1 -1
- package/lib/types/sdk/generate.d.ts +10 -0
- package/lib/types/sdk/generate.js +15 -0
- package/lib/types/sdk/generate.js.map +1 -1
- package/lib/types/toc/toc-components.d.ts +0 -1
- package/lib/types/toc/toc-components.js +0 -3
- package/lib/types/toc/toc-components.js.map +1 -1
- package/lib/utils/utils.d.ts +1 -0
- package/lib/utils/utils.js +22 -0
- package/lib/utils/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import { Result } from "neverthrow";
|
|
|
4
4
|
import { FilePath } from "../../types/file/filePath.js";
|
|
5
5
|
import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
6
6
|
import { ServiceError } from "../service-error.js";
|
|
7
|
+
import { BuildConfig } from "../../types/build/build.js";
|
|
7
8
|
export declare enum RemovableFeature {
|
|
8
9
|
Merging = "Merging",
|
|
9
10
|
Pagination = "Pagination",
|
|
@@ -31,12 +32,32 @@ export interface ValidateApiResponse {
|
|
|
31
32
|
result: ValidateApiResult;
|
|
32
33
|
unallowedFeatures: UnallowedFeaturesResponse | null;
|
|
33
34
|
}
|
|
35
|
+
export interface BuildFilePruneReport {
|
|
36
|
+
removedLanguages: string[];
|
|
37
|
+
removedApiCopilot: boolean;
|
|
38
|
+
removedAiIntegration: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface PruneBuildFileResponse {
|
|
41
|
+
buildFile: BuildConfig;
|
|
42
|
+
report: BuildFilePruneReport;
|
|
43
|
+
}
|
|
34
44
|
export declare class ValidationService {
|
|
35
45
|
private readonly configDir;
|
|
36
46
|
private readonly apiBaseUrl;
|
|
47
|
+
private readonly zipService;
|
|
48
|
+
private readonly fileService;
|
|
37
49
|
constructor(configDir: DirectoryPath);
|
|
38
50
|
validateViaFile({ file, commandMetadata, authKey }: ValidateViaFileParams): Promise<Result<ValidateApiResponse, string>>;
|
|
39
51
|
stripUnallowedFeatures(specPath: FilePath, featuresToRemove: FeaturesToRemove, authKey?: string | null): Promise<Result<NodeJS.ReadableStream, ServiceError>>;
|
|
52
|
+
/**
|
|
53
|
+
* Prunes a build file down to what the user's subscription allows (SDK languages +
|
|
54
|
+
* AI features) via the platform, returning the pruned build file and a report of
|
|
55
|
+
* what was removed. The platform is the entitlement authority, so the build we
|
|
56
|
+
* submit for generation is never rejected for a build-file feature the plan lacks.
|
|
57
|
+
*/
|
|
58
|
+
pruneBuildFile(buildConfigFilePath: FilePath, authKey?: string | null): Promise<Result<PruneBuildFileResponse, ServiceError>>;
|
|
59
|
+
/** Decodes a streamed error body into a ServiceError with a prune-specific fallback message. */
|
|
60
|
+
private parsePruneErrorResponse;
|
|
40
61
|
private createAuthorizationHeader;
|
|
41
62
|
private handleValidationErrors;
|
|
42
63
|
private parseErrorResponse;
|
|
@@ -5,11 +5,17 @@ import { ApiValidationV2ExternalApisController, ContentType, FileWrapper, ApiErr
|
|
|
5
5
|
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
6
6
|
import { apiClientFactory } from "./api-client-factory.js";
|
|
7
7
|
import { err, ok } from "neverthrow";
|
|
8
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
9
|
+
import { FileName } from "../../types/file/fileName.js";
|
|
8
10
|
import FormData from "form-data";
|
|
9
|
-
import {
|
|
11
|
+
import { ZipService } from "../zip-service.js";
|
|
12
|
+
import { FileService } from "../file-service.js";
|
|
13
|
+
import { withDirPath } from "../tmp-extensions.js";
|
|
14
|
+
import { handleServiceError, ServiceError } from "../service-error.js";
|
|
10
15
|
import axios from "axios";
|
|
11
16
|
import { envInfo } from "../env-info.js";
|
|
12
17
|
import { Buffer } from "node:buffer";
|
|
18
|
+
import { BuildConfig } from "../../types/build/build.js";
|
|
13
19
|
export var RemovableFeature;
|
|
14
20
|
(function (RemovableFeature) {
|
|
15
21
|
RemovableFeature["Merging"] = "Merging";
|
|
@@ -23,6 +29,8 @@ export class ValidationService {
|
|
|
23
29
|
constructor(configDir) {
|
|
24
30
|
this.configDir = configDir;
|
|
25
31
|
this.apiBaseUrl = "https://api.apimatic.io";
|
|
32
|
+
this.zipService = new ZipService();
|
|
33
|
+
this.fileService = new FileService();
|
|
26
34
|
}
|
|
27
35
|
async validateViaFile({ file, commandMetadata, authKey }) {
|
|
28
36
|
var _a;
|
|
@@ -75,6 +83,88 @@ export class ValidationService {
|
|
|
75
83
|
return err(handleServiceError(error));
|
|
76
84
|
}
|
|
77
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Prunes a build file down to what the user's subscription allows (SDK languages +
|
|
88
|
+
* AI features) via the platform, returning the pruned build file and a report of
|
|
89
|
+
* what was removed. The platform is the entitlement authority, so the build we
|
|
90
|
+
* submit for generation is never rejected for a build-file feature the plan lacks.
|
|
91
|
+
*/
|
|
92
|
+
async pruneBuildFile(buildConfigFilePath, authKey) {
|
|
93
|
+
var _a;
|
|
94
|
+
const authInfo = await getAuthInfo(this.configDir.toString());
|
|
95
|
+
const authorizationHeader = this.createAuthorizationHeader(authInfo, authKey !== null && authKey !== void 0 ? authKey : null);
|
|
96
|
+
const formData = new FormData();
|
|
97
|
+
formData.append("file", createReadStream(buildConfigFilePath.toString()), {
|
|
98
|
+
filename: "APIMATIC-BUILD.json",
|
|
99
|
+
contentType: "application/json"
|
|
100
|
+
});
|
|
101
|
+
const baseURL = (_a = envInfo.getBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl;
|
|
102
|
+
try {
|
|
103
|
+
const response = await axios({
|
|
104
|
+
method: "POST",
|
|
105
|
+
url: `${baseURL}/build-features/prune`,
|
|
106
|
+
data: formData,
|
|
107
|
+
headers: Object.assign(Object.assign({}, formData.getHeaders()), { Authorization: authorizationHeader }),
|
|
108
|
+
// The endpoint returns a zip (pruned APIMATIC-BUILD.json + report.json),
|
|
109
|
+
// streamed so it can be written straight to disk and unarchived.
|
|
110
|
+
responseType: "stream",
|
|
111
|
+
validateStatus: () => true
|
|
112
|
+
});
|
|
113
|
+
if (response.status >= 400) {
|
|
114
|
+
return err(await this.parsePruneErrorResponse(response));
|
|
115
|
+
}
|
|
116
|
+
// Persist the zip to a temp dir and extract it via ZipService, then read the
|
|
117
|
+
// two entries back off disk — no in-memory zip handling.
|
|
118
|
+
return await withDirPath(async (tempDir) => {
|
|
119
|
+
const zipPath = new FilePath(tempDir, new FileName("prune-response.zip"));
|
|
120
|
+
await this.fileService.writeFile(zipPath, response.data);
|
|
121
|
+
const extractDir = tempDir.join("prune");
|
|
122
|
+
await this.zipService.unArchive(zipPath, extractDir);
|
|
123
|
+
const prunedBuildConfigFile = new FilePath(extractDir, new FileName("APIMATIC-BUILD.json"));
|
|
124
|
+
const reportFile = new FilePath(extractDir, new FileName("report.json"));
|
|
125
|
+
if (!(await this.fileService.fileExists(prunedBuildConfigFile)) || !(await this.fileService.fileExists(reportFile))) {
|
|
126
|
+
return err(ServiceError.ServerError);
|
|
127
|
+
}
|
|
128
|
+
const buildConfigFile = BuildConfig.parse(await this.fileService.getContents(prunedBuildConfigFile));
|
|
129
|
+
const report = JSON.parse(await this.fileService.getContents(reportFile));
|
|
130
|
+
return ok({ buildFile: buildConfigFile, report });
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return err(handleServiceError(error));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Decodes a streamed error body into a ServiceError with a prune-specific fallback message. */
|
|
138
|
+
async parsePruneErrorResponse(response) {
|
|
139
|
+
var _a, e_1, _b, _c;
|
|
140
|
+
var _d, _e, _f, _g, _h;
|
|
141
|
+
const chunks = [];
|
|
142
|
+
try {
|
|
143
|
+
for (var _j = true, _k = __asyncValues(response.data), _l; _l = await _k.next(), _a = _l.done, !_a; _j = true) {
|
|
144
|
+
_c = _l.value;
|
|
145
|
+
_j = false;
|
|
146
|
+
const chunk = _c;
|
|
147
|
+
chunks.push(Buffer.from(chunk));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
151
|
+
finally {
|
|
152
|
+
try {
|
|
153
|
+
if (!_j && !_a && (_b = _k.return)) await _b.call(_k);
|
|
154
|
+
}
|
|
155
|
+
finally { if (e_1) throw e_1.error; }
|
|
156
|
+
}
|
|
157
|
+
const errorBody = Buffer.concat(chunks).toString("utf-8");
|
|
158
|
+
let message = `Error ${response.status}: Failed to prune the build file for your subscription.`;
|
|
159
|
+
try {
|
|
160
|
+
const body = JSON.parse(errorBody);
|
|
161
|
+
message = (_h = (_g = (_f = (_e = (_d = body === null || body === void 0 ? void 0 : body.errors) === null || _d === void 0 ? void 0 : _d.summary) === null || _e === void 0 ? void 0 : _e[0]) !== null && _f !== void 0 ? _f : body === null || body === void 0 ? void 0 : body.message) !== null && _g !== void 0 ? _g : body === null || body === void 0 ? void 0 : body.title) !== null && _h !== void 0 ? _h : message;
|
|
162
|
+
}
|
|
163
|
+
catch (_m) {
|
|
164
|
+
// Non-JSON / undecodable body — keep the default message.
|
|
165
|
+
}
|
|
166
|
+
return ServiceError.badRequest(message, {});
|
|
167
|
+
}
|
|
78
168
|
createAuthorizationHeader(authInfo, overrideAuthKey) {
|
|
79
169
|
const key = overrideAuthKey || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.authKey);
|
|
80
170
|
return `X-Auth-Key ${key !== null && key !== void 0 ? key : ""}`;
|
|
@@ -86,7 +176,7 @@ export class ValidationService {
|
|
|
86
176
|
case 400:
|
|
87
177
|
return "Your API Definition is invalid. Please fix the issues and try again.";
|
|
88
178
|
case 401:
|
|
89
|
-
return
|
|
179
|
+
return ServiceError.unauthorizedWithHint(null).errorMessage;
|
|
90
180
|
case 403:
|
|
91
181
|
return "You do not have permission to perform this action.";
|
|
92
182
|
case 500:
|
|
@@ -98,7 +188,7 @@ export class ValidationService {
|
|
|
98
188
|
return "Unexpected error occurred while validating API specification.";
|
|
99
189
|
}
|
|
100
190
|
async parseErrorResponse(response) {
|
|
101
|
-
var _a,
|
|
191
|
+
var _a, e_2, _b, _c;
|
|
102
192
|
var _d, _e;
|
|
103
193
|
const chunks = [];
|
|
104
194
|
try {
|
|
@@ -109,12 +199,12 @@ export class ValidationService {
|
|
|
109
199
|
chunks.push(Buffer.from(chunk));
|
|
110
200
|
}
|
|
111
201
|
}
|
|
112
|
-
catch (
|
|
202
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
113
203
|
finally {
|
|
114
204
|
try {
|
|
115
205
|
if (!_f && !_a && (_b = _g.return)) await _b.call(_g);
|
|
116
206
|
}
|
|
117
|
-
finally { if (
|
|
207
|
+
finally { if (e_2) throw e_2.error; }
|
|
118
208
|
}
|
|
119
209
|
const errorBody = Buffer.concat(chunks).toString('utf-8');
|
|
120
210
|
let errorMessage = `Error ${response.status}: Failed to strip unallowed features.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/validation-service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAEL,qCAAqC,EAErC,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validation-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/validation-service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAEL,qCAAqC,EAErC,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,6CAAyB,CAAA;IACzB,yCAAqB,CAAA;IACrB,2CAAuB,CAAA;IACvB,+DAA2C,CAAA;IAC3C,qCAAiB,CAAA;AACnB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAoCD,MAAM,OAAO,iBAAiB;IAK5B,YAA6B,SAAwB;QAAxB,cAAS,GAAT,SAAS,CAAe;QAJpC,eAAU,GAAG,yBAAkC,CAAC;QAChD,eAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,gBAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEO,CAAC;IAEzD,KAAK,CAAC,eAAe,CAAC,EACpB,IAAI,EACJ,eAAe,EACf,OAAO,EACe;;QACtB,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,mBAAmB,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,IAAI,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAElF,MAAM,UAAU,GAAmC,MAAM,UAAU,CAAC,oBAAoB,CACtF,WAAW,CAAC,qBAAqB,EACjC,cAAc,CACf,CAAC;YAEF,MAAM,WAAW,GAAG,MAAA,UAAU,CAAC,OAAO,0CAAG,sBAAsB,CAAC,CAAC;YACjE,IAAI,iBAAiB,GAAqC,IAAI,CAAC;YAE/D,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAEvC,iBAAiB,GAAG,MAAmC,CAAC;YAC1D,CAAC;YAED,OAAO,EAAE,CAAC;gBACR,MAAM,EAAE,UAAU,CAAC,MAA2B;gBAC9C,iBAAiB;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,QAAkB,EAClB,gBAAkC,EAClC,OAAuB;;QAEvB,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,CAAC;QAEtF,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/D,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,UAAU,EAAE,mCAAI,IAAI,CAAC,UAAU,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC;gBAC3B,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,OAAO,qBAAqB;gBACpC,IAAI,EAAE,QAAQ;gBACd,OAAO,kCACF,QAAQ,CAAC,UAAU,EAAE,KACxB,aAAa,EAAE,mBAAmB,GACnC;gBACD,YAAY,EAAE,QAAQ;gBACtB,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;aAC3B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CACzB,mBAA6B,EAC7B,OAAuB;;QAEvB,MAAM,QAAQ,GAAoB,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,CAAC;QAEtF,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAAE;YACxE,QAAQ,EAAE,qBAAqB;YAC/B,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,UAAU,EAAE,mCAAI,IAAI,CAAC,UAAU,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC;gBAC3B,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,OAAO,uBAAuB;gBACtC,IAAI,EAAE,QAAQ;gBACd,OAAO,kCACF,QAAQ,CAAC,UAAU,EAAE,KACxB,aAAa,EAAE,mBAAmB,GACnC;gBACD,yEAAyE;gBACzE,iEAAiE;gBACjE,YAAY,EAAE,QAAQ;gBACtB,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;aAC3B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,6EAA6E;YAC7E,yDAAyD;YACzD,OAAO,MAAM,WAAW,CAA+C,KAAK,EAAE,OAAO,EAAE,EAAE;gBACvF,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAErD,MAAM,qBAAqB,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC5F,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACpH,OAAO,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBACvC,CAAC;gBAED,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACrG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAyB,CAAC;gBAClG,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,gGAAgG;IACxF,KAAK,CAAC,uBAAuB,CACnC,QAAyD;;;QAEzD,MAAM,MAAM,GAAa,EAAE,CAAC;;YAC5B,KAA0B,eAAA,KAAA,cAAA,QAAQ,CAAC,IAAI,CAAA,IAAA,sDAAE,CAAC;gBAAhB,cAAa;gBAAb,WAAa;gBAA5B,MAAM,KAAK,KAAA,CAAA;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,CAAC;;;;;;;;;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,OAAO,GAAG,SAAS,QAAQ,CAAC,MAAM,yDAAyD,CAAC;QAChG,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA0E,CAAC;YAC5G,OAAO,GAAG,MAAA,MAAA,MAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,OAAO,0CAAG,CAAC,CAAC,mCAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,mCAAI,OAAO,CAAC;QAClF,CAAC;QAAC,WAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;QACD,OAAO,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEO,yBAAyB,CAAC,QAAyB,EAAE,eAA8B;QACzF,MAAM,GAAG,GAAG,eAAe,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAA,CAAC;QACjD,OAAO,cAAc,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAAc;QACjD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAiB,CAAC;YAEnC,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC5B,KAAK,GAAG;oBACN,OAAO,sEAAsE,CAAC;gBAChF,KAAK,GAAG;oBACN,OAAO,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;gBAC9D,KAAK,GAAG;oBACN,OAAO,oDAAoD,CAAC;gBAC9D,KAAK,GAAG;oBACN,OAAO,qKAAqK,CAAC;gBAC/K;oBACE,OAAO,SAAS,QAAQ,CAAC,UAAU,wCAAwC,CAAC;YAChF,CAAC;QACH,CAAC;QAED,OAAO,+DAA+D,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,QAAyD;;;QAEzD,MAAM,MAAM,GAAa,EAAE,CAAC;;YAC5B,KAA0B,eAAA,KAAA,cAAA,QAAQ,CAAC,IAAI,CAAA,IAAA,sDAAE,CAAC;gBAAhB,cAAa;gBAAb,WAAa;gBAA5B,MAAM,KAAK,KAAA,CAAA;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,CAAC;;;;;;;;;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,YAAY,GAAG,SAAS,QAAQ,CAAC,MAAM,uCAAuC,CAAC;QAEnF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,MAAA,MAAA,SAAS,CAAC,MAAM,0CAAE,OAAO,0CAAG,CAAC,CAAC,EAAE,CAAC;gBACnC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;YACnC,CAAC;iBAAM,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC3B,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,WAAM,CAAC;YACP,YAAY,GAAG,SAAS,IAAI,YAAY,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,QAAQ,CAAC,MAAM;SACD,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { log } from "@clack/prompts";
|
|
2
|
-
import { ServiceError } from "../../infrastructure/service-error.js";
|
|
2
|
+
import { ServiceError, ServiceErrorCode } from "../../infrastructure/service-error.js";
|
|
3
3
|
import { withSpinner } from "../prompt.js";
|
|
4
4
|
export class LoginPrompts {
|
|
5
5
|
loginSuccessful(email) {
|
|
@@ -9,7 +9,14 @@ export class LoginPrompts {
|
|
|
9
9
|
log.info("Please continue with authentication in the opened browser window.");
|
|
10
10
|
}
|
|
11
11
|
invalidKeyProvided(serviceError) {
|
|
12
|
-
|
|
12
|
+
// A rejected key is the failure this reports, so key off the 401 rather than
|
|
13
|
+
// the network error it was previously matching. Compared by code, not by
|
|
14
|
+
// reference: `unauthorizedWithHint` and friends build fresh instances, so an
|
|
15
|
+
// identity check silently stops matching. Anything else (unreachable server,
|
|
16
|
+
// server error) already describes itself accurately.
|
|
17
|
+
const message = serviceError.code === ServiceErrorCode.UnAuthorized
|
|
18
|
+
? ServiceError.unauthorizedWithHint("Invalid API key provided.").errorMessage
|
|
19
|
+
: serviceError.errorMessage;
|
|
13
20
|
log.error(message);
|
|
14
21
|
}
|
|
15
22
|
loginTimeout() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/prompts/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/prompts/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAGvF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,YAAY;IAChB,eAAe,CAAC,KAAa;QAClC,GAAG,CAAC,OAAO,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,WAAW;QAChB,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,CAAC;IAEM,kBAAkB,CAAC,YAA0B;QAClD,6EAA6E;QAC7E,yEAAyE;QACzE,6EAA6E;QAC7E,6EAA6E;QAC7E,qDAAqD;QACrD,MAAM,OAAO,GACX,YAAY,CAAC,IAAI,KAAK,gBAAgB,CAAC,YAAY;YACjD,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC,YAAY;YAC7E,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,YAAY;QACjB,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC3D,CAAC;IAEM,kBAAkB,CAAC,EAAmD;QAC3E,OAAO,WAAW,CAChB,mCAAmC,EACnC,6BAA6B,EAC7B,oCAAoC,EACpC,EAAE,CACH,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -3,6 +3,7 @@ import { SubscriptionInfo } from "../../types/api/account.js";
|
|
|
3
3
|
import { ServiceError } from "../../infrastructure/service-error.js";
|
|
4
4
|
export declare class StatusPrompts {
|
|
5
5
|
accountInfoSpinner(fn: Promise<Result<SubscriptionInfo, ServiceError>>): Promise<Result<SubscriptionInfo, ServiceError>>;
|
|
6
|
+
notLoggedIn(): void;
|
|
6
7
|
invalidKeyProvided(serviceError: ServiceError): void;
|
|
7
8
|
showAccountInfo(info: SubscriptionInfo): void;
|
|
8
9
|
}
|
|
@@ -7,6 +7,11 @@ export class StatusPrompts {
|
|
|
7
7
|
accountInfoSpinner(fn) {
|
|
8
8
|
return withSpinner("Retrieving your subscription info", "Retrieved subscription info", "Error retrieving subscription info", fn);
|
|
9
9
|
}
|
|
10
|
+
notLoggedIn() {
|
|
11
|
+
// Same message as every 401 the services surface: the user isn't authorized
|
|
12
|
+
// to perform the action, whether that's caught locally or by the API.
|
|
13
|
+
log.error(ServiceError.unauthorizedWithHint(null).errorMessage);
|
|
14
|
+
}
|
|
10
15
|
invalidKeyProvided(serviceError) {
|
|
11
16
|
const message = serviceError === ServiceError.UnAuthorized ? "Invalid API key provided." : serviceError.errorMessage;
|
|
12
17
|
log.error(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/prompts/auth/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,aAAa;IACjB,kBAAkB,CAAC,EAAmD;QAC3E,OAAO,WAAW,CAChB,mCAAmC,EACnC,6BAA6B,EAC7B,oCAAoC,EACpC,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,kBAAkB,CAAC,YAA0B;QAClD,MAAM,OAAO,GACX,YAAY,KAAK,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC;QACvG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/prompts/auth/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,aAAa;IACjB,kBAAkB,CAAC,EAAmD;QAC3E,OAAO,WAAW,CAChB,mCAAmC,EACnC,6BAA6B,EAC7B,oCAAoC,EACpC,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,WAAW;QAChB,4EAA4E;QAC5E,sEAAsE;QACtE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAEM,kBAAkB,CAAC,YAA0B;QAClD,MAAM,OAAO,GACX,YAAY,KAAK,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC;QACvG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAGM,eAAe,CAAC,IAAsB;QAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG;WACT,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;uBACV,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -25,7 +25,7 @@ export class PortalGeneratePrompts {
|
|
|
25
25
|
log.error(message);
|
|
26
26
|
}
|
|
27
27
|
generatePortal(fn) {
|
|
28
|
-
return withSpinner("Generating
|
|
28
|
+
return withSpinner("Generating API Portal", "Portal generated successfully.", "Portal Generation failed.", fn);
|
|
29
29
|
}
|
|
30
30
|
portalGenerationError(error) {
|
|
31
31
|
log.error(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/portal/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,OAAO,qBAAqB;IACzB,KAAK,CAAC,eAAe,CAAC,SAAwB;QACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,0CAA0C;YACvF,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;IAEM,qBAAqB,CAAC,SAAwB;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAChH,SAAS,CACV,EAAE,CAAC;QACJ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,iBAAiB,CAAC,SAAwB;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,uBAAuB;QAC5B,MAAM,OAAO,GAAG,yFAAyF,CAAC;QAC1G,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,cAAc,CAAC,EAAgF;QACpG,OAAO,WAAW,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/portal/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,OAAO,qBAAqB;IACzB,KAAK,CAAC,eAAe,CAAC,SAAwB;QACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,0CAA0C;YACvF,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;IAEM,qBAAqB,CAAC,SAAwB;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAChH,SAAS,CACV,EAAE,CAAC;QACJ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,iBAAiB,CAAC,SAAwB;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,uBAAuB;QAC5B,MAAM,OAAO,GAAG,yFAAyF,CAAC;QAC1G,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,cAAc,CAAC,EAAgF;QACpG,OAAO,WAAW,CAChB,uBAAuB,EACvB,gCAAgC,EAChC,2BAA2B,EAC3B,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAAC,KAAa;QACxC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,8BAA8B,CAAC,oBAA8B;QAClE,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,gCAAgC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG;GACjB,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;yCACjC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC;QACnF,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAEM,+BAA+B,CAAC,UAAoB;QACzD,MAAM,OAAO,GAAG;oDACgC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,eAAe,CAAC,MAAqB;QAC1C,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Result } from "neverthrow";
|
|
2
|
+
import { Language } from "../../types/sdk/generate.js";
|
|
2
3
|
import { UrlPath } from "../../types/file/urlPath.js";
|
|
3
4
|
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
4
5
|
import { ServiceError } from "../../infrastructure/service-error.js";
|
|
5
6
|
import { Directory } from "../../types/file/directory.js";
|
|
6
7
|
import { ResourceInput } from "../../types/file/resource-input.js";
|
|
7
8
|
import { FileDownloadResponse } from "../../infrastructure/services/file-download-service.js";
|
|
8
|
-
import { UnallowedFeaturesResponse } from "../../infrastructure/services/validation-service.js";
|
|
9
|
+
import { BuildFilePruneReport, UnallowedFeaturesResponse } from "../../infrastructure/services/validation-service.js";
|
|
9
10
|
export declare class PortalQuickstartPrompts {
|
|
10
11
|
importSpecStep(): void;
|
|
11
12
|
specPathPrompt(defaultSpecUrl: UrlPath): Promise<ResourceInput | undefined>;
|
|
@@ -17,8 +18,12 @@ export declare class PortalQuickstartPrompts {
|
|
|
17
18
|
splitSpecDetected(unallowed: UnallowedFeaturesResponse): void;
|
|
18
19
|
stripUnallowedFeaturesStep(unallowed: UnallowedFeaturesResponse): void;
|
|
19
20
|
selectLanguagesStep(): void;
|
|
20
|
-
selectLanguagesPrompt(): Promise<string[] | undefined>;
|
|
21
|
+
selectLanguagesPrompt(allowedLanguages: Language[]): Promise<string[] | undefined>;
|
|
22
|
+
httpOnlyPortalOnPlan(): void;
|
|
23
|
+
onPremGenerationNotAllowedOnPlan(): void;
|
|
24
|
+
private languagesNotOnPlanNote;
|
|
21
25
|
noLanguagesSelected(): void;
|
|
26
|
+
buildFilePruned(report: BuildFilePruneReport): void;
|
|
22
27
|
selectInputDirectoryStep(): void;
|
|
23
28
|
inputDirectoryPathPrompt(): Promise<DirectoryPath | undefined>;
|
|
24
29
|
inputDirectoryPathDoesNotExist(inputDirectory: DirectoryPath): void;
|
|
@@ -26,7 +31,7 @@ export declare class PortalQuickstartPrompts {
|
|
|
26
31
|
noInputDirectoryProvided(): void;
|
|
27
32
|
downloadBuildDirectory(fn: Promise<Result<FileDownloadResponse, ServiceError>>): Promise<Result<FileDownloadResponse, ServiceError>>;
|
|
28
33
|
downloadSpecFile(fn: Promise<Result<FileDownloadResponse, ServiceError>>): Promise<Result<FileDownloadResponse, ServiceError>>;
|
|
29
|
-
nextSteps(): void;
|
|
34
|
+
nextSteps(hasAiIntegration: boolean): void;
|
|
30
35
|
serviceError(serviceError: ServiceError): void;
|
|
31
36
|
selectCopilotKey(keys: string[]): Promise<string | undefined>;
|
|
32
37
|
noCopilotKeySelected(): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isCancel, log, multiselect, select, text } from "@clack/prompts";
|
|
2
|
+
import { LANGUAGE_CHOICES } from "../../types/sdk/generate.js";
|
|
2
3
|
import { format as f, getTree } from "../format.js";
|
|
3
4
|
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
4
5
|
import { removeQuotes } from "../../utils/string-utils.js";
|
|
@@ -6,6 +7,7 @@ import { createResourceInputFromInput } from "../../types/file/resource-input.js
|
|
|
6
7
|
import { noteWrapped, withSpinner } from "../prompt.js";
|
|
7
8
|
const vscodeExtensionUrl = "https://marketplace.visualstudio.com/items?itemName=apimatic-developers.apimatic-for-vscode";
|
|
8
9
|
const referenceDocumentationUrl = "https://docs.apimatic.io/cli-getting-started/advanced-portal-setup";
|
|
10
|
+
const pricingUrl = "https://www.apimatic.io/pricing";
|
|
9
11
|
export class PortalQuickstartPrompts {
|
|
10
12
|
importSpecStep() {
|
|
11
13
|
log.info(`Step 1 of 4: Import your OpenAPI Definition`);
|
|
@@ -69,7 +71,7 @@ export class PortalQuickstartPrompts {
|
|
|
69
71
|
"To continue:",
|
|
70
72
|
"- Remove these components from your API Specification and re-run this command.",
|
|
71
73
|
"- Combine your split API Specification files into a single file. We can automatically remove unsupported components from single-file specs.",
|
|
72
|
-
|
|
74
|
+
`- Upgrade your subscription to unlock additional features: ${f.link(pricingUrl)}`
|
|
73
75
|
].join("\n");
|
|
74
76
|
log.info(message);
|
|
75
77
|
}
|
|
@@ -87,26 +89,24 @@ export class PortalQuickstartPrompts {
|
|
|
87
89
|
endpointMessage,
|
|
88
90
|
"",
|
|
89
91
|
"You won't see these components in the generated SDKs or documentation.",
|
|
90
|
-
|
|
92
|
+
`Want to keep them? Upgrade your subscription to unlock additional features: ${f.link(pricingUrl)}`
|
|
91
93
|
].join("\n");
|
|
92
94
|
log.info(message);
|
|
93
95
|
}
|
|
94
96
|
selectLanguagesStep() {
|
|
95
97
|
log.info(`Step 3 of 4: Select programming languages`);
|
|
96
98
|
}
|
|
97
|
-
async selectLanguagesPrompt() {
|
|
99
|
+
async selectLanguagesPrompt(allowedLanguages) {
|
|
100
|
+
const allowed = new Set(allowedLanguages);
|
|
101
|
+
const available = LANGUAGE_CHOICES.filter(({ value }) => allowed.has(value));
|
|
102
|
+
const excluded = LANGUAGE_CHOICES.filter(({ value }) => !allowed.has(value));
|
|
103
|
+
if (excluded.length > 0) {
|
|
104
|
+
log.info(this.languagesNotOnPlanNote(excluded.map(({ label }) => label)));
|
|
105
|
+
}
|
|
98
106
|
const languages = (await multiselect({
|
|
99
|
-
message: "Your API Portal
|
|
100
|
-
options:
|
|
101
|
-
|
|
102
|
-
{ label: "Ruby", value: "ruby" },
|
|
103
|
-
{ label: "Python", value: "python" },
|
|
104
|
-
{ label: "Java", value: "java" },
|
|
105
|
-
{ label: "C#", value: "csharp" },
|
|
106
|
-
{ label: "PHP", value: "php" },
|
|
107
|
-
{ label: "Go", value: "go" }
|
|
108
|
-
],
|
|
109
|
-
initialValues: ["typescript", "ruby", "python", "java", "csharp", "php", "go"],
|
|
107
|
+
message: "Your API Portal can contain Context Plugins for AI agents, SDKs, and SDK documentation in the following languages (HTTP is enabled by default). Press Enter to continue with all languages, or use the arrow keys and Space to customize your selection",
|
|
108
|
+
options: available.map(({ label, value }) => ({ label, value })),
|
|
109
|
+
initialValues: available.map(({ value }) => value),
|
|
110
110
|
required: false
|
|
111
111
|
}));
|
|
112
112
|
if (isCancel(languages)) {
|
|
@@ -114,9 +114,54 @@ export class PortalQuickstartPrompts {
|
|
|
114
114
|
}
|
|
115
115
|
return ["http", ...languages];
|
|
116
116
|
}
|
|
117
|
+
httpOnlyPortalOnPlan() {
|
|
118
|
+
const message = [
|
|
119
|
+
"Your current subscription plan doesn't include any SDK languages, so the portal will contain HTTP documentation only.",
|
|
120
|
+
`Upgrade your subscription to unlock SDK languages: ${f.link(pricingUrl)}`
|
|
121
|
+
].join("\n");
|
|
122
|
+
log.warn(message);
|
|
123
|
+
}
|
|
124
|
+
onPremGenerationNotAllowedOnPlan() {
|
|
125
|
+
const message = [
|
|
126
|
+
"Your current subscription plan doesn't include on-prem generation.",
|
|
127
|
+
`Upgrade your subscription to get started: ${f.link(pricingUrl)}`
|
|
128
|
+
].join("\n");
|
|
129
|
+
log.warn(message);
|
|
130
|
+
}
|
|
131
|
+
languagesNotOnPlanNote(languages) {
|
|
132
|
+
return [
|
|
133
|
+
`The following languages aren't included in your current subscription plan`,
|
|
134
|
+
...languages.map((language) => ` • ${language}`),
|
|
135
|
+
"",
|
|
136
|
+
`Upgrade your subscription to unlock them: ${f.link(pricingUrl)}`
|
|
137
|
+
].join("\n");
|
|
138
|
+
}
|
|
117
139
|
noLanguagesSelected() {
|
|
118
140
|
log.error("No programming languages were selected.");
|
|
119
141
|
}
|
|
142
|
+
buildFilePruned(report) {
|
|
143
|
+
const removed = [];
|
|
144
|
+
if (report.removedLanguages.length > 0) {
|
|
145
|
+
removed.push(`SDK languages: ${report.removedLanguages.join(", ")}`);
|
|
146
|
+
}
|
|
147
|
+
if (report.removedApiCopilot) {
|
|
148
|
+
removed.push("API Copilot");
|
|
149
|
+
}
|
|
150
|
+
if (report.removedAiIntegration) {
|
|
151
|
+
removed.push("Context plugins (Cursor / VS Code / Claude Code)");
|
|
152
|
+
}
|
|
153
|
+
if (removed.length === 0) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const message = [
|
|
157
|
+
"Some portal features aren't on your current subscription plan and were removed before generation:",
|
|
158
|
+
"",
|
|
159
|
+
...removed.map((item) => ` • ${item}`),
|
|
160
|
+
"",
|
|
161
|
+
`Upgrade your subscription to unlock these: ${f.link(pricingUrl)}`
|
|
162
|
+
].join("\n");
|
|
163
|
+
log.warn(message);
|
|
164
|
+
}
|
|
120
165
|
selectInputDirectoryStep() {
|
|
121
166
|
log.info(`Step 4 of 4: Generate source files for Docs as Code`);
|
|
122
167
|
}
|
|
@@ -148,8 +193,15 @@ export class PortalQuickstartPrompts {
|
|
|
148
193
|
downloadSpecFile(fn) {
|
|
149
194
|
return withSpinner("Downloading API Definition", `API Definition downloaded`, "Unable to download API Definition", fn);
|
|
150
195
|
}
|
|
151
|
-
nextSteps() {
|
|
152
|
-
const message =
|
|
196
|
+
nextSteps(hasAiIntegration) {
|
|
197
|
+
const message = hasAiIntegration
|
|
198
|
+
? `Your API Portal is ready with Context Plugins enabled.
|
|
199
|
+
|
|
200
|
+
Install your API's Context Plugins in Cursor, VS Code, or Claude Code to help AI coding agents understand your API and generate more accurate code.
|
|
201
|
+
|
|
202
|
+
Explore customization options, including Portal themes and API Recipes.
|
|
203
|
+
${f.link(referenceDocumentationUrl)}`
|
|
204
|
+
: `Use the API Playground or an SDK to call your API.
|
|
153
205
|
Customize the Portal theme, add API recipes and enable AI features
|
|
154
206
|
${f.link(referenceDocumentationUrl)}`;
|
|
155
207
|
noteWrapped(message, "Next Steps");
|
|
@@ -176,7 +228,7 @@ ${f.link(referenceDocumentationUrl)}`;
|
|
|
176
228
|
}
|
|
177
229
|
copilotEnabled(key) {
|
|
178
230
|
const message = `API Copilot is enabled with key ${f.var(key)}. ` +
|
|
179
|
-
`Any existing
|
|
231
|
+
`Any existing Copilot context associated with this key will be overwritten when the portal is generated.`;
|
|
180
232
|
log.warn(message);
|
|
181
233
|
}
|
|
182
234
|
printDirectoryStructure(inputDirectory, directory) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/prompts/portal/quickstart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/prompts/portal/quickstart.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,10 @@ import { ServiceError } from "../../../infrastructure/service-error.js";
|
|
|
5
5
|
import { TocData } from "../../../types/toc/toc-components.js";
|
|
6
6
|
export declare class PortalNewTocPrompts {
|
|
7
7
|
overwriteToc(tocPath: FilePath): Promise<boolean>;
|
|
8
|
-
|
|
8
|
+
specDirectoryNotFound(directory: DirectoryPath): void;
|
|
9
|
+
specDirectoryEmpty(directory: DirectoryPath): void;
|
|
9
10
|
tocFileAlreadyExists(): void;
|
|
10
|
-
|
|
11
|
+
tocExtractionFailed(message: string): void;
|
|
11
12
|
contentDirectoryNotFound(contentFolderPath: DirectoryPath): void;
|
|
12
13
|
invalidBuildDirectory(directory: DirectoryPath): void;
|
|
13
14
|
extractTocData(fn: Promise<Result<TocData, ServiceError>>, expandEndpoints: boolean, expandModels: boolean, expandWebhooks: boolean, expandCallbacks: boolean): Promise<Result<TocData, ServiceError>>;
|
|
@@ -12,13 +12,17 @@ export class PortalNewTocPrompts {
|
|
|
12
12
|
}
|
|
13
13
|
return overwrite;
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
log.
|
|
15
|
+
specDirectoryNotFound(directory) {
|
|
16
|
+
log.error(`The ${f.var("spec")} directory was not found in ${f.path(directory)}.\n` +
|
|
17
|
+
`Add your API specification there and try again.`);
|
|
18
|
+
}
|
|
19
|
+
specDirectoryEmpty(directory) {
|
|
20
|
+
log.error(`The ${f.var("spec")} directory in ${f.path(directory)} is either empty or invalid.`);
|
|
17
21
|
}
|
|
18
22
|
tocFileAlreadyExists() {
|
|
19
23
|
log.error(`Please enter a different destination path or delete the existing toc.yml file and try again.`);
|
|
20
24
|
}
|
|
21
|
-
|
|
25
|
+
tocExtractionFailed(message) {
|
|
22
26
|
log.error(message);
|
|
23
27
|
}
|
|
24
28
|
contentDirectoryNotFound(contentFolderPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/prompts/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,OAAO,mBAAmB;IACvB,KAAK,CAAC,YAAY,CAAC,OAAiB;QACzC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,+CAA+C;YAC/F,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;IAEM,
|
|
1
|
+
{"version":3,"file":"new-toc.js","sourceRoot":"","sources":["../../../../src/prompts/portal/toc/new-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,OAAO,mBAAmB;IACvB,KAAK,CAAC,YAAY,CAAC,OAAiB;QACzC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,+CAA+C;YAC/F,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;IAEM,qBAAqB,CAAC,SAAwB;QACnD,GAAG,CAAC,KAAK,CACP,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;YACvE,iDAAiD,CACpD,CAAC;IACJ,CAAC;IAEM,kBAAkB,CAAC,SAAwB;QAChD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAClG,CAAC;IAEM,oBAAoB;QACzB,GAAG,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;IAC5G,CAAC;IAEM,mBAAmB,CAAC,OAAe;QACxC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,wBAAwB,CAAC,iBAAgC;QAC9D,GAAG,CAAC,KAAK,CAAC,gCAAgC,iBAAiB,EAAE,CAAC,CAAC;IACjE,CAAC;IAEM,qBAAqB,CAAC,SAAwB;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,cAAc,CACnB,EAA0C,EAC1C,eAAwB,EACxB,YAAqB,EACrB,cAAuB,EACvB,eAAwB;QAExB,MAAM,UAAU,GAAG;YACjB,eAAe,IAAI,iBAAiB;YACpC,YAAY,IAAI,QAAQ;YACxB,cAAc,IAAI,UAAU;YAC5B,eAAe,IAAI,WAAW;SAC/B;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC;QAE/B,OAAO,WAAW,CAAC,cAAc,UAAU,EAAE,EAAE,GAAG,UAAU,YAAY,EAAE,GAAG,UAAU,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACnH,CAAC;IAEM,UAAU,CAAC,OAAiB;QACjC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -2,15 +2,15 @@ import { isCancel, log, select } from "@clack/prompts";
|
|
|
2
2
|
export class QuickstartPrompts {
|
|
3
3
|
welcomeMessage() {
|
|
4
4
|
log.info(`Welcome to the APIMatic quickstart wizard.`);
|
|
5
|
-
log.message(`This wizard will guide you through creating your first
|
|
5
|
+
log.message(`This wizard will guide you through creating your first Context Plugins, API Documentation Portal or SDK in just four easy steps.
|
|
6
6
|
Let's get started!`);
|
|
7
7
|
}
|
|
8
8
|
async selectQuickstartFlow() {
|
|
9
9
|
const option = await select({
|
|
10
|
-
message: "
|
|
10
|
+
message: "How do you want to get started?",
|
|
11
11
|
options: [
|
|
12
|
-
{ value: "portal", label: "API
|
|
13
|
-
{ value: "sdk", label: "SDK" }
|
|
12
|
+
{ value: "portal", label: "API Portal + Context Plugins + SDKs", hint: "" },
|
|
13
|
+
{ value: "sdk", label: "SDK Only", hint: "Add the API Portal and Context Plugins later" }
|
|
14
14
|
]
|
|
15
15
|
});
|
|
16
16
|
if (isCancel(option)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../src/prompts/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,OAAO,iBAAiB;IACrB,cAAc;QACnB,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC;mBACG,CAAC,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../src/prompts/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,OAAO,iBAAiB;IACrB,cAAc;QACnB,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC;mBACG,CAAC,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,OAAO,EAAE,iCAAiC;YAC1C,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,qCAAqC,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,8CAA8C,EAAE;aAC1F;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,wBAAwB;QAC7B,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -21,8 +21,11 @@ export declare class SdkQuickstartPrompts {
|
|
|
21
21
|
useDefaultSpecPrompt(): Promise<boolean>;
|
|
22
22
|
fixYourSpec(): void;
|
|
23
23
|
selectLanguageStep(): void;
|
|
24
|
-
selectLanguagePrompt(): Promise<Language | undefined>;
|
|
24
|
+
selectLanguagePrompt(allowedLanguages: Language[]): Promise<Language | undefined>;
|
|
25
|
+
noLanguagesAvailableOnPlan(): void;
|
|
26
|
+
private languagesNotOnPlanNote;
|
|
25
27
|
noLanguageSelected(): void;
|
|
28
|
+
accountInfoFetchFailed(serviceError: ServiceError): void;
|
|
26
29
|
selectInputDirectoryStep(): void;
|
|
27
30
|
inputDirectoryPathPrompt(): Promise<DirectoryPath | undefined>;
|
|
28
31
|
noInputDirectoryProvided(): void;
|