envhub-cli 0.1.1
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 +60 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +92 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/cat.d.ts +6 -0
- package/dist/commands/cat.d.ts.map +1 -0
- package/dist/commands/cat.js +55 -0
- package/dist/commands/cat.js.map +1 -0
- package/dist/commands/delete.d.ts +10 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +46 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/grant.d.ts +6 -0
- package/dist/commands/grant.d.ts.map +1 -0
- package/dist/commands/grant.js +25 -0
- package/dist/commands/grant.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +275 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +46 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/pull.d.ts +6 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +35 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +11 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +126 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/revoke.d.ts +6 -0
- package/dist/commands/revoke.d.ts.map +1 -0
- package/dist/commands/revoke.js +25 -0
- package/dist/commands/revoke.js.map +1 -0
- package/dist/config/config.d.ts +52 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +136 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/config.schema.d.ts +66 -0
- package/dist/config/config.schema.d.ts.map +1 -0
- package/dist/config/config.schema.js +33 -0
- package/dist/config/config.schema.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/aws/aws-secrets.provider.d.ts +44 -0
- package/dist/providers/aws/aws-secrets.provider.d.ts.map +1 -0
- package/dist/providers/aws/aws-secrets.provider.js +306 -0
- package/dist/providers/aws/aws-secrets.provider.js.map +1 -0
- package/dist/providers/provider.factory.d.ts +24 -0
- package/dist/providers/provider.factory.d.ts.map +1 -0
- package/dist/providers/provider.factory.js +40 -0
- package/dist/providers/provider.factory.js.map +1 -0
- package/dist/providers/provider.interface.d.ts +96 -0
- package/dist/providers/provider.interface.d.ts.map +1 -0
- package/dist/providers/provider.interface.js +2 -0
- package/dist/providers/provider.interface.js.map +1 -0
- package/dist/utils/diff.d.ts +27 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +105 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/env-parser.d.ts +48 -0
- package/dist/utils/env-parser.d.ts.map +1 -0
- package/dist/utils/env-parser.js +84 -0
- package/dist/utils/env-parser.js.map +1 -0
- package/dist/utils/logger.d.ts +57 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +82 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/versioning/version-control.d.ts +44 -0
- package/dist/versioning/version-control.d.ts.map +1 -0
- package/dist/versioning/version-control.js +81 -0
- package/dist/versioning/version-control.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDjD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { configManager } from "../config/config.js";
|
|
2
|
+
import { ProviderFactory } from "../providers/provider.factory.js";
|
|
3
|
+
import { logger } from "../utils/logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* The `envhub list` command.
|
|
6
|
+
* Lists all secrets managed by envhub for the current provider.
|
|
7
|
+
*/
|
|
8
|
+
export async function listCommand() {
|
|
9
|
+
// Load config and create provider
|
|
10
|
+
const config = await configManager.load();
|
|
11
|
+
const provider = ProviderFactory.createProvider(config);
|
|
12
|
+
const spinner = logger.spinner("Fetching secrets...");
|
|
13
|
+
try {
|
|
14
|
+
const secrets = await provider.list();
|
|
15
|
+
spinner.stop();
|
|
16
|
+
if (secrets.length === 0) {
|
|
17
|
+
logger.info("No secrets found. Push your first secret with 'envhub push <name> <file>'.");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
logger.newline();
|
|
21
|
+
logger.tableHeader({ label: "Name", width: 30 }, { label: "Secrets", width: 10 }, { label: "Updated", width: 22 }, { label: "Message", width: 30 });
|
|
22
|
+
for (const secret of secrets) {
|
|
23
|
+
const updatedAt = secret.updatedAt
|
|
24
|
+
? secret.updatedAt.toLocaleDateString("de-DE", {
|
|
25
|
+
year: "numeric",
|
|
26
|
+
month: "2-digit",
|
|
27
|
+
day: "2-digit",
|
|
28
|
+
hour: "2-digit",
|
|
29
|
+
minute: "2-digit",
|
|
30
|
+
})
|
|
31
|
+
: "—";
|
|
32
|
+
logger.tableRow({ value: secret.name, width: 30 }, { value: String(secret.secretsCount), width: 10 }, { value: updatedAt, width: 22 }, { value: secret.lastMessage ?? "—", width: 30 });
|
|
33
|
+
}
|
|
34
|
+
logger.newline();
|
|
35
|
+
logger.dim(` ${secrets.length} secret(s) found.`);
|
|
36
|
+
logger.newline();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
spinner.fail("Failed to list secrets.");
|
|
40
|
+
if (error instanceof Error) {
|
|
41
|
+
logger.error(error.message);
|
|
42
|
+
}
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,kCAAkC;IAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,WAAW,CAChB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAC5B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAC/B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAC/B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAChC,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;gBAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;oBAC3C,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,SAAS;oBACd,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,SAAS;iBAClB,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC;YAER,MAAM,CAAC,QAAQ,CACb,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EACjC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EACjD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAC/B,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAChD,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import { configManager } from "../config/config.js";
|
|
3
|
+
import { ProviderFactory } from "../providers/provider.factory.js";
|
|
4
|
+
import { VersionControl } from "../versioning/version-control.js";
|
|
5
|
+
import { writeEnvFileRaw, parseEnvContent } from "../utils/env-parser.js";
|
|
6
|
+
import { logger } from "../utils/logger.js";
|
|
7
|
+
/**
|
|
8
|
+
* The `envhub pull` command.
|
|
9
|
+
* Pulls the latest version of a secret and writes it to a local .env file.
|
|
10
|
+
*/
|
|
11
|
+
export async function pullCommand(secretName, filePath) {
|
|
12
|
+
const resolvedPath = path.resolve(filePath);
|
|
13
|
+
// Load config and create provider
|
|
14
|
+
const config = await configManager.load();
|
|
15
|
+
const provider = ProviderFactory.createProvider(config);
|
|
16
|
+
const versionControl = new VersionControl(configManager, provider);
|
|
17
|
+
// Pull from provider
|
|
18
|
+
const spinner = logger.spinner(`Pulling '${secretName}'...`);
|
|
19
|
+
try {
|
|
20
|
+
const result = await provider.pull(secretName);
|
|
21
|
+
const keyCount = parseEnvContent(result.content).size;
|
|
22
|
+
// Write the file
|
|
23
|
+
await writeEnvFileRaw(resolvedPath, result.content);
|
|
24
|
+
await versionControl.recordPull(secretName, result.version, filePath);
|
|
25
|
+
spinner.succeed(`Pulled '${secretName}' (v${result.version}) → ${filePath} (${keyCount} keys)`);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
spinner.fail(`Failed to pull '${secretName}'.`);
|
|
29
|
+
if (error instanceof Error) {
|
|
30
|
+
logger.error(error.message);
|
|
31
|
+
}
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,QAAgB;IAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,kCAAkC;IAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEnE,qBAAqB;IACrB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAEtD,iBAAiB;QACjB,MAAM,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEtE,OAAO,CAAC,OAAO,CACb,WAAW,UAAU,OAAO,MAAM,CAAC,OAAO,OAAO,QAAQ,KAAK,QAAQ,QAAQ,CAC/E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,UAAU,IAAI,CAAC,CAAC;QAChD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface PushCommandOptions {
|
|
2
|
+
message?: string;
|
|
3
|
+
force?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* The `envhub push` command.
|
|
7
|
+
* Pushes a local .env file to the configured cloud provider.
|
|
8
|
+
*/
|
|
9
|
+
export declare function pushCommand(secretName: string, filePath: string, options: PushCommandOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAUA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAmBD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuHf"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { confirm } from "@inquirer/prompts";
|
|
4
|
+
import { configManager } from "../config/config.js";
|
|
5
|
+
import { ProviderFactory } from "../providers/provider.factory.js";
|
|
6
|
+
import { VersionControl } from "../versioning/version-control.js";
|
|
7
|
+
import { readEnvFileRaw, fileExists, parseEnvContent } from "../utils/env-parser.js";
|
|
8
|
+
import { diffEnvContents, formatChanges } from "../utils/diff.js";
|
|
9
|
+
import { logger } from "../utils/logger.js";
|
|
10
|
+
/**
|
|
11
|
+
* Format all entries of a new secret for display.
|
|
12
|
+
*/
|
|
13
|
+
function formatNewEntries(content) {
|
|
14
|
+
const entries = parseEnvContent(content);
|
|
15
|
+
if (entries.size === 0) {
|
|
16
|
+
return " (empty file)";
|
|
17
|
+
}
|
|
18
|
+
const lines = [` 🆕 New secret with ${entries.size} entries:`];
|
|
19
|
+
for (const [key, value] of entries) {
|
|
20
|
+
const masked = value.length <= 3 ? "***" : value.substring(0, 3) + "***";
|
|
21
|
+
lines.push(chalk.green(` + ${key}=${masked}`));
|
|
22
|
+
}
|
|
23
|
+
return lines.join("\n");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The `envhub push` command.
|
|
27
|
+
* Pushes a local .env file to the configured cloud provider.
|
|
28
|
+
*/
|
|
29
|
+
export async function pushCommand(secretName, filePath, options) {
|
|
30
|
+
const resolvedPath = path.resolve(filePath);
|
|
31
|
+
// Load config and create provider
|
|
32
|
+
const config = await configManager.load();
|
|
33
|
+
const provider = ProviderFactory.createProvider(config);
|
|
34
|
+
const versionControl = new VersionControl(configManager, provider);
|
|
35
|
+
// Check if file exists
|
|
36
|
+
if (!(await fileExists(resolvedPath))) {
|
|
37
|
+
logger.error(`File not found: ${resolvedPath}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Read the local .env file
|
|
41
|
+
const localContent = await readEnvFileRaw(resolvedPath);
|
|
42
|
+
// Version check (unless --force)
|
|
43
|
+
if (!options.force) {
|
|
44
|
+
const versionCheck = await versionControl.checkBeforePush(secretName);
|
|
45
|
+
if (!versionCheck.canPush) {
|
|
46
|
+
logger.warn(versionCheck.reason ?? "Version conflict detected.");
|
|
47
|
+
logger.newline();
|
|
48
|
+
const forcePush = await confirm({
|
|
49
|
+
message: "Do you want to force push anyway?",
|
|
50
|
+
default: false,
|
|
51
|
+
});
|
|
52
|
+
if (!forcePush) {
|
|
53
|
+
logger.info("Push cancelled. Run 'envhub pull' first.");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Show diff: compare local file with remote content
|
|
59
|
+
let isNewSecret = false;
|
|
60
|
+
try {
|
|
61
|
+
const remoteContent = await provider.cat(secretName);
|
|
62
|
+
// Secret exists — compare local vs remote
|
|
63
|
+
const changes = diffEnvContents(remoteContent, localContent);
|
|
64
|
+
if (changes.length === 0 && !options.force) {
|
|
65
|
+
logger.info("No changes detected. Remote is already up to date.");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (changes.length > 0) {
|
|
69
|
+
logger.newline();
|
|
70
|
+
logger.log("Changes to push:");
|
|
71
|
+
logger.log(formatChanges(changes));
|
|
72
|
+
logger.newline();
|
|
73
|
+
if (!options.force) {
|
|
74
|
+
const confirmPush = await confirm({
|
|
75
|
+
message: "Push these changes?",
|
|
76
|
+
default: true,
|
|
77
|
+
});
|
|
78
|
+
if (!confirmPush) {
|
|
79
|
+
logger.info("Push cancelled.");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Secret doesn't exist yet — show all entries as new
|
|
87
|
+
isNewSecret = true;
|
|
88
|
+
logger.newline();
|
|
89
|
+
logger.log(formatNewEntries(localContent));
|
|
90
|
+
logger.newline();
|
|
91
|
+
if (!options.force) {
|
|
92
|
+
const confirmPush = await confirm({
|
|
93
|
+
message: `Create new secret '${secretName}'?`,
|
|
94
|
+
default: true,
|
|
95
|
+
});
|
|
96
|
+
if (!confirmPush) {
|
|
97
|
+
logger.info("Push cancelled.");
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Push to provider
|
|
103
|
+
const spinner = logger.spinner(isNewSecret
|
|
104
|
+
? `Creating '${secretName}' in ${provider.name}...`
|
|
105
|
+
: `Pushing '${secretName}' to ${provider.name}...`);
|
|
106
|
+
try {
|
|
107
|
+
const result = await provider.push(secretName, localContent, {
|
|
108
|
+
message: options.message,
|
|
109
|
+
force: options.force,
|
|
110
|
+
});
|
|
111
|
+
// Update local version tracking
|
|
112
|
+
await versionControl.recordPush(secretName, result.version, filePath);
|
|
113
|
+
spinner.succeed(`Pushed '${secretName}' (v${result.version}) to ${provider.name}.`);
|
|
114
|
+
if (options.message) {
|
|
115
|
+
logger.dim(` Message: ${options.message}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
spinner.fail(`Failed to push '${secretName}'.`);
|
|
120
|
+
if (error instanceof Error) {
|
|
121
|
+
logger.error(error.message);
|
|
122
|
+
}
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../src/commands/revoke.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { configManager } from "../config/config.js";
|
|
2
|
+
import { ProviderFactory } from "../providers/provider.factory.js";
|
|
3
|
+
import { logger } from "../utils/logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* The `envhub revoke` command.
|
|
6
|
+
* Revokes a user's access to a secret.
|
|
7
|
+
*/
|
|
8
|
+
export async function revokeCommand(secretName, userIdentifier) {
|
|
9
|
+
// Load config and create provider
|
|
10
|
+
const config = await configManager.load();
|
|
11
|
+
const provider = ProviderFactory.createProvider(config);
|
|
12
|
+
const spinner = logger.spinner(`Revoking access to '${secretName}' for '${userIdentifier}'...`);
|
|
13
|
+
try {
|
|
14
|
+
await provider.revoke(secretName, userIdentifier);
|
|
15
|
+
spinner.succeed(`Revoked '${userIdentifier}' access to '${secretName}'.`);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
spinner.fail(`Failed to revoke access.`);
|
|
19
|
+
if (error instanceof Error) {
|
|
20
|
+
logger.error(error.message);
|
|
21
|
+
}
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=revoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../src/commands/revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,cAAsB;IAEtB,kCAAkC;IAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC5B,uBAAuB,UAAU,UAAU,cAAc,MAAM,CAChE,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,CACb,YAAY,cAAc,gBAAgB,UAAU,IAAI,CACzD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EnvhubConfig } from "./config.schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Manages loading, saving, and validating the envhub configuration file.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConfigManager {
|
|
6
|
+
private config;
|
|
7
|
+
private configPath;
|
|
8
|
+
/**
|
|
9
|
+
* Load the configuration from the nearest .envhubrc.json file.
|
|
10
|
+
* Searches upward from the current working directory.
|
|
11
|
+
*/
|
|
12
|
+
load(): Promise<EnvhubConfig>;
|
|
13
|
+
/**
|
|
14
|
+
* Get the currently loaded configuration.
|
|
15
|
+
* Throws if config hasn't been loaded yet.
|
|
16
|
+
*/
|
|
17
|
+
getConfig(): EnvhubConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Get the path to the configuration file.
|
|
20
|
+
*/
|
|
21
|
+
getConfigPath(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Save the current configuration to disk.
|
|
24
|
+
*/
|
|
25
|
+
save(config?: EnvhubConfig): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Create a fresh configuration file at the given path.
|
|
28
|
+
*/
|
|
29
|
+
create(config: EnvhubConfig, targetDir?: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Update the secret tracking info (e.g. after a push or pull).
|
|
32
|
+
*/
|
|
33
|
+
updateSecret(secretName: string, data: {
|
|
34
|
+
version?: number;
|
|
35
|
+
file?: string;
|
|
36
|
+
lastPulled?: string;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Get the tracked version for a specific secret.
|
|
40
|
+
* Returns 0 if the secret hasn't been tracked yet.
|
|
41
|
+
*/
|
|
42
|
+
getTrackedVersion(secretName: string): number;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a configuration file exists in the current directory.
|
|
45
|
+
*/
|
|
46
|
+
static exists(dir?: string): Promise<boolean>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Singleton config manager instance used throughout the application.
|
|
50
|
+
*/
|
|
51
|
+
export declare const configManager: ConfigManager;
|
|
52
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAK5B;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAgCnC;;;OAGG;IACH,SAAS,IAAI,YAAY;IASzB;;OAEG;IACH,aAAa,IAAI,MAAM;IAOvB;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAahD;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvE;;OAEG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7D,OAAO,CAAC,IAAI,CAAC;IAwBhB;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK7C;;OAEG;WACU,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CASpD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { cosmiconfig } from "cosmiconfig";
|
|
2
|
+
import * as fs from "node:fs/promises";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { DEFAULT_CONFIG, validateConfig, } from "./config.schema.js";
|
|
5
|
+
const MODULE_NAME = "envhub";
|
|
6
|
+
const CONFIG_FILENAME = ".envhubrc.json";
|
|
7
|
+
/**
|
|
8
|
+
* Manages loading, saving, and validating the envhub configuration file.
|
|
9
|
+
*/
|
|
10
|
+
export class ConfigManager {
|
|
11
|
+
config = null;
|
|
12
|
+
configPath = null;
|
|
13
|
+
/**
|
|
14
|
+
* Load the configuration from the nearest .envhubrc.json file.
|
|
15
|
+
* Searches upward from the current working directory.
|
|
16
|
+
*/
|
|
17
|
+
async load() {
|
|
18
|
+
const explorer = cosmiconfig(MODULE_NAME, {
|
|
19
|
+
searchPlaces: [
|
|
20
|
+
CONFIG_FILENAME,
|
|
21
|
+
`.${MODULE_NAME}rc`,
|
|
22
|
+
`.${MODULE_NAME}rc.json`,
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
const result = await explorer.search();
|
|
26
|
+
if (!result || result.isEmpty) {
|
|
27
|
+
throw new Error("No envhub configuration found. Run 'envhub init' to set up your project.");
|
|
28
|
+
}
|
|
29
|
+
const config = { ...DEFAULT_CONFIG, ...result.config };
|
|
30
|
+
const errors = validateConfig(config);
|
|
31
|
+
if (errors.length > 0) {
|
|
32
|
+
throw new Error(`Invalid configuration in ${result.filepath}:\n - ${errors.join("\n - ")}`);
|
|
33
|
+
}
|
|
34
|
+
this.config = config;
|
|
35
|
+
this.configPath = result.filepath;
|
|
36
|
+
return config;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the currently loaded configuration.
|
|
40
|
+
* Throws if config hasn't been loaded yet.
|
|
41
|
+
*/
|
|
42
|
+
getConfig() {
|
|
43
|
+
if (!this.config) {
|
|
44
|
+
throw new Error("Configuration not loaded. Call load() first or run 'envhub init'.");
|
|
45
|
+
}
|
|
46
|
+
return this.config;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the path to the configuration file.
|
|
50
|
+
*/
|
|
51
|
+
getConfigPath() {
|
|
52
|
+
if (!this.configPath) {
|
|
53
|
+
return path.join(process.cwd(), CONFIG_FILENAME);
|
|
54
|
+
}
|
|
55
|
+
return this.configPath;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Save the current configuration to disk.
|
|
59
|
+
*/
|
|
60
|
+
async save(config) {
|
|
61
|
+
const configToSave = config ?? this.config;
|
|
62
|
+
if (!configToSave) {
|
|
63
|
+
throw new Error("No configuration to save.");
|
|
64
|
+
}
|
|
65
|
+
const filePath = this.configPath ?? path.join(process.cwd(), CONFIG_FILENAME);
|
|
66
|
+
await fs.writeFile(filePath, JSON.stringify(configToSave, null, 2) + "\n", "utf-8");
|
|
67
|
+
this.config = configToSave;
|
|
68
|
+
this.configPath = filePath;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a fresh configuration file at the given path.
|
|
72
|
+
*/
|
|
73
|
+
async create(config, targetDir) {
|
|
74
|
+
const dir = targetDir ?? process.cwd();
|
|
75
|
+
const filePath = path.join(dir, CONFIG_FILENAME);
|
|
76
|
+
const errors = validateConfig(config);
|
|
77
|
+
if (errors.length > 0) {
|
|
78
|
+
throw new Error(`Invalid configuration:\n - ${errors.join("\n - ")}`);
|
|
79
|
+
}
|
|
80
|
+
await fs.writeFile(filePath, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
81
|
+
this.config = config;
|
|
82
|
+
this.configPath = filePath;
|
|
83
|
+
return filePath;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Update the secret tracking info (e.g. after a push or pull).
|
|
87
|
+
*/
|
|
88
|
+
async updateSecret(secretName, data) {
|
|
89
|
+
const config = this.getConfig();
|
|
90
|
+
if (!config.secrets[secretName]) {
|
|
91
|
+
config.secrets[secretName] = {
|
|
92
|
+
version: data.version ?? 0,
|
|
93
|
+
file: data.file ?? "",
|
|
94
|
+
lastPulled: data.lastPulled,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
if (data.version !== undefined) {
|
|
99
|
+
config.secrets[secretName].version = data.version;
|
|
100
|
+
}
|
|
101
|
+
if (data.file !== undefined) {
|
|
102
|
+
config.secrets[secretName].file = data.file;
|
|
103
|
+
}
|
|
104
|
+
if (data.lastPulled !== undefined) {
|
|
105
|
+
config.secrets[secretName].lastPulled = data.lastPulled;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
await this.save(config);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the tracked version for a specific secret.
|
|
112
|
+
* Returns 0 if the secret hasn't been tracked yet.
|
|
113
|
+
*/
|
|
114
|
+
getTrackedVersion(secretName) {
|
|
115
|
+
const config = this.getConfig();
|
|
116
|
+
return config.secrets[secretName]?.version ?? 0;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if a configuration file exists in the current directory.
|
|
120
|
+
*/
|
|
121
|
+
static async exists(dir) {
|
|
122
|
+
const filePath = path.join(dir ?? process.cwd(), CONFIG_FILENAME);
|
|
123
|
+
try {
|
|
124
|
+
await fs.access(filePath);
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Singleton config manager instance used throughout the application.
|
|
134
|
+
*/
|
|
135
|
+
export const configManager = new ConfigManager();
|
|
136
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported provider types.
|
|
3
|
+
* Extend this union type when adding new providers.
|
|
4
|
+
*/
|
|
5
|
+
export type ProviderType = "aws" | "azure" | "gcp";
|
|
6
|
+
/**
|
|
7
|
+
* AWS-specific configuration.
|
|
8
|
+
*/
|
|
9
|
+
export interface AWSConfig {
|
|
10
|
+
/** AWS CLI profile name (from ~/.aws/credentials) */
|
|
11
|
+
profile: string;
|
|
12
|
+
/** AWS region (e.g. "eu-central-1") */
|
|
13
|
+
region: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Placeholder for future Azure configuration.
|
|
17
|
+
*/
|
|
18
|
+
export interface AzureConfig {
|
|
19
|
+
/** Azure Key Vault URL */
|
|
20
|
+
vaultUrl: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Placeholder for future GCP configuration.
|
|
24
|
+
*/
|
|
25
|
+
export interface GCPConfig {
|
|
26
|
+
/** GCP project ID */
|
|
27
|
+
projectId: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Tracking information for a single secret.
|
|
31
|
+
*/
|
|
32
|
+
export interface SecretTracking {
|
|
33
|
+
/** Current local version number */
|
|
34
|
+
version: number;
|
|
35
|
+
/** Path to the local .env file associated with this secret */
|
|
36
|
+
file: string;
|
|
37
|
+
/** Timestamp of the last pull operation */
|
|
38
|
+
lastPulled?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Root configuration schema for .envhubrc.json
|
|
42
|
+
*/
|
|
43
|
+
export interface EnvhubConfig {
|
|
44
|
+
/** Which cloud provider to use */
|
|
45
|
+
provider: ProviderType;
|
|
46
|
+
/** Prefix for secret names in the cloud provider (default: "envhub-") */
|
|
47
|
+
prefix: string;
|
|
48
|
+
/** AWS-specific configuration (present when provider === "aws") */
|
|
49
|
+
aws?: AWSConfig;
|
|
50
|
+
/** Azure-specific configuration (present when provider === "azure") */
|
|
51
|
+
azure?: AzureConfig;
|
|
52
|
+
/** GCP-specific configuration (present when provider === "gcp") */
|
|
53
|
+
gcp?: GCPConfig;
|
|
54
|
+
/** Tracked secrets with their local version information */
|
|
55
|
+
secrets: Record<string, SecretTracking>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Default configuration values.
|
|
59
|
+
*/
|
|
60
|
+
export declare const DEFAULT_CONFIG: Partial<EnvhubConfig>;
|
|
61
|
+
/**
|
|
62
|
+
* Validates the essential fields of an EnvhubConfig object.
|
|
63
|
+
* Returns an array of error messages (empty if valid).
|
|
64
|
+
*/
|
|
65
|
+
export declare function validateConfig(config: Partial<EnvhubConfig>): string[];
|
|
66
|
+
//# sourceMappingURL=config.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/config/config.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAC;IACvB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,uEAAuE;IACvE,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mEAAmE;IACnE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,YAAY,CAGhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE,CAyBtE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configuration values.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_CONFIG = {
|
|
5
|
+
prefix: "envhub-",
|
|
6
|
+
secrets: {},
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Validates the essential fields of an EnvhubConfig object.
|
|
10
|
+
* Returns an array of error messages (empty if valid).
|
|
11
|
+
*/
|
|
12
|
+
export function validateConfig(config) {
|
|
13
|
+
const errors = [];
|
|
14
|
+
if (!config.provider) {
|
|
15
|
+
errors.push("'provider' is required in configuration.");
|
|
16
|
+
}
|
|
17
|
+
if (config.provider && !["aws", "azure", "gcp"].includes(config.provider)) {
|
|
18
|
+
errors.push(`Unknown provider '${config.provider}'. Supported: aws, azure, gcp`);
|
|
19
|
+
}
|
|
20
|
+
if (config.provider === "aws" && !config.aws) {
|
|
21
|
+
errors.push("AWS configuration ('aws') is required when provider is 'aws'.");
|
|
22
|
+
}
|
|
23
|
+
if (config.provider === "aws" && config.aws) {
|
|
24
|
+
if (!config.aws.profile) {
|
|
25
|
+
errors.push("'aws.profile' is required.");
|
|
26
|
+
}
|
|
27
|
+
if (!config.aws.region) {
|
|
28
|
+
errors.push("'aws.region' is required.");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return errors;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=config.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/config/config.schema.ts"],"names":[],"mappings":"AA8DA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAA6B;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,QAAQ,+BAA+B,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
ADDED