@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.
Files changed (73) hide show
  1. package/lib/actions/auth/status.js +5 -1
  2. package/lib/actions/auth/status.js.map +1 -1
  3. package/lib/actions/portal/copilot.js +1 -1
  4. package/lib/actions/portal/copilot.js.map +1 -1
  5. package/lib/actions/portal/quickstart.js +51 -16
  6. package/lib/actions/portal/quickstart.js.map +1 -1
  7. package/lib/actions/portal/toc/new-toc.js +27 -16
  8. package/lib/actions/portal/toc/new-toc.js.map +1 -1
  9. package/lib/actions/sdk/quickstart.d.ts +1 -0
  10. package/lib/actions/sdk/quickstart.js +18 -2
  11. package/lib/actions/sdk/quickstart.js.map +1 -1
  12. package/lib/commands/portal/generate.js +1 -1
  13. package/lib/commands/portal/generate.js.map +1 -1
  14. package/lib/commands/quickstart.js +1 -1
  15. package/lib/commands/quickstart.js.map +1 -1
  16. package/lib/infrastructure/service-error.d.ts +1 -0
  17. package/lib/infrastructure/service-error.js +55 -0
  18. package/lib/infrastructure/service-error.js.map +1 -1
  19. package/lib/infrastructure/services/api-service.d.ts +7 -4
  20. package/lib/infrastructure/services/api-service.js +18 -48
  21. package/lib/infrastructure/services/api-service.js.map +1 -1
  22. package/lib/infrastructure/services/portal-service.d.ts +7 -0
  23. package/lib/infrastructure/services/portal-service.js +64 -126
  24. package/lib/infrastructure/services/portal-service.js.map +1 -1
  25. package/lib/infrastructure/services/publishing-api-service.js +12 -6
  26. package/lib/infrastructure/services/publishing-api-service.js.map +1 -1
  27. package/lib/infrastructure/services/transformation-service.d.ts +1 -0
  28. package/lib/infrastructure/services/transformation-service.js +29 -14
  29. package/lib/infrastructure/services/transformation-service.js.map +1 -1
  30. package/lib/infrastructure/services/validation-service.d.ts +21 -0
  31. package/lib/infrastructure/services/validation-service.js +95 -5
  32. package/lib/infrastructure/services/validation-service.js.map +1 -1
  33. package/lib/prompts/auth/login.js +9 -2
  34. package/lib/prompts/auth/login.js.map +1 -1
  35. package/lib/prompts/auth/status.d.ts +1 -0
  36. package/lib/prompts/auth/status.js +5 -0
  37. package/lib/prompts/auth/status.js.map +1 -1
  38. package/lib/prompts/portal/generate.js +1 -1
  39. package/lib/prompts/portal/generate.js.map +1 -1
  40. package/lib/prompts/portal/quickstart.d.ts +8 -3
  41. package/lib/prompts/portal/quickstart.js +69 -17
  42. package/lib/prompts/portal/quickstart.js.map +1 -1
  43. package/lib/prompts/portal/toc/new-toc.d.ts +3 -2
  44. package/lib/prompts/portal/toc/new-toc.js +7 -3
  45. package/lib/prompts/portal/toc/new-toc.js.map +1 -1
  46. package/lib/prompts/quickstart.js +4 -4
  47. package/lib/prompts/quickstart.js.map +1 -1
  48. package/lib/prompts/sdk/quickstart.d.ts +4 -1
  49. package/lib/prompts/sdk/quickstart.js +32 -13
  50. package/lib/prompts/sdk/quickstart.js.map +1 -1
  51. package/lib/types/api/account.d.ts +1 -0
  52. package/lib/types/api/generation-status-endpoint.d.ts +8 -0
  53. package/lib/types/api/generation-status-endpoint.js +12 -0
  54. package/lib/types/api/generation-status-endpoint.js.map +1 -0
  55. package/lib/types/api/generation-status.d.ts +5 -0
  56. package/lib/types/api/generation-status.js +2 -0
  57. package/lib/types/api/generation-status.js.map +1 -0
  58. package/lib/types/build/build.d.ts +2 -0
  59. package/lib/types/build/build.js +18 -1
  60. package/lib/types/build/build.js.map +1 -1
  61. package/lib/types/build-context.d.ts +2 -0
  62. package/lib/types/build-context.js +4 -0
  63. package/lib/types/build-context.js.map +1 -1
  64. package/lib/types/sdk/generate.d.ts +10 -0
  65. package/lib/types/sdk/generate.js +15 -0
  66. package/lib/types/sdk/generate.js.map +1 -1
  67. package/lib/types/toc/toc-components.d.ts +0 -1
  68. package/lib/types/toc/toc-components.js +0 -3
  69. package/lib/types/toc/toc-components.js.map +1 -1
  70. package/lib/utils/utils.d.ts +1 -0
  71. package/lib/utils/utils.js +22 -0
  72. package/lib/utils/utils.js.map +1 -1
  73. 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 { handleServiceError } from "../service-error.js";
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 "You are not authorized to perform this action. Please run 'auth:login' or provide a valid auth key.";
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, e_1, _b, _c;
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 (e_1_1) { e_1 = { error: e_1_1 }; }
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 (e_1) throw e_1.error; }
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":"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"}
1
+ {"version":3,"file":"validation-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/validation-service.ts"],"names":[],"mappings":"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"}
@@ -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
- const message = serviceError === ServiceError.NetworkError ? "Invalid API key provided." : serviceError.errorMessage;
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;AAGrE,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,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;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"}
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;IAEM,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"}
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 portal", "Portal generated successfully.", "Portal Generation failed.", fn);
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,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAC7G,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
+ {"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
- "- Upgrade your subscription to unlock additional features: https://www.apimatic.io/pricing"
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
- "Want to keep them? Upgrade your subscription to unlock additional features: https://www.apimatic.io/pricing"
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 will contain 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:",
100
- options: [
101
- { label: "Typescript", value: "typescript" },
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 = `Use the API Playground or an SDK to call your API.
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 AI context associated with this key will be overwritten when the portal is generated.`;
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":"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"}
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
- fallingBackToDefault(): void;
8
+ specDirectoryNotFound(directory: DirectoryPath): void;
9
+ specDirectoryEmpty(directory: DirectoryPath): void;
9
10
  tocFileAlreadyExists(): void;
10
- logError(message: string): void;
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
- fallingBackToDefault() {
16
- log.warn(`Falling back to the default TOC structure.`);
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
- logError(message) {
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,oBAAoB;QACzB,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,CAAC;IAEM,oBAAoB;QACzB,GAAG,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;IAC5G,CAAC;IAEM,QAAQ,CAAC,OAAe;QAC7B,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"}
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 SDK or API Documentation Portal in just four easy steps.
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: "What would you like to create?",
10
+ message: "How do you want to get started?",
11
11
  options: [
12
- { value: "portal", label: "API Documentation Portal", hint: "Generate API docs + SDKs" },
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,gCAAgC;YACzC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACxF,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;aAC/B;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"}
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;