@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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DirectoryPath } from
|
|
2
|
-
import { FilePath } from
|
|
1
|
+
import { DirectoryPath } from '../types/file/directoryPath.js';
|
|
2
|
+
import { FilePath } from '../types/file/filePath.js';
|
|
3
3
|
export declare class ZipService {
|
|
4
4
|
archive(sourceDir: DirectoryPath, outputZipPath: FilePath): Promise<void>;
|
|
5
5
|
unArchive(sourceFile: FilePath, destinationDirectory: DirectoryPath): Promise<void>;
|
|
@@ -1,16 +1,34 @@
|
|
|
1
|
-
import fs from
|
|
2
|
-
import
|
|
3
|
-
import extract from
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import yazl from 'yazl';
|
|
3
|
+
import extract from 'extract-zip';
|
|
4
4
|
export class ZipService {
|
|
5
5
|
async archive(sourceDir, outputZipPath) {
|
|
6
6
|
return new Promise((resolve, reject) => {
|
|
7
|
+
const zipfile = new yazl.ZipFile();
|
|
8
|
+
const addDirectory = (dir, relativePrefix) => {
|
|
9
|
+
for (const entry of fs.readdirSync(dir.toString(), { withFileTypes: true })) {
|
|
10
|
+
const fullPath = dir.join(entry.name);
|
|
11
|
+
// Always use forward slashes as metadataPath — zip format requires it
|
|
12
|
+
const metadataPath = relativePrefix ? `${relativePrefix}/${entry.name}` : entry.name;
|
|
13
|
+
if (entry.isDirectory()) {
|
|
14
|
+
addDirectory(fullPath, metadataPath);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
zipfile.addFile(fullPath.toString(), metadataPath);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
try {
|
|
22
|
+
addDirectory(sourceDir, '');
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
return reject(err);
|
|
26
|
+
}
|
|
27
|
+
zipfile.end();
|
|
7
28
|
const output = fs.createWriteStream(outputZipPath.toString());
|
|
8
|
-
|
|
9
|
-
output.on(
|
|
10
|
-
|
|
11
|
-
archive.pipe(output);
|
|
12
|
-
archive.directory(sourceDir.toString(), false); // false: don't nest under folder
|
|
13
|
-
archive.finalize();
|
|
29
|
+
zipfile.outputStream.pipe(output);
|
|
30
|
+
output.on('close', resolve);
|
|
31
|
+
output.on('error', reject);
|
|
14
32
|
});
|
|
15
33
|
}
|
|
16
34
|
async unArchive(sourceFile, destinationDirectory) {
|
|
@@ -23,14 +41,14 @@ export class ZipService {
|
|
|
23
41
|
onEntry: function (entry) {
|
|
24
42
|
fileCount++;
|
|
25
43
|
if (fileCount > MAX_FILES) {
|
|
26
|
-
throw new Error(
|
|
44
|
+
throw new Error('Reached max. file count');
|
|
27
45
|
}
|
|
28
46
|
// The uncompressedSize comes from the zip headers, so it might not be trustworthy.
|
|
29
47
|
// Alternatively, calculate the size from the readStream.
|
|
30
48
|
let entrySize = entry.uncompressedSize;
|
|
31
49
|
totalSize += entrySize;
|
|
32
50
|
if (totalSize > MAX_SIZE) {
|
|
33
|
-
throw new Error(
|
|
51
|
+
throw new Error('Reached max. size');
|
|
34
52
|
}
|
|
35
53
|
}
|
|
36
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-service.js","sourceRoot":"","sources":["../../src/infrastructure/zip-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"zip-service.js","sourceRoot":"","sources":["../../src/infrastructure/zip-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,aAAa,CAAC;AAIlC,MAAM,OAAO,UAAU;IACd,KAAK,CAAC,OAAO,CAAC,SAAwB,EAAE,aAAuB;QACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAEnC,MAAM,YAAY,GAAG,CAAC,GAAkB,EAAE,cAAsB,EAAE,EAAE;gBAClE,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC5E,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,sEAAsE;oBACtE,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBACrF,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC;gBACH,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,UAAoB,EAAE,oBAAmC;QAC9E,MAAM,SAAS,GAAG,MAAO,CAAC;QAC1B,MAAM,QAAQ,GAAG,UAAa,CAAC,CAAC,OAAO;QACvC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YACnC,GAAG,EAAE,oBAAoB,CAAC,QAAQ,EAAE;YACpC,OAAO,EAAE,UAAU,KAAK;gBACtB,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,CAAC;gBACD,mFAAmF;gBACnF,yDAAyD;gBACzD,IAAI,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBACvC,SAAS,IAAI,SAAS,CAAC;gBACvB,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/lib/prompts/format.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ActionResult } from "../actions/action-result.js";
|
|
2
|
-
import { Directory } from "../types/file/directory.js";
|
|
3
2
|
import { DirectoryPath } from "../types/file/directoryPath.js";
|
|
4
3
|
import { FilePath } from "../types/file/filePath.js";
|
|
5
4
|
export declare const format: {
|
|
@@ -20,7 +19,6 @@ export declare const format: {
|
|
|
20
19
|
};
|
|
21
20
|
export declare function intro(text: string): void;
|
|
22
21
|
export declare function outro<T>(result: ActionResult<T>): void;
|
|
23
|
-
export declare function getDirectoryTree(dir: Directory, prefix?: string, isLast?: boolean): string;
|
|
24
22
|
export interface LeafNode {
|
|
25
23
|
name: string;
|
|
26
24
|
description?: string;
|
package/lib/prompts/format.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import pc from "picocolors";
|
|
2
2
|
import { intro as i, outro as o } from '@clack/prompts';
|
|
3
|
-
import { Directory } from "../types/file/directory.js";
|
|
4
3
|
export const format = {
|
|
5
4
|
// Core element types
|
|
6
5
|
var: (text) => pc.magenta(`'${text}'`),
|
|
@@ -35,36 +34,6 @@ export function outro(result) {
|
|
|
35
34
|
o(outroMessage);
|
|
36
35
|
process.exitCode = exitCode;
|
|
37
36
|
}
|
|
38
|
-
export function getDirectoryTree(dir, prefix = "", isLast = true) {
|
|
39
|
-
const folderDescription = {
|
|
40
|
-
spec: "# Contains all API definition files",
|
|
41
|
-
content: "# Includes custom documentation pages in Markdown",
|
|
42
|
-
static: "# Includes all static files, such as images, GIFs, and PDFs"
|
|
43
|
-
};
|
|
44
|
-
const fileDescriptions = {
|
|
45
|
-
"toc.yml": "# Controls the structure of the side navigation bar in the API portal",
|
|
46
|
-
"APIMATIC-BUILD.json": "# Defines all configurations for the API portal, including programming languages and themes"
|
|
47
|
-
};
|
|
48
|
-
const pointer = isLast ? "└─ " : "├─ ";
|
|
49
|
-
const folderName = dir.directoryPath.leafName();
|
|
50
|
-
const description = folderDescription[folderName] ? format.description(folderDescription[folderName]) : "";
|
|
51
|
-
let output = `${prefix}${pointer}${folderName}${description ? " " + description : ""}\n`;
|
|
52
|
-
const items = dir.items;
|
|
53
|
-
const newPrefix = prefix + (isLast ? " " : "| ");
|
|
54
|
-
items.forEach((item, index) => {
|
|
55
|
-
const last = index === items.length - 1;
|
|
56
|
-
if (item instanceof Directory) {
|
|
57
|
-
output += getDirectoryTree(item, newPrefix, last);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
const filePointer = last ? "└─ " : "├─ ";
|
|
61
|
-
const fileName = item.toString();
|
|
62
|
-
const fileDescription = fileDescriptions[fileName] ? format.description(fileDescriptions[fileName]) : "";
|
|
63
|
-
output += `${newPrefix}${filePointer}${fileName}${fileDescription ? " " + fileDescription : ""}\n`;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
return output;
|
|
67
|
-
}
|
|
68
37
|
export function getTree(dir, prefix = "", isLast = true) {
|
|
69
38
|
const pointer = isLast ? "└─ " : "├─ ";
|
|
70
39
|
const folderName = dir.name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/prompts/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/prompts/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,gBAAgB,CAAC;AAKxD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,qBAAqB;IACrB,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC;IAC9C,IAAI,EAAE,CAAC,IAA8B,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;IAC9D,GAAG,EAAE,CAAC,GAAW,EAAE,GAAG,IAAc,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC1G,MAAM,EAAE,CAAC,GAAW,EAAE,GAAG,IAAc,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC5H,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzD,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC;IACxD,IAAI,EAAE,CAAC,IAAY,EAAE,QAA4B,SAAS,EAAE,EAAE;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,wBAAwB;IACxB,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IACzC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAErC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAC9C,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AACD,MAAM,UAAU,KAAK,CAAI,MAAuB;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAEpC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAClC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAClC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CACrC,CAAC;IAEF,CAAC,CAAC,YAAY,CAAC,CAAC;IAChB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAWD,MAAM,UAAU,OAAO,CACrB,GAAa,EACb,SAAiB,EAAE,EACnB,SAAkB,IAAI;IAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;IAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/E,IAAI,MAAM,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAEzF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEpD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAExC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,OAAO,CAAC,IAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACrG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -9,7 +9,7 @@ export declare class PortalGeneratePrompts {
|
|
|
9
9
|
portalDirectoryNotEmpty(): void;
|
|
10
10
|
generatePortal(fn: Promise<Result<NodeJS.ReadableStream, ServiceError | NodeJS.ReadableStream>>): Promise<Result<NodeJS.ReadableStream, NodeJS.ReadableStream | ServiceError>>;
|
|
11
11
|
portalGenerationError(error: string): void;
|
|
12
|
-
|
|
12
|
+
portalGenerationSdkMergeFailed(sdkMergeFailedErrors: string[]): void;
|
|
13
13
|
portalGenerationErrorWithReport(reportPath: FilePath): void;
|
|
14
14
|
portalGenerated(portal: DirectoryPath): void;
|
|
15
15
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isCancel, confirm, log } from "@clack/prompts";
|
|
2
2
|
import { format as f } from "../format.js";
|
|
3
|
-
import { withSpinner } from "../prompt.js";
|
|
3
|
+
import { noteWrapped, withSpinner } from "../prompt.js";
|
|
4
4
|
export class PortalGeneratePrompts {
|
|
5
5
|
async overwritePortal(directory) {
|
|
6
6
|
const overwrite = await confirm({
|
|
@@ -30,8 +30,14 @@ export class PortalGeneratePrompts {
|
|
|
30
30
|
portalGenerationError(error) {
|
|
31
31
|
log.error(error);
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
log.error(
|
|
33
|
+
portalGenerationSdkMergeFailed(sdkMergeFailedErrors) {
|
|
34
|
+
log.error(`Saved changes couldn't be applied to one or more SDKs.`);
|
|
35
|
+
const language = sdkMergeFailedErrors.length === 1 ? sdkMergeFailedErrors[0] : "<language>";
|
|
36
|
+
log.error(`Merge conflicts found in:\n- ${sdkMergeFailedErrors.join("\n- ")}`);
|
|
37
|
+
const message = `Review and resolve the conflicts first by running:
|
|
38
|
+
'${f.cmdAlt("apimatic", "sdk", "generate")} ${f.flag("language", language)}'
|
|
39
|
+
After resolving merge conflicts, retry ${f.cmdAlt("apimatic", "portal", "generate")}.`;
|
|
40
|
+
noteWrapped(message, "Next Steps");
|
|
35
41
|
}
|
|
36
42
|
portalGenerationErrorWithReport(reportPath) {
|
|
37
43
|
const message = `An error occurred during portal generation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/portal/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/portal/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,OAAO,qBAAqB;IACzB,KAAK,CAAC,eAAe,CAAC,SAAwB;QACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,0CAA0C;YACvF,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,qBAAqB,CAAC,SAAwB;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAChH,SAAS,CACV,EAAE,CAAC;QACJ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,iBAAiB,CAAC,SAAwB;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,uBAAuB;QAC5B,MAAM,OAAO,GAAG,yFAAyF,CAAC;QAC1G,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,cAAc,CAAC,EAAgF;QACpG,OAAO,WAAW,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAC7G,CAAC;IAEM,qBAAqB,CAAC,KAAa;QACxC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,8BAA8B,CAAC,oBAA8B;QAClE,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,gCAAgC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG;GACjB,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;yCACjC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC;QACnF,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAEM,+BAA+B,CAAC,UAAoB;QACzD,MAAM,OAAO,GAAG;oDACgC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,eAAe,CAAC,MAAqB;QAC1C,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;CACF"}
|
package/lib/prompts/prompt.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { Result } from "neverthrow";
|
|
2
2
|
export declare function withSpinner<T, E>(intro: string, success: string, failure: string, fn: Promise<Result<T, E>>): Promise<Result<T, E>>;
|
|
3
3
|
export declare const noteWrapped: (message: string, title: string) => void;
|
|
4
|
+
export declare function buildTableWithHeading(groups: {
|
|
5
|
+
heading: string;
|
|
6
|
+
rows: string[][];
|
|
7
|
+
}[], headers: string[], columnStyles?: ColumnStyle[]): string;
|
|
8
|
+
type ColumnStyle = 'primary' | 'secondary' | 'item';
|
|
9
|
+
export {};
|
package/lib/prompts/prompt.js
CHANGED
|
@@ -34,4 +34,49 @@ export const noteWrapped = (message, title) => {
|
|
|
34
34
|
note(message, title, opts);
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
export function buildTableWithHeading(groups, headers, columnStyles) {
|
|
38
|
+
return groups
|
|
39
|
+
.map((group) => `${pc.bold(pc.white(group.heading))}\n${buildTable(headers, group.rows, true, columnStyles)}`)
|
|
40
|
+
.join('\n\n');
|
|
41
|
+
}
|
|
42
|
+
function buildTable(headers, rows, rowSeparators = false, columnStyles) {
|
|
43
|
+
const COL_PAD = 2;
|
|
44
|
+
const MIN_COL_WIDTH = 4;
|
|
45
|
+
const coloredHeaders = headers.map((h) => pc.bold(pc.white(h)));
|
|
46
|
+
let widths = headers.map((h, i) => Math.max(stripAnsi(h).length, ...rows.map((r) => stripAnsi(r[i]).length)) + COL_PAD);
|
|
47
|
+
const terminalColumns = getColumns(process.stdout) || 80;
|
|
48
|
+
const totalWidth = 1 + 3 * headers.length + widths.reduce((a, b) => a + b, 0);
|
|
49
|
+
if (totalWidth > terminalColumns) {
|
|
50
|
+
const availableWidth = terminalColumns - 1 - 3 * headers.length;
|
|
51
|
+
const naturalTotal = widths.reduce((a, b) => a + b, 0);
|
|
52
|
+
widths = widths.map((w) => Math.max(MIN_COL_WIDTH, Math.floor((w / naturalTotal) * availableWidth)));
|
|
53
|
+
}
|
|
54
|
+
const columnStyleMap = {
|
|
55
|
+
primary: (text) => pc.magenta(text),
|
|
56
|
+
secondary: (text) => pc.dim(text),
|
|
57
|
+
item: (text) => pc.cyan(text)
|
|
58
|
+
};
|
|
59
|
+
const divider = (l, m, r) => pc.gray(l + widths.map((w) => '─'.repeat(w + 2)).join(m) + r);
|
|
60
|
+
const renderRow = (cells, applyStyles = false) => pc.gray('│') +
|
|
61
|
+
cells
|
|
62
|
+
.map((cell, i) => {
|
|
63
|
+
const styled = applyStyles && (columnStyles === null || columnStyles === void 0 ? void 0 : columnStyles[i]) ? columnStyleMap[columnStyles[i]](cell) : cell;
|
|
64
|
+
return ` ${pad(styled, widths[i])} ` + pc.gray('│');
|
|
65
|
+
})
|
|
66
|
+
.join('');
|
|
67
|
+
const lines = [divider('┌', '┬', '┐'), renderRow(coloredHeaders), divider('├', '┼', '┤')];
|
|
68
|
+
rows.forEach((row, i) => {
|
|
69
|
+
lines.push(renderRow(row, true));
|
|
70
|
+
if (rowSeparators) {
|
|
71
|
+
lines.push(i < rows.length - 1 ? divider('├', '┼', '┤') : divider('└', '┴', '┘'));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
if (!rowSeparators)
|
|
75
|
+
lines.push(divider('└', '┴', '┘'));
|
|
76
|
+
return lines.join('\n');
|
|
77
|
+
}
|
|
78
|
+
/** Pad `text` to `width` visible characters (ANSI-safe). */
|
|
79
|
+
function pad(text, width) {
|
|
80
|
+
return text + ' '.repeat(Math.max(0, width - stripAnsi(text).length));
|
|
81
|
+
}
|
|
37
82
|
//# sourceMappingURL=prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompts/prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAe,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAO,KAAa,EAAE,OAAe,EAAE,OAAe,EAAE,EAAyB;IAChH,MAAM,CAAC,GAAG,OAAO,CAAC;QAChB,aAAa,EAAE,WAAW;QAC1B,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;KAC3D,CAAC,CAAC;IACH,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EACxB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CACzB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAa,OAAO,CAAC,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAgB;YACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;SACvB,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompts/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Result } from 'neverthrow';
|
|
2
|
+
import { ServiceError } from '../../../infrastructure/service-error.js';
|
|
3
|
+
import { PublishingProfileSummaryGroup, PublishingProfileItem } from '../../../types/publish-api/publishing-profile-item.js';
|
|
4
|
+
export declare class PublishingProfileListPrompts {
|
|
5
|
+
fetchProfiles(fn: Promise<Result<PublishingProfileItem[], ServiceError>>): Promise<Result<PublishingProfileItem[], ServiceError>>;
|
|
6
|
+
fetchError(error: ServiceError): void;
|
|
7
|
+
noProfilesFound(): void;
|
|
8
|
+
displayProfiles(groups: PublishingProfileSummaryGroup[]): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { log } from '@clack/prompts';
|
|
2
|
+
import { buildTableWithHeading, withSpinner } from '../../prompt.js';
|
|
3
|
+
export class PublishingProfileListPrompts {
|
|
4
|
+
fetchProfiles(fn) {
|
|
5
|
+
return withSpinner('Fetching publishing profiles', 'Publishing profiles fetched successfully.', 'Failed to fetch publishing profiles.', fn);
|
|
6
|
+
}
|
|
7
|
+
fetchError(error) {
|
|
8
|
+
log.error(error.errorMessage);
|
|
9
|
+
}
|
|
10
|
+
noProfilesFound() {
|
|
11
|
+
log.info('No publishing profiles found. Please create a publishing profile on the APIMatic App to view it here.');
|
|
12
|
+
}
|
|
13
|
+
displayProfiles(groups) {
|
|
14
|
+
const count = groups.reduce((sum, g) => sum + g.profiles.length, 0);
|
|
15
|
+
const label = count === 1 ? '1 profile' : `${count} profiles`;
|
|
16
|
+
const tableGroups = groups.map((group) => ({
|
|
17
|
+
heading: group.apiGroupName,
|
|
18
|
+
rows: group.profiles.map((profile) => [
|
|
19
|
+
profile.name,
|
|
20
|
+
profile.id,
|
|
21
|
+
profile.enabledLanguages.length === 0 ? '—' : profile.enabledLanguages.join(', '),
|
|
22
|
+
]),
|
|
23
|
+
}));
|
|
24
|
+
log.info(`Publishing Profiles (${label})\n\n${buildTableWithHeading(tableGroups, ['Name', 'ID', 'Languages'], ['primary', 'secondary', 'item'])}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/prompts/publishing/profile/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAIrC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,OAAO,4BAA4B;IAChC,aAAa,CAAC,EAA0D;QAC7E,OAAO,WAAW,CAChB,8BAA8B,EAC9B,2CAA2C,EAC3C,sCAAsC,EACtC,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,KAAmB;QACnC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAEM,eAAe;QACpB,GAAG,CAAC,IAAI,CAAC,uGAAuG,CAAC,CAAC;IACpH,CAAC;IAEM,eAAe,CAAC,MAAuC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,OAAO,EAAE,KAAK,CAAC,YAAY;YAC3B,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI;gBACZ,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;aAClF,CAAC;SACH,CAAC,CAAC,CAAC;QACJ,GAAG,CAAC,IAAI,CAAC,wBAAwB,KAAK,QAAQ,qBAAqB,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACrJ,CAAC;CACF"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
2
|
import { Result } from "neverthrow";
|
|
3
3
|
import { ServiceError } from "../../infrastructure/service-error.js";
|
|
4
|
+
import { GeneratedSdkResult } from "../../infrastructure/services/portal-service.js";
|
|
4
5
|
export declare class SdkGeneratePrompts {
|
|
5
6
|
overwriteSdk(directory: DirectoryPath): Promise<boolean>;
|
|
6
7
|
sameBuildAndSdkDir(directory: DirectoryPath): void;
|
|
8
|
+
srcDirectoryEmpty(directory: DirectoryPath): void;
|
|
7
9
|
specDirectoryEmpty(directory: DirectoryPath): void;
|
|
8
10
|
destinationDirNotEmpty(): void;
|
|
9
|
-
generateSDK(fn: Promise<Result<
|
|
10
|
-
logGenerationError(error: string): void;
|
|
11
|
+
generateSDK(fn: Promise<Result<GeneratedSdkResult, ServiceError>>): Promise<Result<GeneratedSdkResult, ServiceError>>;
|
|
11
12
|
sdkGenerationServiceError(serviceError: ServiceError): void;
|
|
12
|
-
|
|
13
|
+
invalidVersionedDocsDirectory(directory: DirectoryPath): void;
|
|
14
|
+
apiVersionOnlyApplicableWithVersionedBuild(): void;
|
|
13
15
|
versionNotFound(): void;
|
|
14
16
|
selectVersion(versions: string[]): Promise<string | undefined>;
|
|
15
17
|
sdkGenerated(sdk: DirectoryPath): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isCancel, confirm, log, select } from "@clack/prompts";
|
|
2
|
-
import { format as f
|
|
2
|
+
import { format as f } from "../format.js";
|
|
3
3
|
import { withSpinner } from "../prompt.js";
|
|
4
4
|
export class SdkGeneratePrompts {
|
|
5
5
|
async overwriteSdk(directory) {
|
|
@@ -13,32 +13,38 @@ export class SdkGeneratePrompts {
|
|
|
13
13
|
return overwrite;
|
|
14
14
|
}
|
|
15
15
|
sameBuildAndSdkDir(directory) {
|
|
16
|
-
const message = `The ${f.var("src")} and ${f.var("sdk")} directories must be different.
|
|
17
|
-
|
|
16
|
+
const message = `The ${f.var("src")} and ${f.var("sdk")} directories must be different. ` +
|
|
17
|
+
`Current value: ${f.path(directory)}`;
|
|
18
|
+
log.error(message);
|
|
19
|
+
}
|
|
20
|
+
srcDirectoryEmpty(directory) {
|
|
21
|
+
const message = `The ${f.var("src")} directory is either empty or invalid: ${f.path(directory)}`;
|
|
22
|
+
log.error(message);
|
|
18
23
|
}
|
|
19
24
|
specDirectoryEmpty(directory) {
|
|
20
|
-
const message = `The ${f.var(
|
|
21
|
-
|
|
25
|
+
const message = `The ${f.var('spec')} directory is either empty or invalid: ${f.path(directory)}`;
|
|
26
|
+
log.error(message);
|
|
22
27
|
}
|
|
23
28
|
destinationDirNotEmpty() {
|
|
24
29
|
const message = `Please enter a different destination folder or remove the existing files and try again.`;
|
|
25
|
-
|
|
30
|
+
log.error(message);
|
|
26
31
|
}
|
|
27
32
|
generateSDK(fn) {
|
|
28
33
|
return withSpinner("Generating SDK", "SDK generated successfully.", "SDK Generation failed.", fn);
|
|
29
34
|
}
|
|
30
|
-
logGenerationError(error) {
|
|
31
|
-
log.error(error);
|
|
32
|
-
}
|
|
33
35
|
sdkGenerationServiceError(serviceError) {
|
|
34
36
|
log.error(serviceError.errorMessage);
|
|
35
37
|
}
|
|
36
|
-
|
|
37
|
-
const message = `The ${f.var(
|
|
38
|
-
|
|
38
|
+
invalidVersionedDocsDirectory(directory) {
|
|
39
|
+
const message = `The ${f.var("versioned_docs")} directory is either empty or invalid: ${f.path(directory)}`;
|
|
40
|
+
log.error(message);
|
|
41
|
+
}
|
|
42
|
+
apiVersionOnlyApplicableWithVersionedBuild() {
|
|
43
|
+
log.warn(`The ${f.flag("api-version")} is only applicable with a versioned build.`);
|
|
39
44
|
}
|
|
40
45
|
versionNotFound() {
|
|
41
|
-
|
|
46
|
+
const message = `The selected API version is invalid.`;
|
|
47
|
+
log.error(message);
|
|
42
48
|
}
|
|
43
49
|
async selectVersion(versions) {
|
|
44
50
|
const version = await select({
|
|
@@ -51,7 +57,7 @@ export class SdkGeneratePrompts {
|
|
|
51
57
|
return version;
|
|
52
58
|
}
|
|
53
59
|
sdkGenerated(sdk) {
|
|
54
|
-
log.info(`
|
|
60
|
+
log.info(`The generated SDK can be found at ${f.path(sdk)}.`);
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/sdk/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,MAAM,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/prompts/sdk/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
2
|
+
import { Language } from "../../types/sdk/generate.js";
|
|
3
|
+
import { Directory } from "../../types/file/directory.js";
|
|
4
|
+
import { FilePath } from "../../types/file/filePath.js";
|
|
5
|
+
export declare class MergeSourceTreePrompts {
|
|
6
|
+
successfullySkippedChanges(language: Language): void;
|
|
7
|
+
successfullyAppliedChanges(language: Language): void;
|
|
8
|
+
changeTrackingEnabled(language: Language, destinationSourceTreePath: FilePath): void;
|
|
9
|
+
changeTrackingAlreadyEnabled(language: Language): void;
|
|
10
|
+
sdkGenerated(sdk: DirectoryPath): void;
|
|
11
|
+
sdkGeneratedWithSourceTree(sdk: DirectoryPath, sourceTree: FilePath): void;
|
|
12
|
+
startApplyingConflictedChanges(language: Language): void;
|
|
13
|
+
conflictsDetectedInCi(language: Language, directory: Directory): void;
|
|
14
|
+
conflictsDetected(directory: Directory): void;
|
|
15
|
+
resolveNowOrAbandon(): Promise<boolean>;
|
|
16
|
+
openingVsCodeForConflictResolution(language: Language): void;
|
|
17
|
+
openFilesForConflictResolution(language: Language, sdkDir: DirectoryPath): void;
|
|
18
|
+
confirmConflictsResolved(): Promise<"resolved" | "unresolved" | "cancelled">;
|
|
19
|
+
conflictsResolved(language: Language): void;
|
|
20
|
+
mergeAbandoned(language: Language): void;
|
|
21
|
+
directoryStillOpen(directory: DirectoryPath): Promise<void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { isCancel, log, confirm } from "@clack/prompts";
|
|
2
|
+
import { format as f, getTree } from "../format.js";
|
|
3
|
+
import { noteWrapped } from "../prompt.js";
|
|
4
|
+
export class MergeSourceTreePrompts {
|
|
5
|
+
successfullySkippedChanges(language) {
|
|
6
|
+
log.info(`Skipped saved changes for ${f.var(language)} SDK.`);
|
|
7
|
+
}
|
|
8
|
+
successfullyAppliedChanges(language) {
|
|
9
|
+
log.info(`Successfully applied saved changes for ${f.var(language)} SDK.`);
|
|
10
|
+
}
|
|
11
|
+
changeTrackingEnabled(language, destinationSourceTreePath) {
|
|
12
|
+
log.info(`Change tracking is enabled for ${f.var(language)}. The 'sdk-source-tree' has been saved to ${f.path(destinationSourceTreePath)}.`);
|
|
13
|
+
const message = `Customize your SDK, then run:
|
|
14
|
+
'${f.cmdAlt("apimatic", "sdk", "save-changes")} ${f.flag("language", language)}'
|
|
15
|
+
This persists your changes so they reapply on every future generation.`;
|
|
16
|
+
noteWrapped(message, "Next Steps");
|
|
17
|
+
}
|
|
18
|
+
changeTrackingAlreadyEnabled(language) {
|
|
19
|
+
log.warn(`Change tracking is already enabled for ${f.var(language)}. The ${f.flag("track-changes")} flag will be ignored.`);
|
|
20
|
+
}
|
|
21
|
+
sdkGenerated(sdk) {
|
|
22
|
+
log.info(`The generated SDK can be found at ${f.path(sdk)}.`);
|
|
23
|
+
}
|
|
24
|
+
sdkGeneratedWithSourceTree(sdk, sourceTree) {
|
|
25
|
+
log.info(`The generated SDK can be found at ${f.path(sdk)}
|
|
26
|
+
and the 'sdk-source-tree' can be found at ${f.path(sourceTree)}.`);
|
|
27
|
+
}
|
|
28
|
+
startApplyingConflictedChanges(language) {
|
|
29
|
+
log.info(`Applying saved changes for '${f.var(language)}'...`);
|
|
30
|
+
}
|
|
31
|
+
conflictsDetectedInCi(language, directory) {
|
|
32
|
+
log.error(`Merge conflicts found while applying saved changes:
|
|
33
|
+
${getTree(directory.toTreeNode())}`);
|
|
34
|
+
noteWrapped(`Run the command
|
|
35
|
+
'${f.cmdAlt("apimatic", "sdk", "generate")} ${f.flag("language", language)}'
|
|
36
|
+
interactively to review and resolve the conflicts with SDK generation.`, "Next Steps");
|
|
37
|
+
}
|
|
38
|
+
conflictsDetected(directory) {
|
|
39
|
+
log.warn(`Merge conflicts found while applying saved changes:
|
|
40
|
+
${getTree(directory.toTreeNode())}
|
|
41
|
+
Your SDK may not work until all issues are resolved. Conflict markers have been added to the affected files. Resolve each conflict and remove the markers.`);
|
|
42
|
+
}
|
|
43
|
+
async resolveNowOrAbandon() {
|
|
44
|
+
const continueResolving = await confirm({
|
|
45
|
+
message: `Resolve now, or abandon SDK generation?`,
|
|
46
|
+
active: "Resolve now",
|
|
47
|
+
inactive: "Abandon",
|
|
48
|
+
initialValue: true
|
|
49
|
+
});
|
|
50
|
+
if (isCancel(continueResolving)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return continueResolving;
|
|
54
|
+
}
|
|
55
|
+
openingVsCodeForConflictResolution(language) {
|
|
56
|
+
log.info(`Opening ${f.var(language)} SDK in VS Code for conflicts resolution.
|
|
57
|
+
1. Resolve each conflict block.
|
|
58
|
+
2. Save the files.
|
|
59
|
+
3. Close the editor.`);
|
|
60
|
+
}
|
|
61
|
+
openFilesForConflictResolution(language, sdkDir) {
|
|
62
|
+
log.info(`Open ${f.var(language)} SDK at ${f.path(sdkDir)} in your editor for conflicts resolution.
|
|
63
|
+
1. Resolve each conflict block.
|
|
64
|
+
2. Save the files.
|
|
65
|
+
3. Close the editor.`);
|
|
66
|
+
}
|
|
67
|
+
async confirmConflictsResolved() {
|
|
68
|
+
const conflictsResolved = await confirm({
|
|
69
|
+
message: `Have you finished resolving all conflicts?`,
|
|
70
|
+
initialValue: false
|
|
71
|
+
});
|
|
72
|
+
if (isCancel(conflictsResolved)) {
|
|
73
|
+
return "cancelled";
|
|
74
|
+
}
|
|
75
|
+
return conflictsResolved ? "resolved" : "unresolved";
|
|
76
|
+
}
|
|
77
|
+
conflictsResolved(language) {
|
|
78
|
+
log.info(`Saved the current state of ${f.var(language)} SDK as resolved.`);
|
|
79
|
+
}
|
|
80
|
+
mergeAbandoned(language) {
|
|
81
|
+
log.error(`SDK generation has been abandoned. The generated SDK will be discarded.`);
|
|
82
|
+
noteWrapped(`Run the command
|
|
83
|
+
'${f.cmdAlt("apimatic", "sdk", "generate")} ${f.flag("language", language)}'
|
|
84
|
+
to regenerate the SDK and resolve merge conflicts.`, "Next Steps");
|
|
85
|
+
}
|
|
86
|
+
async directoryStillOpen(directory) {
|
|
87
|
+
log.info(`Please close all applications using the directory ${f.path(directory)} to allow cleanup of temporary files.`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=merge-source-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-source-tree.js","sourceRoot":"","sources":["../../../src/prompts/sdk/merge-source-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,sBAAsB;IAC1B,0BAA0B,CAAC,QAAkB;QAClD,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,0BAA0B,CAAC,QAAkB;QAClD,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;IAEM,qBAAqB,CAAC,QAAkB,EAAE,yBAAmC;QAClF,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAE7I,MAAM,OAAO,GAAG;GACjB,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;uEACP,CAAC;QACpE,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAEM,4BAA4B,CAAC,QAAkB;QACpD,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAC9H,CAAC;IAEM,YAAY,CAAC,GAAkB;QACpC,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAEM,0BAA0B,CAAC,GAAkB,EAAE,UAAoB;QACxE,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;8CACf,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;IAEM,8BAA8B,CAAC,QAAkB;QACtD,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,qBAAqB,CAAC,QAAkB,EAAE,SAAoB;QACnE,GAAG,CAAC,KAAK,CAAC;IACV,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnC,WAAW,CAAC;GACb,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;uEACH,EAAE,YAAY,CAAC,CAAC;IACrF,CAAC;IAEM,iBAAiB,CAAC,SAAoB;QAC3C,GAAG,CAAC,IAAI,CAAC;IACT,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;2JACwH,CAAC,CAAC;IAC3J,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC9B,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;YACtC,OAAO,EAAE,yCAAyC;YAClD,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,kCAAkC,CAAC,QAAkB;QAC1D,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;;;uBAGhB,CAAC,CAAC;IACvB,CAAC;IAEM,8BAA8B,CAAC,QAAkB,EAAE,MAAqB;QAC7E,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;uBAGtC,CAAC,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,wBAAwB;QACnC,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;YACtC,OAAO,EAAE,4CAA4C;YACrD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;IACvD,CAAC;IAEM,iBAAiB,CAAC,QAAkB;QACzC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC7E,CAAC;IAEM,cAAc,CAAC,QAAkB;QACtC,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;QACrF,WAAW,CAAC;GACb,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;mDACvB,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,SAAwB;QACtD,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC1H,CAAC;CAEF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Result } from 'neverthrow';
|
|
2
|
+
import { DirectoryPath } from '../../../types/file/directoryPath.js';
|
|
3
|
+
import { ServiceError } from '../../../infrastructure/service-error.js';
|
|
4
|
+
import { PublishingProfileWithLanguagesGroup, PublishingProfileItem, PublishType } from '../../../types/publish-api/publishing-profile-item.js';
|
|
5
|
+
import { PublishingProfile } from '../../../types/publish/publishing-profile.js';
|
|
6
|
+
import { Language } from '../../../types/sdk/generate.js';
|
|
7
|
+
import { SemVersion } from '../../../types/publish/version.js';
|
|
8
|
+
export declare class SdkPublishInteractivePrompts {
|
|
9
|
+
inputWorkingDirectory(defaultDirectory: DirectoryPath, validator: (value: string | undefined) => string | Error | undefined): Promise<DirectoryPath | undefined>;
|
|
10
|
+
noInputDirectoryProvided(): Promise<void>;
|
|
11
|
+
srcDirectoryInvalid(directory: DirectoryPath): void;
|
|
12
|
+
inputSdkDirectory(defaultDirectory: DirectoryPath, validator: (value: string | undefined) => string | Error | undefined): Promise<DirectoryPath | undefined>;
|
|
13
|
+
sdkDirectoryCannotBeSameAsBuildDirectory(): void;
|
|
14
|
+
noSdkDirectoryProvided(): Promise<void>;
|
|
15
|
+
getPublishingProfiles(fn: Promise<Result<PublishingProfileItem[], ServiceError>>): Promise<Result<PublishingProfileItem[], ServiceError>>;
|
|
16
|
+
getPublishingProfilesServiceError(serviceError: ServiceError): void;
|
|
17
|
+
noPublishingProfilesFound(errorMessage: string): void;
|
|
18
|
+
noProfileWithEnabledLanguagesFound(): void;
|
|
19
|
+
selectPublishingProfile(groups: PublishingProfileWithLanguagesGroup[]): Promise<PublishingProfileItem | undefined>;
|
|
20
|
+
noPublishingProfileSelected(): void;
|
|
21
|
+
selectLanguage(publishingProfile: PublishingProfile): Promise<Language | undefined>;
|
|
22
|
+
noLanguageSelected(): void;
|
|
23
|
+
inputVersion(): Promise<SemVersion | undefined>;
|
|
24
|
+
noVersionSpecified(): void;
|
|
25
|
+
publishingSummary(profile: PublishingProfile, language: Language, version: SemVersion, publishType: PublishType[]): void;
|
|
26
|
+
confirmPublishing(): Promise<boolean>;
|
|
27
|
+
publishingCancelled(): void;
|
|
28
|
+
sourceCodeOnlyPublishingNotice(): void;
|
|
29
|
+
sdkPublishingInProgress(publishingLogUrl: string): void;
|
|
30
|
+
}
|