@apimatic/cli 1.1.0-beta.1 → 1.1.0-beta.10

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/README.md +14 -7
  2. package/lib/actions/action-result.d.ts +12 -6
  3. package/lib/actions/action-result.js +36 -10
  4. package/lib/actions/action-result.js.map +1 -1
  5. package/lib/actions/api/validate.d.ts +3 -1
  6. package/lib/actions/api/validate.js +14 -3
  7. package/lib/actions/api/validate.js.map +1 -1
  8. package/lib/actions/portal/copilot.js +2 -2
  9. package/lib/actions/portal/quickstart.d.ts +4 -3
  10. package/lib/actions/portal/quickstart.js +42 -19
  11. package/lib/actions/portal/quickstart.js.map +1 -1
  12. package/lib/actions/portal/serve.js +0 -14
  13. package/lib/actions/portal/serve.js.map +1 -1
  14. package/lib/actions/portal/toc/new-toc.d.ts +5 -5
  15. package/lib/actions/portal/toc/new-toc.js +39 -40
  16. package/lib/actions/portal/toc/new-toc.js.map +1 -1
  17. package/lib/actions/sdk/generate.d.ts +1 -1
  18. package/lib/actions/sdk/generate.js +38 -8
  19. package/lib/actions/sdk/generate.js.map +1 -1
  20. package/lib/actions/sdk/quickstart.d.ts +6 -3
  21. package/lib/actions/sdk/quickstart.js +48 -26
  22. package/lib/actions/sdk/quickstart.js.map +1 -1
  23. package/lib/application/portal/toc/toc-structure-generator.d.ts +23 -2
  24. package/lib/application/portal/toc/toc-structure-generator.js +131 -60
  25. package/lib/application/portal/toc/toc-structure-generator.js.map +1 -1
  26. package/lib/commands/portal/toc/new.d.ts +5 -3
  27. package/lib/commands/portal/toc/new.js +32 -24
  28. package/lib/commands/portal/toc/new.js.map +1 -1
  29. package/lib/commands/sdk/generate.d.ts +2 -2
  30. package/lib/commands/sdk/generate.js +10 -10
  31. package/lib/commands/sdk/generate.js.map +1 -1
  32. package/lib/infrastructure/debounce-service.js +3 -0
  33. package/lib/infrastructure/debounce-service.js.map +1 -1
  34. package/lib/infrastructure/file-service.d.ts +1 -0
  35. package/lib/infrastructure/file-service.js +11 -0
  36. package/lib/infrastructure/file-service.js.map +1 -1
  37. package/lib/infrastructure/services/api-service.d.ts +2 -1
  38. package/lib/infrastructure/services/api-service.js +24 -0
  39. package/lib/infrastructure/services/api-service.js.map +1 -1
  40. package/lib/infrastructure/services/portal-service.d.ts +2 -4
  41. package/lib/infrastructure/services/portal-service.js +75 -57
  42. package/lib/infrastructure/services/portal-service.js.map +1 -1
  43. package/lib/infrastructure/services/validation-service.d.ts +28 -2
  44. package/lib/infrastructure/services/validation-service.js +108 -15
  45. package/lib/infrastructure/services/validation-service.js.map +1 -1
  46. package/lib/prompts/api/validate.d.ts +5 -2
  47. package/lib/prompts/api/validate.js +36 -0
  48. package/lib/prompts/api/validate.js.map +1 -1
  49. package/lib/prompts/format.d.ts +1 -1
  50. package/lib/prompts/format.js.map +1 -1
  51. package/lib/prompts/portal/quickstart.d.ts +3 -0
  52. package/lib/prompts/portal/quickstart.js +39 -2
  53. package/lib/prompts/portal/quickstart.js.map +1 -1
  54. package/lib/prompts/portal/toc/new-toc.d.ts +1 -1
  55. package/lib/prompts/portal/toc/new-toc.js +10 -2
  56. package/lib/prompts/portal/toc/new-toc.js.map +1 -1
  57. package/lib/prompts/sdk/generate.d.ts +8 -3
  58. package/lib/prompts/sdk/generate.js +25 -5
  59. package/lib/prompts/sdk/generate.js.map +1 -1
  60. package/lib/prompts/sdk/quickstart.d.ts +4 -1
  61. package/lib/prompts/sdk/quickstart.js +41 -4
  62. package/lib/prompts/sdk/quickstart.js.map +1 -1
  63. package/lib/types/sdl/sdl.d.ts +20 -3
  64. package/lib/types/sdl/sdl.js +120 -22
  65. package/lib/types/sdl/sdl.js.map +1 -1
  66. package/lib/types/toc/toc.d.ts +31 -6
  67. package/lib/types/versioned-build-context.d.ts +15 -0
  68. package/lib/types/versioned-build-context.js +28 -0
  69. package/lib/types/versioned-build-context.js.map +1 -0
  70. package/lib/utils/string-utils.d.ts +1 -0
  71. package/lib/utils/string-utils.js +42 -0
  72. package/lib/utils/string-utils.js.map +1 -1
  73. package/package.json +2 -2
package/README.md CHANGED
@@ -14,7 +14,7 @@ The official CLI for APIMatic.
14
14
  To get started with APIMatic's CLI using a step by step wizard, run the following command:
15
15
 
16
16
  ```sh-session
17
- $ apimatic portal quickstart
17
+ $ apimatic quickstart
18
18
  ```
19
19
 
20
20
  # Usage
@@ -24,7 +24,7 @@ $ npm install -g @apimatic/cli
24
24
  $ apimatic COMMAND
25
25
  running command...
26
26
  $ apimatic (--version)
27
- @apimatic/cli/1.0.0-beta.2 win32-x64 node-v23.4.0
27
+ @apimatic/cli/1.1.0-beta.8 win32-x64 node-v23.4.0
28
28
  $ apimatic --help [COMMAND]
29
29
  USAGE
30
30
  $ apimatic COMMAND
@@ -349,16 +349,21 @@ Generate a Table of Contents (TOC) file for your API documentation portal
349
349
  ```
350
350
  USAGE
351
351
  $ apimatic portal toc new [-d <value>] [-i <value>] [-f] [--expand-endpoints] [--expand-models]
352
+ [--expand-webhooks] [--expand-callbacks]
352
353
 
353
354
  FLAGS
354
355
  -d, --destination=<value> [default: <input>/src/content] path where the toc.yml will be generated.
355
356
  -f, --force overwrite changes without asking for user consent.
356
357
  -i, --input=<value> [default: ./] path to the parent directory containing the 'src' directory, which includes
357
358
  API specifications and configuration files.
359
+ --expand-callbacks include individual entries for each callback in the generated 'toc.yml'. Requires a valid
360
+ API specification in the working directory.
358
361
  --expand-endpoints include individual entries for each endpoint in the generated 'toc.yml'. Requires a valid
359
362
  API specification in the working directory.
360
363
  --expand-models include individual entries for each model in the generated 'toc.yml'. Requires a valid API
361
364
  specification in the working directory.
365
+ --expand-webhooks include individual entries for each webhook in the generated 'toc.yml'. Requires a valid
366
+ API specification in the working directory.
362
367
 
363
368
  DESCRIPTION
364
369
  Generate a Table of Contents (TOC) file for your API documentation portal
@@ -406,17 +411,19 @@ Generate an SDK for your API
406
411
 
407
412
  ```
408
413
  USAGE
409
- $ apimatic sdk generate -l csharp|java|php|python|ruby|typescript|go [--spec <value>] [-d <value>] [-f] [--zip]
410
- [-k <value>]
414
+ $ apimatic sdk generate -l csharp|java|php|python|ruby|typescript|go [-i <value>] [-d <value>] [--api-version
415
+ <value>] [-f] [--zip] [-k <value>]
411
416
 
412
417
  FLAGS
413
418
  -d, --destination=<value> directory where the SDK will be generated
414
419
  -f, --force overwrite changes without asking for user consent.
420
+ -i, --input=<value> [default: ./] path to the parent directory containing the 'src' directory, which includes
421
+ API specifications and configuration files.
415
422
  -k, --auth-key=<value> override current authentication state with an authentication key.
416
423
  -l, --language=<option> (required) programming language for SDK generation
417
424
  <options: csharp|java|php|python|ruby|typescript|go>
418
- --spec=<value> [default: ./src/spec] path to the folder containing the API specification file
419
- --zip download the generated SDK as a .zip archive
425
+ --api-version=<value> Version of the API to use for SDK generation (if multiple versions exist)
426
+ --zip Download the generated SDK as a .zip archive
420
427
 
421
428
  DESCRIPTION
422
429
  Generate an SDK for your API
@@ -427,7 +434,7 @@ DESCRIPTION
427
434
  EXAMPLES
428
435
  apimatic sdk generate --language=java
429
436
 
430
- apimatic sdk generate --language=csharp --spec=./src/spec
437
+ apimatic sdk generate --language=csharp --input=./
431
438
 
432
439
  apimatic sdk generate --language=python --destination=./sdk --zip
433
440
  ```
@@ -1,13 +1,19 @@
1
- export declare class ActionResult {
1
+ export declare class ActionResult<T = void> {
2
2
  private readonly message;
3
3
  private readonly resultType;
4
+ private readonly value?;
4
5
  private constructor();
5
- static success(): ActionResult;
6
- static failed(): ActionResult;
7
- static cancelled(): ActionResult;
8
- static stopped(): ActionResult;
6
+ static success<T>(value?: T): ActionResult<T>;
7
+ static failed<T = never>(message?: string): ActionResult<T>;
8
+ static cancelled<T = never>(message?: string): ActionResult<T>;
9
+ static stopped<T = never>(message?: string): ActionResult<T>;
9
10
  getMessage(): string;
10
11
  getExitCode(): number;
11
12
  isFailed(): boolean;
12
- mapAll<T>(onSuccess: () => T, onFailure: () => T, onCancel: () => T): T;
13
+ isSuccess(): boolean;
14
+ isCancelled(): boolean;
15
+ match<R>(onSuccess: (value: T) => R, onFailure: (message: string) => R, onCancel: (message: string) => R): R;
16
+ getValue(): T;
17
+ getValueOr(defaultValue: T): T;
18
+ mapAll<R>(onSuccess: (value?: T) => R, onFailure: () => R, onCancel: () => R): R;
13
19
  }
@@ -5,21 +5,22 @@ var ResultType;
5
5
  ResultType[ResultType["Failure"] = 1] = "Failure";
6
6
  })(ResultType || (ResultType = {}));
7
7
  export class ActionResult {
8
- constructor(resultType, message) {
8
+ constructor(resultType, message, value) {
9
9
  this.resultType = resultType;
10
10
  this.message = message;
11
+ this.value = value;
11
12
  }
12
- static success() {
13
- return new ActionResult(ResultType.Success, " Succeeded ");
13
+ static success(value) {
14
+ return new ActionResult(ResultType.Success, "Succeeded", value);
14
15
  }
15
- static failed() {
16
- return new ActionResult(ResultType.Failure, " Failed ");
16
+ static failed(message = "Failed") {
17
+ return new ActionResult(ResultType.Failure, message);
17
18
  }
18
- static cancelled() {
19
- return new ActionResult(ResultType.Cancel, " Cancelled ");
19
+ static cancelled(message = "Cancelled") {
20
+ return new ActionResult(ResultType.Cancel, message);
20
21
  }
21
- static stopped() {
22
- return new ActionResult(ResultType.Cancel, " Stopped ");
22
+ static stopped(message = "Stopped") {
23
+ return new ActionResult(ResultType.Cancel, message);
23
24
  }
24
25
  getMessage() {
25
26
  return this.message;
@@ -30,10 +31,35 @@ export class ActionResult {
30
31
  isFailed() {
31
32
  return this.resultType === ResultType.Failure;
32
33
  }
34
+ isSuccess() {
35
+ return this.resultType === ResultType.Success;
36
+ }
37
+ isCancelled() {
38
+ return this.resultType === ResultType.Cancel;
39
+ }
40
+ match(onSuccess, onFailure, onCancel) {
41
+ switch (this.resultType) {
42
+ case ResultType.Success:
43
+ return onSuccess(this.value);
44
+ case ResultType.Failure:
45
+ return onFailure(this.message);
46
+ case ResultType.Cancel:
47
+ return onCancel(this.message);
48
+ }
49
+ }
50
+ getValue() {
51
+ if (!this.isSuccess()) {
52
+ throw new Error(`Cannot unwrap ${ResultType[this.resultType]} result: ${this.message}`);
53
+ }
54
+ return this.value;
55
+ }
56
+ getValueOr(defaultValue) {
57
+ return this.isSuccess() ? this.value : defaultValue;
58
+ }
33
59
  mapAll(onSuccess, onFailure, onCancel) {
34
60
  switch (this.resultType) {
35
61
  case ResultType.Success:
36
- return onSuccess();
62
+ return onSuccess(this.value);
37
63
  case ResultType.Failure:
38
64
  return onFailure();
39
65
  case ResultType.Cancel:
@@ -1 +1 @@
1
- {"version":3,"file":"action-result.js","sourceRoot":"","sources":["../../src/actions/action-result.ts"],"names":[],"mappings":"AAAA,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,iDAAU,CAAA;IACV,iDAAY,CAAA;IACZ,iDAAU,CAAA;AACZ,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,MAAM,OAAO,YAAY;IAIvB,YAAoB,UAAsB,EAAE,OAAe;QACzD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC;IAChD,CAAC;IAEM,MAAM,CAAI,SAAkB,EAAE,SAAkB,EAAE,QAAiB;QACxE,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,SAAS,EAAE,CAAC;YACrB,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,SAAS,EAAE,CAAC;YACrB,KAAK,UAAU,CAAC,MAAM;gBACpB,OAAO,QAAQ,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"action-result.js","sourceRoot":"","sources":["../../src/actions/action-result.ts"],"names":[],"mappings":"AAAA,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,iDAAW,CAAA;IACX,iDAAY,CAAA;IACZ,iDAAW,CAAA;AACb,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,MAAM,OAAO,YAAY;IAKvB,YAAoB,UAAsB,EAAE,OAAe,EAAE,KAAS;QACpE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAAO,CAAI,KAAS;QACzB,OAAO,IAAI,YAAY,CAAI,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,MAAM,CAAY,OAAO,GAAG,QAAQ;QACzC,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,SAAS,CAAY,OAAO,GAAG,WAAW;QAC/C,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,OAAO,CAAY,OAAO,GAAG,SAAS;QAC3C,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC;IAChD,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC;IAChD,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;IAC/C,CAAC;IAEM,KAAK,CACV,SAA0B,EAC1B,SAAiC,EACjC,QAAgC;QAEhC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,SAAS,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,KAAK,UAAU,CAAC,MAAM;gBACpB,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,KAAM,CAAC;IACrB,CAAC;IAEM,UAAU,CAAC,YAAe;QAC/B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,YAAY,CAAC;IACvD,CAAC;IAEM,MAAM,CACX,SAA2B,EAC3B,SAAkB,EAClB,QAAiB;QAEjB,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,SAAS,EAAE,CAAC;YACrB,KAAK,UAAU,CAAC,MAAM;gBACpB,OAAO,QAAQ,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import { DirectoryPath } from "../../types/file/directoryPath.js";
2
2
  import { ActionResult } from "../action-result.js";
3
+ import { UnallowedFeaturesResponse } from "../../infrastructure/services/validation-service.js";
3
4
  import { CommandMetadata } from "../../types/common/command-metadata.js";
4
5
  import { ResourceInput } from "../../types/file/resource-input.js";
5
6
  export declare class ValidateAction {
@@ -8,5 +9,6 @@ export declare class ValidateAction {
8
9
  private readonly authKey;
9
10
  private readonly commandMetadata;
10
11
  constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey?: string | null);
11
- readonly execute: (resourcePath: ResourceInput, displayValidationSummary?: boolean) => Promise<ActionResult>;
12
+ readonly execute: (resourcePath: ResourceInput, displayValidationSummary?: boolean) => Promise<ActionResult<UnallowedFeaturesResponse | null>>;
13
+ private hasValidationIssues;
12
14
  }
@@ -25,17 +25,28 @@ export class ValidateAction {
25
25
  }
26
26
  const validationSummary = validationSummaryResult.value;
27
27
  if (displayValidationSummary) {
28
- this.prompts.displayValidationMessages(validationSummary);
28
+ if (this.hasValidationIssues(validationSummary.result.validation)) {
29
+ this.prompts.displayValidationSummary(validationSummary.result.validation);
30
+ }
31
+ if (this.hasValidationIssues(validationSummary.result.linting)) {
32
+ this.prompts.displayValidationSummary(validationSummary.result.linting);
33
+ }
29
34
  }
30
- if (!validationSummary.success) {
35
+ if (!validationSummary.result.validation.isSuccess || !validationSummary.result.linting.isSuccess) {
31
36
  return ActionResult.failed();
32
37
  }
33
- return ActionResult.success();
38
+ return ActionResult.success(validationSummary.unallowedFeatures);
34
39
  });
35
40
  };
36
41
  this.authKey = authKey;
37
42
  this.validationService = new ValidationService(configDir);
38
43
  this.commandMetadata = commandMetadata;
39
44
  }
45
+ hasValidationIssues(summary) {
46
+ return (summary.blocking.length > 0 ||
47
+ summary.errors.length > 0 ||
48
+ summary.warnings.length > 0 ||
49
+ summary.information.length > 0);
50
+ }
40
51
  }
41
52
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/actions/api/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,OAAO,cAAc;IAMzB,YAAY,SAAwB,EAAE,eAAgC,EAAE,UAAyB,IAAI;QALpF,YAAO,GAAuB,IAAI,kBAAkB,EAAE,CAAC;QAWxD,YAAO,GAAG,KAAK,EAC7B,YAA2B,EAC3B,wBAAwB,GAAG,IAAI,EACR,EAAE;YACzB,OAAO,MAAM,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBAC/C,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;gBAC3D,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACxE,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACnD,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBACD,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAC5D,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;oBACrC,IAAI,EAAE,iBAAiB,CAAC,KAAK;oBAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CACH,CAAC;gBAEF,IAAI,uBAAuB,CAAC,KAAK,EAAE,EAAE,CAAC;oBACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;oBAC/D,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBACD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,KAAK,CAAC;gBACxD,IAAI,wBAAwB,EAAE,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,CAAC;gBACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;oBAC/B,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBAED,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAtCA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;CAoCF"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/actions/api/validate.ts"],"names":[],"mappings":"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"}
@@ -76,8 +76,8 @@ export class CopilotAction {
76
76
  "\n" +
77
77
  "Ask me anything about this API or try one of these example prompts:\n" +
78
78
  "\n" +
79
- "`- What authentication methods does this API support?`\n" +
80
- "`- [Enter another prompt here]`";
79
+ "- `What authentication methods does this API support?`\n" +
80
+ "- `[Enter another prompt here]`";
81
81
  await this.fileService.writeContents(tempFile, defaultContent);
82
82
  this.prompts.openWelcomeMessageEditor();
83
83
  await this.launcherService.openInEditor(tempFile);
@@ -1,6 +1,6 @@
1
- import { DirectoryPath } from "../../types/file/directoryPath.js";
2
- import { ActionResult } from "../action-result.js";
3
- import { CommandMetadata } from "../../types/common/command-metadata.js";
1
+ import { DirectoryPath } from '../../types/file/directoryPath.js';
2
+ import { ActionResult } from '../action-result.js';
3
+ import { CommandMetadata } from '../../types/common/command-metadata.js';
4
4
  export declare class PortalQuickstartAction {
5
5
  private readonly prompts;
6
6
  private readonly zipService;
@@ -11,6 +11,7 @@ export declare class PortalQuickstartAction {
11
11
  private readonly buildFileUrl;
12
12
  private readonly defaultSpecUrl;
13
13
  private readonly repositoryFolderName;
14
+ private readonly validationService;
14
15
  constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata);
15
16
  readonly execute: () => Promise<ActionResult>;
16
17
  }
@@ -1,18 +1,20 @@
1
- import { getAuthInfo } from "../../client-utils/auth-manager.js";
2
- import { FileService } from "../../infrastructure/file-service.js";
3
- import { withDirPath } from "../../infrastructure/tmp-extensions.js";
4
- import { ZipService } from "../../infrastructure/zip-service.js";
5
- import { PortalQuickstartPrompts } from "../../prompts/portal/quickstart.js";
6
- import { UrlPath } from "../../types/file/urlPath.js";
7
- import { LoginAction } from "../auth/login.js";
8
- import { ActionResult } from "../action-result.js";
9
- import { PortalServeAction } from "./serve.js";
10
- import { ValidateAction } from "../api/validate.js";
11
- import { BuildContext } from "../../types/build-context.js";
12
- import { TempContext } from "../../types/temp-context.js";
13
- import { FileDownloadService } from "../../infrastructure/services/file-download-service.js";
14
- import { getLanguagesConfig } from "../../types/build/build.js";
15
- import { SpecContext } from "../../types/spec-context.js";
1
+ import { getAuthInfo } from '../../client-utils/auth-manager.js';
2
+ import { FileService } from '../../infrastructure/file-service.js';
3
+ import { withDirPath } from '../../infrastructure/tmp-extensions.js';
4
+ import { ZipService } from '../../infrastructure/zip-service.js';
5
+ import { PortalQuickstartPrompts } from '../../prompts/portal/quickstart.js';
6
+ import { UrlPath } from '../../types/file/urlPath.js';
7
+ import { LoginAction } from '../auth/login.js';
8
+ import { ActionResult } from '../action-result.js';
9
+ import { PortalServeAction } from './serve.js';
10
+ import { ValidateAction } from '../api/validate.js';
11
+ import { BuildContext } from '../../types/build-context.js';
12
+ import { TempContext } from '../../types/temp-context.js';
13
+ import { FileDownloadService } from '../../infrastructure/services/file-download-service.js';
14
+ import { getLanguagesConfig } from '../../types/build/build.js';
15
+ import { SpecContext } from '../../types/spec-context.js';
16
+ import { ValidationService } from '../../infrastructure/services/validation-service.js';
17
+ import { FileName } from '../../types/file/fileName.js';
16
18
  const defaultPort = 3000;
17
19
  export class PortalQuickstartAction {
18
20
  constructor(configDir, commandMetadata) {
@@ -22,7 +24,7 @@ export class PortalQuickstartAction {
22
24
  this.fileDownloadService = new FileDownloadService();
23
25
  this.buildFileUrl = new UrlPath(`https://github.com/apimatic/sample-docs-as-code-portal/archive/refs/heads/master.zip`);
24
26
  this.defaultSpecUrl = new UrlPath(`https://raw.githubusercontent.com/apimatic/sample-docs-as-code-portal/refs/heads/master/src/spec/openapi.json`);
25
- this.repositoryFolderName = "sample-docs-as-code-portal-master/src";
27
+ this.repositoryFolderName = 'sample-docs-as-code-portal-master/src';
26
28
  this.execute = async () => {
27
29
  const storedAuth = await getAuthInfo(this.configDir.toString());
28
30
  if (!(storedAuth === null || storedAuth === void 0 ? void 0 : storedAuth.authKey)) {
@@ -32,6 +34,7 @@ export class PortalQuickstartAction {
32
34
  }
33
35
  }
34
36
  return await withDirPath(async (tempDirectory) => {
37
+ var _a;
35
38
  // Step 1/4
36
39
  this.prompts.importSpecStep();
37
40
  let specPath;
@@ -80,6 +83,25 @@ export class PortalQuickstartAction {
80
83
  specPath = await specContext.save(downloadFileResult.value.stream, downloadFileResult.value.filename);
81
84
  }
82
85
  }
86
+ if (validationResult.isSuccess()) {
87
+ const unallowed = validationResult.getValue();
88
+ if (unallowed && (((_a = unallowed.Features) === null || _a === void 0 ? void 0 : _a.length) > 0 || unallowed.EndpointCount > unallowed.EndpointLimit)) {
89
+ const config = {
90
+ features: unallowed.Features.filter((name) => !!name),
91
+ endpointsToKeep: unallowed.EndpointLimit
92
+ };
93
+ const stripUnallowedFeaturesResult = await this.validationService.stripUnallowedFeatures(specPath, config);
94
+ if (stripUnallowedFeaturesResult.isErr()) {
95
+ this.prompts.splitSpecDetected(unallowed);
96
+ return ActionResult.failed();
97
+ }
98
+ else {
99
+ this.prompts.stripUnallowedFeaturesStep(unallowed);
100
+ const specContext = new SpecContext(tempDirectory);
101
+ specPath = await specContext.save(stripUnallowedFeaturesResult.value, new FileName('pruned-spec.zip'));
102
+ }
103
+ }
104
+ }
83
105
  // Step 3/4
84
106
  this.prompts.selectLanguagesStep();
85
107
  const languages = await this.prompts.selectLanguagesPrompt();
@@ -121,14 +143,14 @@ export class PortalQuickstartAction {
121
143
  const buildFile = await tempBuildContext.getBuildFileContents();
122
144
  buildFile.generatePortal.languageConfig = getLanguagesConfig(languages);
123
145
  await tempBuildContext.updateBuildFileContents(buildFile);
124
- const sourceDirectory = inputDirectory.join("src");
146
+ const sourceDirectory = inputDirectory.join('src');
125
147
  await this.fileService.copyDirectoryContents(extractedFolder, sourceDirectory);
126
- const specDirectory = sourceDirectory.join("spec");
148
+ const specDirectory = sourceDirectory.join('spec');
127
149
  const specContext = new SpecContext(specDirectory);
128
150
  await specContext.replaceDefaultSpec(specPath);
129
151
  const buildDirectoryStructure = await this.fileService.getDirectory(sourceDirectory);
130
152
  this.prompts.printDirectoryStructure(inputDirectory, buildDirectoryStructure);
131
- const portalDirectory = inputDirectory.join("portal");
153
+ const portalDirectory = inputDirectory.join('portal');
132
154
  const portalServeAction = new PortalServeAction(this.configDir, this.commandMetadata, null);
133
155
  const result = await portalServeAction.execute(sourceDirectory, portalDirectory, defaultPort, true, false, () => {
134
156
  this.prompts.nextSteps();
@@ -141,6 +163,7 @@ export class PortalQuickstartAction {
141
163
  };
142
164
  this.configDir = configDir;
143
165
  this.commandMetadata = commandMetadata;
166
+ this.validationService = new ValidationService(this.configDir);
144
167
  }
145
168
  }
146
169
  //# sourceMappingURL=quickstart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/actions/portal/quickstart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/actions/portal/quickstart.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,6 @@ import { createServer as createLiveReloadServer } from "livereload";
2
2
  import connectLiveReload from "connect-livereload";
3
3
  import express from "express";
4
4
  import chokidar from "chokidar";
5
- import crypto from "crypto";
6
- import { Mutex } from "async-mutex";
7
5
  import { PortalServePrompts } from "../../prompts/portal/serve.js";
8
6
  import { ActionResult } from "../action-result.js";
9
7
  import { GenerateAction } from "./generate.js";
@@ -62,9 +60,6 @@ export class PortalServeAction {
62
60
  atomic: true
63
61
  });
64
62
  const deletedDirectories = new Set();
65
- // TODO: Verify if we need mutex and eventQueue after refactoring.
66
- const eventQueue = new Map();
67
- const mutex = new Mutex();
68
63
  const debounceService = new DebounceService();
69
64
  watcher
70
65
  .on("all", async (event, path) => {
@@ -79,17 +74,8 @@ export class PortalServeAction {
79
74
  }
80
75
  }
81
76
  }
82
- const eventId = `${Date.now()}-${crypto.randomUUID()}`;
83
- await mutex.runExclusive(async () => {
84
- eventQueue.clear();
85
- eventQueue.set(eventId, path);
86
- });
87
77
  await debounceService.batchSingleRequest(async () => {
88
78
  this.prompts.changesDetected();
89
- // TODO: Verify if this is needed.
90
- if (!eventQueue.has(eventId)) {
91
- return;
92
- }
93
79
  await generatePortalAction.execute(buildDirectory, portalDirectory, true, false, false);
94
80
  liveReloadServer.refresh(portalDirectory.toString());
95
81
  this.clearStandardInput();
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/actions/portal/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/actions/portal/serve.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { TocGroup } from "../../../types/toc/toc.js";
2
- import { DirectoryPath } from "../../../types/file/directoryPath.js";
3
- import { CommandMetadata } from "../../../types/common/command-metadata.js";
4
- import { ActionResult } from "../../action-result.js";
1
+ import { TocGroup } from '../../../types/toc/toc.js';
2
+ import { DirectoryPath } from '../../../types/file/directoryPath.js';
3
+ import { CommandMetadata } from '../../../types/common/command-metadata.js';
4
+ import { ActionResult } from '../../action-result.js';
5
5
  export declare class ContentContext {
6
6
  private readonly contentDirectory;
7
7
  private readonly fileService;
@@ -17,5 +17,5 @@ export declare class PortalNewTocAction {
17
17
  private readonly fileService;
18
18
  private readonly portalService;
19
19
  constructor(configDirectory: DirectoryPath, commandMetadata: CommandMetadata);
20
- execute(buildDirectory: DirectoryPath, tocDirectory?: DirectoryPath, force?: boolean, expandEndpoints?: boolean, expandModels?: boolean): Promise<ActionResult>;
20
+ execute(buildDirectory: DirectoryPath, tocDirectory?: DirectoryPath, force?: boolean, expandEndpoints?: boolean, expandModels?: boolean, expandWebhooks?: boolean, expandCallbacks?: boolean): Promise<ActionResult>;
21
21
  }
@@ -1,14 +1,13 @@
1
- import { ok } from "neverthrow";
2
- import { PortalNewTocPrompts } from "../../../prompts/portal/toc/new-toc.js";
3
- import { TocStructureGenerator } from "../../../application/portal/toc/toc-structure-generator.js";
4
- import { ActionResult } from "../../action-result.js";
5
- import { TocContext } from "../../../types/toc-context.js";
6
- import { FileService } from "../../../infrastructure/file-service.js";
7
- import { BuildContext } from "../../../types/build-context.js";
8
- import { getEndpointGroupsAndModels } from "../../../types/sdl/sdl.js";
9
- import { withDirPath } from "../../../infrastructure/tmp-extensions.js";
10
- import { TempContext } from "../../../types/temp-context.js";
11
- import { PortalService } from "../../../infrastructure/services/portal-service.js";
1
+ import { PortalNewTocPrompts } from '../../../prompts/portal/toc/new-toc.js';
2
+ import { TocStructureGenerator } from '../../../application/portal/toc/toc-structure-generator.js';
3
+ import { ActionResult } from '../../action-result.js';
4
+ import { TocContext } from '../../../types/toc-context.js';
5
+ import { FileService } from '../../../infrastructure/file-service.js';
6
+ import { BuildContext } from '../../../types/build-context.js';
7
+ import { extractCallbacksForToc, extractEndpointGroupsForToc, extractModelsForToc, extractWebhooksForToc } from '../../../types/sdl/sdl.js';
8
+ import { withDirPath } from '../../../infrastructure/tmp-extensions.js';
9
+ import { TempContext } from '../../../types/temp-context.js';
10
+ import { PortalService } from '../../../infrastructure/services/portal-service.js';
12
11
  export class ContentContext {
13
12
  constructor(contentDirectory) {
14
13
  this.contentDirectory = contentDirectory;
@@ -31,7 +30,7 @@ export class PortalNewTocAction {
31
30
  this.fileService = new FileService();
32
31
  this.portalService = new PortalService();
33
32
  }
34
- async execute(buildDirectory, tocDirectory, force = false, expandEndpoints = false, expandModels = false) {
33
+ async execute(buildDirectory, tocDirectory, force = false, expandEndpoints = false, expandModels = false, expandWebhooks = false, expandCallbacks = false) {
35
34
  var _a, _b;
36
35
  // Validate build directory
37
36
  const buildContext = new BuildContext(buildDirectory);
@@ -40,43 +39,43 @@ export class PortalNewTocAction {
40
39
  return ActionResult.failed();
41
40
  }
42
41
  const buildConfig = await buildContext.getBuildFileContents();
43
- const contentDirectory = buildDirectory.join((_b = (_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.contentFolder) !== null && _b !== void 0 ? _b : "content");
42
+ const contentDirectory = buildDirectory.join((_b = (_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.contentFolder) !== null && _b !== void 0 ? _b : 'content');
44
43
  const tocDir = tocDirectory !== null && tocDirectory !== void 0 ? tocDirectory : contentDirectory;
45
44
  const tocContext = new TocContext(tocDir);
46
45
  if (!force && (await tocContext.exists()) && !(await this.prompts.overwriteToc(tocContext.tocPath))) {
47
46
  this.prompts.tocFileAlreadyExists();
48
47
  return ActionResult.cancelled();
49
48
  }
50
- let sdlComponents = { endpointGroups: new Map(), models: [] };
51
- if (expandEndpoints || expandModels) {
52
- const specDirectory = buildDirectory.join("spec");
49
+ const sdlTocComponents = await (async () => {
50
+ const defaultComponents = {
51
+ endpointGroups: new Map(),
52
+ models: [],
53
+ webhookGroups: new Map(),
54
+ callbackGroups: new Map()
55
+ };
56
+ const specDirectory = buildDirectory.join('spec');
53
57
  if (!(await this.fileService.directoryExists(specDirectory))) {
54
58
  this.prompts.fallingBackToDefault();
59
+ return defaultComponents;
55
60
  }
56
- else {
57
- const sdlResult = await withDirPath(async (tempDirectory) => {
58
- const tempContext = new TempContext(tempDirectory);
59
- const specZipPath = await tempContext.zip(specDirectory);
60
- const specFileStream = await this.fileService.getStream(specZipPath);
61
- try {
62
- const result = await this.prompts.extractEndpointGroupsAndModels(this.portalService.generateSdl(specFileStream, this.configDirectory, this.commandMetadata));
63
- if (result.isErr()) {
64
- this.prompts.fallingBackToDefault();
65
- return ok({ endpointGroups: new Map(), models: [] });
66
- }
67
- return ok(getEndpointGroupsAndModels(result.value));
68
- }
69
- finally {
70
- specFileStream.close();
71
- }
72
- });
73
- if (sdlResult.isErr()) {
74
- this.prompts.logError(sdlResult.error);
75
- return ActionResult.failed();
61
+ return await withDirPath(async (tempDirectory) => {
62
+ const tempContext = new TempContext(tempDirectory);
63
+ const specZipPath = await tempContext.zip(specDirectory);
64
+ const specFileStream = await this.fileService.getStream(specZipPath);
65
+ const result = await this.prompts.extractComponents(this.portalService.generateSdl(specFileStream, this.configDirectory, this.commandMetadata), expandEndpoints, expandModels, expandWebhooks, expandCallbacks);
66
+ specFileStream.close();
67
+ if (result.isErr()) {
68
+ this.prompts.fallingBackToDefault();
69
+ return defaultComponents;
76
70
  }
77
- sdlComponents = sdlResult.value;
78
- }
79
- }
71
+ return {
72
+ endpointGroups: extractEndpointGroupsForToc(result.value),
73
+ models: extractModelsForToc(result.value),
74
+ webhookGroups: extractWebhooksForToc(result.value),
75
+ callbackGroups: extractCallbacksForToc(result.value)
76
+ };
77
+ });
78
+ })();
80
79
  const contentContext = new ContentContext(contentDirectory);
81
80
  const contentExists = await contentContext.exists();
82
81
  let contentGroups;
@@ -87,7 +86,7 @@ export class PortalNewTocAction {
87
86
  else {
88
87
  contentGroups = await contentContext.extractContentGroups();
89
88
  }
90
- const toc = this.tocGenerator.createTocStructure(sdlComponents.endpointGroups, sdlComponents.models, expandEndpoints, expandModels, contentGroups);
89
+ const toc = this.tocGenerator.createTocStructure({ data: sdlTocComponents.endpointGroups, expand: expandEndpoints }, { data: sdlTocComponents.models, expand: expandModels }, { data: sdlTocComponents.webhookGroups, expand: expandWebhooks }, { data: sdlTocComponents.callbackGroups, expand: expandCallbacks }, contentGroups);
91
90
  const yamlString = this.tocGenerator.transformToYaml(toc);
92
91
  const tocFilePath = await tocContext.save(yamlString);
93
92
  this.prompts.tocCreated(tocFilePath);