@udondan/avanti 0.15.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 +147 -2
- package/dist/binary.d.ts +2 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +13 -0
- package/dist/binary.js.map +1 -0
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +13 -7
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +20 -12
- package/dist/commands/pull.js.map +1 -1
- package/dist/config-writeback.d.ts.map +1 -1
- package/dist/config-writeback.js +12 -4
- package/dist/config-writeback.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -6
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +3 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +35 -4
- package/dist/diff.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/history.d.ts +2 -2
- package/dist/history.js +4 -4
- package/dist/history.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/processors/toml.d.ts +4 -0
- package/dist/processors/toml.d.ts.map +1 -0
- package/dist/processors/toml.js +100 -0
- package/dist/processors/toml.js.map +1 -0
- package/dist/sha.d.ts +1 -1
- package/dist/sha.d.ts.map +1 -1
- package/dist/sha.js +8 -1
- package/dist/sha.js.map +1 -1
- package/dist/sources/bitbucket.d.ts +2 -2
- package/dist/sources/bitbucket.d.ts.map +1 -1
- package/dist/sources/bitbucket.js +26 -18
- package/dist/sources/bitbucket.js.map +1 -1
- package/dist/sources/exec.d.ts +1 -1
- package/dist/sources/exec.d.ts.map +1 -1
- package/dist/sources/exec.js +8 -3
- package/dist/sources/exec.js.map +1 -1
- package/dist/sources/git.d.ts +7 -1
- package/dist/sources/git.d.ts.map +1 -1
- package/dist/sources/git.js +53 -2
- package/dist/sources/git.js.map +1 -1
- package/dist/sources/github.d.ts +2 -2
- package/dist/sources/github.d.ts.map +1 -1
- package/dist/sources/github.js +52 -32
- package/dist/sources/github.js.map +1 -1
- package/dist/sources/gitlab.d.ts +2 -2
- package/dist/sources/gitlab.d.ts.map +1 -1
- package/dist/sources/gitlab.js +82 -46
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/http.d.ts +4 -4
- package/dist/sources/http.js +1 -1
- package/dist/sources/http.js.map +1 -1
- package/dist/sources/index.d.ts +8 -3
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +164 -20
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/local.d.ts +1 -1
- package/dist/sources/local.d.ts.map +1 -1
- package/dist/sources/local.js +4 -2
- package/dist/sources/local.js.map +1 -1
- package/dist/sources/s3.d.ts +1 -1
- package/dist/sources/s3.d.ts.map +1 -1
- package/dist/sources/s3.js +25 -19
- package/dist/sources/s3.js.map +1 -1
- package/dist/sources/vault.d.ts +1 -1
- package/dist/sources/vault.d.ts.map +1 -1
- package/dist/sources/vault.js +15 -6
- package/dist/sources/vault.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/writer.d.ts +1 -1
- package/dist/writer.js +1 -1
- package/dist/writer.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeToml = mergeToml;
|
|
4
|
+
exports.formatToml = formatToml;
|
|
5
|
+
const smol_toml_1 = require("smol-toml");
|
|
6
|
+
function isPlainObject(v) {
|
|
7
|
+
return (v !== null &&
|
|
8
|
+
typeof v === 'object' &&
|
|
9
|
+
!Array.isArray(v) &&
|
|
10
|
+
!(v instanceof Date));
|
|
11
|
+
}
|
|
12
|
+
function valuesEqual(a, b) {
|
|
13
|
+
if (a === b)
|
|
14
|
+
return true;
|
|
15
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
|
16
|
+
return isNaN(a) && isNaN(b);
|
|
17
|
+
}
|
|
18
|
+
if (a instanceof Date && b instanceof Date) {
|
|
19
|
+
return a.getTime() === b.getTime();
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
22
|
+
return a.length === b.length && a.every((v, i) => valuesEqual(v, b[i]));
|
|
23
|
+
}
|
|
24
|
+
if (isPlainObject(a) && isPlainObject(b)) {
|
|
25
|
+
const aKeys = Object.keys(a);
|
|
26
|
+
const bKeys = Object.keys(b);
|
|
27
|
+
return (aKeys.length === bKeys.length &&
|
|
28
|
+
aKeys.every((k) => Object.hasOwn(b, k) && valuesEqual(a[k], b[k])));
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
function mergeValues(path, a, b, opts) {
|
|
33
|
+
if (valuesEqual(a, b))
|
|
34
|
+
return a;
|
|
35
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
36
|
+
if (opts.arrays === 'concat')
|
|
37
|
+
return [...a, ...b];
|
|
38
|
+
}
|
|
39
|
+
else if (isPlainObject(a) && isPlainObject(b)) {
|
|
40
|
+
if (opts.objects === 'merge')
|
|
41
|
+
return deepMerge(a, b, opts, path);
|
|
42
|
+
}
|
|
43
|
+
const loc = path || '(root)';
|
|
44
|
+
if (opts.conflicts === 'abort') {
|
|
45
|
+
throw new Error(`TOML conflict at ${loc}`);
|
|
46
|
+
}
|
|
47
|
+
if (opts.conflicts === 'first_wins')
|
|
48
|
+
return a;
|
|
49
|
+
return b;
|
|
50
|
+
}
|
|
51
|
+
function deepMerge(a, b, opts, basePath) {
|
|
52
|
+
const result = { ...a };
|
|
53
|
+
for (const [key, bVal] of Object.entries(b)) {
|
|
54
|
+
const childPath = basePath ? `${basePath}.${key}` : key;
|
|
55
|
+
const newVal = Object.hasOwn(result, key)
|
|
56
|
+
? mergeValues(childPath, result[key], bVal, opts)
|
|
57
|
+
: bVal;
|
|
58
|
+
// Use defineProperty to avoid prototype mutation for keys like __proto__
|
|
59
|
+
Object.defineProperty(result, key, {
|
|
60
|
+
value: newVal,
|
|
61
|
+
writable: true,
|
|
62
|
+
enumerable: true,
|
|
63
|
+
configurable: true,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
function mergeToml(parts, opts = {}) {
|
|
69
|
+
const resolved = {
|
|
70
|
+
conflicts: opts.conflicts ?? 'last_wins',
|
|
71
|
+
arrays: opts.arrays ?? 'replace',
|
|
72
|
+
objects: opts.objects ?? 'merge',
|
|
73
|
+
};
|
|
74
|
+
if (parts.length === 0)
|
|
75
|
+
return '';
|
|
76
|
+
const parsed = parts.map((p, i) => {
|
|
77
|
+
try {
|
|
78
|
+
return (0, smol_toml_1.parse)(p);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw new Error(`[source ${i}]: invalid TOML: ${e.message}`, {
|
|
82
|
+
cause: e,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
let result = parsed[0];
|
|
87
|
+
for (let i = 1; i < parsed.length; i++) {
|
|
88
|
+
result = deepMerge(result, parsed[i], resolved, '');
|
|
89
|
+
}
|
|
90
|
+
return (0, smol_toml_1.stringify)(result);
|
|
91
|
+
}
|
|
92
|
+
function formatToml(content) {
|
|
93
|
+
try {
|
|
94
|
+
return (0, smol_toml_1.stringify)((0, smol_toml_1.parse)(content));
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
throw new Error(`invalid TOML: ${e.message}`, { cause: e });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=toml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toml.js","sourceRoot":"","sources":["../../src/processors/toml.ts"],"names":[],"mappings":"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"}
|
package/dist/sha.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function computeContentSha256(content: string): string;
|
|
1
|
+
export declare function computeContentSha256(content: string | Buffer): string;
|
|
2
2
|
//# sourceMappingURL=sha.d.ts.map
|
package/dist/sha.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sha.d.ts","sourceRoot":"","sources":["../src/sha.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"sha.d.ts","sourceRoot":"","sources":["../src/sha.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQrE"}
|
package/dist/sha.js
CHANGED
|
@@ -36,6 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.computeContentSha256 = computeContentSha256;
|
|
37
37
|
const crypto = __importStar(require("crypto"));
|
|
38
38
|
function computeContentSha256(content) {
|
|
39
|
-
|
|
39
|
+
const hash = crypto.createHash('sha256');
|
|
40
|
+
if (typeof content === 'string') {
|
|
41
|
+
hash.update(content, 'utf8');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
hash.update(content);
|
|
45
|
+
}
|
|
46
|
+
return hash.digest('hex');
|
|
40
47
|
}
|
|
41
48
|
//# sourceMappingURL=sha.js.map
|
package/dist/sha.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sha.js","sourceRoot":"","sources":["../src/sha.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"sha.js","sourceRoot":"","sources":["../src/sha.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oDAQC;AAVD,+CAAiC;AAEjC,SAAgB,oBAAoB,CAAC,OAAwB;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface BitbucketResult {
|
|
2
|
-
files: Map<string,
|
|
2
|
+
files: Map<string, Buffer>;
|
|
3
3
|
}
|
|
4
|
-
export declare function fetchBitbucket(workspace: string, repo: string, file: string, ref: string | undefined): Promise<BitbucketResult>;
|
|
4
|
+
export declare function fetchBitbucket(workspace: string, repo: string, file: string, ref: string | undefined, host?: string): Promise<BitbucketResult>;
|
|
5
5
|
//# sourceMappingURL=bitbucket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitbucket.d.ts","sourceRoot":"","sources":["../../src/sources/bitbucket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitbucket.d.ts","sourceRoot":"","sources":["../../src/sources/bitbucket.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AA8ID,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,CAAC,CAwC1B"}
|
|
@@ -36,7 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.fetchBitbucket = fetchBitbucket;
|
|
37
37
|
const path = __importStar(require("path"));
|
|
38
38
|
const fetch_1 = require("../fetch");
|
|
39
|
-
const
|
|
39
|
+
const logger_1 = require("../logger");
|
|
40
|
+
function getApiBase(override) {
|
|
41
|
+
const host = override?.trim() ||
|
|
42
|
+
process.env.BITBUCKET_HOST?.trim() ||
|
|
43
|
+
'api.bitbucket.org';
|
|
44
|
+
return `https://${host}/2.0`;
|
|
45
|
+
}
|
|
40
46
|
function apiHeaders() {
|
|
41
47
|
const headers = { 'User-Agent': 'avanti' };
|
|
42
48
|
const token = process.env.BITBUCKET_TOKEN;
|
|
@@ -51,18 +57,18 @@ function apiHeaders() {
|
|
|
51
57
|
}
|
|
52
58
|
return headers;
|
|
53
59
|
}
|
|
54
|
-
async function resolveRef(workspace, repo, ref) {
|
|
60
|
+
async function resolveRef(workspace, repo, ref, host) {
|
|
55
61
|
if (ref && ref !== '$latest')
|
|
56
62
|
return ref;
|
|
57
63
|
if (ref === '$latest') {
|
|
58
|
-
const tagsRes = await (0, fetch_1.fetchWithRetry)(`${
|
|
64
|
+
const tagsRes = await (0, fetch_1.fetchWithRetry)(`${getApiBase(host)}/repositories/${workspace}/${repo}/refs/tags?sort=-name&pagelen=1`, { headers: apiHeaders() });
|
|
59
65
|
if (tagsRes.ok) {
|
|
60
66
|
const data = (await tagsRes.json());
|
|
61
67
|
if (data.values.length > 0)
|
|
62
68
|
return data.values[0].name;
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
|
-
const repoRes = await (0, fetch_1.fetchWithRetry)(`${
|
|
71
|
+
const repoRes = await (0, fetch_1.fetchWithRetry)(`${getApiBase(host)}/repositories/${workspace}/${repo}`, { headers: apiHeaders() });
|
|
66
72
|
if (!repoRes.ok) {
|
|
67
73
|
throw new Error(`Failed to resolve ref for ${workspace}/${repo}: HTTP ${repoRes.status}`);
|
|
68
74
|
}
|
|
@@ -70,26 +76,28 @@ async function resolveRef(workspace, repo, ref) {
|
|
|
70
76
|
return repoData.mainbranch?.name ?? 'main';
|
|
71
77
|
}
|
|
72
78
|
// Returns file content, or null if the path is a directory.
|
|
73
|
-
async function fetchFileOrDetect(workspace, repo, filePath, ref) {
|
|
74
|
-
|
|
79
|
+
async function fetchFileOrDetect(workspace, repo, filePath, ref, host) {
|
|
80
|
+
(0, logger_1.verbose)(`bitbucket: fetching ${workspace}/${repo}:${filePath}@${ref}`);
|
|
81
|
+
const res = await (0, fetch_1.fetchWithRetry)(`${getApiBase(host)}/repositories/${workspace}/${repo}/src/${encodeURIComponent(ref)}/${filePath}`, { headers: apiHeaders() });
|
|
75
82
|
if (!res.ok) {
|
|
76
83
|
throw new Error(`Failed to fetch ${filePath} from ${workspace}/${repo}@${ref}: HTTP ${res.status}`);
|
|
77
84
|
}
|
|
78
85
|
const ct = res.headers.get('content-type') ?? '';
|
|
79
86
|
if (ct.includes('application/json'))
|
|
80
87
|
return null;
|
|
81
|
-
return res.
|
|
88
|
+
return Buffer.from(await res.arrayBuffer());
|
|
82
89
|
}
|
|
83
|
-
async function fetchFile(workspace, repo, filePath, ref) {
|
|
84
|
-
const res = await (0, fetch_1.fetchWithRetry)(`${
|
|
90
|
+
async function fetchFile(workspace, repo, filePath, ref, host) {
|
|
91
|
+
const res = await (0, fetch_1.fetchWithRetry)(`${getApiBase(host)}/repositories/${workspace}/${repo}/src/${encodeURIComponent(ref)}/${filePath}`, { headers: apiHeaders() });
|
|
85
92
|
if (!res.ok) {
|
|
86
93
|
throw new Error(`Failed to fetch ${filePath} from ${workspace}/${repo}@${ref}: HTTP ${res.status}`);
|
|
87
94
|
}
|
|
88
|
-
return res.
|
|
95
|
+
return Buffer.from(await res.arrayBuffer());
|
|
89
96
|
}
|
|
90
|
-
async function listDir(workspace, repo, dirPath, ref) {
|
|
97
|
+
async function listDir(workspace, repo, dirPath, ref, host) {
|
|
98
|
+
(0, logger_1.verbose)(`bitbucket: listing directory ${workspace}/${repo}:${dirPath}@${ref}`);
|
|
91
99
|
const files = [];
|
|
92
|
-
let url = `${
|
|
100
|
+
let url = `${getApiBase(host)}/repositories/${workspace}/${repo}/src/${encodeURIComponent(ref)}/${dirPath}/?pagelen=100`;
|
|
93
101
|
while (url) {
|
|
94
102
|
const res = await (0, fetch_1.fetchWithRetry)(url, { headers: apiHeaders() });
|
|
95
103
|
if (!res.ok) {
|
|
@@ -101,7 +109,7 @@ async function listDir(workspace, repo, dirPath, ref) {
|
|
|
101
109
|
files.push(item.path);
|
|
102
110
|
}
|
|
103
111
|
else if (item.type === 'commit_directory') {
|
|
104
|
-
const sub = await listDir(workspace, repo, item.path, ref);
|
|
112
|
+
const sub = await listDir(workspace, repo, item.path, ref, host);
|
|
105
113
|
files.push(...sub);
|
|
106
114
|
}
|
|
107
115
|
}
|
|
@@ -109,24 +117,24 @@ async function listDir(workspace, repo, dirPath, ref) {
|
|
|
109
117
|
}
|
|
110
118
|
return files;
|
|
111
119
|
}
|
|
112
|
-
async function fetchBitbucket(workspace, repo, file, ref) {
|
|
113
|
-
const resolvedRef = await resolveRef(workspace, repo, ref);
|
|
120
|
+
async function fetchBitbucket(workspace, repo, file, ref, host) {
|
|
121
|
+
const resolvedRef = await resolveRef(workspace, repo, ref, host);
|
|
114
122
|
const normalizedPath = file.replace(/\/$/, '');
|
|
115
123
|
if (!file.endsWith('/')) {
|
|
116
|
-
const content = await fetchFileOrDetect(workspace, repo, normalizedPath, resolvedRef);
|
|
124
|
+
const content = await fetchFileOrDetect(workspace, repo, normalizedPath, resolvedRef, host);
|
|
117
125
|
if (content !== null) {
|
|
118
126
|
return {
|
|
119
127
|
files: new Map([[path.basename(normalizedPath), content]]),
|
|
120
128
|
};
|
|
121
129
|
}
|
|
122
130
|
}
|
|
123
|
-
const paths = await listDir(workspace, repo, normalizedPath, resolvedRef);
|
|
131
|
+
const paths = await listDir(workspace, repo, normalizedPath, resolvedRef, host);
|
|
124
132
|
if (!paths.length) {
|
|
125
133
|
throw new Error(`Failed to fetch ${file} from ${workspace}/${repo}@${resolvedRef} (not a file or empty directory)`);
|
|
126
134
|
}
|
|
127
135
|
const entries = await Promise.all(paths.map(async (p) => [
|
|
128
136
|
path.relative(normalizedPath, p),
|
|
129
|
-
await fetchFile(workspace, repo, p, resolvedRef),
|
|
137
|
+
await fetchFile(workspace, repo, p, resolvedRef, host),
|
|
130
138
|
]));
|
|
131
139
|
return { files: new Map(entries) };
|
|
132
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitbucket.js","sourceRoot":"","sources":["../../src/sources/bitbucket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"bitbucket.js","sourceRoot":"","sources":["../../src/sources/bitbucket.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/exec.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function fetchExec(command: string):
|
|
1
|
+
export declare function fetchExec(command: string): Buffer;
|
|
2
2
|
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/sources/exec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/sources/exec.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBjD"}
|
package/dist/sources/exec.js
CHANGED
|
@@ -3,16 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.fetchExec = fetchExec;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
5
|
const shell_1 = require("../shell");
|
|
6
|
+
const logger_1 = require("../logger");
|
|
6
7
|
function fetchExec(command) {
|
|
8
|
+
(0, logger_1.verbose)(`exec: ${command}`);
|
|
7
9
|
const { shell, args } = (0, shell_1.getShellArgs)(command);
|
|
8
|
-
const result = (0, child_process_1.spawnSync)(shell, args, {
|
|
10
|
+
const result = (0, child_process_1.spawnSync)(shell, args, {
|
|
11
|
+
encoding: 'buffer',
|
|
12
|
+
maxBuffer: 200 * 1024 * 1024,
|
|
13
|
+
});
|
|
9
14
|
if (result.error) {
|
|
10
15
|
throw new Error(`exec failed to spawn: ${result.error.message}`);
|
|
11
16
|
}
|
|
12
17
|
if (result.status !== 0) {
|
|
13
|
-
const stderr = result.stderr?.trim() ?? '';
|
|
18
|
+
const stderr = result.stderr?.toString('utf8').trim() ?? '';
|
|
14
19
|
throw new Error(`exec exited with code ${result.status}${stderr ? ': ' + stderr : ''}`);
|
|
15
20
|
}
|
|
16
|
-
return result.stdout;
|
|
21
|
+
return result.stdout ?? Buffer.alloc(0);
|
|
17
22
|
}
|
|
18
23
|
//# sourceMappingURL=exec.js.map
|
package/dist/sources/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/sources/exec.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/sources/exec.ts"],"names":[],"mappings":";;AAIA,8BAiBC;AArBD,iDAA0C;AAC1C,oCAAwC;AACxC,sCAAoC;AAEpC,SAAgB,SAAS,CAAC,OAAe;IACvC,IAAA,gBAAO,EAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,IAAI,EAAE;QACpC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/sources/git.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export interface GitResult {
|
|
2
|
-
files: Map<string,
|
|
2
|
+
files: Map<string, Buffer>;
|
|
3
3
|
}
|
|
4
|
+
export declare function isGitRemoteUrl(s: string): boolean;
|
|
5
|
+
export declare function parseGitRemoteSpec(spec: string): {
|
|
6
|
+
repo: string;
|
|
7
|
+
file: string;
|
|
8
|
+
ref: string | undefined;
|
|
9
|
+
};
|
|
4
10
|
export declare function fetchGit(repo: string, file: string, ref?: string): GitResult;
|
|
5
11
|
//# sourceMappingURL=git.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AA8CD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAwBA;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAsE5E"}
|
package/dist/sources/git.js
CHANGED
|
@@ -33,11 +33,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isGitRemoteUrl = isGitRemoteUrl;
|
|
37
|
+
exports.parseGitRemoteSpec = parseGitRemoteSpec;
|
|
36
38
|
exports.fetchGit = fetchGit;
|
|
37
39
|
const child_process_1 = require("child_process");
|
|
38
40
|
const fs = __importStar(require("fs"));
|
|
39
41
|
const os = __importStar(require("os"));
|
|
40
42
|
const path = __importStar(require("path"));
|
|
43
|
+
const logger_1 = require("../logger");
|
|
41
44
|
function run(cmd, args, opts = {}) {
|
|
42
45
|
const result = (0, child_process_1.spawnSync)(cmd, args, { encoding: 'utf8', cwd: opts.cwd });
|
|
43
46
|
if (result.error)
|
|
@@ -53,16 +56,55 @@ function looksLikeCommitHash(ref) {
|
|
|
53
56
|
}
|
|
54
57
|
function collectFiles(base, dir, files) {
|
|
55
58
|
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
59
|
+
if (entry.isSymbolicLink())
|
|
60
|
+
continue;
|
|
56
61
|
const full = path.join(dir, entry.name);
|
|
57
62
|
if (entry.isDirectory()) {
|
|
58
63
|
collectFiles(base, full, files);
|
|
59
64
|
}
|
|
60
65
|
else if (entry.isFile()) {
|
|
61
|
-
files.set(path.relative(base, full), fs.readFileSync(full
|
|
66
|
+
files.set(path.relative(base, full), fs.readFileSync(full));
|
|
62
67
|
}
|
|
63
68
|
}
|
|
64
69
|
}
|
|
70
|
+
function redactGitUrl(url) {
|
|
71
|
+
return (url
|
|
72
|
+
// URL-style: scheme://user:pass@host/...
|
|
73
|
+
.replace(/(\/\/)[^@]*@/, '$1***@')
|
|
74
|
+
// SCP-style with password: user:pass@host:path (only when userinfo contains ':')
|
|
75
|
+
.replace(/^[^/:@\s]+:[^/:@\s]+@/, '***@'));
|
|
76
|
+
}
|
|
77
|
+
function isGitRemoteUrl(s) {
|
|
78
|
+
return (s.startsWith('git+ssh://') ||
|
|
79
|
+
s.startsWith('git://') ||
|
|
80
|
+
s.startsWith('ssh://'));
|
|
81
|
+
}
|
|
82
|
+
function parseGitRemoteSpec(spec) {
|
|
83
|
+
if (!isGitRemoteUrl(spec)) {
|
|
84
|
+
throw new Error(`Invalid git URL spec "${spec}". Supported schemes: git+ssh://, git://, ssh://`);
|
|
85
|
+
}
|
|
86
|
+
const schemeEnd = spec.indexOf('://') + 3;
|
|
87
|
+
const separatorIdx = spec.indexOf('//', schemeEnd);
|
|
88
|
+
if (separatorIdx === -1 || separatorIdx <= schemeEnd) {
|
|
89
|
+
throw new Error(`Invalid git URL spec "${spec}". Expected format: <remote-url>//<file-path>[@ref], e.g. git+ssh://git@host/org/repo.git//path/to/file.yml@main (supported schemes: git+ssh://, git://, ssh://)`);
|
|
90
|
+
}
|
|
91
|
+
const repo = spec.slice(0, separatorIdx);
|
|
92
|
+
const rest = spec.slice(separatorIdx + 2);
|
|
93
|
+
const atIdx = rest.lastIndexOf('@');
|
|
94
|
+
const file = atIdx === -1 ? rest : rest.slice(0, atIdx);
|
|
95
|
+
const ref = atIdx === -1 ? undefined : rest.slice(atIdx + 1);
|
|
96
|
+
if (!file) {
|
|
97
|
+
throw new Error(`Invalid git URL spec "${spec}". File path is required after //`);
|
|
98
|
+
}
|
|
99
|
+
return { repo, file, ref };
|
|
100
|
+
}
|
|
65
101
|
function fetchGit(repo, file, ref) {
|
|
102
|
+
const normalized = path.normalize(file);
|
|
103
|
+
if (path.isAbsolute(file) ||
|
|
104
|
+
normalized === '..' ||
|
|
105
|
+
normalized.startsWith('..' + path.sep)) {
|
|
106
|
+
throw new Error(`Unsafe file path escapes repository root: ${file}`);
|
|
107
|
+
}
|
|
66
108
|
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'avanti-git-'));
|
|
67
109
|
try {
|
|
68
110
|
const repoDir = path.join(tmpDir, 'repo');
|
|
@@ -70,6 +112,7 @@ function fetchGit(repo, file, ref) {
|
|
|
70
112
|
const args = ['clone', '--depth', '1'];
|
|
71
113
|
if (ref)
|
|
72
114
|
args.push('--branch', ref);
|
|
115
|
+
(0, logger_1.verbose)(`git ${args.join(' ')} ${redactGitUrl(repo)} <tmpdir>`);
|
|
73
116
|
args.push(repo, repoDir);
|
|
74
117
|
const res = run('git', args);
|
|
75
118
|
if (res.status !== 0) {
|
|
@@ -77,10 +120,12 @@ function fetchGit(repo, file, ref) {
|
|
|
77
120
|
}
|
|
78
121
|
}
|
|
79
122
|
else {
|
|
123
|
+
(0, logger_1.verbose)(`git clone ${redactGitUrl(repo)} <tmpdir>`);
|
|
80
124
|
const cloneRes = run('git', ['clone', repo, repoDir]);
|
|
81
125
|
if (cloneRes.status !== 0) {
|
|
82
126
|
throw new Error(`git clone failed: ${cloneRes.stderr.trim()}`);
|
|
83
127
|
}
|
|
128
|
+
(0, logger_1.verbose)(`git checkout ${ref}`);
|
|
84
129
|
const checkoutRes = run('git', ['checkout', ref], { cwd: repoDir });
|
|
85
130
|
if (checkoutRes.status !== 0) {
|
|
86
131
|
throw new Error(`git checkout ${ref} failed: ${checkoutRes.stderr.trim()}`);
|
|
@@ -91,6 +136,12 @@ function fetchGit(repo, file, ref) {
|
|
|
91
136
|
if (!fs.existsSync(fullPath)) {
|
|
92
137
|
throw new Error(`Path not found in repository: ${file}`);
|
|
93
138
|
}
|
|
139
|
+
const realRepoDir = fs.realpathSync(repoDir);
|
|
140
|
+
const realFullPath = fs.realpathSync(fullPath);
|
|
141
|
+
if (realFullPath !== realRepoDir &&
|
|
142
|
+
!realFullPath.startsWith(realRepoDir + path.sep)) {
|
|
143
|
+
throw new Error(`Unsafe file path escapes repository root via symlink: ${file}`);
|
|
144
|
+
}
|
|
94
145
|
const files = new Map();
|
|
95
146
|
const stat = fs.statSync(fullPath);
|
|
96
147
|
if (stat.isDirectory() || file.endsWith('/')) {
|
|
@@ -100,7 +151,7 @@ function fetchGit(repo, file, ref) {
|
|
|
100
151
|
}
|
|
101
152
|
}
|
|
102
153
|
else {
|
|
103
|
-
files.set(path.basename(normalizedFile), fs.readFileSync(fullPath
|
|
154
|
+
files.set(path.basename(normalizedFile), fs.readFileSync(fullPath));
|
|
104
155
|
}
|
|
105
156
|
return { files };
|
|
106
157
|
}
|
package/dist/sources/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/sources/git.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/github.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface GitHubResult {
|
|
2
|
-
files: Map<string,
|
|
2
|
+
files: Map<string, Buffer>;
|
|
3
3
|
}
|
|
4
|
-
export declare function fetchGitHub(repo: string, file: string, ref: string | undefined): Promise<GitHubResult>;
|
|
4
|
+
export declare function fetchGitHub(repo: string, file: string, ref: string | undefined, host?: string): Promise<GitHubResult>;
|
|
5
5
|
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAgQD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
|