@tapflowio/relay 0.11.1 → 0.13.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/dist/RelayServer.d.ts.map +1 -1
- package/dist/RelayServer.js +6 -0
- package/dist/RelayServer.js.map +1 -1
- package/dist/api/builds.d.ts +19 -3
- package/dist/api/builds.d.ts.map +1 -1
- package/dist/api/builds.js +232 -43
- package/dist/api/builds.js.map +1 -1
- package/dist/api/webhooks.d.ts +6 -0
- package/dist/api/webhooks.d.ts.map +1 -0
- package/dist/api/webhooks.js +72 -0
- package/dist/api/webhooks.js.map +1 -0
- package/dist/lib/config.d.ts +11 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +47 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/webhookUrl.d.ts +11 -0
- package/dist/lib/webhookUrl.d.ts.map +1 -0
- package/dist/lib/webhookUrl.js +40 -0
- package/dist/lib/webhookUrl.js.map +1 -0
- package/dist/lib/webhooks.d.ts +33 -0
- package/dist/lib/webhooks.d.ts.map +1 -0
- package/dist/lib/webhooks.js +54 -0
- package/dist/lib/webhooks.js.map +1 -0
- package/dist/migrations/013_webhook_endpoints.sql +13 -0
- package/package.json +2 -2
- package/public/assets/AppCenter-DbFf7BKA.js +21 -0
- package/public/assets/AppCenter-DbFf7BKA.js.br +0 -0
- package/public/assets/{Default-iwN63mvx.js → Default-BXiTKHz2.js} +1 -1
- package/public/assets/Default-BXiTKHz2.js.br +0 -0
- package/public/assets/{Invite-KgNlAGmi.js → Invite-Dw4wdx9j.js} +1 -1
- package/public/assets/Invite-Dw4wdx9j.js.br +0 -0
- package/public/assets/{MacResources-DeoMc2P5.js → MacResources-D-j1pG9s.js} +1 -1
- package/public/assets/MacResources-D-j1pG9s.js.br +0 -0
- package/public/assets/{NotFound-DXxeYVTc.js → NotFound-BwAREUV8.js} +1 -1
- package/public/assets/NotFound-BwAREUV8.js.br +2 -0
- package/public/assets/{QASession-D7Jq7r4v.js → QASession-Du5LOUTZ.js} +1 -1
- package/public/assets/QASession-Du5LOUTZ.js.br +0 -0
- package/public/assets/{ResetPassword-jaM2ctjM.js → ResetPassword-C6cya_7-.js} +1 -1
- package/public/assets/ResetPassword-C6cya_7-.js.br +0 -0
- package/public/assets/{Setup-mmxbjJ83.js → Setup-DHS2ZvMu.js} +1 -1
- package/public/assets/Setup-DHS2ZvMu.js.br +0 -0
- package/public/assets/{Team-C_u-hG_S.js → Team-DkIXb37o.js} +1 -1
- package/public/assets/Team-DkIXb37o.js.br +0 -0
- package/public/assets/{Tokens-Dkd2LkfB.js → Tokens-DxZUmUPI.js} +1 -1
- package/public/assets/Tokens-DxZUmUPI.js.br +0 -0
- package/public/assets/{alert-dialog-CFyLEW41.js → alert-dialog-CPQLr1ij.js} +1 -1
- package/public/assets/alert-dialog-CPQLr1ij.js.br +0 -0
- package/public/assets/{badge-D6kZI81S.js → badge-B63ynAZJ.js} +1 -1
- package/public/assets/badge-B63ynAZJ.js.br +0 -0
- package/public/assets/{build-format-Ff9JwBl0.js → build-format-CcGvUI_j.js} +1 -1
- package/public/assets/build-format-CcGvUI_j.js.br +0 -0
- package/public/assets/{dialog-BZAnuIhx.js → dialog-CEEdc-Oq.js} +1 -1
- package/public/assets/dialog-CEEdc-Oq.js.br +0 -0
- package/public/assets/{index-nsRC4db_.js → index-D8ViYmeP.js} +2 -2
- package/public/assets/index-D8ViYmeP.js.br +0 -0
- package/public/assets/{pencil-sNgkZjUH.js → pencil-BAhJ8VF-.js} +1 -1
- package/public/assets/pencil-BAhJ8VF-.js.br +0 -0
- package/public/assets/{table-CRY1fpd-.js → table-IfQacRqI.js} +1 -1
- package/public/assets/table-IfQacRqI.js.br +0 -0
- package/public/assets/{tabs-C6bzsSdg.js → tabs-DKQ2XF1o.js} +1 -1
- package/public/assets/tabs-DKQ2XF1o.js.br +0 -0
- package/public/assets/{trash-2-nLbk3HF-.js → trash-2-Bfw6hch4.js} +1 -1
- package/public/assets/trash-2-Bfw6hch4.js.br +0 -0
- package/public/index.html +1 -1
- package/public/index.html.br +0 -0
- package/public/assets/AppCenter-DXghiZpr.js +0 -21
- package/public/assets/AppCenter-DXghiZpr.js.br +0 -0
- package/public/assets/Default-iwN63mvx.js.br +0 -0
- package/public/assets/Invite-KgNlAGmi.js.br +0 -0
- package/public/assets/MacResources-DeoMc2P5.js.br +0 -0
- package/public/assets/NotFound-DXxeYVTc.js.br +0 -2
- package/public/assets/QASession-D7Jq7r4v.js.br +0 -0
- package/public/assets/ResetPassword-jaM2ctjM.js.br +0 -0
- package/public/assets/Setup-mmxbjJ83.js.br +0 -0
- package/public/assets/Team-C_u-hG_S.js.br +0 -0
- package/public/assets/Tokens-Dkd2LkfB.js.br +0 -0
- package/public/assets/alert-dialog-CFyLEW41.js.br +0 -0
- package/public/assets/badge-D6kZI81S.js.br +0 -0
- package/public/assets/build-format-Ff9JwBl0.js.br +0 -0
- package/public/assets/dialog-BZAnuIhx.js.br +0 -0
- package/public/assets/index-nsRC4db_.js.br +0 -0
- package/public/assets/pencil-sNgkZjUH.js.br +0 -0
- package/public/assets/table-CRY1fpd-.js.br +0 -0
- package/public/assets/tabs-C6bzsSdg.js.br +0 -0
- package/public/assets/trash-2-nLbk3HF-.js.br +0 -0
package/dist/api/builds.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
+
import zlib from 'zlib';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
import { tmpdir } from 'os';
|
|
4
5
|
import { randomUUID } from 'crypto';
|
|
@@ -8,6 +9,31 @@ import { getDb } from '../db.js';
|
|
|
8
9
|
import { requireAuth, requireBuildAuth } from '../middleware/auth.js';
|
|
9
10
|
import { json, readJson } from '../router.js';
|
|
10
11
|
import { unlinkSafe } from '../lib/uploads.js';
|
|
12
|
+
import { deliverWebhooks } from '../lib/webhooks.js';
|
|
13
|
+
export function buildFileKind(filename) {
|
|
14
|
+
const lower = filename.toLowerCase();
|
|
15
|
+
if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz'))
|
|
16
|
+
return 'ios-tar';
|
|
17
|
+
if (lower.endsWith('.zip'))
|
|
18
|
+
return 'ios-zip';
|
|
19
|
+
if (lower.endsWith('.apk'))
|
|
20
|
+
return 'android';
|
|
21
|
+
if (lower.endsWith('.ipa'))
|
|
22
|
+
return 'ipa';
|
|
23
|
+
if (lower.endsWith('.aab'))
|
|
24
|
+
return 'aab';
|
|
25
|
+
return 'unknown';
|
|
26
|
+
}
|
|
27
|
+
/** 알려진 아카이브 확장자를 벗긴 베이스 이름(메타 부재 시 앱 이름 폴백용). */
|
|
28
|
+
function stripArchiveExt(filename) {
|
|
29
|
+
const base = path.basename(filename);
|
|
30
|
+
const lower = base.toLowerCase();
|
|
31
|
+
for (const ext of ['.tar.gz', '.tgz', '.app.zip', '.zip', '.apk', '.ipa', '.aab']) {
|
|
32
|
+
if (lower.endsWith(ext))
|
|
33
|
+
return base.slice(0, base.length - ext.length);
|
|
34
|
+
}
|
|
35
|
+
return base.replace(/\.[^.]+$/, '');
|
|
36
|
+
}
|
|
11
37
|
// ── zip / plist helpers ────────────────────────────────────────────────────
|
|
12
38
|
function parseXmlPlist(xml) {
|
|
13
39
|
const result = {};
|
|
@@ -17,9 +43,36 @@ function parseXmlPlist(xml) {
|
|
|
17
43
|
result[m[1]] = m[2];
|
|
18
44
|
return result;
|
|
19
45
|
}
|
|
46
|
+
/** Info.plist Buffer(xml 또는 bplist)에서 CFBundle* 를 파싱한다. 아카이브 종류와 무관. */
|
|
47
|
+
function parseInfoPlist(plistBuf) {
|
|
48
|
+
let parsed;
|
|
49
|
+
if (plistBuf.subarray(0, 6).toString() === 'bplist') {
|
|
50
|
+
// binary plist — plutil 시도 (macOS only; 없으면 빈 결과)
|
|
51
|
+
const plutil = spawnSync('plutil', ['-convert', 'xml1', '-o', '-', '-'], {
|
|
52
|
+
input: plistBuf,
|
|
53
|
+
encoding: 'utf8',
|
|
54
|
+
});
|
|
55
|
+
if (plutil.status !== 0)
|
|
56
|
+
return { bundleId: null, versionName: null, buildNumber: null, appName: null };
|
|
57
|
+
parsed = parseXmlPlist(plutil.stdout);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
parsed = parseXmlPlist(plistBuf.toString('utf8'));
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
bundleId: parsed['CFBundleIdentifier'] ?? null,
|
|
64
|
+
versionName: parsed['CFBundleShortVersionString'] ?? null,
|
|
65
|
+
buildNumber: parsed['CFBundleVersion'] ?? null,
|
|
66
|
+
appName: parsed['CFBundleDisplayName'] ?? parsed['CFBundleName'] ?? null,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// 아카이브 리스트/엔트리 읽기의 stdout 상한. 기본 maxBuffer(1MB)는 파일 많은 큰 .app
|
|
70
|
+
// 리스트나 큰 실행 바이너리에서 넘쳐(ENOBUFS, status=null) 검증을 스킵/오탐시킬 수 있어
|
|
71
|
+
// 넉넉히 잡는다. 초과 시엔 각 호출부가 fail-closed(거절)로 처리한다.
|
|
72
|
+
const ARCHIVE_READ_MAXBUFFER = 256 * 1024 * 1024; // 256 MB
|
|
20
73
|
/** zip 내 루트 수준 *.app 디렉토리 이름을 찾는다. 없으면 null. */
|
|
21
74
|
function findAppDirInZip(zipPath) {
|
|
22
|
-
const list = spawnSync('unzip', ['-l', zipPath], { encoding: 'utf8' });
|
|
75
|
+
const list = spawnSync('unzip', ['-l', zipPath], { encoding: 'utf8', maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
23
76
|
if (list.status !== 0)
|
|
24
77
|
return null;
|
|
25
78
|
// " 12345 2024-01-01 00:00:00 MyApp.app/" 형태를 매칭 (앱 이름에 공백 포함 가능)
|
|
@@ -37,30 +90,50 @@ export function extractAppZipInfo(zipPath) {
|
|
|
37
90
|
const appDir = findAppDirInZip(zipPath);
|
|
38
91
|
if (!appDir)
|
|
39
92
|
return null;
|
|
40
|
-
const extract = spawnSync('unzip', ['-p', zipPath, `${appDir}/Info.plist`]);
|
|
93
|
+
const extract = spawnSync('unzip', ['-p', zipPath, `${appDir}/Info.plist`], { maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
41
94
|
if (extract.status !== 0 || !extract.stdout)
|
|
42
95
|
return null;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
96
|
+
return parseInfoPlist(extract.stdout);
|
|
97
|
+
}
|
|
98
|
+
// ── tar.gz helpers (EAS 시뮬레이터 산출물) ──────────────────────────────────
|
|
99
|
+
// tar 는 순차 스캔이라 zip 처럼 랜덤액세스가 어렵다. tar 바이너리가 이름을 해석하게
|
|
100
|
+
// 두어(-tzf/-xzOf) PAX/GNU long-name 도 안전하게 처리한다 (손으로 파싱하지 않음).
|
|
101
|
+
/** tar.gz 내 루트 수준 *.app 디렉토리 이름을 찾는다. 없으면 null. */
|
|
102
|
+
function findAppDirInTar(tarPath) {
|
|
103
|
+
const list = spawnSync('tar', ['-tzf', tarPath], { encoding: 'utf8', maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
104
|
+
if (list.status !== 0)
|
|
105
|
+
return null;
|
|
106
|
+
// 최상위 "Foo.app/..." 만 — 프레임워크 내부 중첩 .app/Info.plist 오탐 방지.
|
|
107
|
+
const re = /^(?:\.\/)?([^/]+\.app)\//m;
|
|
108
|
+
const m = re.exec(list.stdout);
|
|
109
|
+
return m ? m[1] : null;
|
|
110
|
+
}
|
|
111
|
+
/** tar.gz 안 특정 엔트리를 stdout Buffer 로 읽는다. 실패 시 null. */
|
|
112
|
+
function readTarEntry(tarPath, entry) {
|
|
113
|
+
// 아카이브가 "./Foo.app/..." 형태일 수 있어 두 후보를 시도한다.
|
|
114
|
+
for (const name of [entry, `./${entry}`]) {
|
|
115
|
+
const r = spawnSync('tar', ['-xzOf', tarPath, name], { maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
116
|
+
if (r.status === 0 && r.stdout && r.stdout.length)
|
|
117
|
+
return r.stdout;
|
|
57
118
|
}
|
|
58
|
-
return
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
/** .tar.gz 안 *.app/Info.plist 에서 앱 메타데이터를 추출한다. 구조 오류 시 null. */
|
|
122
|
+
export function extractAppTarInfo(tarPath) {
|
|
123
|
+
const appDir = findAppDirInTar(tarPath);
|
|
124
|
+
if (!appDir)
|
|
125
|
+
return null;
|
|
126
|
+
const buf = readTarEntry(tarPath, `${appDir}/Info.plist`);
|
|
127
|
+
if (!buf)
|
|
128
|
+
return null;
|
|
129
|
+
return parseInfoPlist(buf);
|
|
130
|
+
}
|
|
131
|
+
// ── archive-agnostic dispatch ───────────────────────────────────────────────
|
|
132
|
+
function findAppDir(filePath) {
|
|
133
|
+
return buildFileKind(filePath) === 'ios-tar' ? findAppDirInTar(filePath) : findAppDirInZip(filePath);
|
|
134
|
+
}
|
|
135
|
+
export function extractAppInfo(filePath) {
|
|
136
|
+
return buildFileKind(filePath) === 'ios-tar' ? extractAppTarInfo(filePath) : extractAppZipInfo(filePath);
|
|
64
137
|
}
|
|
65
138
|
/** ANDROID_HOME/build-tools 아래에서 최신 aapt 경로를 찾는다. macOS 기본 경로 + PATH fallback 포함. */
|
|
66
139
|
function findAapt() {
|
|
@@ -110,16 +183,12 @@ function extractApkInfo(apkPath) {
|
|
|
110
183
|
};
|
|
111
184
|
}
|
|
112
185
|
/**
|
|
113
|
-
* lipo
|
|
186
|
+
* Mach-O 바이너리 Buffer에 lipo -info 를 돌려 시뮬레이터 슬라이스 존재를 확인한다.
|
|
114
187
|
* lipo 미설치(Linux relay) 시 null 반환 → 검증 skip.
|
|
115
188
|
*/
|
|
116
|
-
function
|
|
117
|
-
const binaryName = path.basename(appDir, '.app');
|
|
118
|
-
const extract = spawnSync('unzip', ['-p', zipPath, `${appDir}/${binaryName}`]);
|
|
119
|
-
if (extract.status !== 0 || !extract.stdout?.length)
|
|
120
|
-
return null;
|
|
189
|
+
function lipoHasSimSlice(binaryBuf) {
|
|
121
190
|
const tmpBin = path.join(tmpdir(), `tapflow-lipo-${randomUUID()}`);
|
|
122
|
-
fs.writeFileSync(tmpBin,
|
|
191
|
+
fs.writeFileSync(tmpBin, binaryBuf);
|
|
123
192
|
try {
|
|
124
193
|
const lipo = spawnSync('lipo', ['-info', tmpBin], { encoding: 'utf8' });
|
|
125
194
|
if (lipo.status !== 0)
|
|
@@ -136,6 +205,22 @@ function hasSimulatorSlice(zipPath, appDir) {
|
|
|
136
205
|
catch { /* ignore */ }
|
|
137
206
|
}
|
|
138
207
|
}
|
|
208
|
+
/** .app.zip / .tar.gz 의 .app 실행 바이너리에 시뮬레이터 슬라이스가 있는지 확인. */
|
|
209
|
+
function hasSimulatorSlice(filePath, appDir) {
|
|
210
|
+
const binaryName = path.basename(appDir, '.app');
|
|
211
|
+
let binaryBuf = null;
|
|
212
|
+
if (buildFileKind(filePath) === 'ios-tar') {
|
|
213
|
+
binaryBuf = readTarEntry(filePath, `${appDir}/${binaryName}`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const extract = spawnSync('unzip', ['-p', filePath, `${appDir}/${binaryName}`], { maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
217
|
+
if (extract.status === 0 && extract.stdout?.length)
|
|
218
|
+
binaryBuf = extract.stdout;
|
|
219
|
+
}
|
|
220
|
+
if (!binaryBuf?.length)
|
|
221
|
+
return null;
|
|
222
|
+
return lipoHasSimSlice(binaryBuf);
|
|
223
|
+
}
|
|
139
224
|
// ── app 자동 생성 / 조회 ──────────────────────────────────────────────────
|
|
140
225
|
export function upsertApp(name, bundleIdKey, platform) {
|
|
141
226
|
const db = getDb();
|
|
@@ -221,11 +306,14 @@ export async function handleUpdateBuild(req, res, params) {
|
|
|
221
306
|
const auth = requireAuth(req, res);
|
|
222
307
|
if (!auth)
|
|
223
308
|
return;
|
|
309
|
+
// Parse the body before reading current state, so the SELECT and UPDATE below run
|
|
310
|
+
// with no await between them. Closes a TOCTOU window where two concurrent PATCHes
|
|
311
|
+
// could both observe the old status_label and both fire the webhook.
|
|
312
|
+
const body = await readJson(req);
|
|
224
313
|
const db = getDb();
|
|
225
314
|
const existing = db.prepare('SELECT status_label FROM builds WHERE id = ?').get(params.id);
|
|
226
315
|
if (!existing)
|
|
227
316
|
return json(res, 404, { error: 'Build not found' });
|
|
228
|
-
const body = await readJson(req);
|
|
229
317
|
const VALID_STATUS = ['Backlog', 'In Progress', 'Done', 'Rejected'];
|
|
230
318
|
const updates = [];
|
|
231
319
|
const values = [];
|
|
@@ -252,6 +340,30 @@ export async function handleUpdateBuild(req, res, params) {
|
|
|
252
340
|
if (result.changes === 0)
|
|
253
341
|
return json(res, 404, { error: 'Build not found' });
|
|
254
342
|
json(res, 200, { ok: true });
|
|
343
|
+
// Fire webhooks on a review-status transition into Done/Rejected. Fire-and-forget and
|
|
344
|
+
// best-effort: neither the synchronous lookup nor delivery may reject the handler
|
|
345
|
+
// after the response above has already been sent.
|
|
346
|
+
const next = body.status_label;
|
|
347
|
+
if ('status_label' in body && (next === 'Done' || next === 'Rejected') && existing.status_label !== next) {
|
|
348
|
+
try {
|
|
349
|
+
const info = db
|
|
350
|
+
.prepare('SELECT b.version_name, a.platform FROM builds b JOIN apps a ON a.id = b.app_id WHERE b.id = ?')
|
|
351
|
+
.get(params.id);
|
|
352
|
+
void deliverWebhooks({
|
|
353
|
+
event: 'build.status_changed',
|
|
354
|
+
build: {
|
|
355
|
+
id: String(params.id),
|
|
356
|
+
platform: info?.platform ?? null,
|
|
357
|
+
appVersion: info?.version_name ?? null,
|
|
358
|
+
status: next,
|
|
359
|
+
},
|
|
360
|
+
changedAt: new Date().toISOString(),
|
|
361
|
+
}).catch(() => { });
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
// best-effort: never let webhook wiring reject the already-sent response
|
|
365
|
+
}
|
|
366
|
+
}
|
|
255
367
|
}
|
|
256
368
|
// Schedule deletion: an explicit, manual action that puts the build on the purge
|
|
257
369
|
// clock (delete_after = now + TTL). Orthogonal to status_label (issue #258).
|
|
@@ -282,6 +394,69 @@ function maxBuildUploadBytes() {
|
|
|
282
394
|
const v = Number(process.env.TAPFLOW_MAX_BUILD_BYTES);
|
|
283
395
|
return Number.isFinite(v) && v > 0 ? v : 500 * 1024 * 1024;
|
|
284
396
|
}
|
|
397
|
+
// 해제 후 크기 상한(gzip bomb 방어). 압축 전 상한과 별개. 기본 업로드 상한×4.
|
|
398
|
+
function maxUnpackedBytes() {
|
|
399
|
+
const v = Number(process.env.TAPFLOW_MAX_UNPACKED_BYTES);
|
|
400
|
+
return Number.isFinite(v) && v > 0 ? v : maxBuildUploadBytes() * 4;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* 업로드된 .tar.gz 를 설치 전에 검증한다 (R7). tar 바이너리가 이름을 해석하므로
|
|
404
|
+
* PAX/GNU long-name 우회가 없다. 문제 시 에러 문구, 정상 시 null.
|
|
405
|
+
* - 손상/비-gzip: tar -tzf 실패
|
|
406
|
+
* - path traversal: 절대경로 또는 `..` 세그먼트
|
|
407
|
+
* - symlink/hardlink 탈출: -tzvf 의 타입 문자(l/h)
|
|
408
|
+
* - gzip bomb: 해제 스트림 바이트가 상한 초과 (전체 버퍼링 없이 조기 중단)
|
|
409
|
+
*/
|
|
410
|
+
export async function validateTarGz(tarPath) {
|
|
411
|
+
// fail-closed: 버퍼 초과(ENOBUFS, status=null)나 tar 부재(ENOENT)면 stdout이 잘려
|
|
412
|
+
// 검증이 우회될 수 있으므로 거절한다. maxBuffer 를 넉넉히 잡아 정상 아카이브는 통과.
|
|
413
|
+
const list = spawnSync('tar', ['-tzf', tarPath], { encoding: 'utf8', maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
414
|
+
if (list.error || list.status !== 0)
|
|
415
|
+
return 'Corrupt or invalid .tar.gz archive.';
|
|
416
|
+
const names = list.stdout.split('\n').filter(Boolean);
|
|
417
|
+
for (const raw of names) {
|
|
418
|
+
const name = raw.replace(/^\.\//, '');
|
|
419
|
+
if (name.startsWith('/') || name.split('/').some((seg) => seg === '..')) {
|
|
420
|
+
return 'Archive contains an unsafe path (absolute or ".." escape) and was rejected.';
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// 엔트리 타입 검사: ls -l 스타일 첫 문자 l(symlink)/h(hardlink) 거부.
|
|
424
|
+
// 목록을 못 얻으면(에러/잘림) symlink 검사를 건너뛰지 말고 fail-closed 로 거절한다.
|
|
425
|
+
const verbose = spawnSync('tar', ['-tzvf', tarPath], { encoding: 'utf8', maxBuffer: ARCHIVE_READ_MAXBUFFER });
|
|
426
|
+
if (verbose.error || verbose.status !== 0)
|
|
427
|
+
return 'Corrupt or invalid .tar.gz archive.';
|
|
428
|
+
for (const line of verbose.stdout.split('\n')) {
|
|
429
|
+
const c = line[0];
|
|
430
|
+
if (c === 'l' || c === 'h') {
|
|
431
|
+
return 'Archive contains a symbolic or hard link and was rejected.';
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
// gzip bomb: 스트리밍 해제 바이트를 세며 상한 초과 시 즉시 중단 (t3.small 메모리 보호).
|
|
435
|
+
const cap = maxUnpackedBytes();
|
|
436
|
+
return await new Promise((resolve) => {
|
|
437
|
+
let total = 0;
|
|
438
|
+
let done = false;
|
|
439
|
+
const input = fs.createReadStream(tarPath);
|
|
440
|
+
const gunzip = zlib.createGunzip();
|
|
441
|
+
const finish = (r) => {
|
|
442
|
+
if (done)
|
|
443
|
+
return;
|
|
444
|
+
done = true;
|
|
445
|
+
input.destroy();
|
|
446
|
+
gunzip.destroy();
|
|
447
|
+
resolve(r);
|
|
448
|
+
};
|
|
449
|
+
gunzip.on('data', (chunk) => {
|
|
450
|
+
total += chunk.length;
|
|
451
|
+
if (total > cap)
|
|
452
|
+
finish('Archive exceeds the maximum unpacked size limit.');
|
|
453
|
+
});
|
|
454
|
+
gunzip.on('end', () => finish(null));
|
|
455
|
+
gunzip.on('error', () => finish('Corrupt or invalid .tar.gz archive.'));
|
|
456
|
+
input.on('error', () => finish('Corrupt or invalid .tar.gz archive.'));
|
|
457
|
+
input.pipe(gunzip);
|
|
458
|
+
});
|
|
459
|
+
}
|
|
285
460
|
export function handleUploadBuild(req, res, uploadsDir) {
|
|
286
461
|
const auth = requireBuildAuth(req, res);
|
|
287
462
|
if (!auth)
|
|
@@ -295,18 +470,24 @@ export function handleUploadBuild(req, res, uploadsDir) {
|
|
|
295
470
|
bb.on('field', (name, val) => { fields[name] = val; });
|
|
296
471
|
bb.on('file', (_field, stream, info) => {
|
|
297
472
|
originalName = info.filename;
|
|
298
|
-
const
|
|
299
|
-
if (
|
|
300
|
-
fileError = 'iOS simulator builds must be in .app.zip format. Zip the .app directory built
|
|
473
|
+
const kind = buildFileKind(originalName);
|
|
474
|
+
if (kind === 'ipa') {
|
|
475
|
+
fileError = 'iOS simulator builds must be in .app.zip or .tar.gz format. Zip (or tar.gz, e.g. an EAS simulator build) the .app directory built for iphonesimulator and upload it.';
|
|
301
476
|
stream.resume();
|
|
302
477
|
return;
|
|
303
478
|
}
|
|
304
|
-
if (
|
|
305
|
-
fileError = '
|
|
479
|
+
if (kind === 'aab') {
|
|
480
|
+
fileError = 'Android emulator installs require an .apk. Build an .apk (not .aab) and upload it.';
|
|
306
481
|
stream.resume();
|
|
307
482
|
return;
|
|
308
483
|
}
|
|
309
|
-
|
|
484
|
+
if (kind === 'unknown') {
|
|
485
|
+
fileError = 'Only .app.zip / .tar.gz (iOS) or .apk (Android) files allowed';
|
|
486
|
+
stream.resume();
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
// 충돌 방지: 같은 ms + 같은 파일명 동시 업로드(특히 CI 자동화) 시 file_path 공유를 막는다.
|
|
490
|
+
const fileName = `${Date.now()}-${randomUUID().slice(0, 8)}_${path.basename(originalName)}`;
|
|
310
491
|
savedPath = path.join(uploadsDir, 'builds', fileName);
|
|
311
492
|
fs.mkdirSync(path.dirname(savedPath), { recursive: true });
|
|
312
493
|
const ws = fs.createWriteStream(savedPath);
|
|
@@ -327,8 +508,8 @@ export function handleUploadBuild(req, res, uploadsDir) {
|
|
|
327
508
|
}
|
|
328
509
|
if (!savedPath)
|
|
329
510
|
return json(res, 400, { error: 'File required' });
|
|
330
|
-
const
|
|
331
|
-
const isIos =
|
|
511
|
+
const kind = buildFileKind(originalName);
|
|
512
|
+
const isIos = kind === 'ios-zip' || kind === 'ios-tar';
|
|
332
513
|
const platform = fields.platform ?? (isIos ? 'ios' : 'android');
|
|
333
514
|
const status = ['Backlog', 'In Progress', 'Done', 'Rejected'].includes(fields.status)
|
|
334
515
|
? fields.status : null;
|
|
@@ -337,18 +518,26 @@ export function handleUploadBuild(req, res, uploadsDir) {
|
|
|
337
518
|
let buildNumber = null;
|
|
338
519
|
let resolvedAppName = null;
|
|
339
520
|
if (isIos) {
|
|
340
|
-
|
|
521
|
+
// .tar.gz 는 설치 전에 traversal/symlink/bomb/손상을 걸러낸다 (R7).
|
|
522
|
+
if (kind === 'ios-tar') {
|
|
523
|
+
const tarError = await validateTarGz(savedPath);
|
|
524
|
+
if (tarError) {
|
|
525
|
+
unlinkSafe(savedPath, 'rejected upload');
|
|
526
|
+
return json(res, 400, { error: tarError });
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
const info = extractAppInfo(savedPath);
|
|
341
530
|
if (info === null) {
|
|
342
531
|
fs.unlinkSync(savedPath);
|
|
343
|
-
return json(res, 400, { error: 'No .app directory found in the
|
|
532
|
+
return json(res, 400, { error: 'No .app directory found in the archive. Upload a .app.zip or .tar.gz that contains a .app directory.' });
|
|
344
533
|
}
|
|
345
534
|
// lipo 슬라이스 검증 (macOS only; Linux에서는 null → skip)
|
|
346
|
-
const appDir =
|
|
535
|
+
const appDir = findAppDir(savedPath);
|
|
347
536
|
if (appDir) {
|
|
348
537
|
const sliceOk = hasSimulatorSlice(savedPath, appDir);
|
|
349
538
|
if (sliceOk === false) {
|
|
350
539
|
fs.unlinkSync(savedPath);
|
|
351
|
-
return json(res, 400, { error: 'This build contains device-only slices. Build
|
|
540
|
+
return json(res, 400, { error: 'This build contains device-only slices. Build for iphonesimulator to include a simulator slice.' });
|
|
352
541
|
}
|
|
353
542
|
}
|
|
354
543
|
bundleId = info.bundleId;
|
|
@@ -364,7 +553,7 @@ export function handleUploadBuild(req, res, uploadsDir) {
|
|
|
364
553
|
resolvedAppName = info.appName;
|
|
365
554
|
}
|
|
366
555
|
const bundleIdKey = bundleId ?? '__unknown__';
|
|
367
|
-
const appName = resolvedAppName ?? fields.label ??
|
|
556
|
+
const appName = resolvedAppName ?? fields.label ?? stripArchiveExt(originalName);
|
|
368
557
|
const db = getDb();
|
|
369
558
|
let appId;
|
|
370
559
|
if (fields.app_id) {
|
package/dist/api/builds.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builds.js","sourceRoot":"","sources":["../../src/api/builds.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builds.js","sourceRoot":"","sources":["../../src/api/builds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type http from 'http';
|
|
2
|
+
export declare function handleListWebhooks(req: http.IncomingMessage, res: http.ServerResponse): void;
|
|
3
|
+
export declare function handleCreateWebhook(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
|
|
4
|
+
export declare function handleUpdateWebhook(req: http.IncomingMessage, res: http.ServerResponse, params: Record<string, string>): Promise<void>;
|
|
5
|
+
export declare function handleDeleteWebhook(req: http.IncomingMessage, res: http.ServerResponse, params: Record<string, string>): void;
|
|
6
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/api/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAmB5B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAI5F;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5G;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,IAAI,CAKN"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { getDb } from '../db.js';
|
|
2
|
+
import { requireBuildAuth } from '../middleware/auth.js';
|
|
3
|
+
import { json, readJson } from '../router.js';
|
|
4
|
+
import { validateWebhookUrl } from '../lib/webhooks.js';
|
|
5
|
+
// secret is write-only: never returned, only whether one is set.
|
|
6
|
+
function publicView(r) {
|
|
7
|
+
return { id: r.id, url: r.url, enabled: !!r.enabled, has_secret: !!r.secret, created_at: r.created_at };
|
|
8
|
+
}
|
|
9
|
+
export function handleListWebhooks(req, res) {
|
|
10
|
+
if (!requireBuildAuth(req, res))
|
|
11
|
+
return;
|
|
12
|
+
const rows = getDb().prepare('SELECT * FROM webhook_endpoints ORDER BY id').all();
|
|
13
|
+
json(res, 200, { webhooks: rows.map(publicView) });
|
|
14
|
+
}
|
|
15
|
+
export async function handleCreateWebhook(req, res) {
|
|
16
|
+
if (!requireBuildAuth(req, res))
|
|
17
|
+
return;
|
|
18
|
+
const body = await readJson(req);
|
|
19
|
+
if (!body.url || typeof body.url !== 'string')
|
|
20
|
+
return json(res, 400, { error: 'url is required' });
|
|
21
|
+
const err = validateWebhookUrl(body.url);
|
|
22
|
+
if (err)
|
|
23
|
+
return json(res, 400, { error: err });
|
|
24
|
+
const db = getDb();
|
|
25
|
+
const r = db
|
|
26
|
+
.prepare('INSERT INTO webhook_endpoints (url, secret, enabled) VALUES (?, ?, ?)')
|
|
27
|
+
.run(body.url, body.secret ?? null, body.enabled === false ? 0 : 1);
|
|
28
|
+
const row = db.prepare('SELECT * FROM webhook_endpoints WHERE id = ?').get(Number(r.lastInsertRowid));
|
|
29
|
+
json(res, 201, publicView(row));
|
|
30
|
+
}
|
|
31
|
+
export async function handleUpdateWebhook(req, res, params) {
|
|
32
|
+
if (!requireBuildAuth(req, res))
|
|
33
|
+
return;
|
|
34
|
+
const db = getDb();
|
|
35
|
+
const existing = db.prepare('SELECT id FROM webhook_endpoints WHERE id = ?').get(params.id);
|
|
36
|
+
if (!existing)
|
|
37
|
+
return json(res, 404, { error: 'Webhook not found' });
|
|
38
|
+
const body = await readJson(req);
|
|
39
|
+
const updates = [];
|
|
40
|
+
const values = [];
|
|
41
|
+
if ('url' in body) {
|
|
42
|
+
if (!body.url || typeof body.url !== 'string')
|
|
43
|
+
return json(res, 400, { error: 'url is required' });
|
|
44
|
+
const err = validateWebhookUrl(body.url);
|
|
45
|
+
if (err)
|
|
46
|
+
return json(res, 400, { error: err });
|
|
47
|
+
updates.push('url = ?');
|
|
48
|
+
values.push(body.url);
|
|
49
|
+
}
|
|
50
|
+
if ('secret' in body) {
|
|
51
|
+
updates.push('secret = ?');
|
|
52
|
+
values.push(body.secret ?? null);
|
|
53
|
+
}
|
|
54
|
+
if ('enabled' in body) {
|
|
55
|
+
updates.push('enabled = ?');
|
|
56
|
+
values.push(body.enabled ? 1 : 0);
|
|
57
|
+
}
|
|
58
|
+
if (updates.length === 0)
|
|
59
|
+
return json(res, 400, { error: 'Nothing to update' });
|
|
60
|
+
db.prepare(`UPDATE webhook_endpoints SET ${updates.join(', ')} WHERE id = ?`).run(...values, params.id);
|
|
61
|
+
const row = db.prepare('SELECT * FROM webhook_endpoints WHERE id = ?').get(params.id);
|
|
62
|
+
json(res, 200, publicView(row));
|
|
63
|
+
}
|
|
64
|
+
export function handleDeleteWebhook(req, res, params) {
|
|
65
|
+
if (!requireBuildAuth(req, res))
|
|
66
|
+
return;
|
|
67
|
+
const r = getDb().prepare('DELETE FROM webhook_endpoints WHERE id = ?').run(params.id);
|
|
68
|
+
if (r.changes === 0)
|
|
69
|
+
return json(res, 404, { error: 'Webhook not found' });
|
|
70
|
+
json(res, 200, { ok: true });
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/api/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAUvD,iEAAiE;AACjE,SAAS,UAAU,CAAC,CAAa;IAC/B,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAA;AACzG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAyB,EAAE,GAAwB;IACpF,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACvC,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EAAkB,CAAA;IACjG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAyB,EAAE,GAAwB;IAC3F,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACvC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAA8D,GAAG,CAAC,CAAA;IAC7F,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAClG,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,CAAC,GAAG,EAAE;SACT,OAAO,CAAC,uEAAuE,CAAC;SAChF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAe,CAAA;IACnH,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAyB,EACzB,GAAwB,EACxB,MAA8B;IAE9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACvC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3F,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAEpE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAA8D,GAAG,CAAC,CAAA;IAC7F,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAc,EAAE,CAAA;IAC5B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA;QAClG,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAA;IAClC,CAAC;IACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAE/E,EAAE,CAAC,OAAO,CAAC,gCAAgC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IACvG,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAe,CAAA;IACnG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,GAAyB,EACzB,GAAwB,EACxB,MAA8B;IAE9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACvC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtF,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAC1E,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9B,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -41,8 +41,14 @@ declare const configSchema: z.ZodObject<{
|
|
|
41
41
|
pass: z.ZodString;
|
|
42
42
|
from: z.ZodString;
|
|
43
43
|
}, z.core.$strip>;
|
|
44
|
+
webhooks: z.ZodArray<z.ZodObject<{
|
|
45
|
+
url: z.ZodString;
|
|
46
|
+
secret: z.ZodString;
|
|
47
|
+
enabled: z.ZodBoolean;
|
|
48
|
+
}, z.core.$strip>>;
|
|
44
49
|
}, z.core.$strip>;
|
|
45
50
|
export type TapflowConfig = z.infer<typeof configSchema>;
|
|
51
|
+
export declare function resolveWebhooksConfig(raw: unknown, env: NodeJS.ProcessEnv): TapflowConfig['webhooks'];
|
|
46
52
|
export declare let loadedEnvPath: string | null;
|
|
47
53
|
export declare function loadOrCreatePersistedSecret(dataDir: string): string;
|
|
48
54
|
export declare const config: {
|
|
@@ -87,6 +93,11 @@ export declare const config: {
|
|
|
87
93
|
pass: string;
|
|
88
94
|
from: string;
|
|
89
95
|
};
|
|
96
|
+
webhooks: {
|
|
97
|
+
url: string;
|
|
98
|
+
secret: string;
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
}[];
|
|
90
101
|
};
|
|
91
102
|
export declare const jwtSecret: string;
|
|
92
103
|
export {};
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAoDvB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BhB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AA2CxD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAyBrG;AAGD,eAAO,IAAI,aAAa,EAAE,MAAM,GAAG,IAAW,CAAA;AA6G9C,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBnE;AAaD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAS,CAAA;AAC5B,eAAO,MAAM,SAAS,QAAkB,CAAA"}
|