@udondan/avanti 0.4.0 → 0.5.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/CHANGELOG.md +13 -0
- package/README.md +29 -4
- package/dist/fetch.d.ts +3 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +37 -0
- package/dist/fetch.js.map +1 -0
- package/dist/sources/github.d.ts +1 -1
- package/dist/sources/github.d.ts.map +1 -1
- package/dist/sources/github.js +124 -20
- package/dist/sources/github.js.map +1 -1
- package/dist/sources/gitlab.d.ts +1 -1
- package/dist/sources/gitlab.d.ts.map +1 -1
- package/dist/sources/gitlab.js +136 -48
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/http.d.ts.map +1 -1
- package/dist/sources/http.js +5 -24
- package/dist/sources/http.js.map +1 -1
- package/dist/sources/index.js +4 -4
- package/dist/sources/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.0](https://github.com/udondan/avanti/compare/v0.4.0...v0.5.0) (2026-05-07)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **fetch:** add exponential backoff retry for all HTTP requests ([#27](https://github.com/udondan/avanti/issues/27)) ([2caf0f3](https://github.com/udondan/avanti/commit/2caf0f3dc368fd6a7cead8a2946dc4504693d6f1))
|
|
9
|
+
* **sources:** replace mandatory CLI tools with native HTTP for GitHub and GitLab ([#21](https://github.com/udondan/avanti/issues/21)) ([990b8ee](https://github.com/udondan/avanti/commit/990b8eedc60047d9743eb69358d0967852c8d9a2))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Performance Improvements
|
|
13
|
+
|
|
14
|
+
* parallelize directory file fetches for GitHub and GitLab ([#26](https://github.com/udondan/avanti/issues/26)) ([c11d2e2](https://github.com/udondan/avanti/commit/c11d2e25871eccf75398cf11eb6b315db7c7a16b))
|
|
15
|
+
|
|
3
16
|
## [0.4.0](https://github.com/udondan/avanti/compare/v0.3.2...v0.4.0) (2026-05-07)
|
|
4
17
|
|
|
5
18
|
|
package/README.md
CHANGED
|
@@ -15,8 +15,8 @@ Assemble local files from any source via a declarative YAML spec.
|
|
|
15
15
|
## Requirements
|
|
16
16
|
|
|
17
17
|
- Node.js 18+
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
|
|
19
|
+
The `glab` and `gh` CLIs are **optional**. Public repositories are accessed directly over HTTPS without any tools installed. The CLIs are only used as a fallback for private repositories or private instances when no token is configured.
|
|
20
20
|
|
|
21
21
|
## Install
|
|
22
22
|
|
|
@@ -163,7 +163,7 @@ src:
|
|
|
163
163
|
github:
|
|
164
164
|
repo: owner/repo # GitHub owner/repo
|
|
165
165
|
file: path/to/file.txt # file or directory in repo
|
|
166
|
-
ref: main # branch or
|
|
166
|
+
ref: main # branch, tag, or $latest (optional)
|
|
167
167
|
```
|
|
168
168
|
|
|
169
169
|
### Directory Sources
|
|
@@ -289,7 +289,32 @@ replace:
|
|
|
289
289
|
|
|
290
290
|
Referencing an undefined variable or a missing environment variable is an error.
|
|
291
291
|
|
|
292
|
-
`$latest` is reserved
|
|
292
|
+
`$latest` is a reserved keyword that resolves to the latest published version and cannot be used as a variable name. For GitLab it resolves to the latest tag sorted by semantic version. For GitHub it resolves to the tag of the latest release; if the repository has no releases, it falls back to the most recently created tag.
|
|
293
|
+
|
|
294
|
+
### Authentication
|
|
295
|
+
|
|
296
|
+
Public repositories on github.com and gitlab.com work without any configuration. For private repositories or private instances, supply a token via environment variable:
|
|
297
|
+
|
|
298
|
+
| Platform | Environment variable | Header sent |
|
|
299
|
+
| -------- | ---------------------------------------- | ------------------------------- |
|
|
300
|
+
| GitHub | `GITHUB_TOKEN` | `Authorization: Bearer <token>` |
|
|
301
|
+
| GitLab | `GITLAB_TOKEN` or `GITLAB_PRIVATE_TOKEN` | `PRIVATE-TOKEN: <token>` |
|
|
302
|
+
|
|
303
|
+
If a request fails with a 401, 403, or 404 response and `gh` / `glab` is installed and authenticated, the tool falls back to the CLI automatically. This means existing CLI setups continue to work for private repos without any extra configuration.
|
|
304
|
+
|
|
305
|
+
### Private Instances
|
|
306
|
+
|
|
307
|
+
**GitLab** — set `GITLAB_HOST` to override the default `gitlab.com`:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
GITLAB_HOST=gitlab.mycompany.com avanti pull
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**GitHub Enterprise Server** — set `GITHUB_HOST` to override the default `github.com` (API requests go to `https://{GITHUB_HOST}/api/v3`):
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
GITHUB_HOST=github.mycompany.com avanti pull
|
|
317
|
+
```
|
|
293
318
|
|
|
294
319
|
## Use Cases
|
|
295
320
|
|
package/dist/fetch.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";AA0BA,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAQnB"}
|
package/dist/fetch.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchWithRetry = void 0;
|
|
4
|
+
const MAX_RETRIES = 5;
|
|
5
|
+
const BASE_DELAY_MS = 1_000;
|
|
6
|
+
const MAX_DELAY_MS = 60_000;
|
|
7
|
+
function sleep(ms) {
|
|
8
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
|
+
}
|
|
10
|
+
function retryDelayMs(attempt, headers) {
|
|
11
|
+
// Retry-After: seconds to wait (GitHub secondary rate limit, GitLab)
|
|
12
|
+
const retryAfter = headers.get('Retry-After');
|
|
13
|
+
if (retryAfter) {
|
|
14
|
+
const secs = parseInt(retryAfter, 10);
|
|
15
|
+
if (!isNaN(secs) && secs > 0)
|
|
16
|
+
return Math.min(secs * 1_000, MAX_DELAY_MS);
|
|
17
|
+
}
|
|
18
|
+
// X-RateLimit-Reset: Unix timestamp when the limit resets (GitHub primary rate limit)
|
|
19
|
+
const resetAt = headers.get('X-RateLimit-Reset');
|
|
20
|
+
if (resetAt) {
|
|
21
|
+
const waitMs = parseInt(resetAt, 10) * 1_000 - Date.now();
|
|
22
|
+
if (waitMs > 0)
|
|
23
|
+
return Math.min(waitMs, MAX_DELAY_MS);
|
|
24
|
+
}
|
|
25
|
+
return Math.min(BASE_DELAY_MS * 2 ** attempt, MAX_DELAY_MS);
|
|
26
|
+
}
|
|
27
|
+
async function fetchWithRetry(url, options = {}) {
|
|
28
|
+
for (let attempt = 0;; attempt++) {
|
|
29
|
+
const res = await fetch(url, options);
|
|
30
|
+
const shouldRetry = res.status === 429 || (res.status >= 500 && res.status <= 599);
|
|
31
|
+
if (!shouldRetry || attempt >= MAX_RETRIES)
|
|
32
|
+
return res;
|
|
33
|
+
await sleep(retryDelayMs(attempt, res.headers));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.fetchWithRetry = fetchWithRetry;
|
|
37
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,OAAgB;IACrD,qEAAqE;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED,sFAAsF;IACtF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,UAAuB,EAAE;IAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GACf,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,WAAW;YAAE,OAAO,GAAG,CAAC;QACvD,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAXD,wCAWC"}
|
package/dist/sources/github.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface GitHubResult {
|
|
2
2
|
files: Map<string, string>;
|
|
3
3
|
}
|
|
4
|
-
export declare function fetchGitHub(repo: string, file: string, ref: string | undefined): GitHubResult
|
|
4
|
+
export declare function fetchGitHub(repo: string, file: string, ref: string | undefined): 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":"AAIA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAgOD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
|
package/dist/sources/github.js
CHANGED
|
@@ -26,22 +26,50 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.fetchGitHub = void 0;
|
|
27
27
|
const child_process_1 = require("child_process");
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
|
+
const fetch_1 = require("../fetch");
|
|
30
|
+
function getApiBase() {
|
|
31
|
+
const host = process.env.GITHUB_HOST;
|
|
32
|
+
return host ? `https://${host}/api/v3` : 'https://api.github.com';
|
|
33
|
+
}
|
|
34
|
+
function apiHeaders() {
|
|
35
|
+
const headers = {
|
|
36
|
+
Accept: 'application/vnd.github+json',
|
|
37
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
38
|
+
'User-Agent': 'scync',
|
|
39
|
+
};
|
|
40
|
+
const token = process.env.GITHUB_TOKEN;
|
|
41
|
+
if (token)
|
|
42
|
+
headers.Authorization = `Bearer ${token}`;
|
|
43
|
+
return headers;
|
|
44
|
+
}
|
|
45
|
+
function shouldFallback(status) {
|
|
46
|
+
return status === 401 || status === 403 || status === 404;
|
|
47
|
+
}
|
|
48
|
+
function isGhAvailable() {
|
|
49
|
+
return !(0, child_process_1.spawnSync)('gh', ['--version'], { encoding: 'utf8' }).error;
|
|
50
|
+
}
|
|
29
51
|
function ghRun(args) {
|
|
30
52
|
const result = (0, child_process_1.spawnSync)('gh', args, { encoding: 'utf8' });
|
|
31
|
-
if (result.error)
|
|
32
|
-
|
|
33
|
-
if (msg.includes('ENOENT')) {
|
|
34
|
-
throw new Error('gh CLI not found. Install it from https://cli.github.com');
|
|
35
|
-
}
|
|
36
|
-
throw new Error(`gh error: ${msg}`);
|
|
37
|
-
}
|
|
53
|
+
if (result.error)
|
|
54
|
+
throw new Error(`gh error: ${result.error.message}`);
|
|
38
55
|
return {
|
|
39
56
|
stdout: result.stdout ?? '',
|
|
40
57
|
stderr: result.stderr ?? '',
|
|
41
58
|
status: result.status,
|
|
42
59
|
};
|
|
43
60
|
}
|
|
44
|
-
function detectPathType(repo, filePath, ref) {
|
|
61
|
+
async function detectPathType(repo, filePath, ref) {
|
|
62
|
+
const res = await (0, fetch_1.fetchWithRetry)(`${getApiBase()}/repos/${repo}/contents/${filePath}?ref=${encodeURIComponent(ref)}`, { headers: apiHeaders() });
|
|
63
|
+
if (res.ok) {
|
|
64
|
+
const data = await res.json();
|
|
65
|
+
return Array.isArray(data) ? 'directory' : 'file';
|
|
66
|
+
}
|
|
67
|
+
if (shouldFallback(res.status) && isGhAvailable()) {
|
|
68
|
+
return detectPathTypeViaCli(repo, filePath, ref);
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Failed to stat ${filePath} in ${repo}@${ref}: HTTP ${res.status}`);
|
|
71
|
+
}
|
|
72
|
+
function detectPathTypeViaCli(repo, filePath, ref) {
|
|
45
73
|
const res = ghRun([
|
|
46
74
|
'api',
|
|
47
75
|
`repos/${repo}/contents/${filePath}?ref=${encodeURIComponent(ref)}`,
|
|
@@ -53,7 +81,18 @@ function detectPathType(repo, filePath, ref) {
|
|
|
53
81
|
}
|
|
54
82
|
return res.stdout.trim();
|
|
55
83
|
}
|
|
56
|
-
function fetchFile(repo, filePath, ref) {
|
|
84
|
+
async function fetchFile(repo, filePath, ref) {
|
|
85
|
+
const res = await (0, fetch_1.fetchWithRetry)(`${getApiBase()}/repos/${repo}/contents/${filePath}?ref=${encodeURIComponent(ref)}`, { headers: apiHeaders() });
|
|
86
|
+
if (!res.ok) {
|
|
87
|
+
if (shouldFallback(res.status) && isGhAvailable()) {
|
|
88
|
+
return fetchFileViaCli(repo, filePath, ref);
|
|
89
|
+
}
|
|
90
|
+
throw new Error(`Failed to fetch ${filePath} from ${repo}@${ref}: HTTP ${res.status}`);
|
|
91
|
+
}
|
|
92
|
+
const data = (await res.json());
|
|
93
|
+
return Buffer.from(data.content.replace(/\n/g, ''), 'base64').toString('utf8');
|
|
94
|
+
}
|
|
95
|
+
function fetchFileViaCli(repo, filePath, ref) {
|
|
57
96
|
const res = ghRun([
|
|
58
97
|
'api',
|
|
59
98
|
`repos/${repo}/contents/${filePath}?ref=${encodeURIComponent(ref)}`,
|
|
@@ -66,7 +105,21 @@ function fetchFile(repo, filePath, ref) {
|
|
|
66
105
|
const b64 = res.stdout.trim().replace(/\\n/g, '').replace(/\n/g, '');
|
|
67
106
|
return Buffer.from(b64, 'base64').toString('utf8');
|
|
68
107
|
}
|
|
69
|
-
function listTree(repo, dirPath, ref) {
|
|
108
|
+
async function listTree(repo, dirPath, ref) {
|
|
109
|
+
const res = await (0, fetch_1.fetchWithRetry)(`${getApiBase()}/repos/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=1`, { headers: apiHeaders() });
|
|
110
|
+
if (!res.ok) {
|
|
111
|
+
if (shouldFallback(res.status) && isGhAvailable()) {
|
|
112
|
+
return listTreeViaCli(repo, dirPath, ref);
|
|
113
|
+
}
|
|
114
|
+
throw new Error(`Failed to list tree ${dirPath} in ${repo}@${ref}: HTTP ${res.status}`);
|
|
115
|
+
}
|
|
116
|
+
const data = (await res.json());
|
|
117
|
+
const prefix = `${dirPath}/`;
|
|
118
|
+
return data.tree
|
|
119
|
+
.filter((item) => item.type === 'blob' && item.path.startsWith(prefix))
|
|
120
|
+
.map((item) => item.path);
|
|
121
|
+
}
|
|
122
|
+
function listTreeViaCli(repo, dirPath, ref) {
|
|
70
123
|
const res = ghRun([
|
|
71
124
|
'api',
|
|
72
125
|
`repos/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=1`,
|
|
@@ -78,24 +131,75 @@ function listTree(repo, dirPath, ref) {
|
|
|
78
131
|
}
|
|
79
132
|
return res.stdout.trim().split('\n').filter(Boolean);
|
|
80
133
|
}
|
|
81
|
-
function
|
|
82
|
-
|
|
134
|
+
async function resolveRef(repo, ref) {
|
|
135
|
+
if (ref !== '$latest')
|
|
136
|
+
return ref ?? 'HEAD';
|
|
137
|
+
// Try latest release first
|
|
138
|
+
const relRes = await (0, fetch_1.fetchWithRetry)(`${getApiBase()}/repos/${repo}/releases/latest`, {
|
|
139
|
+
headers: apiHeaders(),
|
|
140
|
+
});
|
|
141
|
+
if (relRes.ok) {
|
|
142
|
+
const rel = (await relRes.json());
|
|
143
|
+
return rel.tag_name;
|
|
144
|
+
}
|
|
145
|
+
// No releases (404) — fall back to most recent tag
|
|
146
|
+
if (relRes.status === 404) {
|
|
147
|
+
const tagRes = await (0, fetch_1.fetchWithRetry)(`${getApiBase()}/repos/${repo}/tags?per_page=1`, { headers: apiHeaders() });
|
|
148
|
+
if (tagRes.ok) {
|
|
149
|
+
const tags = (await tagRes.json());
|
|
150
|
+
if (tags.length)
|
|
151
|
+
return tags[0].name;
|
|
152
|
+
throw new Error(`No releases or tags found for ${repo}`);
|
|
153
|
+
}
|
|
154
|
+
if (shouldFallback(tagRes.status) && isGhAvailable()) {
|
|
155
|
+
return resolveRefViaCli(repo);
|
|
156
|
+
}
|
|
157
|
+
throw new Error(`Failed to resolve $latest for ${repo}: HTTP ${tagRes.status}`);
|
|
158
|
+
}
|
|
159
|
+
if (shouldFallback(relRes.status) && isGhAvailable()) {
|
|
160
|
+
return resolveRefViaCli(repo);
|
|
161
|
+
}
|
|
162
|
+
throw new Error(`Failed to resolve $latest for ${repo}: HTTP ${relRes.status}`);
|
|
163
|
+
}
|
|
164
|
+
function resolveRefViaCli(repo) {
|
|
165
|
+
const res = ghRun([
|
|
166
|
+
'api',
|
|
167
|
+
`repos/${repo}/releases/latest`,
|
|
168
|
+
'--jq',
|
|
169
|
+
'.tag_name',
|
|
170
|
+
]);
|
|
171
|
+
if (res.status === 0 && res.stdout.trim())
|
|
172
|
+
return res.stdout.trim();
|
|
173
|
+
// Fall back to most recent tag
|
|
174
|
+
const tagRes = ghRun([
|
|
175
|
+
'api',
|
|
176
|
+
`repos/${repo}/tags?per_page=1`,
|
|
177
|
+
'--jq',
|
|
178
|
+
'.[0].name',
|
|
179
|
+
]);
|
|
180
|
+
if (tagRes.status !== 0 || !tagRes.stdout.trim()) {
|
|
181
|
+
throw new Error(`No releases or tags found for ${repo}`);
|
|
182
|
+
}
|
|
183
|
+
return tagRes.stdout.trim();
|
|
184
|
+
}
|
|
185
|
+
async function fetchGitHub(repo, file, ref) {
|
|
186
|
+
const resolvedRef = await resolveRef(repo, ref);
|
|
83
187
|
const normalizedPath = file.replace(/\/$/, '');
|
|
84
188
|
const isDirectory = file.endsWith('/') ||
|
|
85
|
-
detectPathType(repo, normalizedPath, resolvedRef) === 'directory';
|
|
189
|
+
(await detectPathType(repo, normalizedPath, resolvedRef)) === 'directory';
|
|
86
190
|
if (!isDirectory) {
|
|
87
|
-
const content = fetchFile(repo, normalizedPath, resolvedRef);
|
|
191
|
+
const content = await fetchFile(repo, normalizedPath, resolvedRef);
|
|
88
192
|
return { files: new Map([[path.basename(normalizedPath), content]]) };
|
|
89
193
|
}
|
|
90
|
-
const paths = listTree(repo, normalizedPath, resolvedRef);
|
|
194
|
+
const paths = await listTree(repo, normalizedPath, resolvedRef);
|
|
91
195
|
if (!paths.length) {
|
|
92
196
|
throw new Error(`Failed to fetch ${file} from ${repo}@${resolvedRef} (not a file or empty directory)`);
|
|
93
197
|
}
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return { files };
|
|
198
|
+
const entries = await Promise.all(paths.map(async (p) => [
|
|
199
|
+
path.relative(normalizedPath, p),
|
|
200
|
+
await fetchFile(repo, p, resolvedRef),
|
|
201
|
+
]));
|
|
202
|
+
return { files: new Map(entries) };
|
|
99
203
|
}
|
|
100
204
|
exports.fetchGitHub = fetchGitHub;
|
|
101
205
|
//# sourceMappingURL=github.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAC1C,2CAA6B;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/gitlab.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export interface GitLabResult {
|
|
|
2
2
|
/** Map of relative path → content */
|
|
3
3
|
files: Map<string, string>;
|
|
4
4
|
}
|
|
5
|
-
export declare function fetchGitLab(project: string, file: string, ref: string | undefined): GitLabResult
|
|
5
|
+
export declare function fetchGitLab(project: string, file: string, ref: string | undefined): Promise<GitLabResult>;
|
|
6
6
|
//# sourceMappingURL=gitlab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAgTD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,YAAY,CAAC,CAqCvB"}
|
package/dist/sources/gitlab.js
CHANGED
|
@@ -28,31 +28,44 @@ const child_process_1 = require("child_process");
|
|
|
28
28
|
const fs = __importStar(require("fs"));
|
|
29
29
|
const os = __importStar(require("os"));
|
|
30
30
|
const path = __importStar(require("path"));
|
|
31
|
+
const fetch_1 = require("../fetch");
|
|
32
|
+
function getHost() {
|
|
33
|
+
return process.env.GITLAB_HOST ?? 'gitlab.com';
|
|
34
|
+
}
|
|
35
|
+
function apiHeaders() {
|
|
36
|
+
const headers = { 'User-Agent': 'scync' };
|
|
37
|
+
const token = process.env.GITLAB_TOKEN ?? process.env.GITLAB_PRIVATE_TOKEN;
|
|
38
|
+
if (token)
|
|
39
|
+
headers['PRIVATE-TOKEN'] = token;
|
|
40
|
+
return headers;
|
|
41
|
+
}
|
|
42
|
+
function shouldFallback(status) {
|
|
43
|
+
return status === 401 || status === 403 || status === 404;
|
|
44
|
+
}
|
|
45
|
+
function isGlabAvailable() {
|
|
46
|
+
return !(0, child_process_1.spawnSync)('glab', ['--version'], { encoding: 'utf8' }).error;
|
|
47
|
+
}
|
|
31
48
|
function glabRun(args) {
|
|
32
49
|
const result = (0, child_process_1.spawnSync)('glab', args, { encoding: 'utf8' });
|
|
33
|
-
if (result.error)
|
|
34
|
-
|
|
35
|
-
if (msg.includes('ENOENT')) {
|
|
36
|
-
throw new Error('glab CLI not found. Install it from https://gitlab.com/gitlab-org/cli');
|
|
37
|
-
}
|
|
38
|
-
throw new Error(`glab error: ${msg}`);
|
|
39
|
-
}
|
|
50
|
+
if (result.error)
|
|
51
|
+
throw new Error(`glab error: ${result.error.message}`);
|
|
40
52
|
return {
|
|
41
53
|
stdout: result.stdout ?? '',
|
|
42
54
|
stderr: result.stderr ?? '',
|
|
43
55
|
status: result.status,
|
|
44
56
|
};
|
|
45
57
|
}
|
|
46
|
-
function resolveRef(project, ref) {
|
|
58
|
+
async function resolveRef(project, ref) {
|
|
47
59
|
if (!ref || ref === '$latest') {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
const host = getHost();
|
|
61
|
+
const res = await (0, fetch_1.fetchWithRetry)(`https://${host}/api/v4/projects/${encodeURIComponent(project)}/repository/tags?order_by=version&sort=desc&per_page=1`, { headers: apiHeaders() });
|
|
62
|
+
if (!res.ok) {
|
|
63
|
+
if (shouldFallback(res.status) && isGlabAvailable()) {
|
|
64
|
+
return resolveRefViaCli(project);
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Failed to resolve $latest for ${project}: HTTP ${res.status}`);
|
|
54
67
|
}
|
|
55
|
-
const tags =
|
|
68
|
+
const tags = (await res.json());
|
|
56
69
|
if (!tags.length) {
|
|
57
70
|
throw new Error(`No tags found for ${project} (needed to resolve $latest)`);
|
|
58
71
|
}
|
|
@@ -60,7 +73,53 @@ function resolveRef(project, ref) {
|
|
|
60
73
|
}
|
|
61
74
|
return ref;
|
|
62
75
|
}
|
|
63
|
-
function
|
|
76
|
+
function resolveRefViaCli(project) {
|
|
77
|
+
const res = glabRun([
|
|
78
|
+
'api',
|
|
79
|
+
`projects/${encodeURIComponent(project)}/repository/tags?order_by=version&sort=desc&per_page=1`,
|
|
80
|
+
]);
|
|
81
|
+
if (res.status !== 0) {
|
|
82
|
+
throw new Error(`Failed to resolve $latest for ${project}: ${res.stderr}`);
|
|
83
|
+
}
|
|
84
|
+
const tags = JSON.parse(res.stdout);
|
|
85
|
+
if (!tags.length) {
|
|
86
|
+
throw new Error(`No tags found for ${project} (needed to resolve $latest)`);
|
|
87
|
+
}
|
|
88
|
+
return tags[0].name;
|
|
89
|
+
}
|
|
90
|
+
async function detectPathType(project, filePath, ref) {
|
|
91
|
+
const host = getHost();
|
|
92
|
+
const encodedPath = encodeURIComponent(filePath);
|
|
93
|
+
const res = await (0, fetch_1.fetchWithRetry)(`https://${host}/api/v4/projects/${encodeURIComponent(project)}/repository/files/${encodedPath}?ref=${encodeURIComponent(ref)}`, { headers: apiHeaders() });
|
|
94
|
+
if (res.ok)
|
|
95
|
+
return 'file';
|
|
96
|
+
if (shouldFallback(res.status) && isGlabAvailable()) {
|
|
97
|
+
return detectPathTypeViaCli(project, filePath, ref);
|
|
98
|
+
}
|
|
99
|
+
// Assume directory; downstream calls will surface the real error if wrong
|
|
100
|
+
return 'directory';
|
|
101
|
+
}
|
|
102
|
+
function detectPathTypeViaCli(project, filePath, ref) {
|
|
103
|
+
const encodedPath = encodeURIComponent(filePath);
|
|
104
|
+
const res = glabRun([
|
|
105
|
+
'api',
|
|
106
|
+
`projects/${encodeURIComponent(project)}/repository/files/${encodedPath}?ref=${encodeURIComponent(ref)}`,
|
|
107
|
+
]);
|
|
108
|
+
return res.status === 0 ? 'file' : 'directory';
|
|
109
|
+
}
|
|
110
|
+
async function fetchFile(project, filePath, ref) {
|
|
111
|
+
const host = getHost();
|
|
112
|
+
const encodedPath = encodeURIComponent(filePath);
|
|
113
|
+
const res = await (0, fetch_1.fetchWithRetry)(`https://${host}/api/v4/projects/${encodeURIComponent(project)}/repository/files/${encodedPath}/raw?ref=${encodeURIComponent(ref)}`, { headers: apiHeaders() });
|
|
114
|
+
if (!res.ok) {
|
|
115
|
+
if (shouldFallback(res.status) && isGlabAvailable()) {
|
|
116
|
+
return fetchFileViaCli(project, filePath, ref);
|
|
117
|
+
}
|
|
118
|
+
throw new Error(`Failed to fetch ${filePath} from ${project}@${ref}: HTTP ${res.status}`);
|
|
119
|
+
}
|
|
120
|
+
return res.text();
|
|
121
|
+
}
|
|
122
|
+
function fetchFileViaCli(project, filePath, ref) {
|
|
64
123
|
const encodedPath = encodeURIComponent(filePath);
|
|
65
124
|
const res = glabRun([
|
|
66
125
|
'api',
|
|
@@ -71,7 +130,28 @@ function fetchFile(project, filePath, ref) {
|
|
|
71
130
|
}
|
|
72
131
|
return res.stdout;
|
|
73
132
|
}
|
|
74
|
-
function listTree(project, dirPath, ref) {
|
|
133
|
+
async function listTree(project, dirPath, ref) {
|
|
134
|
+
const host = getHost();
|
|
135
|
+
const allPaths = [];
|
|
136
|
+
const perPage = 100;
|
|
137
|
+
let page = 1;
|
|
138
|
+
while (true) {
|
|
139
|
+
const res = await (0, fetch_1.fetchWithRetry)(`https://${host}/api/v4/projects/${encodeURIComponent(project)}/repository/tree?path=${encodeURIComponent(dirPath)}&ref=${encodeURIComponent(ref)}&recursive=true&per_page=${perPage}&page=${page}`, { headers: apiHeaders() });
|
|
140
|
+
if (!res.ok) {
|
|
141
|
+
if (shouldFallback(res.status) && isGlabAvailable()) {
|
|
142
|
+
return listTreeViaCli(project, dirPath, ref);
|
|
143
|
+
}
|
|
144
|
+
throw new Error(`Failed to list tree ${dirPath} in ${project}@${ref}: HTTP ${res.status}`);
|
|
145
|
+
}
|
|
146
|
+
const items = (await res.json());
|
|
147
|
+
allPaths.push(...items.filter((i) => i.type === 'blob').map((i) => i.path));
|
|
148
|
+
if (items.length < perPage)
|
|
149
|
+
break;
|
|
150
|
+
page++;
|
|
151
|
+
}
|
|
152
|
+
return allPaths;
|
|
153
|
+
}
|
|
154
|
+
function listTreeViaCli(project, dirPath, ref) {
|
|
75
155
|
const allPaths = [];
|
|
76
156
|
const perPage = 100;
|
|
77
157
|
let page = 1;
|
|
@@ -102,36 +182,18 @@ function collectFiles(baseDir, dir, files) {
|
|
|
102
182
|
}
|
|
103
183
|
}
|
|
104
184
|
}
|
|
105
|
-
function
|
|
106
|
-
const encodedPath = encodeURIComponent(filePath);
|
|
107
|
-
const res = glabRun([
|
|
108
|
-
'api',
|
|
109
|
-
`projects/${encodeURIComponent(project)}/repository/files/${encodedPath}?ref=${encodeURIComponent(ref)}`,
|
|
110
|
-
]);
|
|
111
|
-
return res.status === 0 ? 'file' : 'directory';
|
|
112
|
-
}
|
|
113
|
-
// Downloads the directory as a tar.gz archive (one API call) and extracts it locally.
|
|
114
|
-
// Returns null if the archive approach fails, so the caller can fall back.
|
|
115
|
-
function fetchDirectoryViaArchive(project, dirPath, ref) {
|
|
116
|
-
const encodedProject = encodeURIComponent(project);
|
|
117
|
-
const result = (0, child_process_1.spawnSync)('glab', [
|
|
118
|
-
'api',
|
|
119
|
-
`projects/${encodedProject}/repository/archive.tar.gz?sha=${encodeURIComponent(ref)}&path=${encodeURIComponent(dirPath)}`,
|
|
120
|
-
], { encoding: 'buffer' });
|
|
121
|
-
if (result.error || result.status !== 0 || !result.stdout?.length)
|
|
122
|
-
return null;
|
|
185
|
+
function extractArchive(buf, dirPath) {
|
|
123
186
|
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'scync-gl-'));
|
|
124
187
|
try {
|
|
125
188
|
const archivePath = path.join(tmpDir, 'archive.tar.gz');
|
|
126
189
|
const extractDir = path.join(tmpDir, 'extracted');
|
|
127
|
-
fs.writeFileSync(archivePath,
|
|
190
|
+
fs.writeFileSync(archivePath, buf);
|
|
128
191
|
fs.mkdirSync(extractDir);
|
|
129
192
|
const tarResult = (0, child_process_1.spawnSync)('tar', ['-xzf', archivePath, '-C', extractDir], {
|
|
130
193
|
encoding: 'utf8',
|
|
131
194
|
});
|
|
132
195
|
if (tarResult.status !== 0)
|
|
133
196
|
return null;
|
|
134
|
-
// The archive root is a single dir with a dynamic name (project-ref-sha/)
|
|
135
197
|
const rootEntries = fs.readdirSync(extractDir);
|
|
136
198
|
if (rootEntries.length !== 1)
|
|
137
199
|
return null;
|
|
@@ -146,28 +208,54 @@ function fetchDirectoryViaArchive(project, dirPath, ref) {
|
|
|
146
208
|
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
147
209
|
}
|
|
148
210
|
}
|
|
149
|
-
function
|
|
150
|
-
const
|
|
211
|
+
async function fetchDirectoryViaArchive(project, dirPath, ref) {
|
|
212
|
+
const host = getHost();
|
|
213
|
+
const encodedProject = encodeURIComponent(project);
|
|
214
|
+
const res = await (0, fetch_1.fetchWithRetry)(`https://${host}/api/v4/projects/${encodedProject}/repository/archive.tar.gz?sha=${encodeURIComponent(ref)}&path=${encodeURIComponent(dirPath)}`, { headers: apiHeaders() });
|
|
215
|
+
if (!res.ok) {
|
|
216
|
+
if (shouldFallback(res.status) && isGlabAvailable()) {
|
|
217
|
+
return fetchDirectoryViaArchiveViaCli(project, dirPath, ref);
|
|
218
|
+
}
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
const buf = Buffer.from(await res.arrayBuffer());
|
|
222
|
+
if (!buf.length)
|
|
223
|
+
return null;
|
|
224
|
+
return extractArchive(buf, dirPath);
|
|
225
|
+
}
|
|
226
|
+
function fetchDirectoryViaArchiveViaCli(project, dirPath, ref) {
|
|
227
|
+
const encodedProject = encodeURIComponent(project);
|
|
228
|
+
const result = (0, child_process_1.spawnSync)('glab', [
|
|
229
|
+
'api',
|
|
230
|
+
`projects/${encodedProject}/repository/archive.tar.gz?sha=${encodeURIComponent(ref)}&path=${encodeURIComponent(dirPath)}`,
|
|
231
|
+
], { encoding: 'buffer' });
|
|
232
|
+
if (result.error || result.status !== 0 || !result.stdout?.length)
|
|
233
|
+
return null;
|
|
234
|
+
return extractArchive(result.stdout, dirPath);
|
|
235
|
+
}
|
|
236
|
+
async function fetchGitLab(project, file, ref) {
|
|
237
|
+
const resolvedRef = await resolveRef(project, ref);
|
|
151
238
|
const normalizedPath = file.replace(/\/$/, '');
|
|
152
239
|
const isDirectory = file.endsWith('/') ||
|
|
153
|
-
detectPathType(project, normalizedPath, resolvedRef) ===
|
|
240
|
+
(await detectPathType(project, normalizedPath, resolvedRef)) ===
|
|
241
|
+
'directory';
|
|
154
242
|
if (!isDirectory) {
|
|
155
|
-
const content = fetchFile(project, normalizedPath, resolvedRef);
|
|
243
|
+
const content = await fetchFile(project, normalizedPath, resolvedRef);
|
|
156
244
|
return { files: new Map([[path.basename(normalizedPath), content]]) };
|
|
157
245
|
}
|
|
158
246
|
// Directory — archive approach first (one API call), then fall back to per-file fetches
|
|
159
|
-
const archived = fetchDirectoryViaArchive(project, normalizedPath, resolvedRef);
|
|
247
|
+
const archived = await fetchDirectoryViaArchive(project, normalizedPath, resolvedRef);
|
|
160
248
|
if (archived)
|
|
161
249
|
return { files: archived };
|
|
162
|
-
const paths = listTree(project, normalizedPath, resolvedRef);
|
|
250
|
+
const paths = await listTree(project, normalizedPath, resolvedRef);
|
|
163
251
|
if (!paths.length) {
|
|
164
252
|
throw new Error(`Failed to fetch ${file} from ${project}@${resolvedRef} (not a file or empty directory)`);
|
|
165
253
|
}
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return { files };
|
|
254
|
+
const entries = await Promise.all(paths.map(async (p) => [
|
|
255
|
+
path.relative(normalizedPath, p),
|
|
256
|
+
await fetchFile(project, p, resolvedRef),
|
|
257
|
+
]));
|
|
258
|
+
return { files: new Map(entries) };
|
|
171
259
|
}
|
|
172
260
|
exports.fetchGitLab = fetchGitLab;
|
|
173
261
|
//# sourceMappingURL=gitlab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/sources/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/sources/http.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQpE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5D"}
|
package/dist/sources/http.js
CHANGED
|
@@ -24,9 +24,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.fetchHttp = exports.inferFilenameFromUrl = void 0;
|
|
27
|
-
const https = __importStar(require("https"));
|
|
28
|
-
const http = __importStar(require("http"));
|
|
29
27
|
const path = __importStar(require("path"));
|
|
28
|
+
const fetch_1 = require("../fetch");
|
|
30
29
|
function inferFilenameFromUrl(url) {
|
|
31
30
|
try {
|
|
32
31
|
const u = new URL(url);
|
|
@@ -39,28 +38,10 @@ function inferFilenameFromUrl(url) {
|
|
|
39
38
|
}
|
|
40
39
|
exports.inferFilenameFromUrl = inferFilenameFromUrl;
|
|
41
40
|
async function fetchHttp(url) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (res.statusCode &&
|
|
47
|
-
res.statusCode >= 300 &&
|
|
48
|
-
res.statusCode < 400 &&
|
|
49
|
-
res.headers.location) {
|
|
50
|
-
fetchHttp(res.headers.location).then(resolve).catch(reject);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (res.statusCode && res.statusCode >= 400) {
|
|
54
|
-
reject(new Error(`HTTP ${res.statusCode} fetching ${url}`));
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const chunks = [];
|
|
58
|
-
res.on('data', (chunk) => chunks.push(chunk));
|
|
59
|
-
res.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
60
|
-
res.on('error', reject);
|
|
61
|
-
})
|
|
62
|
-
.on('error', reject);
|
|
63
|
-
});
|
|
41
|
+
const res = await (0, fetch_1.fetchWithRetry)(url);
|
|
42
|
+
if (!res.ok)
|
|
43
|
+
throw new Error(`HTTP ${res.status} fetching ${url}`);
|
|
44
|
+
return res.text();
|
|
64
45
|
}
|
|
65
46
|
exports.fetchHttp = fetchHttp;
|
|
66
47
|
//# sourceMappingURL=http.js.map
|
package/dist/sources/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/sources/http.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/sources/http.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,oCAA0C;AAE1C,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,IAAI,SAAS,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AARD,oDAQC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAJD,8BAIC"}
|
package/dist/sources/index.js
CHANGED
|
@@ -49,14 +49,14 @@ async function fetchOneSrc(src, workingDir, vars) {
|
|
|
49
49
|
return (0, exec_1.fetchExec)((0, variables_1.resolveVars)(src.exec, vars));
|
|
50
50
|
}
|
|
51
51
|
if ('gitlab' in src) {
|
|
52
|
-
const result = (0, gitlab_1.fetchGitLab)((0, variables_1.resolveVars)(src.gitlab.project, vars), (0, variables_1.resolveVars)(src.gitlab.file, vars), src.gitlab.ref !== undefined
|
|
52
|
+
const result = await (0, gitlab_1.fetchGitLab)((0, variables_1.resolveVars)(src.gitlab.project, vars), (0, variables_1.resolveVars)(src.gitlab.file, vars), src.gitlab.ref !== undefined
|
|
53
53
|
? (0, variables_1.resolveVars)(src.gitlab.ref, vars)
|
|
54
54
|
: undefined);
|
|
55
55
|
const values = Array.from(result.files.values());
|
|
56
56
|
return values.join('\n');
|
|
57
57
|
}
|
|
58
58
|
if ('github' in src) {
|
|
59
|
-
const result = (0, github_1.fetchGitHub)((0, variables_1.resolveVars)(src.github.repo, vars), (0, variables_1.resolveVars)(src.github.file, vars), src.github.ref !== undefined
|
|
59
|
+
const result = await (0, github_1.fetchGitHub)((0, variables_1.resolveVars)(src.github.repo, vars), (0, variables_1.resolveVars)(src.github.file, vars), src.github.ref !== undefined
|
|
60
60
|
? (0, variables_1.resolveVars)(src.github.ref, vars)
|
|
61
61
|
: undefined);
|
|
62
62
|
const values = Array.from(result.files.values());
|
|
@@ -113,13 +113,13 @@ async function fetchSource(entry, workingDir, vars = {}) {
|
|
|
113
113
|
singleResult = { files: new Map([[filename, content]]) };
|
|
114
114
|
}
|
|
115
115
|
else if ('gitlab' in src) {
|
|
116
|
-
const result = (0, gitlab_1.fetchGitLab)((0, variables_1.resolveVars)(src.gitlab.project, vars), (0, variables_1.resolveVars)(src.gitlab.file, vars), src.gitlab.ref !== undefined
|
|
116
|
+
const result = await (0, gitlab_1.fetchGitLab)((0, variables_1.resolveVars)(src.gitlab.project, vars), (0, variables_1.resolveVars)(src.gitlab.file, vars), src.gitlab.ref !== undefined
|
|
117
117
|
? (0, variables_1.resolveVars)(src.gitlab.ref, vars)
|
|
118
118
|
: undefined);
|
|
119
119
|
singleResult = { files: result.files };
|
|
120
120
|
}
|
|
121
121
|
else if ('github' in src) {
|
|
122
|
-
const result = (0, github_1.fetchGitHub)((0, variables_1.resolveVars)(src.github.repo, vars), (0, variables_1.resolveVars)(src.github.file, vars), src.github.ref !== undefined
|
|
122
|
+
const result = await (0, github_1.fetchGitHub)((0, variables_1.resolveVars)(src.github.repo, vars), (0, variables_1.resolveVars)(src.github.file, vars), src.github.ref !== undefined
|
|
123
123
|
? (0, variables_1.resolveVars)(src.github.ref, vars)
|
|
124
124
|
: undefined);
|
|
125
125
|
singleResult = { files: result.files };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B,4CAA2C;AAC3C,iCAAyD;AACzD,mCAAqC;AACrC,iCAAmC;AACnC,qCAAuC;AACvC,qCAAuC;AACvC,6CAA2D;AAM3D,KAAK,UAAU,WAAW,CACxB,GAAY,EACZ,UAAkB,EAClB,IAAe;IAEf,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACtE,OAAO,IAAA,gBAAS,EAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,IAAA,uBAAW,EAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAClB,OAAO,IAAA,gBAAS,EAAC,IAAA,uBAAW,EAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAA,oBAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"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"}
|