@apimatic/cli 1.1.0-beta.9 → 1.2.0

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 (223) hide show
  1. package/README.md +117 -14
  2. package/lib/actions/portal/copilot.d.ts +1 -0
  3. package/lib/actions/portal/copilot.js +12 -12
  4. package/lib/actions/portal/copilot.js.map +1 -1
  5. package/lib/actions/portal/generate.js +7 -1
  6. package/lib/actions/portal/generate.js.map +1 -1
  7. package/lib/actions/portal/quickstart.d.ts +1 -0
  8. package/lib/actions/portal/quickstart.js +79 -10
  9. package/lib/actions/portal/quickstart.js.map +1 -1
  10. package/lib/actions/portal/serve.d.ts +1 -0
  11. package/lib/actions/portal/serve.js +77 -20
  12. package/lib/actions/portal/serve.js.map +1 -1
  13. package/lib/actions/portal/toc/new-toc.js +8 -20
  14. package/lib/actions/portal/toc/new-toc.js.map +1 -1
  15. package/lib/actions/publishing/profile/list.d.ts +11 -0
  16. package/lib/actions/publishing/profile/list.js +29 -0
  17. package/lib/actions/publishing/profile/list.js.map +1 -0
  18. package/lib/actions/sdk/generate.d.ts +9 -5
  19. package/lib/actions/sdk/generate.js +74 -46
  20. package/lib/actions/sdk/generate.js.map +1 -1
  21. package/lib/actions/sdk/merge-source-tree.d.ts +12 -0
  22. package/lib/actions/sdk/merge-source-tree.js +78 -0
  23. package/lib/actions/sdk/merge-source-tree.js.map +1 -0
  24. package/lib/actions/sdk/publish/interactive.d.ts +13 -0
  25. package/lib/actions/sdk/publish/interactive.js +105 -0
  26. package/lib/actions/sdk/publish/interactive.js.map +1 -0
  27. package/lib/actions/sdk/publish/non-interactive.d.ts +14 -0
  28. package/lib/actions/sdk/publish/non-interactive.js +101 -0
  29. package/lib/actions/sdk/publish/non-interactive.js.map +1 -0
  30. package/lib/actions/sdk/publish.d.ts +18 -0
  31. package/lib/actions/sdk/publish.js +56 -0
  32. package/lib/actions/sdk/publish.js.map +1 -0
  33. package/lib/actions/sdk/quickstart.d.ts +1 -0
  34. package/lib/actions/sdk/quickstart.js +19 -2
  35. package/lib/actions/sdk/quickstart.js.map +1 -1
  36. package/lib/actions/sdk/save-changes.d.ts +8 -0
  37. package/lib/actions/sdk/save-changes.js +93 -0
  38. package/lib/actions/sdk/save-changes.js.map +1 -0
  39. package/lib/application/portal/recipe/recipe-generator.js +14 -29
  40. package/lib/application/portal/recipe/recipe-generator.js.map +1 -1
  41. package/lib/application/portal/toc/toc-structure-generator.d.ts +3 -19
  42. package/lib/application/portal/toc/toc-structure-generator.js +43 -33
  43. package/lib/application/portal/toc/toc-structure-generator.js.map +1 -1
  44. package/lib/commands/portal/recipe/new.js +2 -2
  45. package/lib/commands/portal/recipe/new.js.map +1 -1
  46. package/lib/commands/portal/serve.js +3 -3
  47. package/lib/commands/portal/serve.js.map +1 -1
  48. package/lib/commands/portal/toc/new.js +2 -2
  49. package/lib/commands/portal/toc/new.js.map +1 -1
  50. package/lib/commands/publishing/profile/list.d.ts +9 -0
  51. package/lib/commands/publishing/profile/list.js +28 -0
  52. package/lib/commands/publishing/profile/list.js.map +1 -0
  53. package/lib/commands/quickstart.js +1 -1
  54. package/lib/commands/quickstart.js.map +1 -1
  55. package/lib/commands/sdk/generate.d.ts +6 -2
  56. package/lib/commands/sdk/generate.js +35 -9
  57. package/lib/commands/sdk/generate.js.map +1 -1
  58. package/lib/commands/sdk/publish.d.ts +18 -0
  59. package/lib/commands/sdk/publish.js +73 -0
  60. package/lib/commands/sdk/publish.js.map +1 -0
  61. package/lib/commands/sdk/save-changes.d.ts +14 -0
  62. package/lib/commands/sdk/save-changes.js +51 -0
  63. package/lib/commands/sdk/save-changes.js.map +1 -0
  64. package/lib/hooks/not-found.js +1 -1
  65. package/lib/hooks/not-found.js.map +1 -1
  66. package/lib/infrastructure/debounce-service.js +3 -0
  67. package/lib/infrastructure/debounce-service.js.map +1 -1
  68. package/lib/infrastructure/env-info.d.ts +2 -0
  69. package/lib/infrastructure/env-info.js +23 -12
  70. package/lib/infrastructure/env-info.js.map +1 -1
  71. package/lib/infrastructure/file-service.d.ts +9 -0
  72. package/lib/infrastructure/file-service.js +94 -5
  73. package/lib/infrastructure/file-service.js.map +1 -1
  74. package/lib/infrastructure/git-service.d.ts +14 -0
  75. package/lib/infrastructure/git-service.js +90 -0
  76. package/lib/infrastructure/git-service.js.map +1 -0
  77. package/lib/infrastructure/launcher-service.d.ts +5 -0
  78. package/lib/infrastructure/launcher-service.js +35 -2
  79. package/lib/infrastructure/launcher-service.js.map +1 -1
  80. package/lib/infrastructure/os-extensions.d.ts +2 -0
  81. package/lib/infrastructure/os-extensions.js +6 -0
  82. package/lib/infrastructure/os-extensions.js.map +1 -0
  83. package/lib/infrastructure/service-error.d.ts +14 -2
  84. package/lib/infrastructure/service-error.js +26 -9
  85. package/lib/infrastructure/service-error.js.map +1 -1
  86. package/lib/infrastructure/services/api-service.d.ts +1 -0
  87. package/lib/infrastructure/services/api-service.js +26 -2
  88. package/lib/infrastructure/services/api-service.js.map +1 -1
  89. package/lib/infrastructure/services/portal-service.d.ts +11 -2
  90. package/lib/infrastructure/services/portal-service.js +123 -18
  91. package/lib/infrastructure/services/portal-service.js.map +1 -1
  92. package/lib/infrastructure/services/publishing-api-service.d.ts +19 -0
  93. package/lib/infrastructure/services/publishing-api-service.js +111 -0
  94. package/lib/infrastructure/services/publishing-api-service.js.map +1 -0
  95. package/lib/infrastructure/services/validation-service.d.ts +21 -0
  96. package/lib/infrastructure/services/validation-service.js +94 -4
  97. package/lib/infrastructure/services/validation-service.js.map +1 -1
  98. package/lib/infrastructure/zip-service.d.ts +2 -2
  99. package/lib/infrastructure/zip-service.js +46 -25
  100. package/lib/infrastructure/zip-service.js.map +1 -1
  101. package/lib/prompts/format.d.ts +0 -2
  102. package/lib/prompts/format.js +0 -31
  103. package/lib/prompts/format.js.map +1 -1
  104. package/lib/prompts/portal/generate.d.ts +1 -1
  105. package/lib/prompts/portal/generate.js +9 -3
  106. package/lib/prompts/portal/generate.js.map +1 -1
  107. package/lib/prompts/portal/quickstart.d.ts +11 -2
  108. package/lib/prompts/portal/quickstart.js +80 -13
  109. package/lib/prompts/portal/quickstart.js.map +1 -1
  110. package/lib/prompts/portal/serve.d.ts +4 -0
  111. package/lib/prompts/portal/serve.js +20 -1
  112. package/lib/prompts/portal/serve.js.map +1 -1
  113. package/lib/prompts/portal/toc/new-toc.d.ts +2 -2
  114. package/lib/prompts/portal/toc/new-toc.js +3 -3
  115. package/lib/prompts/portal/toc/new-toc.js.map +1 -1
  116. package/lib/prompts/prompt.d.ts +6 -0
  117. package/lib/prompts/prompt.js +45 -0
  118. package/lib/prompts/prompt.js.map +1 -1
  119. package/lib/prompts/publishing/profile/list.d.ts +9 -0
  120. package/lib/prompts/publishing/profile/list.js +27 -0
  121. package/lib/prompts/publishing/profile/list.js.map +1 -0
  122. package/lib/prompts/sdk/generate.d.ts +7 -3
  123. package/lib/prompts/sdk/generate.js +25 -13
  124. package/lib/prompts/sdk/generate.js.map +1 -1
  125. package/lib/prompts/sdk/merge-source-tree.d.ts +22 -0
  126. package/lib/prompts/sdk/merge-source-tree.js +90 -0
  127. package/lib/prompts/sdk/merge-source-tree.js.map +1 -0
  128. package/lib/prompts/sdk/publish/interactive.d.ts +30 -0
  129. package/lib/prompts/sdk/publish/interactive.js +139 -0
  130. package/lib/prompts/sdk/publish/interactive.js.map +1 -0
  131. package/lib/prompts/sdk/publish/non-interactive.d.ts +27 -0
  132. package/lib/prompts/sdk/publish/non-interactive.js +97 -0
  133. package/lib/prompts/sdk/publish/non-interactive.js.map +1 -0
  134. package/lib/prompts/sdk/publish.d.ts +12 -0
  135. package/lib/prompts/sdk/publish.js +16 -0
  136. package/lib/prompts/sdk/publish.js.map +1 -0
  137. package/lib/prompts/sdk/quickstart.d.ts +4 -1
  138. package/lib/prompts/sdk/quickstart.js +30 -13
  139. package/lib/prompts/sdk/quickstart.js.map +1 -1
  140. package/lib/prompts/sdk/save-changes.d.ts +21 -0
  141. package/lib/prompts/sdk/save-changes.js +84 -0
  142. package/lib/prompts/sdk/save-changes.js.map +1 -0
  143. package/lib/types/api/account.d.ts +1 -0
  144. package/lib/types/build/build.d.ts +82 -2
  145. package/lib/types/build/build.js +161 -0
  146. package/lib/types/build/build.js.map +1 -1
  147. package/lib/types/build-context.d.ts +14 -1
  148. package/lib/types/build-context.js +82 -4
  149. package/lib/types/build-context.js.map +1 -1
  150. package/lib/types/events/sdk-changes-saved.d.ts +8 -0
  151. package/lib/types/events/sdk-changes-saved.js +11 -0
  152. package/lib/types/events/sdk-changes-saved.js.map +1 -0
  153. package/lib/types/events/sdk-changes-tracked.d.ts +8 -0
  154. package/lib/types/events/sdk-changes-tracked.js +11 -0
  155. package/lib/types/events/sdk-changes-tracked.js.map +1 -0
  156. package/lib/types/events/sdk-conflicts-resolved.d.ts +8 -0
  157. package/lib/types/events/sdk-conflicts-resolved.js +11 -0
  158. package/lib/types/events/sdk-conflicts-resolved.js.map +1 -0
  159. package/lib/types/events/sdk-publish-validation-failed.d.ts +5 -0
  160. package/lib/types/events/sdk-publish-validation-failed.js +8 -0
  161. package/lib/types/events/sdk-publish-validation-failed.js.map +1 -0
  162. package/lib/types/file/directory.d.ts +10 -1
  163. package/lib/types/file/directory.js +63 -5
  164. package/lib/types/file/directory.js.map +1 -1
  165. package/lib/types/file/directoryPath.js.map +1 -1
  166. package/lib/types/file/urlPath.d.ts +4 -0
  167. package/lib/types/file/urlPath.js +9 -0
  168. package/lib/types/file/urlPath.js.map +1 -1
  169. package/lib/types/merge-source-tree-context.d.ts +28 -0
  170. package/lib/types/merge-source-tree-context.js +63 -0
  171. package/lib/types/merge-source-tree-context.js.map +1 -0
  172. package/lib/types/package-settings-context.d.ts +10 -0
  173. package/lib/types/package-settings-context.js +20 -0
  174. package/lib/types/package-settings-context.js.map +1 -0
  175. package/lib/types/publish/package-settings-configuration.d.ts +74 -0
  176. package/lib/types/publish/package-settings-configuration.js +2 -0
  177. package/lib/types/publish/package-settings-configuration.js.map +1 -0
  178. package/lib/types/publish/profile-id.d.ts +10 -0
  179. package/lib/types/publish/profile-id.js +22 -0
  180. package/lib/types/publish/profile-id.js.map +1 -0
  181. package/lib/types/publish/publishing-profile.d.ts +26 -0
  182. package/lib/types/publish/publishing-profile.js +154 -0
  183. package/lib/types/publish/publishing-profile.js.map +1 -0
  184. package/lib/types/publish/publishing-profiles.d.ts +12 -0
  185. package/lib/types/publish/publishing-profiles.js +36 -0
  186. package/lib/types/publish/publishing-profiles.js.map +1 -0
  187. package/lib/types/publish/version.d.ts +7 -0
  188. package/lib/types/publish/version.js +17 -0
  189. package/lib/types/publish/version.js.map +1 -0
  190. package/lib/types/publish-api/publish-log.d.ts +20 -0
  191. package/lib/types/publish-api/publish-log.js +2 -0
  192. package/lib/types/publish-api/publish-log.js.map +1 -0
  193. package/lib/types/publish-api/publishing-info.d.ts +4 -0
  194. package/lib/types/publish-api/publishing-info.js +2 -0
  195. package/lib/types/publish-api/publishing-info.js.map +1 -0
  196. package/lib/types/publish-api/publishing-profile-item.d.ts +190 -0
  197. package/lib/types/publish-api/publishing-profile-item.js +6 -0
  198. package/lib/types/publish-api/publishing-profile-item.js.map +1 -0
  199. package/lib/types/save-changes-context.d.ts +17 -0
  200. package/lib/types/save-changes-context.js +42 -0
  201. package/lib/types/save-changes-context.js.map +1 -0
  202. package/lib/types/sdk/generate.d.ts +18 -0
  203. package/lib/types/sdk/generate.js +25 -0
  204. package/lib/types/sdk/generate.js.map +1 -1
  205. package/lib/types/sdk-context.d.ts +5 -4
  206. package/lib/types/sdk-context.js +26 -13
  207. package/lib/types/sdk-context.js.map +1 -1
  208. package/lib/types/sdl/sdl.d.ts +0 -28
  209. package/lib/types/sdl/sdl.js +1 -128
  210. package/lib/types/sdl/sdl.js.map +1 -1
  211. package/lib/types/spec-context.js.map +1 -1
  212. package/lib/types/temp-context.js.map +1 -1
  213. package/lib/types/toc/toc-components.d.ts +37 -0
  214. package/lib/types/toc/toc-components.js +97 -0
  215. package/lib/types/toc/toc-components.js.map +1 -0
  216. package/lib/types/toc/toc.d.ts +11 -0
  217. package/lib/utils/string-utils.d.ts +0 -1
  218. package/lib/utils/string-utils.js +0 -42
  219. package/lib/utils/string-utils.js.map +1 -1
  220. package/package.json +28 -20
  221. package/lib/types/versioned-build-context.d.ts +0 -15
  222. package/lib/types/versioned-build-context.js +0 -28
  223. package/lib/types/versioned-build-context.js.map +0 -1
@@ -2,8 +2,11 @@ import { Command, Flags } from "@oclif/core";
2
2
  import { DirectoryPath } from "../../types/file/directoryPath.js";
3
3
  import { FlagsProvider } from "../../types/flags-provider.js";
4
4
  import { GenerateAction } from "../../actions/sdk/generate.js";
5
- import { Language } from "../../types/sdk/generate.js";
5
+ import { CodeGenerationVersion, Language, Stability } from "../../types/sdk/generate.js";
6
6
  import { format, intro, outro } from "../../prompts/format.js";
7
+ import { SdkChangesTrackedEvent } from "../../types/events/sdk-changes-tracked.js";
8
+ import { TelemetryService } from "../../infrastructure/services/telemetry-service.js";
9
+ import { SdkConflictsResolvedEvent } from "../../types/events/sdk-conflicts-resolved.js";
7
10
  class SdkGenerate extends Command {
8
11
  constructor() {
9
12
  super(...arguments);
@@ -12,38 +15,61 @@ class SdkGenerate extends Command {
12
15
  };
13
16
  }
14
17
  async run() {
15
- const { flags: { language, input, destination, force, zip: zipSdk, "auth-key": authKey, "api-version": apiVersion } } = await this.parse(SdkGenerate);
18
+ const { flags: { language, input, destination, force, zip: zipSdk, "auth-key": authKey, "skip-changes": skipChanges, "track-changes": trackChanges, "api-version": apiVersion, "codegen-version": codegenVersion, stability } } = await this.parse(SdkGenerate);
16
19
  const workingDirectory = DirectoryPath.createInput(input);
17
20
  const buildDirectory = input ? new DirectoryPath(input, "src") : workingDirectory.join("src");
18
- const sdkDirectory = destination ? new DirectoryPath(destination) : DirectoryPath.default.join("sdk");
21
+ const sdkDirectory = destination ? new DirectoryPath(destination) : workingDirectory.join("sdk");
19
22
  const commandMetadata = {
20
23
  commandName: SdkGenerate.id,
21
24
  shell: this.config.shell
22
25
  };
26
+ const telemetryService = new TelemetryService(this.getConfigDir());
23
27
  intro("Generate SDK");
24
28
  const action = new GenerateAction(this.getConfigDir(), commandMetadata, authKey);
25
- const result = await action.execute(buildDirectory, sdkDirectory, language, force, zipSdk, apiVersion);
29
+ const result = await action.execute(buildDirectory, sdkDirectory, language, force, zipSdk, skipChanges, trackChanges, codegenVersion, stability, apiVersion);
26
30
  outro(result);
31
+ await result.mapAll(async (res) => {
32
+ if (res === null || res === void 0 ? void 0 : res.sourceTreeTrackingInitiated) {
33
+ await telemetryService.trackEvent(new SdkChangesTrackedEvent(language), commandMetadata.shell);
34
+ }
35
+ if (res === null || res === void 0 ? void 0 : res.conflictsResolved) {
36
+ await telemetryService.trackEvent(new SdkConflictsResolvedEvent(language), commandMetadata.shell);
37
+ }
38
+ }, async () => { }, async () => { });
27
39
  }
28
40
  }
29
41
  SdkGenerate.summary = "Generate an SDK for your API";
30
42
  SdkGenerate.description = `Generate Software Development Kits (SDKs) from API specifications.
31
43
  Supports multiple programming languages including Java, C#, Python, JavaScript, and more.`;
32
44
  SdkGenerate.cmdTxt = format.cmd("apimatic", "sdk", "generate");
33
- SdkGenerate.flags = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ language: Flags.string({
45
+ SdkGenerate.flags = Object.assign(Object.assign(Object.assign({ language: Flags.string({
34
46
  char: "l",
35
47
  required: true,
36
48
  description: "Programming language for SDK generation",
37
49
  options: Object.values(Language).map((p) => p.valueOf()),
38
- }) }, FlagsProvider.input), { destination: Flags.string({
50
+ }), destination: Flags.string({
39
51
  char: "d",
40
- description: "Directory where the SDK will be generated"
52
+ description: "[default: <input>/sdk/<language> | <input>/sdk/<api-version>/<language>] path where the SDK will be generated"
53
+ }), "skip-changes": Flags.boolean({
54
+ default: false,
55
+ description: "Do not apply the saved changes to the generated SDK"
41
56
  }), "api-version": Flags.string({
42
57
  description: "Version of the API to use for SDK generation (if multiple versions exist)"
43
- }) }), FlagsProvider.force), { zip: Flags.boolean({
58
+ }), zip: Flags.boolean({
44
59
  default: false,
45
60
  description: "Download the generated SDK as a .zip archive"
46
- }) }), FlagsProvider.authKey);
61
+ }), "track-changes": Flags.boolean({
62
+ default: false,
63
+ description: "Enable change tracking for SDK generation (only required for initial setup)"
64
+ }), "codegen-version": Flags.string({
65
+ description: "Version of the code generator to use",
66
+ options: Object.values(CodeGenerationVersion).map((v) => v.valueOf()),
67
+ default: CodeGenerationVersion.V3
68
+ }), "stability": Flags.string({
69
+ description: "Stability level of the generated SDK",
70
+ options: Object.values(Stability).map((s) => s.valueOf()),
71
+ default: Stability.STABLE
72
+ }) }, FlagsProvider.input), FlagsProvider.force), FlagsProvider.authKey);
47
73
  SdkGenerate.examples = [
48
74
  `${SdkGenerate.cmdTxt} ${format.flag("language", "java")}`,
49
75
  `${SdkGenerate.cmdTxt} ${format.flag("language", "csharp")} ${format.flag("input", "./")}`,
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/sdk/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/sdk/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAEzF,MAAqB,WAAY,SAAQ,OAAO;IAAhD;;QAgHmB,iBAAY,GAAG,GAAG,EAAE;YACnC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IA1DC,KAAK,CAAC,GAAG;QACP,MAAM,EACJ,KAAK,EAAE,EAAE,QAAQ,EACf,KAAK,EACL,WAAW,EACX,KAAK,EACL,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,OAAO,EACnB,cAAc,EAAE,WAAW,EAC3B,eAAe,EAAE,YAAY,EAC7B,aAAa,EAAE,UAAU,EACzB,iBAAiB,EAAE,cAAc,EACjC,SAAS,EACV,EACF,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,MAAM,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9F,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjG,MAAM,eAAe,GAAoB;YACvC,WAAW,EAAE,WAAW,CAAC,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAEnE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,cAAc,EACd,YAAY,EACZ,QAAoB,EACpB,KAAK,EACL,MAAM,EACN,WAAW,EACX,YAAY,EACZ,cAAuC,EACvC,SAAsB,EACtB,UAAU,CACX,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,MAAM,MAAM,CAAC,MAAM,CACjB,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,2BAA2B,EAAE,CAAC;gBACrC,MAAM,gBAAgB,CAAC,UAAU,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;YACjG,CAAC;YACD,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,iBAAiB,EAAE,CAAC;gBAC3B,MAAM,gBAAgB,CAAC,UAAU,CAAC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;YACpG,CAAC;QACH,CAAC,EACD,KAAK,IAAI,EAAE,GAAE,CAAC,EACd,KAAK,IAAI,EAAE,GAAE,CAAC,CACf,CAAC;IACJ,CAAC;;AA7Ge,mBAAO,GAAG,8BAA8B,AAAjC,CAAkC;AAEzC,uBAAW,GAAG;0FAC0D,AAD7D,CAC8D;AAEzE,kBAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,AAA5C,CAA6C;AAE5D,iBAAK,+CACV,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KACzD,CAAC,EACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+GAA+G;KAC7H,CAAC,EACF,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;QAC5B,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,qDAAqD;KACnE,CAAC,EACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1B,WAAW,EAAE,2EAA2E;KACzF,CAAC,EACF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,8CAA8C;KAC5D,CAAC,EACF,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC;QAC7B,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,6EAA6E;KAC3F,CAAC,EACF,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC;QAC9B,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACrE,OAAO,EAAE,qBAAqB,CAAC,EAAE;KAClC,CAAC,EACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,EAAE,SAAS,CAAC,MAAM;KAC1B,CAAC,IACC,aAAa,CAAC,KAAK,GACnB,aAAa,CAAC,KAAK,GACnB,aAAa,CAAC,OAAO,CAtCd,CAuCV;AAEK,oBAAQ,GAAG;IAChB,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;IAC1D,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;IAC1F,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAC9G,KAAK,CACN,EAAE;CACJ,AANc,CAMb;eAvDiB,WAAW"}
@@ -0,0 +1,18 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SdkPublish extends Command {
3
+ static readonly summary = "Generate and publish an SDK to a package registry and/or source repository";
4
+ static readonly description = "Generate and publish an SDK using a publishing profile configured in the APIMatic App. Requires an input directory containing the API specification. Run without flags for a step-by-step interactive experience, or pass all required flags for CI/CD automation.";
5
+ static readonly cmdTxt: string;
6
+ static flags: {
7
+ 'publish-type': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ language: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ destination: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'profile-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ static examples: string[];
16
+ run(): Promise<void>;
17
+ private readonly getConfigDir;
18
+ }
@@ -0,0 +1,73 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { DirectoryPath } from '../../types/file/directoryPath.js';
3
+ import { FlagsProvider } from '../../types/flags-provider.js';
4
+ import { Language } from '../../types/sdk/generate.js';
5
+ import { format, intro, outro } from '../../prompts/format.js';
6
+ import { PublishType } from '../../types/publish-api/publishing-profile-item.js';
7
+ import { TelemetryService } from '../../infrastructure/services/telemetry-service.js';
8
+ import { SdkPublishValidationFailedEvent } from '../../types/events/sdk-publish-validation-failed.js';
9
+ import { SdkPublishInteractiveAction } from '../../actions/sdk/publish/interactive.js';
10
+ import { SdkPublishNonInteractiveAction } from '../../actions/sdk/publish/non-interactive.js';
11
+ class SdkPublish extends Command {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.getConfigDir = () => {
15
+ return new DirectoryPath(this.config.configDir);
16
+ };
17
+ }
18
+ async run() {
19
+ const { flags: { 'profile-id': profileId, version, destination, language, force, input, 'publish-type': publishType, 'dry-run': dryRun } } = await this.parse(SdkPublish);
20
+ const publishTypes = [...new Set(publishType)];
21
+ const interactive = this.argv.length === 0;
22
+ const commandMetadata = {
23
+ commandName: SdkPublish.id,
24
+ shell: this.config.shell
25
+ };
26
+ const workingDirectory = DirectoryPath.createInput(input);
27
+ const buildDirectory = input ? new DirectoryPath(input, 'src') : workingDirectory.join('src');
28
+ const sdkDirectory = destination ? new DirectoryPath(destination) : workingDirectory.join('sdk');
29
+ const configDir = this.getConfigDir();
30
+ const telemetryService = new TelemetryService(configDir);
31
+ const onPublishSdkError = interactive
32
+ ? (errorMessage) => telemetryService.trackEvent(new SdkPublishValidationFailedEvent(errorMessage, SdkPublish.id, { interactive: true }), commandMetadata.shell)
33
+ : (errorMessage) => telemetryService.trackEvent(new SdkPublishValidationFailedEvent(errorMessage, SdkPublish.id, Object.assign(Object.assign({ 'profile-id': profileId, version,
34
+ language }, (force && { force })), { 'publish-type': publishTypes })), commandMetadata.shell);
35
+ intro('Publish SDK');
36
+ const result = interactive
37
+ ? await new SdkPublishInteractiveAction(configDir, commandMetadata).execute(workingDirectory, onPublishSdkError)
38
+ : await new SdkPublishNonInteractiveAction(configDir, commandMetadata).execute(buildDirectory, sdkDirectory, language, publishTypes, force, dryRun, onPublishSdkError, profileId, version);
39
+ outro(result);
40
+ }
41
+ }
42
+ SdkPublish.summary = 'Generate and publish an SDK to a package registry and/or source repository';
43
+ SdkPublish.description = `Generate and publish an SDK using a publishing profile configured in the APIMatic App. Requires an input directory containing the API specification. Run without flags for a step-by-step interactive experience, or pass all required flags for CI/CD automation.`;
44
+ SdkPublish.cmdTxt = format.cmd('apimatic', 'sdk', 'publish');
45
+ SdkPublish.flags = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ 'profile-id': Flags.string({
46
+ char: 'p',
47
+ description: 'Id of the publishing profile to use.'
48
+ }), version: Flags.string({
49
+ char: 'v',
50
+ description: 'Semantic version of the SDK to publish (e.g. 1.0.0).'
51
+ }) }, FlagsProvider.destination('sdk', 'sdk')), { language: Flags.string({
52
+ char: 'l',
53
+ description: 'Language of the SDK to generate and publish.',
54
+ options: Object.values(Language)
55
+ .filter((l) => l !== Language.GO)
56
+ .map((l) => l.valueOf())
57
+ }) }), FlagsProvider.force), FlagsProvider.input), { 'publish-type': Flags.string({
58
+ description: "One or more publishing targets: 'package' for a package registry, 'sourcecode' for a git repository.",
59
+ options: [PublishType.PackagePublishing, PublishType.SourceCodePublishing],
60
+ multiple: true,
61
+ multipleNonGreedy: true
62
+ }), 'dry-run': Flags.boolean({
63
+ default: false,
64
+ description: 'Generate the SDK locally for review without publishing.'
65
+ }) });
66
+ SdkPublish.examples = [
67
+ `${SdkPublish.cmdTxt}`,
68
+ `${SdkPublish.cmdTxt} ${format.flag('profile-id', 'a1b2c3d4e5f6a1b2c3d4e5f6')} ${format.flag('language', 'typescript')} ${format.flag('version', '1.0.0')} ${format.flag('publish-type', PublishType.PackagePublishing)} ${format.flag('publish-type', PublishType.SourceCodePublishing)}`,
69
+ `${SdkPublish.cmdTxt} ${format.flag('profile-id', 'b2c3d4e5f6a1b2c3d4e5f6a1')} ${format.flag('language', 'java')} ${format.flag('version', '2.0.0')} ${format.flag('publish-type', PublishType.SourceCodePublishing)}`,
70
+ `${SdkPublish.cmdTxt} ${format.flag('profile-id', 'c3d4e5f6a1b2c3d4e5f6a1b2')} ${format.flag('language', 'python')} ${format.flag('version', '1.0.0')} ${format.flag('publish-type', PublishType.PackagePublishing)} ${format.flag('dry-run')}`
71
+ ];
72
+ export default SdkPublish;
73
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/sdk/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class SaveChanges extends Command {
3
+ static readonly summary = "Save customizations made to an auto-generated SDK";
4
+ static readonly description = "Requires an input directory with API specifications, a path to the updated SDK directory, and the programming language.";
5
+ static readonly cmdTxt: string;
6
+ static flags: {
7
+ language: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ sdk: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "api-version": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ static examples: string[];
12
+ run(): Promise<void>;
13
+ private readonly getConfigDir;
14
+ }
@@ -0,0 +1,51 @@
1
+ import { Command, Flags } from "@oclif/core";
2
+ import { format, intro, outro } from "../../prompts/format.js";
3
+ import { DirectoryPath } from "../../types/file/directoryPath.js";
4
+ import { SaveChangesAction } from "../../actions/sdk/save-changes.js";
5
+ import { Language } from "../../types/sdk/generate.js";
6
+ import { FlagsProvider } from "../../types/flags-provider.js";
7
+ import { TelemetryService } from "../../infrastructure/services/telemetry-service.js";
8
+ import { SdkChangesSavedEvent } from "../../types/events/sdk-changes-saved.js";
9
+ class SaveChanges extends Command {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.getConfigDir = () => {
13
+ return new DirectoryPath(this.config.configDir);
14
+ };
15
+ }
16
+ async run() {
17
+ const { flags: { sdk, language, input, "api-version": apiVersion } } = await this.parse(SaveChanges);
18
+ const workingDirectory = DirectoryPath.createInput(input);
19
+ const buildDirectory = workingDirectory.join("src");
20
+ const sdkDirectoryInput = sdk ? new DirectoryPath(sdk) : undefined;
21
+ const commandMetadata = {
22
+ commandName: SaveChanges.id,
23
+ shell: this.config.shell
24
+ };
25
+ const telemetryService = new TelemetryService(this.getConfigDir());
26
+ intro("Save Changes");
27
+ const action = new SaveChangesAction();
28
+ const result = await action.execute(workingDirectory, buildDirectory, sdkDirectoryInput, language, apiVersion);
29
+ outro(result);
30
+ await result.mapAll(async () => await telemetryService.trackEvent(new SdkChangesSavedEvent(language), commandMetadata.shell), async () => { }, async () => { });
31
+ }
32
+ }
33
+ SaveChanges.summary = "Save customizations made to an auto-generated SDK";
34
+ SaveChanges.description = "Requires an input directory with API specifications, a path to the updated SDK directory, and the programming language.";
35
+ SaveChanges.cmdTxt = format.cmd("apimatic", "sdk", "save-changes");
36
+ SaveChanges.flags = Object.assign({ language: Flags.string({
37
+ char: "l",
38
+ required: true,
39
+ description: "Programming language of the SDK",
40
+ options: Object.values(Language).map((p) => p.valueOf())
41
+ }), "sdk": Flags.string({
42
+ description: "[default: ./sdk/<language> | ./sdk/<api-version>/<language>] path to the folder containing the updated SDK."
43
+ }), "api-version": Flags.string({
44
+ description: "Version of the API where changes should be saved (if multiple versions exist)."
45
+ }) }, FlagsProvider.input);
46
+ SaveChanges.examples = [
47
+ `${SaveChanges.cmdTxt} ${format.flag("language", "csharp")}`,
48
+ `${SaveChanges.cmdTxt} ${format.flag("language", "java")} ${format.flag("sdk", "./sdk")}`
49
+ ];
50
+ export default SaveChanges;
51
+ //# sourceMappingURL=save-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-changes.js","sourceRoot":"","sources":["../../../src/commands/sdk/save-changes.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ const hook = async function (opts) {
37
37
  }
38
38
  if (response) {
39
39
  const confirmedSuggestion = suggestion;
40
- let argv = ((_a = opts.argv) === null || _a === void 0 ? void 0 : _a.length) ? opts.argv : opts.id.split(":").slice(confirmedSuggestion.split(":").length);
40
+ let argv = (_a = opts.argv) !== null && _a !== void 0 ? _a : [];
41
41
  if (confirmedSuggestion.startsWith("help:")) {
42
42
  argv = confirmedSuggestion.split(":").slice(1);
43
43
  suggestion = "help";
@@ -1 +1 @@
1
- {"version":3,"file":"not-found.js","sourceRoot":"","sources":["../../src/hooks/not-found.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"not-found.js","sourceRoot":"","sources":["../../src/hooks/not-found.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,EAAQ,cAAc,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,IAAI,GAAyB,KAAK,WAAW,IAAI;;IACrD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhG,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CACtG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAChC,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,UAAyB,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7B,UAAU,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvF,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE;YACxE,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,kBAAmB,CAAC,CAAC;IAC9D,CAAC;IAAC,WAAM,CAAC;QACP,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,mBAAmB,GAAG,UAAW,CAAC;QACxC,IAAI,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QAE3B,IAAI,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE;QACxE,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;AAEL,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -37,6 +37,9 @@ export class DebounceService {
37
37
  }
38
38
  finally {
39
39
  this.isProcessing = false;
40
+ if (this.latestHandler) {
41
+ this.scheduleExecution();
42
+ }
40
43
  }
41
44
  }, this.debounceMs);
42
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"debounce-service.js","sourceRoot":"","sources":["../../src/infrastructure/debounce-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAElD,MAAM,OAAO,eAAe;IAM1B,YAAY,aAAqB,GAAG;QAL5B,iBAAY,GAAG,KAAK,CAAC;QACrB,kBAAa,GAAiC,IAAI,CAAC;QACnD,kBAAa,GAA0B,IAAI,CAAC;QAIlD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAA4B;QACnD,kCAAkC;QAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAE7B,iFAAiF;QACjF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACzC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,MAAM,cAAc,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,yCAAyC;IAClC,KAAK;QACV,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"debounce-service.js","sourceRoot":"","sources":["../../src/infrastructure/debounce-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAElD,MAAM,OAAO,eAAe;IAM1B,YAAY,aAAqB,GAAG;QAL5B,iBAAY,GAAG,KAAK,CAAC;QACrB,kBAAa,GAAiC,IAAI,CAAC;QACnD,kBAAa,GAA0B,IAAI,CAAC;QAIlD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAA4B;QACnD,kCAAkC;QAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAE7B,iFAAiF;QACjF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACzC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,MAAM,cAAc,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,yCAAyC;IAClC,KAAK;QACV,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF"}
@@ -3,10 +3,12 @@ declare class EnvInfo {
3
3
  private static cachedUserAgent;
4
4
  private static cachedBaseUrl;
5
5
  private static cachedAuthBaseUrl;
6
+ private static cachedPublishingBaseUrl;
6
7
  getUserAgent(shell: string): string;
7
8
  getCLIVersion(): string;
8
9
  getBaseUrl(): string | undefined;
9
10
  getAuthBaseUrl(): string | undefined;
11
+ getPublishingBaseUrl(): string | undefined;
10
12
  }
11
13
  export declare const envInfo: EnvInfo;
12
14
  export {};
@@ -1,12 +1,12 @@
1
- import os from "os";
2
- import { fileURLToPath } from "url";
3
- import { dirname, join } from "path";
4
- import fs from "fs-extra";
1
+ import os from 'os';
2
+ import { fileURLToPath } from 'url';
3
+ import { dirname, join } from 'path';
4
+ import fs from 'fs-extra';
5
5
  class EnvInfo {
6
6
  getUserAgent(shell) {
7
7
  if (!EnvInfo.cachedUserAgent) {
8
8
  const osInfo = `${os.platform()} ${os.release()}`;
9
- const engine = "Node.js";
9
+ const engine = 'Node.js';
10
10
  const engineVersion = process.version;
11
11
  EnvInfo.cachedUserAgent = `APIMATIC CLI/${this.getCLIVersion()} - (OS: ${osInfo}, Engine: ${engine}/${engineVersion}, Shell: ${shell})`;
12
12
  }
@@ -19,15 +19,15 @@ class EnvInfo {
19
19
  try {
20
20
  const __filename = fileURLToPath(import.meta.url);
21
21
  const __dirname = dirname(__filename);
22
- const pkgPath = join(__dirname, "../../package.json");
23
- const pkgJson = fs.readFileSync(pkgPath, "utf-8");
22
+ const pkgPath = join(__dirname, '../../package.json');
23
+ const pkgJson = fs.readFileSync(pkgPath, 'utf-8');
24
24
  const pkg = JSON.parse(pkgJson);
25
- const version = pkg.version || "unknown";
25
+ const version = pkg.version || 'unknown';
26
26
  EnvInfo.cachedCliVersion = version;
27
27
  return version;
28
28
  }
29
29
  catch (_a) {
30
- return "unknown";
30
+ return 'unknown';
31
31
  }
32
32
  }
33
33
  getBaseUrl() {
@@ -36,7 +36,7 @@ class EnvInfo {
36
36
  }
37
37
  const envBaseUrls = process.env.APIMATIC_BASE_URL;
38
38
  if (envBaseUrls) {
39
- EnvInfo.cachedBaseUrl = envBaseUrls.split(";")[0];
39
+ EnvInfo.cachedBaseUrl = envBaseUrls.split(';')[0];
40
40
  }
41
41
  return EnvInfo.cachedBaseUrl;
42
42
  }
@@ -46,11 +46,22 @@ class EnvInfo {
46
46
  }
47
47
  const envBaseUrls = process.env.APIMATIC_BASE_URL;
48
48
  if (envBaseUrls) {
49
- const baseUrls = envBaseUrls.split(";");
50
- EnvInfo.cachedAuthBaseUrl = baseUrls.length === 2 ? baseUrls[1] : undefined;
49
+ const baseUrls = envBaseUrls.split(';');
50
+ EnvInfo.cachedAuthBaseUrl = baseUrls.length === 3 ? baseUrls[1] : undefined;
51
51
  }
52
52
  return EnvInfo.cachedAuthBaseUrl;
53
53
  }
54
+ getPublishingBaseUrl() {
55
+ if (EnvInfo.cachedPublishingBaseUrl) {
56
+ return EnvInfo.cachedPublishingBaseUrl;
57
+ }
58
+ const envBaseUrls = process.env.APIMATIC_BASE_URL;
59
+ if (envBaseUrls) {
60
+ const baseUrls = envBaseUrls.split(';');
61
+ EnvInfo.cachedPublishingBaseUrl = baseUrls.length === 3 ? baseUrls[2] : undefined;
62
+ }
63
+ return EnvInfo.cachedPublishingBaseUrl;
64
+ }
54
65
  }
55
66
  EnvInfo.cachedCliVersion = null;
56
67
  EnvInfo.cachedUserAgent = null;
@@ -1 +1 @@
1
- {"version":3,"file":"env-info.js","sourceRoot":"","sources":["../../src/infrastructure/env-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,OAAO;IAMJ,YAAY,CAAC,KAAa;QAC/B,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;YACtC,OAAO,CAAC,eAAe,GAAG,gBAAgB,IAAI,CAAC,aAAa,EAAE,WAAW,MAAM,aAAa,MAAM,IAAI,aAAa,YAAY,KAAK,GAAG,CAAC;QAC1I,CAAC;QACD,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAEM,aAAa;QAClB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;YACzC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,UAAU;QACf,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAEM,cAAc;QACnB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,iBAAiB,CAAC;QACnC,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,OAAO,OAAO,CAAC,iBAAiB,CAAC;IACnC,CAAC;;AAvDc,wBAAgB,GAAkB,IAAI,CAAC;AACvC,uBAAe,GAAkB,IAAI,CAAC;AAwDvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"env-info.js","sourceRoot":"","sources":["../../src/infrastructure/env-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,OAAO;IAOJ,YAAY,CAAC,KAAa;QAC/B,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;YACtC,OAAO,CAAC,eAAe,GAAG,gBAAgB,IAAI,CAAC,aAAa,EAAE,WAAW,MAAM,aAAa,MAAM,IAAI,aAAa,YAAY,KAAK,GAAG,CAAC;QAC1I,CAAC;QACD,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAEM,aAAa;QAClB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;YACzC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,UAAU;QACf,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAEM,cAAc;QACnB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,iBAAiB,CAAC;QACnC,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,OAAO,OAAO,CAAC,iBAAiB,CAAC;IACnC,CAAC;IAEM,oBAAoB;QACzB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,uBAAuB,CAAC;QACzC,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,uBAAuB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,CAAC;QACD,OAAO,OAAO,CAAC,uBAAuB,CAAC;IACzC,CAAC;;AApEc,wBAAgB,GAAkB,IAAI,CAAC;AACvC,uBAAe,GAAkB,IAAI,CAAC;AAqEvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
@@ -2,17 +2,23 @@ import fs from "fs";
2
2
  import { FilePath } from "../types/file/filePath.js";
3
3
  import { DirectoryPath } from "../types/file/directoryPath.js";
4
4
  import { Directory } from "../types/file/directory.js";
5
+ import { FileName } from "../types/file/fileName.js";
5
6
  export declare class FileService {
6
7
  fileExists(file: FilePath): Promise<boolean>;
8
+ fileExistsSync(file: FilePath): boolean;
7
9
  directoryExists(dir: DirectoryPath): Promise<boolean>;
10
+ directoryExistsSync(dir: DirectoryPath): boolean;
8
11
  directoryEmpty(dir: DirectoryPath): Promise<boolean>;
9
12
  cleanDirectory(dir: DirectoryPath): Promise<void>;
13
+ cleanDirectoryExcluding(dir: DirectoryPath, excludeNames: FileName[]): Promise<void>;
10
14
  createDirectoryIfNotExists(dir: DirectoryPath): Promise<void>;
11
15
  getDirectory(directoryPath: DirectoryPath): Promise<Directory>;
12
16
  getSubDirectoriesPaths(dir: DirectoryPath): Promise<DirectoryPath[]>;
13
17
  copyDirectoryContents(source: DirectoryPath, destination: DirectoryPath): Promise<void>;
18
+ copyDirectoryExcluding(source: DirectoryPath, destination: DirectoryPath, excludeNames: FileName[]): Promise<void>;
14
19
  deleteFile(filePath: FilePath): Promise<void>;
15
20
  deleteDirectory(dirPath: DirectoryPath): Promise<void>;
21
+ pollDeleteDirectory(dirPath: DirectoryPath, onDeleteFailurePersists: () => void): Promise<void>;
16
22
  getRelativePath(filePath: FilePath, basePath: DirectoryPath): string;
17
23
  getStream(filePath: FilePath): Promise<fs.ReadStream>;
18
24
  getContents(filePath: FilePath): Promise<string>;
@@ -21,5 +27,8 @@ export declare class FileService {
21
27
  writeContents(filePath: FilePath, contents: string): Promise<void>;
22
28
  copy(source: FilePath, destination: FilePath): Promise<void>;
23
29
  copyToDir(source: FilePath, destination: DirectoryPath): Promise<void>;
30
+ readFile(filePath: FilePath): Promise<string>;
24
31
  isZipFile(filePath: FilePath): Promise<boolean>;
32
+ hasContent(file: FilePath, content: string): Promise<boolean>;
33
+ getAvailableDirectoryPath(currentPath: DirectoryPath): Promise<DirectoryPath>;
25
34
  }
@@ -16,6 +16,15 @@ export class FileService {
16
16
  return false;
17
17
  }
18
18
  }
19
+ fileExistsSync(file) {
20
+ try {
21
+ const stat = fsExtra.statSync(file.toString());
22
+ return stat.isFile();
23
+ }
24
+ catch (_a) {
25
+ return false;
26
+ }
27
+ }
19
28
  async directoryExists(dir) {
20
29
  try {
21
30
  const stat = await fsExtra.stat(dir.toString());
@@ -25,6 +34,15 @@ export class FileService {
25
34
  return false;
26
35
  }
27
36
  }
37
+ directoryExistsSync(dir) {
38
+ try {
39
+ const stat = fsExtra.statSync(dir.toString());
40
+ return stat.isDirectory();
41
+ }
42
+ catch (_a) {
43
+ return false;
44
+ }
45
+ }
28
46
  async directoryEmpty(dir) {
29
47
  try {
30
48
  const files = await fsExtra.readdir(dir.toString());
@@ -38,6 +56,15 @@ export class FileService {
38
56
  await fsExtra.ensureDir(dir.toString());
39
57
  await fsExtra.emptyDir(dir.toString()); // removes everything inside, keeps the dir
40
58
  }
59
+ async cleanDirectoryExcluding(dir, excludeNames) {
60
+ await fsExtra.ensureDir(dir.toString());
61
+ const entries = await fsExtra.readdir(dir.toString());
62
+ await Promise.all(entries
63
+ .filter((entry) => !excludeNames.find((exclude) => exclude.toString() === entry))
64
+ .map(async (entry) => {
65
+ return fsExtra.remove(dir.join(entry).toString());
66
+ }));
67
+ }
41
68
  async createDirectoryIfNotExists(dir) {
42
69
  await fsExtra.ensureDir(dir.toString());
43
70
  }
@@ -46,16 +73,22 @@ export class FileService {
46
73
  const results = await Promise.all(entries.map(async (entry) => {
47
74
  const fullPath = path.join(directoryPath.toString(), entry);
48
75
  const stat = await fsExtra.stat(fullPath);
49
- return stat.isDirectory() ? await this.getDirectory(new DirectoryPath(fullPath)) : new FileName(entry);
76
+ return stat.isDirectory() ? await this.getDirectory(new DirectoryPath(fullPath)) : { fileName: new FileName(entry) };
50
77
  }));
51
78
  return new Directory(directoryPath, results);
52
79
  }
53
80
  async getSubDirectoriesPaths(dir) {
54
81
  try {
55
- const entries = await fsExtra.readdir(dir.toString(), { withFileTypes: true });
56
- return entries
57
- .filter((entry) => entry.isDirectory())
58
- .map((entry) => dir.join(entry.name));
82
+ const entries = await fsExtra.readdir(dir.toString());
83
+ const directories = [];
84
+ for (const entry of entries) {
85
+ const fullPath = dir.join(entry).toString();
86
+ const stat = await fsExtra.stat(fullPath);
87
+ if (stat.isDirectory()) {
88
+ directories.push(new DirectoryPath(fullPath));
89
+ }
90
+ }
91
+ return directories;
59
92
  }
60
93
  catch (_a) {
61
94
  return [];
@@ -69,6 +102,21 @@ export class FileService {
69
102
  await fsExtra.copy(srcEntry, destEntry);
70
103
  }));
71
104
  }
105
+ async copyDirectoryExcluding(source, destination, excludeNames) {
106
+ await this.createDirectoryIfNotExists(destination);
107
+ const entries = await fsExtra.readdir(source.toString());
108
+ await Promise.all(entries
109
+ .filter((entry) => !excludeNames.find((exclude) => exclude.toString() === entry))
110
+ .map(async (entry) => {
111
+ const sourcePath = path.join(source.toString(), entry);
112
+ const destPath = path.join(destination.toString(), entry);
113
+ const stat = await fsExtra.stat(sourcePath);
114
+ if (stat.isDirectory()) {
115
+ return this.copyDirectoryExcluding(new DirectoryPath(sourcePath), new DirectoryPath(destPath), excludeNames);
116
+ }
117
+ return fsExtra.copyFile(sourcePath, destPath);
118
+ }));
119
+ }
72
120
  async deleteFile(filePath) {
73
121
  const exists = await this.fileExists(filePath);
74
122
  if (exists) {
@@ -81,6 +129,19 @@ export class FileService {
81
129
  await fsExtra.remove(dirPath.toString());
82
130
  }
83
131
  }
132
+ async pollDeleteDirectory(dirPath, onDeleteFailurePersists) {
133
+ const timeoutMs = 5 * 60 * 1000;
134
+ const deadline = Date.now() + timeoutMs;
135
+ const deleteFailurePersistsMaxDelay = Date.now() + 5 * 1000;
136
+ let actionPerformed = false;
137
+ while (Date.now() < deadline && await this.deleteDirectory(dirPath).then(() => false).catch(() => true)) {
138
+ if (!actionPerformed && Date.now() > deleteFailurePersistsMaxDelay) {
139
+ onDeleteFailurePersists();
140
+ actionPerformed = true;
141
+ }
142
+ await new Promise((resolve) => setTimeout(resolve, 500));
143
+ }
144
+ }
84
145
  getRelativePath(filePath, basePath) {
85
146
  const filePathStr = filePath.toString();
86
147
  const basePathStr = basePath.toString();
@@ -113,6 +174,9 @@ export class FileService {
113
174
  async copyToDir(source, destination) {
114
175
  await fsExtra.copyFile(source.toString(), source.replaceDirectory(destination).toString());
115
176
  }
177
+ async readFile(filePath) {
178
+ return await fsExtra.readFile(filePath.toString(), "utf-8");
179
+ }
116
180
  async isZipFile(filePath) {
117
181
  try {
118
182
  const buffer = await fsExtra.readFile(filePath.toString());
@@ -126,6 +190,31 @@ export class FileService {
126
190
  return false;
127
191
  }
128
192
  }
193
+ async hasContent(file, content) {
194
+ return (await this.fileExists(file)) && (await this.readFile(file)).includes(content);
195
+ }
196
+ async getAvailableDirectoryPath(currentPath) {
197
+ if (!(await this.directoryExists(currentPath)))
198
+ return currentPath;
199
+ const dir = path.dirname(currentPath.toString());
200
+ let baseName = path.basename(currentPath.toString());
201
+ // Strip existing " (n)" suffix using string methods
202
+ if (baseName.endsWith(')')) {
203
+ const open = baseName.lastIndexOf('(');
204
+ if (open !== -1 && baseName[open - 1] === ' ') {
205
+ const inner = baseName.slice(open + 1, -1);
206
+ if (inner.length > 0 && !isNaN(Number(inner))) {
207
+ baseName = baseName.slice(0, open - 1);
208
+ }
209
+ }
210
+ }
211
+ let counter = 1;
212
+ let newPath;
213
+ do {
214
+ newPath = path.join(dir, `${baseName} (${counter++})`);
215
+ } while (await this.directoryExists(new DirectoryPath(newPath)));
216
+ return new DirectoryPath(newPath);
217
+ }
129
218
  }
130
219
  const streamPipeline = promisify(pipeline);
131
220
  //# sourceMappingURL=file-service.js.map