@udondan/avanti 0.16.0 → 0.17.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/README.md +42 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -3
- package/dist/config.js.map +1 -1
- package/dist/fetch.d.ts +1 -0
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +57 -1
- package/dist/fetch.js.map +1 -1
- package/dist/logger.d.ts +4 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +17 -0
- package/dist/logger.js.map +1 -0
- package/dist/sources/bitbucket.d.ts.map +1 -1
- package/dist/sources/bitbucket.js +3 -0
- package/dist/sources/bitbucket.js.map +1 -1
- package/dist/sources/exec.d.ts.map +1 -1
- package/dist/sources/exec.js +2 -0
- package/dist/sources/exec.js.map +1 -1
- package/dist/sources/git.d.ts +6 -0
- package/dist/sources/git.d.ts.map +1 -1
- package/dist/sources/git.js +51 -0
- package/dist/sources/git.js.map +1 -1
- package/dist/sources/github.d.ts.map +1 -1
- package/dist/sources/github.js +20 -8
- package/dist/sources/github.js.map +1 -1
- package/dist/sources/gitlab.d.ts.map +1 -1
- package/dist/sources/gitlab.js +29 -10
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/index.d.ts +6 -1
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +39 -0
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/local.d.ts.map +1 -1
- package/dist/sources/local.js +2 -0
- package/dist/sources/local.js.map +1 -1
- package/dist/sources/s3.d.ts.map +1 -1
- package/dist/sources/s3.js +6 -0
- package/dist/sources/s3.js.map +1 -1
- package/dist/sources/vault.d.ts.map +1 -1
- package/dist/sources/vault.js +6 -0
- package/dist/sources/vault.js.map +1 -1
- package/package.json +1 -1
package/dist/sources/s3.js
CHANGED
|
@@ -38,6 +38,8 @@ const child_process_1 = require("child_process");
|
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const os = __importStar(require("os"));
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
|
+
const logger_1 = require("../logger");
|
|
42
|
+
const fetch_1 = require("../fetch");
|
|
41
43
|
function awsRun(args) {
|
|
42
44
|
const result = (0, child_process_1.spawnSync)('aws', args, { encoding: 'utf8' });
|
|
43
45
|
if (result.error)
|
|
@@ -73,12 +75,16 @@ function fetchS3(uri) {
|
|
|
73
75
|
}
|
|
74
76
|
// Download to a temp file to support binary content
|
|
75
77
|
const tmpFile = path.join(tmpDir, filename);
|
|
78
|
+
if ((0, logger_1.isVerbose)())
|
|
79
|
+
(0, logger_1.verbose)(`aws s3 cp ${(0, fetch_1.redactUrl)(uri)} <tmpfile>`);
|
|
76
80
|
const res = awsRun(['s3', 'cp', uri, tmpFile]);
|
|
77
81
|
if (res.status !== 0) {
|
|
78
82
|
throw new Error(`Failed to fetch ${uri}: ${res.stderr.trim()}`);
|
|
79
83
|
}
|
|
80
84
|
return { files: new Map([[filename, fs.readFileSync(tmpFile)]]) };
|
|
81
85
|
}
|
|
86
|
+
if ((0, logger_1.isVerbose)())
|
|
87
|
+
(0, logger_1.verbose)(`aws s3 sync ${(0, fetch_1.redactUrl)(uri)} <tmpdir>`);
|
|
82
88
|
const res = awsRun(['s3', 'sync', uri, tmpDir]);
|
|
83
89
|
if (res.status !== 0) {
|
|
84
90
|
throw new Error(`Failed to sync ${uri}: ${res.stderr.trim()}`);
|
package/dist/sources/s3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/sources/s3.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/sources/s3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/sources/vault.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/sources/vault.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AA6GD,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAgBtB"}
|
package/dist/sources/vault.js
CHANGED
|
@@ -37,6 +37,7 @@ exports.fetchVault = fetchVault;
|
|
|
37
37
|
const child_process_1 = require("child_process");
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const fetch_1 = require("../fetch");
|
|
40
|
+
const logger_1 = require("../logger");
|
|
40
41
|
function isVaultAvailable() {
|
|
41
42
|
return !(0, child_process_1.spawnSync)('vault', ['version'], { encoding: 'utf8' }).error;
|
|
42
43
|
}
|
|
@@ -59,12 +60,14 @@ function buf(s) {
|
|
|
59
60
|
function fetchVaultViaCli(secretPath, field) {
|
|
60
61
|
const filename = secretFilename(secretPath, field);
|
|
61
62
|
if (field) {
|
|
63
|
+
(0, logger_1.verbose)(`vault kv get -field=${field} ${secretPath}`);
|
|
62
64
|
const res = vaultRun(['kv', 'get', `-field=${field}`, secretPath]);
|
|
63
65
|
if (res.status !== 0) {
|
|
64
66
|
throw new Error(`Failed to read ${secretPath}: ${res.stderr.trim()}`);
|
|
65
67
|
}
|
|
66
68
|
return { files: new Map([[filename, buf(res.stdout)]]) };
|
|
67
69
|
}
|
|
70
|
+
(0, logger_1.verbose)(`vault kv get -format=json ${secretPath}`);
|
|
68
71
|
const res = vaultRun(['kv', 'get', '-format=json', secretPath]);
|
|
69
72
|
if (res.status !== 0) {
|
|
70
73
|
throw new Error(`Failed to read ${secretPath}: ${res.stderr.trim()}`);
|
|
@@ -88,6 +91,7 @@ async function fetchVaultViaApi(addr, token, secretPath, field) {
|
|
|
88
91
|
const parts = secretPath.split('/');
|
|
89
92
|
const mount = parts[0];
|
|
90
93
|
const subpath = parts.slice(1).join('/');
|
|
94
|
+
(0, logger_1.verbose)(`vault HTTP API: ${secretPath}${field ? `#${field}` : ''}`);
|
|
91
95
|
// Try KV v2 path first
|
|
92
96
|
const v2Res = await (0, fetch_1.fetchWithRetry)(`${addr}/v1/${mount}/data/${subpath}`, {
|
|
93
97
|
headers,
|
|
@@ -124,11 +128,13 @@ async function fetchVaultViaApi(addr, token, secretPath, field) {
|
|
|
124
128
|
}
|
|
125
129
|
async function fetchVault(secretPath, field) {
|
|
126
130
|
if (isVaultAvailable()) {
|
|
131
|
+
(0, logger_1.verbose)('vault: using CLI');
|
|
127
132
|
return fetchVaultViaCli(secretPath, field);
|
|
128
133
|
}
|
|
129
134
|
const addr = process.env.VAULT_ADDR;
|
|
130
135
|
const token = process.env.VAULT_TOKEN;
|
|
131
136
|
if (addr && token) {
|
|
137
|
+
(0, logger_1.verbose)('vault: using HTTP API');
|
|
132
138
|
return fetchVaultViaApi(addr, token, secretPath, field);
|
|
133
139
|
}
|
|
134
140
|
throw new Error('vault CLI not found and VAULT_ADDR/VAULT_TOKEN env vars are not set');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/sources/vault.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/sources/vault.ts"],"names":[],"mappings":"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"}
|