@pipeline-builder/pipeline-manager 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +74 -0
- package/cdk.json +91 -0
- package/config.yml +94 -0
- package/dist/boilerplate.d.ts +3 -0
- package/dist/boilerplate.d.ts.map +1 -0
- package/dist/boilerplate.js +58 -0
- package/dist/cdk.json +91 -0
- package/dist/cli.d.ts +62 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +372 -0
- package/dist/commands/bootstrap.d.ts +11 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +159 -0
- package/dist/commands/create-pipeline.d.ts +12 -0
- package/dist/commands/create-pipeline.d.ts.map +1 -0
- package/dist/commands/create-pipeline.js +291 -0
- package/dist/commands/deploy.d.ts +15 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +167 -0
- package/dist/commands/get-pipeline.d.ts +13 -0
- package/dist/commands/get-pipeline.d.ts.map +1 -0
- package/dist/commands/get-pipeline.js +97 -0
- package/dist/commands/get-plugin.d.ts +13 -0
- package/dist/commands/get-plugin.d.ts.map +1 -0
- package/dist/commands/get-plugin.js +98 -0
- package/dist/commands/list-pipelines.d.ts +20 -0
- package/dist/commands/list-pipelines.d.ts.map +1 -0
- package/dist/commands/list-pipelines.js +172 -0
- package/dist/commands/list-plugins.d.ts +20 -0
- package/dist/commands/list-plugins.d.ts.map +1 -0
- package/dist/commands/list-plugins.js +167 -0
- package/dist/commands/login.d.ts +21 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +179 -0
- package/dist/commands/setup-events.d.ts +15 -0
- package/dist/commands/setup-events.d.ts.map +1 -0
- package/dist/commands/setup-events.js +177 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +89 -0
- package/dist/commands/store-token.d.ts +20 -0
- package/dist/commands/store-token.d.ts.map +1 -0
- package/dist/commands/store-token.js +233 -0
- package/dist/commands/synth.d.ts +21 -0
- package/dist/commands/synth.d.ts.map +1 -0
- package/dist/commands/synth.js +143 -0
- package/dist/commands/upload-plugin.d.ts +21 -0
- package/dist/commands/upload-plugin.d.ts.map +1 -0
- package/dist/commands/upload-plugin.js +311 -0
- package/dist/commands/version.d.ts +12 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +223 -0
- package/dist/config/cli.constants.d.ts +101 -0
- package/dist/config/cli.constants.d.ts.map +1 -0
- package/dist/config/cli.constants.js +165 -0
- package/dist/config.yml +94 -0
- package/dist/templates/events-stack.json +141 -0
- package/dist/types/config.d.ts +44 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/error.d.ts +61 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +39 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +26 -0
- package/dist/types/pipeline.d.ts +144 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +5 -0
- package/dist/types/plugin.d.ts +160 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +5 -0
- package/dist/utils/api-client.d.ts +26 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +160 -0
- package/dist/utils/audit-log.d.ts +8 -0
- package/dist/utils/audit-log.d.ts.map +1 -0
- package/dist/utils/audit-log.js +53 -0
- package/dist/utils/auth-guard.d.ts +16 -0
- package/dist/utils/auth-guard.d.ts.map +1 -0
- package/dist/utils/auth-guard.js +25 -0
- package/dist/utils/aws-secrets.d.ts +21 -0
- package/dist/utils/aws-secrets.d.ts.map +1 -0
- package/dist/utils/aws-secrets.js +74 -0
- package/dist/utils/banner.d.ts +19 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +59 -0
- package/dist/utils/cdk-utils.d.ts +51 -0
- package/dist/utils/cdk-utils.d.ts.map +1 -0
- package/dist/utils/cdk-utils.js +101 -0
- package/dist/utils/command-utils.d.ts +56 -0
- package/dist/utils/command-utils.d.ts.map +1 -0
- package/dist/utils/command-utils.js +138 -0
- package/dist/utils/config-loader.d.ts +27 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +166 -0
- package/dist/utils/error-handler.d.ts +29 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +255 -0
- package/dist/utils/list-command-utils.d.ts +23 -0
- package/dist/utils/list-command-utils.d.ts.map +1 -0
- package/dist/utils/list-command-utils.js +60 -0
- package/dist/utils/output-utils.d.ts +60 -0
- package/dist/utils/output-utils.d.ts.map +1 -0
- package/dist/utils/output-utils.js +320 -0
- package/dist/utils/rate-limiter.d.ts +14 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +73 -0
- package/package.json +144 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/utils/audit-log.ts"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2BjF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.auditLog = auditLog;
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
/**
|
|
13
|
+
* Local audit logger for sensitive CLI operations.
|
|
14
|
+
* Writes timestamped entries to ~/.pipeline-manager/audit.log.
|
|
15
|
+
* Never logs credentials or tokens — only operation metadata.
|
|
16
|
+
*/
|
|
17
|
+
const AUDIT_DIR = path_1.default.join(os_1.default.homedir(), '.pipeline-manager');
|
|
18
|
+
const AUDIT_FILE = path_1.default.join(AUDIT_DIR, 'audit.log');
|
|
19
|
+
const MAX_AUDIT_SIZE = 1024 * 1024; // 1MB — rotate when exceeded
|
|
20
|
+
/**
|
|
21
|
+
* Log a sensitive operation to the local audit file.
|
|
22
|
+
*
|
|
23
|
+
* @param command - The command name (e.g., 'store-token', 'deploy', 'bootstrap')
|
|
24
|
+
* @param details - Non-sensitive metadata about the operation
|
|
25
|
+
*/
|
|
26
|
+
function auditLog(command, details) {
|
|
27
|
+
try {
|
|
28
|
+
if (!fs_1.default.existsSync(AUDIT_DIR)) {
|
|
29
|
+
fs_1.default.mkdirSync(AUDIT_DIR, { recursive: true, mode: 0o700 });
|
|
30
|
+
}
|
|
31
|
+
// Rotate if file is too large
|
|
32
|
+
if (fs_1.default.existsSync(AUDIT_FILE)) {
|
|
33
|
+
const stats = fs_1.default.statSync(AUDIT_FILE);
|
|
34
|
+
if (stats.size > MAX_AUDIT_SIZE) {
|
|
35
|
+
const rotated = `${AUDIT_FILE}.1`;
|
|
36
|
+
if (fs_1.default.existsSync(rotated))
|
|
37
|
+
fs_1.default.unlinkSync(rotated);
|
|
38
|
+
fs_1.default.renameSync(AUDIT_FILE, rotated);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const entry = {
|
|
42
|
+
timestamp: new Date().toISOString(),
|
|
43
|
+
command,
|
|
44
|
+
user: os_1.default.userInfo().username,
|
|
45
|
+
details,
|
|
46
|
+
};
|
|
47
|
+
fs_1.default.appendFileSync(AUDIT_FILE, JSON.stringify(entry) + '\n', { mode: 0o600 });
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Audit logging is best-effort — never block the CLI
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2F1ZGl0LWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUE2QnRDLDRCQTJCQztBQXRERCw0Q0FBb0I7QUFDcEIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUV4Qjs7OztHQUlHO0FBRUgsTUFBTSxTQUFTLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxZQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUMvRCxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNyRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsNkJBQTZCO0FBU2pFOzs7OztHQUtHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLE9BQWUsRUFBRSxPQUFpQztJQUN6RSxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzlCLFlBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsOEJBQThCO1FBQzlCLElBQUksWUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sS0FBSyxHQUFHLFlBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEMsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLGNBQWMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sR0FBRyxHQUFHLFVBQVUsSUFBSSxDQUFDO2dCQUNsQyxJQUFJLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO29CQUFFLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25ELFlBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQWU7WUFDeEIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ25DLE9BQU87WUFDUCxJQUFJLEVBQUUsWUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVE7WUFDNUIsT0FBTztTQUNSLENBQUM7UUFFRixZQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxxREFBcUQ7SUFDdkQsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuLyoqXG4gKiBMb2NhbCBhdWRpdCBsb2dnZXIgZm9yIHNlbnNpdGl2ZSBDTEkgb3BlcmF0aW9ucy5cbiAqIFdyaXRlcyB0aW1lc3RhbXBlZCBlbnRyaWVzIHRvIH4vLnBpcGVsaW5lLW1hbmFnZXIvYXVkaXQubG9nLlxuICogTmV2ZXIgbG9ncyBjcmVkZW50aWFscyBvciB0b2tlbnMg4oCUIG9ubHkgb3BlcmF0aW9uIG1ldGFkYXRhLlxuICovXG5cbmNvbnN0IEFVRElUX0RJUiA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICcucGlwZWxpbmUtbWFuYWdlcicpO1xuY29uc3QgQVVESVRfRklMRSA9IHBhdGguam9pbihBVURJVF9ESVIsICdhdWRpdC5sb2cnKTtcbmNvbnN0IE1BWF9BVURJVF9TSVpFID0gMTAyNCAqIDEwMjQ7IC8vIDFNQiDigJQgcm90YXRlIHdoZW4gZXhjZWVkZWRcblxuaW50ZXJmYWNlIEF1ZGl0RW50cnkge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgY29tbWFuZDogc3RyaW5nO1xuICB1c2VyPzogc3RyaW5nO1xuICBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogTG9nIGEgc2Vuc2l0aXZlIG9wZXJhdGlvbiB0byB0aGUgbG9jYWwgYXVkaXQgZmlsZS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIG5hbWUgKGUuZy4sICdzdG9yZS10b2tlbicsICdkZXBsb3knLCAnYm9vdHN0cmFwJylcbiAqIEBwYXJhbSBkZXRhaWxzIC0gTm9uLXNlbnNpdGl2ZSBtZXRhZGF0YSBhYm91dCB0aGUgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdExvZyhjb21tYW5kOiBzdHJpbmcsIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICB0cnkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhBVURJVF9ESVIpKSB7XG4gICAgICBmcy5ta2RpclN5bmMoQVVESVRfRElSLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgbW9kZTogMG83MDAgfSk7XG4gICAgfVxuXG4gICAgLy8gUm90YXRlIGlmIGZpbGUgaXMgdG9vIGxhcmdlXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoQVVESVRfRklMRSkpIHtcbiAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoQVVESVRfRklMRSk7XG4gICAgICBpZiAoc3RhdHMuc2l6ZSA+IE1BWF9BVURJVF9TSVpFKSB7XG4gICAgICAgIGNvbnN0IHJvdGF0ZWQgPSBgJHtBVURJVF9GSUxFfS4xYDtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocm90YXRlZCkpIGZzLnVubGlua1N5bmMocm90YXRlZCk7XG4gICAgICAgIGZzLnJlbmFtZVN5bmMoQVVESVRfRklMRSwgcm90YXRlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IEF1ZGl0RW50cnkgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICB1c2VyOiBvcy51c2VySW5mbygpLnVzZXJuYW1lLFxuICAgICAgZGV0YWlscyxcbiAgICB9O1xuXG4gICAgZnMuYXBwZW5kRmlsZVN5bmMoQVVESVRfRklMRSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpICsgJ1xcbicsIHsgbW9kZTogMG82MDAgfSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEF1ZGl0IGxvZ2dpbmcgaXMgYmVzdC1lZmZvcnQg4oCUIG5ldmVyIGJsb2NrIHRoZSBDTElcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface TokenPayload {
|
|
2
|
+
role?: string;
|
|
3
|
+
isAdmin?: boolean;
|
|
4
|
+
sub?: string;
|
|
5
|
+
organizationId?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Decode a JWT token payload without signature verification.
|
|
9
|
+
*
|
|
10
|
+
* SECURITY: NO signature verification. The decoded payload MUST NOT be used
|
|
11
|
+
* for authorization decisions — the server validates the token on every API
|
|
12
|
+
* call. Use only for advisory UX hints.
|
|
13
|
+
*/
|
|
14
|
+
export declare function decodeTokenPayload(token: string): TokenPayload | null;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=auth-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-guard.d.ts","sourceRoot":"","sources":["../../src/utils/auth-guard.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CASrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.decodeTokenPayload = decodeTokenPayload;
|
|
6
|
+
/**
|
|
7
|
+
* Decode a JWT token payload without signature verification.
|
|
8
|
+
*
|
|
9
|
+
* SECURITY: NO signature verification. The decoded payload MUST NOT be used
|
|
10
|
+
* for authorization decisions — the server validates the token on every API
|
|
11
|
+
* call. Use only for advisory UX hints.
|
|
12
|
+
*/
|
|
13
|
+
function decodeTokenPayload(token) {
|
|
14
|
+
try {
|
|
15
|
+
const parts = token.split('.');
|
|
16
|
+
if (parts.length !== 3 || !parts[1])
|
|
17
|
+
return null;
|
|
18
|
+
const payload = Buffer.from(parts[1], 'base64url').toString('utf-8');
|
|
19
|
+
return JSON.parse(payload);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hdXRoLWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOztBQWdCdEMsZ0RBU0M7QUFoQkQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsS0FBYTtJQUM5QyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWlCLENBQUM7SUFDN0MsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW50ZXJmYWNlIFRva2VuUGF5bG9hZCB7XG4gIHJvbGU/OiBzdHJpbmc7XG4gIGlzQWRtaW4/OiBib29sZWFuO1xuICBzdWI/OiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbklkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlY29kZSBhIEpXVCB0b2tlbiBwYXlsb2FkIHdpdGhvdXQgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBTRUNVUklUWTogTk8gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4gVGhlIGRlY29kZWQgcGF5bG9hZCBNVVNUIE5PVCBiZSB1c2VkXG4gKiBmb3IgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnMg4oCUIHRoZSBzZXJ2ZXIgdmFsaWRhdGVzIHRoZSB0b2tlbiBvbiBldmVyeSBBUElcbiAqIGNhbGwuIFVzZSBvbmx5IGZvciBhZHZpc29yeSBVWCBoaW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVRva2VuUGF5bG9hZCh0b2tlbjogc3RyaW5nKTogVG9rZW5QYXlsb2FkIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdCgnLicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMgfHwgIXBhcnRzWzFdKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwYXlsb2FkID0gQnVmZmVyLmZyb20ocGFydHNbMV0sICdiYXNlNjR1cmwnKS50b1N0cmluZygndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShwYXlsb2FkKSBhcyBUb2tlblBheWxvYWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for Secrets Manager operations.
|
|
3
|
+
*/
|
|
4
|
+
export interface SecretsOptions {
|
|
5
|
+
region?: string;
|
|
6
|
+
profile?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Create or update a secret in AWS Secrets Manager.
|
|
10
|
+
* Tries create first; if it exists, updates the value and description.
|
|
11
|
+
*/
|
|
12
|
+
export declare function upsertSecret(secretName: string, secretValue: string, description: string, options: SecretsOptions): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Get the ARN of a secret.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getSecretArn(secretName: string, options: SecretsOptions): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Get the value of a secret.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getSecretValue(secretName: string, options: SecretsOptions): Promise<string>;
|
|
21
|
+
//# sourceMappingURL=aws-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-secrets.d.ts","sourceRoot":"","sources":["../../src/utils/aws-secrets.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,CASjB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.upsertSecret = upsertSecret;
|
|
6
|
+
exports.getSecretArn = getSecretArn;
|
|
7
|
+
exports.getSecretValue = getSecretValue;
|
|
8
|
+
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
9
|
+
const output_utils_1 = require("./output-utils");
|
|
10
|
+
function createClient(options) {
|
|
11
|
+
return new client_secrets_manager_1.SecretsManagerClient({
|
|
12
|
+
region: options.region || process.env.AWS_REGION || process.env.CDK_DEFAULT_REGION,
|
|
13
|
+
...(options.profile && {
|
|
14
|
+
credentials: undefined, // profile is handled by AWS SDK credential chain
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create or update a secret in AWS Secrets Manager.
|
|
20
|
+
* Tries create first; if it exists, updates the value and description.
|
|
21
|
+
*/
|
|
22
|
+
async function upsertSecret(secretName, secretValue, description, options) {
|
|
23
|
+
const client = createClient(options);
|
|
24
|
+
try {
|
|
25
|
+
await client.send(new client_secrets_manager_1.CreateSecretCommand({
|
|
26
|
+
Name: secretName,
|
|
27
|
+
Description: description,
|
|
28
|
+
SecretString: secretValue,
|
|
29
|
+
}));
|
|
30
|
+
(0, output_utils_1.printSuccess)('Secret created in Secrets Manager');
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const errMsg = error instanceof Error ? error.message : '';
|
|
34
|
+
if (errMsg.includes('ResourceExistsException') || errMsg.includes('already exists')) {
|
|
35
|
+
(0, output_utils_1.printInfo)('Secret already exists, updating...');
|
|
36
|
+
await client.send(new client_secrets_manager_1.PutSecretValueCommand({
|
|
37
|
+
SecretId: secretName,
|
|
38
|
+
SecretString: secretValue,
|
|
39
|
+
}));
|
|
40
|
+
await client.send(new client_secrets_manager_1.UpdateSecretCommand({
|
|
41
|
+
SecretId: secretName,
|
|
42
|
+
Description: description,
|
|
43
|
+
}));
|
|
44
|
+
(0, output_utils_1.printSuccess)('Secret updated in Secrets Manager');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the ARN of a secret.
|
|
53
|
+
*/
|
|
54
|
+
async function getSecretArn(secretName, options) {
|
|
55
|
+
const client = createClient(options);
|
|
56
|
+
const response = await client.send(new client_secrets_manager_1.DescribeSecretCommand({
|
|
57
|
+
SecretId: secretName,
|
|
58
|
+
}));
|
|
59
|
+
return response.ARN ?? '(unknown)';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the value of a secret.
|
|
63
|
+
*/
|
|
64
|
+
async function getSecretValue(secretName, options) {
|
|
65
|
+
const client = createClient(options);
|
|
66
|
+
const response = await client.send(new client_secrets_manager_1.GetSecretValueCommand({
|
|
67
|
+
SecretId: secretName,
|
|
68
|
+
}));
|
|
69
|
+
if (!response.SecretString) {
|
|
70
|
+
throw new Error(`Secret "${secretName}" is empty`);
|
|
71
|
+
}
|
|
72
|
+
return response.SecretString;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNlY3JldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYXdzLXNlY3JldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBaUN0QyxvQ0FnQ0M7QUFLRCxvQ0FTQztBQUtELHdDQVlDO0FBOUZELDRFQU95QztBQUN6QyxpREFBeUQ7QUFVekQsU0FBUyxZQUFZLENBQUMsT0FBdUI7SUFDM0MsT0FBTyxJQUFJLDZDQUFvQixDQUFDO1FBQzlCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO1FBQ2xGLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJO1lBQ3JCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaURBQWlEO1NBQzFFLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLFlBQVksQ0FDaEMsVUFBa0IsRUFDbEIsV0FBbUIsRUFDbkIsV0FBbUIsRUFDbkIsT0FBdUI7SUFFdkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLDRDQUFtQixDQUFDO1lBQ3hDLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFlBQVksRUFBRSxXQUFXO1NBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBQSwyQkFBWSxFQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLE1BQU0sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDcEYsSUFBQSx3QkFBUyxFQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDaEQsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksOENBQXFCLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixZQUFZLEVBQUUsV0FBVzthQUMxQixDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLDRDQUFtQixDQUFDO2dCQUN4QyxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsV0FBVyxFQUFFLFdBQVc7YUFDekIsQ0FBQyxDQUFDLENBQUM7WUFDSixJQUFBLDJCQUFZLEVBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsWUFBWSxDQUNoQyxVQUFrQixFQUNsQixPQUF1QjtJQUV2QixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksOENBQXFCLENBQUM7UUFDM0QsUUFBUSxFQUFFLFVBQVU7S0FDckIsQ0FBQyxDQUFDLENBQUM7SUFDSixPQUFPLFFBQVEsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDO0FBQ3JDLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxjQUFjLENBQ2xDLFVBQWtCLEVBQ2xCLE9BQXVCO0lBRXZCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSw4Q0FBcUIsQ0FBQztRQUMzRCxRQUFRLEVBQUUsVUFBVTtLQUNyQixDQUFDLENBQUMsQ0FBQztJQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFVBQVUsWUFBWSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7XG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxuICBDcmVhdGVTZWNyZXRDb21tYW5kLFxuICBQdXRTZWNyZXRWYWx1ZUNvbW1hbmQsXG4gIFVwZGF0ZVNlY3JldENvbW1hbmQsXG4gIERlc2NyaWJlU2VjcmV0Q29tbWFuZCxcbiAgR2V0U2VjcmV0VmFsdWVDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFNlY3JldHMgTWFuYWdlciBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldHNPcHRpb25zIHtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDbGllbnQob3B0aW9uczogU2VjcmV0c09wdGlvbnMpOiBTZWNyZXRzTWFuYWdlckNsaWVudCB7XG4gIHJldHVybiBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQoe1xuICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG4gICAgLi4uKG9wdGlvbnMucHJvZmlsZSAmJiB7XG4gICAgICBjcmVkZW50aWFsczogdW5kZWZpbmVkLCAvLyBwcm9maWxlIGlzIGhhbmRsZWQgYnkgQVdTIFNESyBjcmVkZW50aWFsIGNoYWluXG4gICAgfSksXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBvciB1cGRhdGUgYSBzZWNyZXQgaW4gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqIFRyaWVzIGNyZWF0ZSBmaXJzdDsgaWYgaXQgZXhpc3RzLCB1cGRhdGVzIHRoZSB2YWx1ZSBhbmQgZGVzY3JpcHRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cHNlcnRTZWNyZXQoXG4gIHNlY3JldE5hbWU6IHN0cmluZyxcbiAgc2VjcmV0VmFsdWU6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgb3B0aW9uczogU2VjcmV0c09wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2xpZW50ID0gY3JlYXRlQ2xpZW50KG9wdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgY2xpZW50LnNlbmQobmV3IENyZWF0ZVNlY3JldENvbW1hbmQoe1xuICAgICAgTmFtZTogc2VjcmV0TmFtZSxcbiAgICAgIERlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIFNlY3JldFN0cmluZzogc2VjcmV0VmFsdWUsXG4gICAgfSkpO1xuICAgIHByaW50U3VjY2VzcygnU2VjcmV0IGNyZWF0ZWQgaW4gU2VjcmV0cyBNYW5hZ2VyJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgZXJyTXNnID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcbiAgICBpZiAoZXJyTXNnLmluY2x1ZGVzKCdSZXNvdXJjZUV4aXN0c0V4Y2VwdGlvbicpIHx8IGVyck1zZy5pbmNsdWRlcygnYWxyZWFkeSBleGlzdHMnKSkge1xuICAgICAgcHJpbnRJbmZvKCdTZWNyZXQgYWxyZWFkeSBleGlzdHMsIHVwZGF0aW5nLi4uJyk7XG4gICAgICBhd2FpdCBjbGllbnQuc2VuZChuZXcgUHV0U2VjcmV0VmFsdWVDb21tYW5kKHtcbiAgICAgICAgU2VjcmV0SWQ6IHNlY3JldE5hbWUsXG4gICAgICAgIFNlY3JldFN0cmluZzogc2VjcmV0VmFsdWUsXG4gICAgICB9KSk7XG4gICAgICBhd2FpdCBjbGllbnQuc2VuZChuZXcgVXBkYXRlU2VjcmV0Q29tbWFuZCh7XG4gICAgICAgIFNlY3JldElkOiBzZWNyZXROYW1lLFxuICAgICAgICBEZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICB9KSk7XG4gICAgICBwcmludFN1Y2Nlc3MoJ1NlY3JldCB1cGRhdGVkIGluIFNlY3JldHMgTWFuYWdlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIEFSTiBvZiBhIHNlY3JldC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNlY3JldEFybihcbiAgc2VjcmV0TmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBTZWNyZXRzT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUNsaWVudChvcHRpb25zKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTZWNyZXRDb21tYW5kKHtcbiAgICBTZWNyZXRJZDogc2VjcmV0TmFtZSxcbiAgfSkpO1xuICByZXR1cm4gcmVzcG9uc2UuQVJOID8/ICcodW5rbm93biknO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgb2YgYSBzZWNyZXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZWNyZXRWYWx1ZShcbiAgc2VjcmV0TmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBTZWNyZXRzT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUNsaWVudChvcHRpb25zKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHtcbiAgICBTZWNyZXRJZDogc2VjcmV0TmFtZSxcbiAgfSkpO1xuICBpZiAoIXJlc3BvbnNlLlNlY3JldFN0cmluZykge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2VjcmV0IFwiJHtzZWNyZXROYW1lfVwiIGlzIGVtcHR5YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLlNlY3JldFN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Banner display options
|
|
3
|
+
*/
|
|
4
|
+
export interface BannerOptions {
|
|
5
|
+
showDescription?: boolean;
|
|
6
|
+
minimal?: boolean;
|
|
7
|
+
message?: string;
|
|
8
|
+
showTimestamp?: boolean;
|
|
9
|
+
showExecutionId?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Display CLI banner with application info
|
|
13
|
+
*/
|
|
14
|
+
export declare function banner(options?: BannerOptions): void;
|
|
15
|
+
/**
|
|
16
|
+
* Display a minimal banner (name and version only)
|
|
17
|
+
*/
|
|
18
|
+
export declare function miniBanner(): void;
|
|
19
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,IAAI,CA8CxD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAMjC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.banner = banner;
|
|
9
|
+
exports.miniBanner = miniBanner;
|
|
10
|
+
const figlet_1 = __importDefault(require("figlet"));
|
|
11
|
+
const picocolors_1 = __importDefault(require("picocolors"));
|
|
12
|
+
const cli_constants_1 = require("../config/cli.constants");
|
|
13
|
+
const { bold, green, cyan, dim } = picocolors_1.default;
|
|
14
|
+
/**
|
|
15
|
+
* Display CLI banner with application info
|
|
16
|
+
*/
|
|
17
|
+
function banner(options = {}) {
|
|
18
|
+
const { showDescription = true, minimal = false, message, showTimestamp = false, showExecutionId = false, } = options;
|
|
19
|
+
if (minimal) {
|
|
20
|
+
console.log(green(bold(`[${cli_constants_1.APP_NAME.toUpperCase()}]`)), cyan(`v${cli_constants_1.APP_VERSION}`));
|
|
21
|
+
if (message)
|
|
22
|
+
console.log(dim(message));
|
|
23
|
+
if (showExecutionId)
|
|
24
|
+
console.log(dim(`Execution ID: ${(0, cli_constants_1.generateExecutionId)()}`));
|
|
25
|
+
console.log('');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Full banner with ASCII art
|
|
29
|
+
try {
|
|
30
|
+
const asciiArt = figlet_1.default.textSync('Pipeline Manager', cli_constants_1.BANNER_OPTIONS);
|
|
31
|
+
console.log(green(asciiArt));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
const width = cli_constants_1.BANNER_OPTIONS.getWidth();
|
|
35
|
+
console.log(green(bold('═'.repeat(width))));
|
|
36
|
+
console.log(green(bold(` ${cli_constants_1.APP_NAME.toUpperCase()}`)));
|
|
37
|
+
console.log(green(bold('═'.repeat(width))));
|
|
38
|
+
}
|
|
39
|
+
console.log(green(bold(`[${cli_constants_1.APP_NAME.toUpperCase()}]`)), cyan(`v${cli_constants_1.APP_VERSION}`));
|
|
40
|
+
if (message) {
|
|
41
|
+
console.log(dim(message));
|
|
42
|
+
}
|
|
43
|
+
else if (showDescription) {
|
|
44
|
+
console.log(dim(cli_constants_1.APP_DESCRIPTION));
|
|
45
|
+
}
|
|
46
|
+
if (showExecutionId)
|
|
47
|
+
console.log(dim(`Execution ID: ${(0, cli_constants_1.generateExecutionId)()}`));
|
|
48
|
+
if (showTimestamp)
|
|
49
|
+
console.log(dim(`Started: ${new Date().toLocaleString()}`));
|
|
50
|
+
console.log('');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Display a minimal banner (name and version only)
|
|
54
|
+
*/
|
|
55
|
+
function miniBanner() {
|
|
56
|
+
console.log(green(bold(`[${cli_constants_1.APP_NAME.toUpperCase()}]`)), cyan(`v${cli_constants_1.APP_VERSION}`));
|
|
57
|
+
console.log('');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Jhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUE0QnRDLHdCQThDQztBQUtELGdDQU1DO0FBbkZELG9EQUE0QjtBQUM1Qiw0REFBOEI7QUFDOUIsMkRBTWlDO0FBRWpDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxvQkFBSSxDQUFDO0FBYXhDOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLFVBQXlCLEVBQUU7SUFDaEQsTUFBTSxFQUNKLGVBQWUsR0FBRyxJQUFJLEVBQ3RCLE9BQU8sR0FBRyxLQUFLLEVBQ2YsT0FBTyxFQUNQLGFBQWEsR0FBRyxLQUFLLEVBQ3JCLGVBQWUsR0FBRyxLQUFLLEdBQ3hCLEdBQUcsT0FBTyxDQUFDO0lBRVosSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLHdCQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQzFDLElBQUksQ0FBQyxJQUFJLDJCQUFXLEVBQUUsQ0FBQyxDQUN4QixDQUFDO1FBQ0YsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLGVBQWU7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBQSxtQ0FBbUIsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsT0FBTztJQUNULENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsOEJBQWMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sS0FBSyxHQUFHLDhCQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssd0JBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSx3QkFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUMxQyxJQUFJLENBQUMsSUFBSSwyQkFBVyxFQUFFLENBQUMsQ0FDeEIsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7U0FBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLCtCQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBQSxtQ0FBbUIsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksYUFBYTtRQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUvRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFVBQVU7SUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksd0JBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDMUMsSUFBSSxDQUFDLElBQUksMkJBQVcsRUFBRSxDQUFDLENBQ3hCLENBQUM7SUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGZpZ2xldCBmcm9tICdmaWdsZXQnO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQge1xuICBBUFBfREVTQ1JJUFRJT04sXG4gIEFQUF9OQU1FLFxuICBBUFBfVkVSU0lPTixcbiAgQkFOTkVSX09QVElPTlMsXG4gIGdlbmVyYXRlRXhlY3V0aW9uSWQsXG59IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzJztcblxuY29uc3QgeyBib2xkLCBncmVlbiwgY3lhbiwgZGltIH0gPSBwaWNvO1xuXG4vKipcbiAqIEJhbm5lciBkaXNwbGF5IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYW5uZXJPcHRpb25zIHtcbiAgc2hvd0Rlc2NyaXB0aW9uPzogYm9vbGVhbjtcbiAgbWluaW1hbD86IGJvb2xlYW47XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNob3dUaW1lc3RhbXA/OiBib29sZWFuO1xuICBzaG93RXhlY3V0aW9uSWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpc3BsYXkgQ0xJIGJhbm5lciB3aXRoIGFwcGxpY2F0aW9uIGluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhbm5lcihvcHRpb25zOiBCYW5uZXJPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIHNob3dEZXNjcmlwdGlvbiA9IHRydWUsXG4gICAgbWluaW1hbCA9IGZhbHNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc2hvd1RpbWVzdGFtcCA9IGZhbHNlLFxuICAgIHNob3dFeGVjdXRpb25JZCA9IGZhbHNlLFxuICB9ID0gb3B0aW9ucztcblxuICBpZiAobWluaW1hbCkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgZ3JlZW4oYm9sZChgWyR7QVBQX05BTUUudG9VcHBlckNhc2UoKX1dYCkpLFxuICAgICAgY3lhbihgdiR7QVBQX1ZFUlNJT059YCksXG4gICAgKTtcbiAgICBpZiAobWVzc2FnZSkgY29uc29sZS5sb2coZGltKG1lc3NhZ2UpKTtcbiAgICBpZiAoc2hvd0V4ZWN1dGlvbklkKSBjb25zb2xlLmxvZyhkaW0oYEV4ZWN1dGlvbiBJRDogJHtnZW5lcmF0ZUV4ZWN1dGlvbklkKCl9YCkpO1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGdWxsIGJhbm5lciB3aXRoIEFTQ0lJIGFydFxuICB0cnkge1xuICAgIGNvbnN0IGFzY2lpQXJ0ID0gZmlnbGV0LnRleHRTeW5jKCdQaXBlbGluZSBNYW5hZ2VyJywgQkFOTkVSX09QVElPTlMpO1xuICAgIGNvbnNvbGUubG9nKGdyZWVuKGFzY2lpQXJ0KSk7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnN0IHdpZHRoID0gQkFOTkVSX09QVElPTlMuZ2V0V2lkdGgoKTtcbiAgICBjb25zb2xlLmxvZyhncmVlbihib2xkKCfilZAnLnJlcGVhdCh3aWR0aCkpKSk7XG4gICAgY29uc29sZS5sb2coZ3JlZW4oYm9sZChgICAke0FQUF9OQU1FLnRvVXBwZXJDYXNlKCl9YCkpKTtcbiAgICBjb25zb2xlLmxvZyhncmVlbihib2xkKCfilZAnLnJlcGVhdCh3aWR0aCkpKSk7XG4gIH1cblxuICBjb25zb2xlLmxvZyhcbiAgICBncmVlbihib2xkKGBbJHtBUFBfTkFNRS50b1VwcGVyQ2FzZSgpfV1gKSksXG4gICAgY3lhbihgdiR7QVBQX1ZFUlNJT059YCksXG4gICk7XG5cbiAgaWYgKG1lc3NhZ2UpIHtcbiAgICBjb25zb2xlLmxvZyhkaW0obWVzc2FnZSkpO1xuICB9IGVsc2UgaWYgKHNob3dEZXNjcmlwdGlvbikge1xuICAgIGNvbnNvbGUubG9nKGRpbShBUFBfREVTQ1JJUFRJT04pKTtcbiAgfVxuXG4gIGlmIChzaG93RXhlY3V0aW9uSWQpIGNvbnNvbGUubG9nKGRpbShgRXhlY3V0aW9uIElEOiAke2dlbmVyYXRlRXhlY3V0aW9uSWQoKX1gKSk7XG4gIGlmIChzaG93VGltZXN0YW1wKSBjb25zb2xlLmxvZyhkaW0oYFN0YXJ0ZWQ6ICR7bmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpfWApKTtcblxuICBjb25zb2xlLmxvZygnJyk7XG59XG5cbi8qKlxuICogRGlzcGxheSBhIG1pbmltYWwgYmFubmVyIChuYW1lIGFuZCB2ZXJzaW9uIG9ubHkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaW5pQmFubmVyKCk6IHZvaWQge1xuICBjb25zb2xlLmxvZyhcbiAgICBncmVlbihib2xkKGBbJHtBUFBfTkFNRS50b1VwcGVyQ2FzZSgpfV1gKSksXG4gICAgY3lhbihgdiR7QVBQX1ZFUlNJT059YCksXG4gICk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path to dist/boilerplate.js. tsc emits commands at dist/commands/, so
|
|
3
|
+
* boilerplate is one level up.
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolveBoilerplatePath(callerDir: string): string;
|
|
6
|
+
export interface CdkInfo {
|
|
7
|
+
available: boolean;
|
|
8
|
+
version: string | null;
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Checks whether the AWS CDK CLI is installed and returns its version.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getCdkInfo(): CdkInfo;
|
|
15
|
+
/**
|
|
16
|
+
* Checks whether the AWS CDK CLI is installed and accessible on the PATH.
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkCdkAvailable(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Asserts that the AWS CDK CLI is installed; throws with a user-friendly
|
|
21
|
+
* message + install hint when it isn't. Use at the top of any command that
|
|
22
|
+
* shells out to `cdk`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ensureCdkAvailable(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Options for executing a CDK shell command.
|
|
27
|
+
*/
|
|
28
|
+
export interface CdkShellOptions {
|
|
29
|
+
/** When `true`, prints the error to stderr on failure. */
|
|
30
|
+
debug?: boolean;
|
|
31
|
+
/** When `true`, inherits stdio so output streams to the terminal. Defaults to `true`. */
|
|
32
|
+
showOutput?: boolean;
|
|
33
|
+
/** Additional environment variables to inject. */
|
|
34
|
+
env?: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Result of a CDK shell command execution.
|
|
38
|
+
*/
|
|
39
|
+
export interface CdkShellResult {
|
|
40
|
+
success: boolean;
|
|
41
|
+
duration: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Executes a CDK CLI command as a child process.
|
|
45
|
+
*
|
|
46
|
+
* @param command - The full CDK CLI command string (e.g., `cdk bootstrap ...`).
|
|
47
|
+
* @param options - Optional execution settings.
|
|
48
|
+
* @returns An object with `success` and `duration` in ms.
|
|
49
|
+
*/
|
|
50
|
+
export declare function executeCdkShellCommand(command: string, options?: CdkShellOptions): CdkShellResult;
|
|
51
|
+
//# sourceMappingURL=cdk-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk-utils.d.ts","sourceRoot":"","sources":["../../src/utils/cdk-utils.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAOpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,cAAc,CA2ChB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveBoilerplatePath = resolveBoilerplatePath;
|
|
9
|
+
exports.getCdkInfo = getCdkInfo;
|
|
10
|
+
exports.checkCdkAvailable = checkCdkAvailable;
|
|
11
|
+
exports.ensureCdkAvailable = ensureCdkAvailable;
|
|
12
|
+
exports.executeCdkShellCommand = executeCdkShellCommand;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
15
|
+
const output_utils_1 = require("./output-utils");
|
|
16
|
+
/**
|
|
17
|
+
* Path to dist/boilerplate.js. tsc emits commands at dist/commands/, so
|
|
18
|
+
* boilerplate is one level up.
|
|
19
|
+
*/
|
|
20
|
+
function resolveBoilerplatePath(callerDir) {
|
|
21
|
+
return path_1.default.join(callerDir, '..', 'boilerplate.js');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Checks whether the AWS CDK CLI is installed and returns its version.
|
|
25
|
+
*/
|
|
26
|
+
function getCdkInfo() {
|
|
27
|
+
try {
|
|
28
|
+
const output = (0, child_process_1.execSync)('cdk --version', { encoding: 'utf-8', stdio: 'pipe' });
|
|
29
|
+
return { available: true, version: output.trim() };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return { available: false, version: null, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Checks whether the AWS CDK CLI is installed and accessible on the PATH.
|
|
37
|
+
*/
|
|
38
|
+
function checkCdkAvailable() {
|
|
39
|
+
return getCdkInfo().available;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Asserts that the AWS CDK CLI is installed; throws with a user-friendly
|
|
43
|
+
* message + install hint when it isn't. Use at the top of any command that
|
|
44
|
+
* shells out to `cdk`.
|
|
45
|
+
*/
|
|
46
|
+
function ensureCdkAvailable() {
|
|
47
|
+
if (checkCdkAvailable())
|
|
48
|
+
return;
|
|
49
|
+
(0, output_utils_1.printError)('AWS CDK is not installed or not accessible');
|
|
50
|
+
console.log('Install CDK with: npm install -g aws-cdk');
|
|
51
|
+
throw new Error('AWS CDK not found');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Executes a CDK CLI command as a child process.
|
|
55
|
+
*
|
|
56
|
+
* @param command - The full CDK CLI command string (e.g., `cdk bootstrap ...`).
|
|
57
|
+
* @param options - Optional execution settings.
|
|
58
|
+
* @returns An object with `success` and `duration` in ms.
|
|
59
|
+
*/
|
|
60
|
+
function executeCdkShellCommand(command, options = {}) {
|
|
61
|
+
const { debug = false, showOutput = true, env: extraEnv } = options;
|
|
62
|
+
const startTime = Date.now();
|
|
63
|
+
try {
|
|
64
|
+
const env = {
|
|
65
|
+
...process.env,
|
|
66
|
+
...extraEnv,
|
|
67
|
+
};
|
|
68
|
+
(0, child_process_1.execSync)(command, {
|
|
69
|
+
stdio: showOutput ? ['inherit', 'inherit', 'pipe'] : 'pipe',
|
|
70
|
+
env,
|
|
71
|
+
});
|
|
72
|
+
const duration = Date.now() - startTime;
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
duration,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
const duration = Date.now() - startTime;
|
|
80
|
+
// Extract stderr/stdout from execSync error when available
|
|
81
|
+
if (error && typeof error === 'object' && 'stderr' in error) {
|
|
82
|
+
const execError = error;
|
|
83
|
+
const stderr = execError.stderr?.toString().trim();
|
|
84
|
+
const stdout = execError.stdout?.toString().trim();
|
|
85
|
+
console.error('');
|
|
86
|
+
console.error('CDK deployment failed:');
|
|
87
|
+
if (stderr)
|
|
88
|
+
console.error(stderr);
|
|
89
|
+
if (stdout)
|
|
90
|
+
console.error(stdout);
|
|
91
|
+
if (execError.status !== undefined) {
|
|
92
|
+
console.error(`Exit code: ${execError.status} (after ${duration}ms)`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (debug) {
|
|
96
|
+
console.error('CDK execution failed:', error);
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUFVdEMsd0RBRUM7QUFXRCxnQ0FPQztBQUtELDhDQUVDO0FBT0QsZ0RBS0M7QUE2QkQsd0RBOENDO0FBMUhELGlEQUF5QztBQUN6QyxnREFBd0I7QUFDeEIsaURBQTRDO0FBRTVDOzs7R0FHRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLFNBQWlCO0lBQ3RELE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDdEQsQ0FBQztBQVFEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVTtJQUN4QixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHdCQUFRLEVBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5RyxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCO0lBQy9CLE9BQU8sVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isa0JBQWtCO0lBQ2hDLElBQUksaUJBQWlCLEVBQUU7UUFBRSxPQUFPO0lBQ2hDLElBQUEseUJBQVUsRUFBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDdkMsQ0FBQztBQXNCRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FDcEMsT0FBZSxFQUNmLFVBQTJCLEVBQUU7SUFFN0IsTUFBTSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3BFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU3QixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRztZQUNWLEdBQUcsT0FBTyxDQUFDLEdBQUc7WUFDZCxHQUFHLFFBQVE7U0FDWixDQUFDO1FBRUYsSUFBQSx3QkFBUSxFQUFDLE9BQU8sRUFBRTtZQUNoQixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDM0QsR0FBRztTQUNKLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFeEMsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFeEMsMkRBQTJEO1FBQzNELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUQsTUFBTSxTQUFTLEdBQUcsS0FBZ0YsQ0FBQztZQUNuRyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25ELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFbkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDeEMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsU0FBUyxDQUFDLE1BQU0sV0FBVyxRQUFRLEtBQUssQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuL291dHB1dC11dGlscyc7XG5cbi8qKlxuICogUGF0aCB0byBkaXN0L2JvaWxlcnBsYXRlLmpzLiB0c2MgZW1pdHMgY29tbWFuZHMgYXQgZGlzdC9jb21tYW5kcy8sIHNvXG4gKiBib2lsZXJwbGF0ZSBpcyBvbmUgbGV2ZWwgdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9pbGVycGxhdGVQYXRoKGNhbGxlckRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihjYWxsZXJEaXIsICcuLicsICdib2lsZXJwbGF0ZS5qcycpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0luZm8ge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQgYW5kIHJldHVybnMgaXRzIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZGtJbmZvKCk6IENka0luZm8ge1xuICB0cnkge1xuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKCdjZGsgLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3RkaW86ICdwaXBlJyB9KTtcbiAgICByZXR1cm4geyBhdmFpbGFibGU6IHRydWUsIHZlcnNpb246IG91dHB1dC50cmltKCkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBhdmFpbGFibGU6IGZhbHNlLCB2ZXJzaW9uOiBudWxsLCBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicgfTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQgYW5kIGFjY2Vzc2libGUgb24gdGhlIFBBVEguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0Nka0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldENka0luZm8oKS5hdmFpbGFibGU7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQ7IHRocm93cyB3aXRoIGEgdXNlci1mcmllbmRseVxuICogbWVzc2FnZSArIGluc3RhbGwgaGludCB3aGVuIGl0IGlzbid0LiBVc2UgYXQgdGhlIHRvcCBvZiBhbnkgY29tbWFuZCB0aGF0XG4gKiBzaGVsbHMgb3V0IHRvIGBjZGtgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQ2RrQXZhaWxhYmxlKCk6IHZvaWQge1xuICBpZiAoY2hlY2tDZGtBdmFpbGFibGUoKSkgcmV0dXJuO1xuICBwcmludEVycm9yKCdBV1MgQ0RLIGlzIG5vdCBpbnN0YWxsZWQgb3Igbm90IGFjY2Vzc2libGUnKTtcbiAgY29uc29sZS5sb2coJ0luc3RhbGwgQ0RLIHdpdGg6IG5wbSBpbnN0YWxsIC1nIGF3cy1jZGsnKTtcbiAgdGhyb3cgbmV3IEVycm9yKCdBV1MgQ0RLIG5vdCBmb3VuZCcpO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIENESyBzaGVsbCBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1NoZWxsT3B0aW9ucyB7XG4gIC8qKiBXaGVuIGB0cnVlYCwgcHJpbnRzIHRoZSBlcnJvciB0byBzdGRlcnIgb24gZmFpbHVyZS4gKi9cbiAgZGVidWc/OiBib29sZWFuO1xuICAvKiogV2hlbiBgdHJ1ZWAsIGluaGVyaXRzIHN0ZGlvIHNvIG91dHB1dCBzdHJlYW1zIHRvIHRoZSB0ZXJtaW5hbC4gRGVmYXVsdHMgdG8gYHRydWVgLiAqL1xuICBzaG93T3V0cHV0PzogYm9vbGVhbjtcbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGluamVjdC4gKi9cbiAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBDREsgc2hlbGwgY29tbWFuZCBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrU2hlbGxSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgQ0RLIENMSSBjb21tYW5kIGFzIGEgY2hpbGQgcHJvY2Vzcy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBmdWxsIENESyBDTEkgY29tbWFuZCBzdHJpbmcgKGUuZy4sIGBjZGsgYm9vdHN0cmFwIC4uLmApLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBleGVjdXRpb24gc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgc3VjY2Vzc2AgYW5kIGBkdXJhdGlvbmAgaW4gbXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENka1NoZWxsT3B0aW9ucyA9IHt9LFxuKTogQ2RrU2hlbGxSZXN1bHQge1xuICBjb25zdCB7IGRlYnVnID0gZmFsc2UsIHNob3dPdXRwdXQgPSB0cnVlLCBlbnY6IGV4dHJhRW52IH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZW52ID0ge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAuLi5leHRyYUVudixcbiAgICB9O1xuXG4gICAgZXhlY1N5bmMoY29tbWFuZCwge1xuICAgICAgc3RkaW86IHNob3dPdXRwdXQgPyBbJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdwaXBlJ10gOiAncGlwZScsXG4gICAgICBlbnYsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gRXh0cmFjdCBzdGRlcnIvc3Rkb3V0IGZyb20gZXhlY1N5bmMgZXJyb3Igd2hlbiBhdmFpbGFibGVcbiAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnc3RkZXJyJyBpbiBlcnJvcikge1xuICAgICAgY29uc3QgZXhlY0Vycm9yID0gZXJyb3IgYXMgeyBzdGRlcnI/OiBCdWZmZXIgfCBzdHJpbmc7IHN0ZG91dD86IEJ1ZmZlciB8IHN0cmluZzsgc3RhdHVzPzogbnVtYmVyIH07XG4gICAgICBjb25zdCBzdGRlcnIgPSBleGVjRXJyb3Iuc3RkZXJyPy50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgIGNvbnN0IHN0ZG91dCA9IGV4ZWNFcnJvci5zdGRvdXQ/LnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NESyBkZXBsb3ltZW50IGZhaWxlZDonKTtcbiAgICAgIGlmIChzdGRlcnIpIGNvbnNvbGUuZXJyb3Ioc3RkZXJyKTtcbiAgICAgIGlmIChzdGRvdXQpIGNvbnNvbGUuZXJyb3Ioc3Rkb3V0KTtcbiAgICAgIGlmIChleGVjRXJyb3Iuc3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXhpdCBjb2RlOiAke2V4ZWNFcnJvci5zdGF0dXN9IChhZnRlciAke2R1cmF0aW9ufW1zKWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NESyBleGVjdXRpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ApiClient } from './api-client';
|
|
2
|
+
/**
|
|
3
|
+
* Print command header with section title and execution ID.
|
|
4
|
+
* Returns the execution ID for use in error handlers and summaries.
|
|
5
|
+
*/
|
|
6
|
+
export declare function printCommandHeader(title: string, subtitle?: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Print execution summary with ID, duration, and status.
|
|
9
|
+
*/
|
|
10
|
+
export declare function printExecutionSummary(executionId: string, duration: number): void;
|
|
11
|
+
/**
|
|
12
|
+
* Warn if SSL verification is disabled.
|
|
13
|
+
*/
|
|
14
|
+
export declare function printSslWarning(verifySsl?: boolean): void;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve a platform auth token using two methods (in priority order):
|
|
17
|
+
*
|
|
18
|
+
* 1. PLATFORM_TOKEN env var
|
|
19
|
+
* 2. --store-tokens flag → fetch credentials from AWS Secrets Manager, then authenticate
|
|
20
|
+
*
|
|
21
|
+
* @returns JWT token string
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveToken(options: {
|
|
24
|
+
storeTokens?: boolean;
|
|
25
|
+
verifySsl?: boolean;
|
|
26
|
+
region?: string;
|
|
27
|
+
profile?: string;
|
|
28
|
+
}): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Initialize and return an authenticated API client.
|
|
31
|
+
*
|
|
32
|
+
* Supports two auth methods:
|
|
33
|
+
* 1. PLATFORM_TOKEN env var
|
|
34
|
+
* 2. --store-tokens + PLATFORM_SECRET_NAME env var → fetch token from Secrets Manager
|
|
35
|
+
*/
|
|
36
|
+
export declare function createAuthenticatedClientAsync(options: {
|
|
37
|
+
storeTokens?: boolean;
|
|
38
|
+
verifySsl?: boolean;
|
|
39
|
+
region?: string;
|
|
40
|
+
profile?: string;
|
|
41
|
+
}): Promise<ApiClient>;
|
|
42
|
+
/**
|
|
43
|
+
* Initialize and return an authenticated API client (sync — requires PLATFORM_TOKEN).
|
|
44
|
+
* Use createAuthenticatedClientAsync for --store-tokens support.
|
|
45
|
+
*/
|
|
46
|
+
export declare function createAuthenticatedClient(options: {
|
|
47
|
+
verifySsl?: boolean;
|
|
48
|
+
}): ApiClient;
|
|
49
|
+
/**
|
|
50
|
+
* Validate a required entity ID (ULID or UUID format).
|
|
51
|
+
* Returns trimmed ID.
|
|
52
|
+
*
|
|
53
|
+
* @throws Error if ID is empty
|
|
54
|
+
*/
|
|
55
|
+
export declare function validateEntityId(id: string | undefined, entityName: string): string;
|
|
56
|
+
//# sourceMappingURL=command-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/command-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAKzD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiClB;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBnF"}
|