@apimatic/cli 1.1.0-beta.10 → 1.1.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -6
- package/lib/actions/portal/generate.js +7 -1
- package/lib/actions/portal/generate.js.map +1 -1
- package/lib/actions/publishing/profile/list.d.ts +11 -0
- package/lib/actions/publishing/profile/list.js +29 -0
- package/lib/actions/publishing/profile/list.js.map +1 -0
- package/lib/actions/sdk/generate.d.ts +5 -1
- package/lib/actions/sdk/generate.js +55 -40
- package/lib/actions/sdk/generate.js.map +1 -1
- package/lib/actions/sdk/merge-source-tree.d.ts +12 -0
- package/lib/actions/sdk/merge-source-tree.js +78 -0
- package/lib/actions/sdk/merge-source-tree.js.map +1 -0
- package/lib/actions/sdk/publish/interactive.d.ts +13 -0
- package/lib/actions/sdk/publish/interactive.js +105 -0
- package/lib/actions/sdk/publish/interactive.js.map +1 -0
- package/lib/actions/sdk/publish/non-interactive.d.ts +14 -0
- package/lib/actions/sdk/publish/non-interactive.js +101 -0
- package/lib/actions/sdk/publish/non-interactive.js.map +1 -0
- package/lib/actions/sdk/publish.d.ts +18 -0
- package/lib/actions/sdk/publish.js +56 -0
- package/lib/actions/sdk/publish.js.map +1 -0
- package/lib/actions/sdk/quickstart.js +1 -1
- package/lib/actions/sdk/quickstart.js.map +1 -1
- package/lib/actions/sdk/save-changes.d.ts +8 -0
- package/lib/actions/sdk/save-changes.js +93 -0
- package/lib/actions/sdk/save-changes.js.map +1 -0
- package/lib/commands/portal/recipe/new.js +2 -2
- package/lib/commands/portal/recipe/new.js.map +1 -1
- package/lib/commands/portal/toc/new.js +2 -2
- package/lib/commands/portal/toc/new.js.map +1 -1
- package/lib/commands/publishing/profile/list.d.ts +9 -0
- package/lib/commands/publishing/profile/list.js +28 -0
- package/lib/commands/publishing/profile/list.js.map +1 -0
- package/lib/commands/quickstart.js +1 -1
- package/lib/commands/quickstart.js.map +1 -1
- package/lib/commands/sdk/generate.d.ts +4 -2
- package/lib/commands/sdk/generate.js +26 -8
- package/lib/commands/sdk/generate.js.map +1 -1
- package/lib/commands/sdk/publish.d.ts +18 -0
- package/lib/commands/sdk/publish.js +73 -0
- package/lib/commands/sdk/publish.js.map +1 -0
- package/lib/commands/sdk/save-changes.d.ts +14 -0
- package/lib/commands/sdk/save-changes.js +51 -0
- package/lib/commands/sdk/save-changes.js.map +1 -0
- package/lib/hooks/not-found.js +1 -1
- package/lib/hooks/not-found.js.map +1 -1
- package/lib/infrastructure/env-info.d.ts +2 -0
- package/lib/infrastructure/env-info.js +22 -11
- package/lib/infrastructure/env-info.js.map +1 -1
- package/lib/infrastructure/file-service.d.ts +9 -0
- package/lib/infrastructure/file-service.js +94 -5
- package/lib/infrastructure/file-service.js.map +1 -1
- package/lib/infrastructure/git-service.d.ts +14 -0
- package/lib/infrastructure/git-service.js +90 -0
- package/lib/infrastructure/git-service.js.map +1 -0
- package/lib/infrastructure/launcher-service.d.ts +5 -0
- package/lib/infrastructure/launcher-service.js +35 -2
- package/lib/infrastructure/launcher-service.js.map +1 -1
- package/lib/infrastructure/os-extensions.d.ts +2 -0
- package/lib/infrastructure/os-extensions.js +6 -0
- package/lib/infrastructure/os-extensions.js.map +1 -0
- package/lib/infrastructure/service-error.d.ts +14 -2
- package/lib/infrastructure/service-error.js +26 -9
- package/lib/infrastructure/service-error.js.map +1 -1
- package/lib/infrastructure/services/portal-service.d.ts +6 -1
- package/lib/infrastructure/services/portal-service.js +37 -18
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/services/publishing-api-service.d.ts +19 -0
- package/lib/infrastructure/services/publishing-api-service.js +111 -0
- package/lib/infrastructure/services/publishing-api-service.js.map +1 -0
- package/lib/infrastructure/zip-service.d.ts +2 -2
- package/lib/infrastructure/zip-service.js +29 -11
- package/lib/infrastructure/zip-service.js.map +1 -1
- package/lib/prompts/format.d.ts +0 -2
- package/lib/prompts/format.js +0 -31
- package/lib/prompts/format.js.map +1 -1
- package/lib/prompts/portal/generate.d.ts +1 -1
- package/lib/prompts/portal/generate.js +9 -3
- package/lib/prompts/portal/generate.js.map +1 -1
- package/lib/prompts/prompt.d.ts +6 -0
- package/lib/prompts/prompt.js +45 -0
- package/lib/prompts/prompt.js.map +1 -1
- package/lib/prompts/publishing/profile/list.d.ts +9 -0
- package/lib/prompts/publishing/profile/list.js +27 -0
- package/lib/prompts/publishing/profile/list.js.map +1 -0
- package/lib/prompts/sdk/generate.d.ts +5 -3
- package/lib/prompts/sdk/generate.js +20 -14
- package/lib/prompts/sdk/generate.js.map +1 -1
- package/lib/prompts/sdk/merge-source-tree.d.ts +22 -0
- package/lib/prompts/sdk/merge-source-tree.js +90 -0
- package/lib/prompts/sdk/merge-source-tree.js.map +1 -0
- package/lib/prompts/sdk/publish/interactive.d.ts +30 -0
- package/lib/prompts/sdk/publish/interactive.js +139 -0
- package/lib/prompts/sdk/publish/interactive.js.map +1 -0
- package/lib/prompts/sdk/publish/non-interactive.d.ts +27 -0
- package/lib/prompts/sdk/publish/non-interactive.js +97 -0
- package/lib/prompts/sdk/publish/non-interactive.js.map +1 -0
- package/lib/prompts/sdk/publish.d.ts +12 -0
- package/lib/prompts/sdk/publish.js +16 -0
- package/lib/prompts/sdk/publish.js.map +1 -0
- package/lib/prompts/sdk/save-changes.d.ts +21 -0
- package/lib/prompts/sdk/save-changes.js +84 -0
- package/lib/prompts/sdk/save-changes.js.map +1 -0
- package/lib/types/build/build.d.ts +2 -0
- package/lib/types/build/build.js.map +1 -1
- package/lib/types/build-context.d.ts +11 -0
- package/lib/types/build-context.js +81 -1
- package/lib/types/build-context.js.map +1 -1
- package/lib/types/events/sdk-changes-saved.d.ts +8 -0
- package/lib/types/events/sdk-changes-saved.js +11 -0
- package/lib/types/events/sdk-changes-saved.js.map +1 -0
- package/lib/types/events/sdk-changes-tracked.d.ts +8 -0
- package/lib/types/events/sdk-changes-tracked.js +11 -0
- package/lib/types/events/sdk-changes-tracked.js.map +1 -0
- package/lib/types/events/sdk-conflicts-resolved.d.ts +8 -0
- package/lib/types/events/sdk-conflicts-resolved.js +11 -0
- package/lib/types/events/sdk-conflicts-resolved.js.map +1 -0
- package/lib/types/events/sdk-publish-validation-failed.d.ts +5 -0
- package/lib/types/events/sdk-publish-validation-failed.js +8 -0
- package/lib/types/events/sdk-publish-validation-failed.js.map +1 -0
- package/lib/types/file/directory.d.ts +10 -1
- package/lib/types/file/directory.js +63 -5
- package/lib/types/file/directory.js.map +1 -1
- package/lib/types/file/directoryPath.js.map +1 -1
- package/lib/types/merge-source-tree-context.d.ts +28 -0
- package/lib/types/merge-source-tree-context.js +63 -0
- package/lib/types/merge-source-tree-context.js.map +1 -0
- package/lib/types/package-settings-context.d.ts +10 -0
- package/lib/types/package-settings-context.js +20 -0
- package/lib/types/package-settings-context.js.map +1 -0
- package/lib/types/publish/package-settings-configuration.d.ts +70 -0
- package/lib/types/publish/package-settings-configuration.js +46 -0
- package/lib/types/publish/package-settings-configuration.js.map +1 -0
- package/lib/types/publish/profile-id.d.ts +10 -0
- package/lib/types/publish/profile-id.js +22 -0
- package/lib/types/publish/profile-id.js.map +1 -0
- package/lib/types/publish/publishing-profile.d.ts +18 -0
- package/lib/types/publish/publishing-profile.js +105 -0
- package/lib/types/publish/publishing-profile.js.map +1 -0
- package/lib/types/publish/publishing-profiles.d.ts +12 -0
- package/lib/types/publish/publishing-profiles.js +36 -0
- package/lib/types/publish/publishing-profiles.js.map +1 -0
- package/lib/types/publish/version.d.ts +7 -0
- package/lib/types/publish/version.js +17 -0
- package/lib/types/publish/version.js.map +1 -0
- package/lib/types/publish-api/publish-log.d.ts +20 -0
- package/lib/types/publish-api/publish-log.js +2 -0
- package/lib/types/publish-api/publish-log.js.map +1 -0
- package/lib/types/publish-api/publishing-info.d.ts +4 -0
- package/lib/types/publish-api/publishing-info.js +2 -0
- package/lib/types/publish-api/publishing-info.js.map +1 -0
- package/lib/types/publish-api/publishing-profile-item.d.ts +183 -0
- package/lib/types/publish-api/publishing-profile-item.js +6 -0
- package/lib/types/publish-api/publishing-profile-item.js.map +1 -0
- package/lib/types/save-changes-context.d.ts +17 -0
- package/lib/types/save-changes-context.js +42 -0
- package/lib/types/save-changes-context.js.map +1 -0
- package/lib/types/sdk-context.d.ts +5 -4
- package/lib/types/sdk-context.js +26 -13
- package/lib/types/sdk-context.js.map +1 -1
- package/lib/types/spec-context.js.map +1 -1
- package/lib/types/temp-context.js.map +1 -1
- package/package.json +18 -9
- package/lib/types/versioned-build-context.d.ts +0 -15
- package/lib/types/versioned-build-context.js +0 -28
- package/lib/types/versioned-build-context.js.map +0 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import git from "isomorphic-git";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import { FileName } from "../types/file/fileName.js";
|
|
4
|
+
import { FilePath } from "../types/file/filePath.js";
|
|
5
|
+
import { Directory } from "../types/file/directory.js";
|
|
6
|
+
const GIT_AUTHOR = { name: "APIMatic-bot", email: "developer@apimatic.io" };
|
|
7
|
+
const CUSTOM_BRANCH = "custom-code";
|
|
8
|
+
const MAIN_BRANCH = "main";
|
|
9
|
+
export class GitService {
|
|
10
|
+
async checkoutCustomBranch(dirPath) {
|
|
11
|
+
const dir = dirPath.toString();
|
|
12
|
+
if (!await this.hasCustomBranch(dirPath)) {
|
|
13
|
+
await git.branch({ fs, dir, ref: CUSTOM_BRANCH });
|
|
14
|
+
}
|
|
15
|
+
await git.checkout({ fs, dir, ref: CUSTOM_BRANCH });
|
|
16
|
+
}
|
|
17
|
+
async hasCustomBranch(dirPath) {
|
|
18
|
+
const dir = dirPath.toString();
|
|
19
|
+
const branches = await git.listBranches({ fs, dir });
|
|
20
|
+
return branches.includes(CUSTOM_BRANCH);
|
|
21
|
+
}
|
|
22
|
+
getMergeFiles(dirPath) {
|
|
23
|
+
const gitDir = dirPath.join(".git");
|
|
24
|
+
const mergeFiles = ["MERGE_HEAD", "MERGE_MODE", "MERGE_MSG"];
|
|
25
|
+
return mergeFiles.map((filename) => new FilePath(gitDir, new FileName(filename)));
|
|
26
|
+
}
|
|
27
|
+
async forceCheckoutMainBranch(dirPath) {
|
|
28
|
+
await git.checkout({ fs, dir: dirPath.toString(), ref: MAIN_BRANCH, force: true });
|
|
29
|
+
}
|
|
30
|
+
async getDirectoryWithUpdatedFiles(dirPath) {
|
|
31
|
+
const statusMatrix = await git.statusMatrix({ fs, dir: dirPath.toString() });
|
|
32
|
+
const relativeUncommitedFiles = statusMatrix
|
|
33
|
+
// include updated and resolved conflict files
|
|
34
|
+
.filter(([, headStatus, workdirStatus, stageStatus]) => headStatus !== workdirStatus || stageStatus === 3)
|
|
35
|
+
.map(([relativePath, workdirStatus, headStatus]) => {
|
|
36
|
+
if (headStatus === 0) {
|
|
37
|
+
return { fileName: new FileName(relativePath), description: "# Deleted" };
|
|
38
|
+
}
|
|
39
|
+
if (workdirStatus === 0) {
|
|
40
|
+
return { fileName: new FileName(relativePath), description: "# Added" };
|
|
41
|
+
}
|
|
42
|
+
return { fileName: new FileName(relativePath), description: "# Modified" };
|
|
43
|
+
});
|
|
44
|
+
return Directory.createFromRelativePaths(dirPath, relativeUncommitedFiles);
|
|
45
|
+
}
|
|
46
|
+
async stageAll(dir) {
|
|
47
|
+
const statusMatrix = await git.statusMatrix({ fs, dir: dir.toString() });
|
|
48
|
+
await Promise.all(statusMatrix
|
|
49
|
+
// include updated and resolved conflict files
|
|
50
|
+
.filter(([, headStatus, workdirStatus, stageStatus]) => headStatus !== workdirStatus || stageStatus === 3)
|
|
51
|
+
.map(([relativePath, , workdirStatus]) => {
|
|
52
|
+
if (workdirStatus === 0) {
|
|
53
|
+
return git.remove({ fs, dir: dir.toString(), filepath: relativePath });
|
|
54
|
+
}
|
|
55
|
+
return git.add({ fs, dir: dir.toString(), filepath: relativePath });
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
async getDirectoryWithUnmergedFiles(dir) {
|
|
59
|
+
try {
|
|
60
|
+
await git.merge({ fs, dir: dir.toString(), ours: CUSTOM_BRANCH, theirs: MAIN_BRANCH, author: GIT_AUTHOR });
|
|
61
|
+
return new Directory(dir, []);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof git.Errors.UnmergedPathsError) {
|
|
65
|
+
return Directory.createFromRelativePaths(dir, error.data.filepaths.map((filePath) => ({ fileName: new FileName(filePath), description: "# Conflicted file" })));
|
|
66
|
+
}
|
|
67
|
+
if (error instanceof git.Errors.MergeConflictError) {
|
|
68
|
+
return new Directory(dir, []);
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async commitResolvedConflicts(dir) {
|
|
74
|
+
await this.stageAll(dir);
|
|
75
|
+
const headOid = await git.resolveRef({ fs, dir: dir.toString(), ref: "HEAD" });
|
|
76
|
+
const mainOid = await git.resolveRef({ fs, dir: dir.toString(), ref: MAIN_BRANCH });
|
|
77
|
+
await git.commit({
|
|
78
|
+
fs,
|
|
79
|
+
dir: dir.toString(),
|
|
80
|
+
message: `Merge branch '${MAIN_BRANCH}' into ${CUSTOM_BRANCH}`,
|
|
81
|
+
author: GIT_AUTHOR,
|
|
82
|
+
parent: [headOid, mainOid],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async commitReviewedChanges(dir) {
|
|
86
|
+
await this.stageAll(dir);
|
|
87
|
+
await git.commit({ fs, dir: dir.toString(), message: "feat: add customizations to generated SDK", author: GIT_AUTHOR });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=git-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-service.js","sourceRoot":"","sources":["../../src/infrastructure/git-service.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB,EAAW,CAAC;AACrF,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,MAAM,OAAO,UAAU;IACd,KAAK,CAAC,oBAAoB,CAAC,OAAsB;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE/B,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAC,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAsB;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAEM,aAAa,CAAC,OAAsB;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,OAAsB;QACzD,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,OAAsB;QAC9D,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE7E,MAAM,uBAAuB,GAAG,YAAY;YAC1C,8CAA8C;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,aAAa,IAAI,WAAW,KAAK,CAAC,CAAC;aACzG,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE;YACjD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;YAC5E,CAAC;YACD,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YAC1E,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEL,OAAO,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,GAAkB;QACvC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzE,MAAM,OAAO,CAAC,GAAG,CACf,YAAY;YACV,8CAA8C;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,aAAa,IAAI,WAAW,KAAK,CAAC,CAAC;aACzG,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,AAAD,EAAG,aAAa,CAAC,EAAE,EAAE;YACvC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,GAAkB;QAC3D,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3G,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACnD,OAAO,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;YAClK,CAAC;YACD,IAAI,KAAK,YAAY,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACnD,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,GAAkB;QACrD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACpF,MAAM,GAAG,CAAC,MAAM,CAAC;YACf,EAAE;YACF,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;YACnB,OAAO,EAAE,iBAAiB,WAAW,UAAU,aAAa,EAAE;YAC9D,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,GAAkB;QACnD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,2CAA2C,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1H,CAAC;CACF"}
|
|
@@ -3,7 +3,12 @@ import { UrlPath } from "../types/file/urlPath.js";
|
|
|
3
3
|
import { DirectoryPath } from "../types/file/directoryPath.js";
|
|
4
4
|
export declare class LauncherService {
|
|
5
5
|
openFolderInIde(directoryPath: DirectoryPath, fileToOpen: FilePath): Promise<boolean>;
|
|
6
|
+
isIdeAvailable(): Promise<boolean>;
|
|
7
|
+
openFolderInIdeWithWait(directoryPath: DirectoryPath, filesToOpen: FilePath[]): Promise<boolean>;
|
|
6
8
|
openInEditor(filePath: FilePath): Promise<void>;
|
|
7
9
|
openFile(filePath: FilePath): Promise<void>;
|
|
10
|
+
openDirectory(directoryPath: DirectoryPath): Promise<void>;
|
|
11
|
+
openDirectoryInEditorOrFileExplorer(directoryPath: DirectoryPath, fileToOpen: FilePath): Promise<void>;
|
|
12
|
+
private openPath;
|
|
8
13
|
openUrlInBrowser(url: UrlPath): Promise<import("child_process").ChildProcess> | undefined;
|
|
9
14
|
}
|
|
@@ -8,7 +8,28 @@ export class LauncherService {
|
|
|
8
8
|
if (isInCi)
|
|
9
9
|
return false;
|
|
10
10
|
try {
|
|
11
|
-
|
|
11
|
+
const args = [directoryPath.toString(), fileToOpen.toString()];
|
|
12
|
+
await execa("code", args);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch (_a) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async isIdeAvailable() {
|
|
20
|
+
try {
|
|
21
|
+
const command = process.platform === "win32" ? "where" : "which";
|
|
22
|
+
await execa(command, ["code"]);
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async openFolderInIdeWithWait(directoryPath, filesToOpen) {
|
|
30
|
+
try {
|
|
31
|
+
const args = [directoryPath.toString(), ...filesToOpen.map(f => f.toString())];
|
|
32
|
+
await execa("code", ["--new-window", "--wait", ...args]);
|
|
12
33
|
return true;
|
|
13
34
|
}
|
|
14
35
|
catch (_a) {
|
|
@@ -32,7 +53,19 @@ export class LauncherService {
|
|
|
32
53
|
}
|
|
33
54
|
}
|
|
34
55
|
async openFile(filePath) {
|
|
35
|
-
|
|
56
|
+
await this.openPath(filePath.toString());
|
|
57
|
+
}
|
|
58
|
+
async openDirectory(directoryPath) {
|
|
59
|
+
await this.openPath(directoryPath.toString());
|
|
60
|
+
}
|
|
61
|
+
async openDirectoryInEditorOrFileExplorer(directoryPath, fileToOpen) {
|
|
62
|
+
if (isInCi)
|
|
63
|
+
return;
|
|
64
|
+
if (!(await this.openFolderInIde(directoryPath, fileToOpen))) {
|
|
65
|
+
await this.openDirectory(directoryPath);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async openPath(targetPath) {
|
|
36
69
|
// Determine the command and args without using the shell
|
|
37
70
|
let command;
|
|
38
71
|
let args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher-service.js","sourceRoot":"","sources":["../../src/infrastructure/launcher-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,MAAM,OAAO,eAAe;IACnB,KAAK,CAAC,eAAe,CAAC,aAA4B,EAAE,UAAoB;QAC7E,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"launcher-service.js","sourceRoot":"","sources":["../../src/infrastructure/launcher-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import os from 'os';
|
|
2
|
+
import { DirectoryPath } from '../types/file/directoryPath.js';
|
|
3
|
+
export function getDownloadsDirectory(prefix = 'apimatic') {
|
|
4
|
+
return new DirectoryPath(os.homedir()).join('Downloads').join(prefix);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=os-extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os-extensions.js","sourceRoot":"","sources":["../../src/infrastructure/os-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,MAAM,UAAU,qBAAqB,CAAC,MAAM,GAAE,UAAU;IACtD,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -1,16 +1,28 @@
|
|
|
1
|
+
export declare enum ServiceErrorCode {
|
|
2
|
+
NotFound = "NOT_FOUND",
|
|
3
|
+
ServerError = "SERVER_ERROR",
|
|
4
|
+
NetworkError = "NETWORK_ERROR",
|
|
5
|
+
InvalidResponse = "INVALID_RESPONSE",
|
|
6
|
+
UnAuthorized = "UNAUTHORIZED",
|
|
7
|
+
BadRequest = "BAD_REQUEST",
|
|
8
|
+
Forbidden = "FORBIDDEN"
|
|
9
|
+
}
|
|
1
10
|
export declare class ServiceError {
|
|
2
|
-
readonly code:
|
|
11
|
+
readonly code: ServiceErrorCode;
|
|
3
12
|
private readonly defaultMessage;
|
|
13
|
+
private readonly errors;
|
|
4
14
|
private static defaultErrorMessage;
|
|
5
15
|
static readonly NotFound: ServiceError;
|
|
6
16
|
static readonly ServerError: ServiceError;
|
|
7
17
|
static readonly NetworkError: ServiceError;
|
|
8
18
|
static readonly InvalidResponse: ServiceError;
|
|
9
19
|
static readonly UnAuthorized: ServiceError;
|
|
10
|
-
static badRequest(customMessage: string): ServiceError;
|
|
20
|
+
static badRequest(customMessage: string, errors: Record<string, string[]>): ServiceError;
|
|
11
21
|
static forbidden(customMessage: string): ServiceError;
|
|
22
|
+
static notFound(customMessage: string): ServiceError;
|
|
12
23
|
static readonly values: ServiceError[];
|
|
13
24
|
private constructor();
|
|
14
25
|
get errorMessage(): string;
|
|
26
|
+
getError(key: string): string[] | undefined;
|
|
15
27
|
}
|
|
16
28
|
export declare function handleServiceError(error: unknown): ServiceError;
|
|
@@ -1,28 +1,45 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import axios from "axios";
|
|
3
3
|
import { format as f } from "../prompts/format.js";
|
|
4
|
+
export var ServiceErrorCode;
|
|
5
|
+
(function (ServiceErrorCode) {
|
|
6
|
+
ServiceErrorCode["NotFound"] = "NOT_FOUND";
|
|
7
|
+
ServiceErrorCode["ServerError"] = "SERVER_ERROR";
|
|
8
|
+
ServiceErrorCode["NetworkError"] = "NETWORK_ERROR";
|
|
9
|
+
ServiceErrorCode["InvalidResponse"] = "INVALID_RESPONSE";
|
|
10
|
+
ServiceErrorCode["UnAuthorized"] = "UNAUTHORIZED";
|
|
11
|
+
ServiceErrorCode["BadRequest"] = "BAD_REQUEST";
|
|
12
|
+
ServiceErrorCode["Forbidden"] = "FORBIDDEN";
|
|
13
|
+
})(ServiceErrorCode || (ServiceErrorCode = {}));
|
|
4
14
|
export class ServiceError {
|
|
5
|
-
static badRequest(customMessage) {
|
|
6
|
-
return new _a(
|
|
15
|
+
static badRequest(customMessage, errors) {
|
|
16
|
+
return new _a(ServiceErrorCode.BadRequest, customMessage, errors);
|
|
7
17
|
}
|
|
8
18
|
static forbidden(customMessage) {
|
|
9
|
-
return new _a(
|
|
19
|
+
return new _a(ServiceErrorCode.Forbidden, customMessage, {});
|
|
10
20
|
}
|
|
11
|
-
|
|
21
|
+
static notFound(customMessage) {
|
|
22
|
+
return new _a(ServiceErrorCode.NotFound, customMessage, {});
|
|
23
|
+
}
|
|
24
|
+
constructor(code, defaultMessage, errors) {
|
|
12
25
|
this.code = code;
|
|
13
26
|
this.defaultMessage = defaultMessage;
|
|
27
|
+
this.errors = errors;
|
|
14
28
|
}
|
|
15
29
|
get errorMessage() {
|
|
16
30
|
return this.defaultMessage;
|
|
17
31
|
}
|
|
32
|
+
getError(key) {
|
|
33
|
+
return this.errors[key];
|
|
34
|
+
}
|
|
18
35
|
}
|
|
19
36
|
_a = ServiceError;
|
|
20
37
|
ServiceError.defaultErrorMessage = `An unexpected error occurred, please try again later. If the problem persists, please reach out to our team at ${f.var("support@apimatic.io")}`;
|
|
21
|
-
ServiceError.NotFound = new _a(
|
|
22
|
-
ServiceError.ServerError = new _a(
|
|
23
|
-
ServiceError.NetworkError = new _a(
|
|
24
|
-
ServiceError.InvalidResponse = new _a(
|
|
25
|
-
ServiceError.UnAuthorized = new _a(
|
|
38
|
+
ServiceError.NotFound = new _a(ServiceErrorCode.NotFound, "Resource not found.", {});
|
|
39
|
+
ServiceError.ServerError = new _a(ServiceErrorCode.ServerError, _a.defaultErrorMessage, {});
|
|
40
|
+
ServiceError.NetworkError = new _a(ServiceErrorCode.NetworkError, "Unable to connect to the server.", {});
|
|
41
|
+
ServiceError.InvalidResponse = new _a(ServiceErrorCode.InvalidResponse, _a.defaultErrorMessage, {});
|
|
42
|
+
ServiceError.UnAuthorized = new _a(ServiceErrorCode.UnAuthorized, "Unauthorized access.", {});
|
|
26
43
|
ServiceError.values = [
|
|
27
44
|
_a.NotFound,
|
|
28
45
|
_a.ServerError,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-error.js","sourceRoot":"","sources":["../../src/infrastructure/service-error.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAO,YAAY;IAUvB,MAAM,CAAC,UAAU,CAAC,aAAqB;
|
|
1
|
+
{"version":3,"file":"service-error.js","sourceRoot":"","sources":["../../src/infrastructure/service-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,17 @@ import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
|
6
6
|
import { Result } from "neverthrow";
|
|
7
7
|
import { Language } from "../../types/sdk/generate.js";
|
|
8
8
|
import { ServiceError } from "../service-error.js";
|
|
9
|
+
import { SemVersion } from "../../types/publish/version.js";
|
|
10
|
+
export interface GeneratedSdkResult {
|
|
11
|
+
sdk: NodeJS.ReadableStream;
|
|
12
|
+
sdkSourceTree: NodeJS.ReadableStream;
|
|
13
|
+
}
|
|
9
14
|
export declare class PortalService {
|
|
10
15
|
private readonly CONTENT_TYPE;
|
|
11
16
|
private readonly fileService;
|
|
12
17
|
private readonly apiService;
|
|
13
18
|
generatePortal(buildPath: FilePath, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<NodeJS.ReadableStream, ServiceError | NodeJS.ReadableStream>>;
|
|
14
|
-
generateSdk(buildPath: FilePath, language: Language, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null): Promise<Result<
|
|
19
|
+
generateSdk(buildPath: FilePath, language: Language, configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey: string | null, version?: SemVersion): Promise<Result<GeneratedSdkResult, ServiceError>>;
|
|
15
20
|
generateSdl(specFileStream: ReadStream, configDir: DirectoryPath, commandMetadata: CommandMetadata): Promise<Result<Sdl, ServiceError>>;
|
|
16
21
|
private createAuthorizationHeader;
|
|
17
22
|
private createOriginQueryParameter;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiError, SdkGenerationAsyncController, ContentType, DocsPortalGenerationAsyncController, ProblemDetailsError, FileWrapper, TransformationController, ExportFormats, SdkLanguages, Status, } from "@apimatic/sdk";
|
|
1
|
+
import { ApiError, SdkGenerationAsyncController, ContentType, DocsPortalGenerationAsyncController, SdkSourceTreeGenerationAsyncController, ProblemDetailsError, FileWrapper, TransformationController, ExportFormats, SdkLanguages, Status, } from "@apimatic/sdk";
|
|
2
2
|
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
3
3
|
import { parseStreamBodyToJson } from "../../utils/utils.js";
|
|
4
4
|
import { FileService } from "../file-service.js";
|
|
@@ -47,11 +47,12 @@ export class PortalService {
|
|
|
47
47
|
}
|
|
48
48
|
catch (error) {
|
|
49
49
|
if (error instanceof ProblemDetailsError) {
|
|
50
|
+
const errors = error.result.errors;
|
|
50
51
|
// TODO: This only picks the first error message, improve it to show all errors.
|
|
51
|
-
const message = (_b = (_a = Object.values(
|
|
52
|
+
const message = (_b = (_a = Object.values(errors)[0]) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
|
|
52
53
|
const errorMessage = error.result.title + "\n- " + message;
|
|
53
54
|
if (error.statusCode === 400) {
|
|
54
|
-
return err(ServiceError.badRequest(errorMessage));
|
|
55
|
+
return err(ServiceError.badRequest(errorMessage, errors));
|
|
55
56
|
}
|
|
56
57
|
if (error.statusCode === 403) {
|
|
57
58
|
return err(ServiceError.forbidden(errorMessage));
|
|
@@ -74,14 +75,16 @@ export class PortalService {
|
|
|
74
75
|
return err(ServiceError.ServerError);
|
|
75
76
|
}
|
|
76
77
|
if (statusResult.value.errors && statusResult.value.status === Status.ValidationError) {
|
|
77
|
-
|
|
78
|
-
const message = (_d = (_c = Object.values(
|
|
79
|
-
const errorMessage = "One or more validation errors occurred." +
|
|
80
|
-
|
|
78
|
+
const errors = statusResult.value.errors;
|
|
79
|
+
const message = (_d = (_c = Object.values(errors)[0]) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : null;
|
|
80
|
+
const errorMessage = "One or more validation errors occurred." +
|
|
81
|
+
"\n- " + message;
|
|
82
|
+
return err(ServiceError.badRequest(errorMessage, errors));
|
|
81
83
|
}
|
|
82
84
|
if (statusResult.value.errors && statusResult.value.status === Status.SubscriptionError) {
|
|
85
|
+
const errors = statusResult.value.errors;
|
|
83
86
|
// TODO: This only picks the first error message, improve it to show all errors.
|
|
84
|
-
const message = (_f = (_e = Object.values(
|
|
87
|
+
const message = (_f = (_e = Object.values(errors)[0]) === null || _e === void 0 ? void 0 : _e[0]) !== null && _f !== void 0 ? _f : null;
|
|
85
88
|
const errorMessage = "Access denied to resource." + "\n- " + message;
|
|
86
89
|
return err(ServiceError.forbidden(errorMessage));
|
|
87
90
|
}
|
|
@@ -98,8 +101,8 @@ export class PortalService {
|
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
103
|
// TODO: Pass stream as parameter instead of file path.
|
|
101
|
-
async generateSdk(buildPath, language, configDir, commandMetadata, authKey) {
|
|
102
|
-
var _a, _b, _c
|
|
104
|
+
async generateSdk(buildPath, language, configDir, commandMetadata, authKey, version) {
|
|
105
|
+
var _a, _b, _c;
|
|
103
106
|
const buildFileStream = await this.fileService.getStream(buildPath);
|
|
104
107
|
const file = new FileWrapper(buildFileStream);
|
|
105
108
|
const authInfo = await getAuthInfo(configDir.toString());
|
|
@@ -108,16 +111,17 @@ export class PortalService {
|
|
|
108
111
|
const sdkGenerationController = new SdkGenerationAsyncController(client);
|
|
109
112
|
let generationId;
|
|
110
113
|
try {
|
|
111
|
-
const response = await sdkGenerationController.generateSdkViaBuildInputAsync(this.CONTENT_TYPE, file, this.languageSdk[language]);
|
|
114
|
+
const response = await sdkGenerationController.generateSdkViaBuildInputAsync(this.CONTENT_TYPE, file, this.languageSdk[language], undefined, version === null || version === void 0 ? void 0 : version.toString());
|
|
112
115
|
generationId = response.result.id;
|
|
113
116
|
}
|
|
114
117
|
catch (error) {
|
|
115
118
|
if (error instanceof ProblemDetailsError) {
|
|
116
119
|
// TODO: This only picks the first error message, improve it to show all errors.
|
|
117
|
-
const
|
|
120
|
+
const errors = error.result.errors;
|
|
121
|
+
const message = (_b = (_a = Object.values(errors)[0]) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
|
|
118
122
|
const errorMessage = error.result.title + "\n- " + message;
|
|
119
123
|
if (error.statusCode === 400) {
|
|
120
|
-
return err(ServiceError.badRequest(errorMessage));
|
|
124
|
+
return err(ServiceError.badRequest(errorMessage, errors));
|
|
121
125
|
}
|
|
122
126
|
if (error.statusCode === 403) {
|
|
123
127
|
return err(ServiceError.forbidden(errorMessage));
|
|
@@ -140,19 +144,34 @@ export class PortalService {
|
|
|
140
144
|
return err(ServiceError.ServerError);
|
|
141
145
|
}
|
|
142
146
|
if (statusResult.value.errors && statusResult.value.status === Status.ValidationError) {
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
|
|
147
|
+
const errors = statusResult.value.errors;
|
|
148
|
+
const sdkMergeFailedLanguages = errors.sdkMergeFailed;
|
|
149
|
+
if (sdkMergeFailedLanguages === null || sdkMergeFailedLanguages === void 0 ? void 0 : sdkMergeFailedLanguages.length) {
|
|
150
|
+
const errorMessage = "SDK generation failed for these languages due to merge conflict." +
|
|
151
|
+
"\n- " +
|
|
152
|
+
sdkMergeFailedLanguages.join("\n- ");
|
|
153
|
+
return err(ServiceError.badRequest(errorMessage, errors));
|
|
154
|
+
}
|
|
155
|
+
const messages = Object.values(errors).flat();
|
|
156
|
+
const errorMessage = "One or more validation errors occurred." +
|
|
157
|
+
(messages.length ? "\n- " + messages.join("\n- ") : "");
|
|
158
|
+
return err(ServiceError.badRequest(errorMessage, errors));
|
|
146
159
|
}
|
|
147
160
|
if (statusResult.value.errors && statusResult.value.status === Status.SubscriptionError) {
|
|
148
|
-
const
|
|
161
|
+
const errors = statusResult.value.errors;
|
|
162
|
+
const message = (_c = Object.values(errors).flat()[0]) !== null && _c !== void 0 ? _c : null;
|
|
149
163
|
const errorMessage = "Access denied to resource." + "\n- " + message;
|
|
150
164
|
return err(ServiceError.forbidden(errorMessage));
|
|
151
165
|
}
|
|
152
166
|
} while (statusResult.value.status !== Status.Completed);
|
|
153
167
|
try {
|
|
154
168
|
const sdkResponse = await sdkGenerationController.downloadGeneratedSdk(generationId);
|
|
155
|
-
|
|
169
|
+
const sdkSourceTreeController = new SdkSourceTreeGenerationAsyncController(client);
|
|
170
|
+
const sdkSourceTreeResponse = await sdkSourceTreeController.downloadGeneratedSdkSourceTree(generationId);
|
|
171
|
+
return ok({
|
|
172
|
+
sdk: sdkResponse.result,
|
|
173
|
+
sdkSourceTree: sdkSourceTreeResponse.result
|
|
174
|
+
});
|
|
156
175
|
}
|
|
157
176
|
catch (error) {
|
|
158
177
|
return err(handleServiceError(error));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAER,4BAA4B,EAC5B,WAAW,EACX,mCAAmC,EACnC,mBAAmB,EACnB,WAAW,EACX,wBAAwB,EAExB,aAAa,EACb,YAAY,EACZ,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAY,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAU,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"portal-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/portal-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Result } from 'neverthrow';
|
|
2
|
+
import { PublishingProfileItem } from '../../types/publish-api/publishing-profile-item.js';
|
|
3
|
+
import { ServiceError } from '../service-error.js';
|
|
4
|
+
import { DirectoryPath } from '../../types/file/directoryPath.js';
|
|
5
|
+
import { Language } from '../../types/sdk/generate.js';
|
|
6
|
+
import { FilePath } from '../../types/file/filePath.js';
|
|
7
|
+
import { PublishingInfo } from '../../types/publish-api/publishing-info.js';
|
|
8
|
+
import { PublishType } from '../../types/publish-api/publishing-profile-item.js';
|
|
9
|
+
import { PublishLogItem } from '../../types/publish-api/publish-log.js';
|
|
10
|
+
import { SemVersion } from '../../types/publish/version.js';
|
|
11
|
+
import { ProfileId } from '../../types/publish/profile-id.js';
|
|
12
|
+
export declare class PublishingApiService {
|
|
13
|
+
private readonly apiBaseUrl;
|
|
14
|
+
private readonly fileService;
|
|
15
|
+
getPublishingProfiles(configDir: DirectoryPath, shell: string): Promise<Result<PublishingProfileItem[], ServiceError>>;
|
|
16
|
+
publishSdkPackage(sdkFilePath: FilePath, profileId: ProfileId, language: Language, packageVersion: SemVersion, publishType: PublishType[], configDir: DirectoryPath, shell: string): Promise<Result<PublishingInfo, ServiceError>>;
|
|
17
|
+
getSdkPublishingLog(publishingLogId: string, configDir: DirectoryPath, shell: string): Promise<Result<PublishLogItem, ServiceError>>;
|
|
18
|
+
private axiosInstance;
|
|
19
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import axios, { AxiosError } from 'axios';
|
|
2
|
+
import { err, ok } from 'neverthrow';
|
|
3
|
+
import FormData from 'form-data';
|
|
4
|
+
import { handleServiceError, ServiceError } from '../service-error.js';
|
|
5
|
+
import { getAuthInfo } from '../../client-utils/auth-manager.js';
|
|
6
|
+
import { envInfo } from '../env-info.js';
|
|
7
|
+
import { FileService } from '../file-service.js';
|
|
8
|
+
export class PublishingApiService {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.apiBaseUrl = 'https://api.package-publishing.apimatic.io/api';
|
|
11
|
+
this.fileService = new FileService();
|
|
12
|
+
}
|
|
13
|
+
async getPublishingProfiles(configDir, shell) {
|
|
14
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
15
|
+
if (authInfo === null) {
|
|
16
|
+
return err(ServiceError.UnAuthorized);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const token = authInfo.authKey;
|
|
20
|
+
const response = await this.axiosInstance(shell, token).get(`/publishing-profile/user`);
|
|
21
|
+
if (response.status === 200) {
|
|
22
|
+
return ok(response.data);
|
|
23
|
+
}
|
|
24
|
+
return err(ServiceError.InvalidResponse);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return err(handleServiceError(error));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async publishSdkPackage(sdkFilePath, profileId, language, packageVersion, publishType, configDir, shell) {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
33
|
+
if (authInfo === null) {
|
|
34
|
+
return err(ServiceError.UnAuthorized);
|
|
35
|
+
}
|
|
36
|
+
const sdkFileStream = await this.fileService.getStream(sdkFilePath);
|
|
37
|
+
try {
|
|
38
|
+
const token = authInfo.authKey;
|
|
39
|
+
const formData = new FormData();
|
|
40
|
+
formData.append('file', sdkFileStream);
|
|
41
|
+
formData.append('packageVersion', packageVersion.toString());
|
|
42
|
+
// If both package and source code publishing are not selected, publishType array will contain only one of them, so we need to specify which one to the API.
|
|
43
|
+
// If both are selected, we will omit this field as API defaults to both types being selected.
|
|
44
|
+
if (publishType.length !== 2) {
|
|
45
|
+
formData.append('publishType', publishType[0]);
|
|
46
|
+
}
|
|
47
|
+
const response = await this.axiosInstance(shell, token).post(`/publish/${profileId}/${language}`, formData, {
|
|
48
|
+
headers: formData.getHeaders(),
|
|
49
|
+
responseType: 'json'
|
|
50
|
+
});
|
|
51
|
+
if (response.status === 200) {
|
|
52
|
+
return ok(response.data);
|
|
53
|
+
}
|
|
54
|
+
return err(ServiceError.InvalidResponse);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error instanceof AxiosError) {
|
|
58
|
+
const data = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data;
|
|
59
|
+
if (error.status === 400) {
|
|
60
|
+
const errors = data.errors;
|
|
61
|
+
const detail = errors ? (_b = Object.values(errors)[0]) === null || _b === void 0 ? void 0 : _b[0] : data.detail;
|
|
62
|
+
const errorMessage = data.title + '\n- ' + detail;
|
|
63
|
+
return err(ServiceError.badRequest(errorMessage, errors !== null && errors !== void 0 ? errors : {}));
|
|
64
|
+
}
|
|
65
|
+
if (error.status === 403) {
|
|
66
|
+
const errorMessage = data.title + '\n- ' + data.detail;
|
|
67
|
+
return err(ServiceError.forbidden(errorMessage));
|
|
68
|
+
}
|
|
69
|
+
if (error.status === 404) {
|
|
70
|
+
const errorMessage = data.title + '\n- ' + data.detail;
|
|
71
|
+
return err(ServiceError.notFound(errorMessage));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return err(handleServiceError(error));
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
sdkFileStream.close();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async getSdkPublishingLog(publishingLogId, configDir, shell) {
|
|
81
|
+
const authInfo = await getAuthInfo(configDir.toString());
|
|
82
|
+
if (authInfo === null) {
|
|
83
|
+
return err(ServiceError.UnAuthorized);
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const token = authInfo.authKey;
|
|
87
|
+
const response = await this.axiosInstance(shell, token).get(`/publish-logs/${publishingLogId}`);
|
|
88
|
+
if (response.status === 200) {
|
|
89
|
+
return ok(response.data);
|
|
90
|
+
}
|
|
91
|
+
return err(ServiceError.InvalidResponse);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return err(handleServiceError(error));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
axiosInstance(shell, apiKey) {
|
|
98
|
+
var _a;
|
|
99
|
+
const headers = {
|
|
100
|
+
'User-Agent': envInfo.getUserAgent(shell)
|
|
101
|
+
};
|
|
102
|
+
if (apiKey) {
|
|
103
|
+
headers.Authorization = `X-Auth-Key ${apiKey}`;
|
|
104
|
+
}
|
|
105
|
+
return axios.create({
|
|
106
|
+
baseURL: (_a = envInfo.getPublishingBaseUrl()) !== null && _a !== void 0 ? _a : this.apiBaseUrl,
|
|
107
|
+
headers
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=publishing-api-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishing-api-service.js","sourceRoot":"","sources":["../../../src/infrastructure/services/publishing-api-service.ts"],"names":[],"mappings":"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"}
|