tapflow 0.8.2 → 0.9.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAuKD,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0F1E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { select, text, isCancel, cancel } from '@clack/prompts';
|
|
4
|
+
import { dnsProviders } from '@tapflowio/relay';
|
|
4
5
|
import { banner, warn } from '../lib/print.js';
|
|
5
6
|
const BASE_CONFIG = {
|
|
6
7
|
local: { port: 4000, dataDir: '.tapflow-data' },
|
|
@@ -31,6 +32,30 @@ function addToGitignore(dir, entry) {
|
|
|
31
32
|
fs.writeFileSync(gitignorePath, `# tapflow runtime data\n${entry}\n`, 'utf-8');
|
|
32
33
|
return 'created';
|
|
33
34
|
}
|
|
35
|
+
// #287 — 자격 증명 env 파일을 빈 값 템플릿으로 스캠폴드(사용자가 토큰 붙여넣음). 기존 값은 보존, 누락 키만 추가.
|
|
36
|
+
function scaffoldEnvFile(dataDir, envVars) {
|
|
37
|
+
const envPath = path.join(dataDir, '.env');
|
|
38
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
39
|
+
if (fs.existsSync(envPath)) {
|
|
40
|
+
const content = fs.readFileSync(envPath, 'utf-8');
|
|
41
|
+
const present = new Set(content.split('\n').map((l) => l.split('=')[0]?.trim()).filter(Boolean));
|
|
42
|
+
const missing = envVars.filter((v) => !present.has(v));
|
|
43
|
+
if (missing.length === 0)
|
|
44
|
+
return 'already-present';
|
|
45
|
+
const separator = content.endsWith('\n') || content === '' ? '' : '\n';
|
|
46
|
+
fs.appendFileSync(envPath, `${separator}${missing.map((v) => `${v}=`).join('\n')}\n`, 'utf-8');
|
|
47
|
+
return 'appended';
|
|
48
|
+
}
|
|
49
|
+
const header = '# tapflow DNS/ACME credentials — do not commit. Paste each token after the =.\n';
|
|
50
|
+
fs.writeFileSync(envPath, header + envVars.map((v) => `${v}=`).join('\n') + '\n', { mode: 0o600 });
|
|
51
|
+
try {
|
|
52
|
+
fs.chmodSync(envPath, 0o600);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// best-effort on platforms without POSIX permissions
|
|
56
|
+
}
|
|
57
|
+
return 'created';
|
|
58
|
+
}
|
|
34
59
|
async function promptTunnel() {
|
|
35
60
|
const provider = await select({
|
|
36
61
|
message: 'Tunnel provider',
|
|
@@ -98,6 +123,65 @@ async function promptTunnel() {
|
|
|
98
123
|
}
|
|
99
124
|
return { provider: 'rathole', serverAddr: serverAddr.trim(), publicUrl: publicUrl.trim(), ssh };
|
|
100
125
|
}
|
|
126
|
+
// LAN(=no tunnel) HTTPS 선택. WebCodecs(빠른 영상)는 secure context(HTTPS)에서만 동작.
|
|
127
|
+
// 도메인 없으면 Standard(HTTP/WASM)로 충분히 동작하므로 강요하지 않는다.
|
|
128
|
+
async function promptTls() {
|
|
129
|
+
const perf = await select({
|
|
130
|
+
message: 'Streaming performance',
|
|
131
|
+
options: [
|
|
132
|
+
{ value: 'standard', label: 'Standard', hint: 'HTTP, software decode — instant, no domain needed' },
|
|
133
|
+
{ value: 'high', label: 'High performance', hint: 'HTTPS, hardware decode (WebCodecs) — smooth, needs a domain' },
|
|
134
|
+
],
|
|
135
|
+
});
|
|
136
|
+
if (isCancel(perf)) {
|
|
137
|
+
cancel('Cancelled.');
|
|
138
|
+
process.exit(0);
|
|
139
|
+
}
|
|
140
|
+
if (perf !== 'high')
|
|
141
|
+
return null;
|
|
142
|
+
const method = await select({
|
|
143
|
+
message: 'Certificate method',
|
|
144
|
+
options: [
|
|
145
|
+
...dnsProviders.list().map((p) => ({ value: p.name, label: p.label, hint: p.hint })),
|
|
146
|
+
{ value: 'import', label: 'Existing certificate', hint: 'bring your own cert & key files' },
|
|
147
|
+
],
|
|
148
|
+
});
|
|
149
|
+
if (isCancel(method)) {
|
|
150
|
+
cancel('Cancelled.');
|
|
151
|
+
process.exit(0);
|
|
152
|
+
}
|
|
153
|
+
if (method === 'import') {
|
|
154
|
+
const certPath = await text({
|
|
155
|
+
message: 'Certificate path (fullchain PEM)',
|
|
156
|
+
placeholder: '/path/to/fullchain.pem',
|
|
157
|
+
validate: (v) => (!v?.trim() ? 'Required' : undefined),
|
|
158
|
+
});
|
|
159
|
+
if (isCancel(certPath)) {
|
|
160
|
+
cancel('Cancelled.');
|
|
161
|
+
process.exit(0);
|
|
162
|
+
}
|
|
163
|
+
const keyPath = await text({
|
|
164
|
+
message: 'Private key path (PEM)',
|
|
165
|
+
placeholder: '/path/to/privkey.pem',
|
|
166
|
+
validate: (v) => (!v?.trim() ? 'Required' : undefined),
|
|
167
|
+
});
|
|
168
|
+
if (isCancel(keyPath)) {
|
|
169
|
+
cancel('Cancelled.');
|
|
170
|
+
process.exit(0);
|
|
171
|
+
}
|
|
172
|
+
return { mode: 'import-cert', certPath: certPath.trim(), keyPath: keyPath.trim() };
|
|
173
|
+
}
|
|
174
|
+
const domain = await text({
|
|
175
|
+
message: 'Domain for tapflow (its A record points to this Mac on the LAN)',
|
|
176
|
+
placeholder: 'tap.yourcompany.com',
|
|
177
|
+
validate: (v) => (!v?.trim() ? 'Required' : undefined),
|
|
178
|
+
});
|
|
179
|
+
if (isCancel(domain)) {
|
|
180
|
+
cancel('Cancelled.');
|
|
181
|
+
process.exit(0);
|
|
182
|
+
}
|
|
183
|
+
return { mode: 'byo-api-token', domain: domain.trim(), dnsProvider: method };
|
|
184
|
+
}
|
|
101
185
|
export async function cmdInitConfig(opts) {
|
|
102
186
|
const configPath = path.join(process.cwd(), 'tapflow.config.json');
|
|
103
187
|
if (fs.existsSync(configPath) && !opts.force) {
|
|
@@ -124,7 +208,16 @@ export async function cmdInitConfig(opts) {
|
|
|
124
208
|
else if (process.stdin.isTTY) {
|
|
125
209
|
tunnel = await promptTunnel();
|
|
126
210
|
}
|
|
127
|
-
|
|
211
|
+
// HTTPS(WebCodecs)는 LAN(=no tunnel) 경로에서만 위저드로 묻는다. tailscale/rathole의 HTTPS는 후속.
|
|
212
|
+
let tls = null;
|
|
213
|
+
if (tunnel == null && process.stdin.isTTY) {
|
|
214
|
+
tls = await promptTls();
|
|
215
|
+
}
|
|
216
|
+
const configOut = {
|
|
217
|
+
...BASE_CONFIG,
|
|
218
|
+
...(tunnel != null ? { tunnel } : {}),
|
|
219
|
+
...(tls != null ? { tls } : {}),
|
|
220
|
+
};
|
|
128
221
|
try {
|
|
129
222
|
fs.writeFileSync(configPath, JSON.stringify(configOut, null, 2) + '\n', 'utf-8');
|
|
130
223
|
}
|
|
@@ -134,6 +227,17 @@ export async function cmdInitConfig(opts) {
|
|
|
134
227
|
]);
|
|
135
228
|
process.exit(1);
|
|
136
229
|
}
|
|
230
|
+
// byo-api-token: 토큰 재export 없이 재시작 가능하도록 자격 증명 env 파일을 스캠폴드(빈 변수명만 작성).
|
|
231
|
+
let envScaffold = 'skipped';
|
|
232
|
+
if (tls?.mode === 'byo-api-token') {
|
|
233
|
+
const envVars = dnsProviders.get(tls.dnsProvider)?.envVars ?? [];
|
|
234
|
+
try {
|
|
235
|
+
envScaffold = scaffoldEnvFile(path.join(process.cwd(), '.tapflow-data'), envVars);
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
warn(`Could not write .tapflow-data/.env: ${err instanceof Error ? err.message : String(err)}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
137
241
|
let gitignoreUpdated = 'skipped';
|
|
138
242
|
if (isInsideGitRepo(process.cwd())) {
|
|
139
243
|
try {
|
|
@@ -153,6 +257,19 @@ export async function cmdInitConfig(opts) {
|
|
|
153
257
|
}
|
|
154
258
|
if (tunnel)
|
|
155
259
|
lines.push(`Tunnel: ${tunnel.provider}`);
|
|
260
|
+
if (tls?.mode === 'byo-api-token') {
|
|
261
|
+
const envVars = dnsProviders.get(tls.dnsProvider)?.envVars.join(', ') ?? 'the provider credentials';
|
|
262
|
+
lines.push(`HTTPS: ${tls.dnsProvider} DNS-01 for ${tls.domain}.`);
|
|
263
|
+
if (envScaffold === 'created' || envScaffold === 'appended') {
|
|
264
|
+
lines.push(`Paste ${envVars} into .tapflow-data/.env (the relay reads it on start).`);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
lines.push(`Set ${envVars} (the relay auto-publishes the A record on start).`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
else if (tls?.mode === 'import-cert') {
|
|
271
|
+
lines.push('HTTPS: import-cert. Ensure the cert/key paths exist on this Mac.');
|
|
272
|
+
}
|
|
156
273
|
lines.push('Next: tapflow start');
|
|
157
274
|
banner('success', 'CONFIG CREATED', lines);
|
|
158
275
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-start.d.ts","sourceRoot":"","sources":["../../src/commands/relay-start.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"relay-start.d.ts","sourceRoot":"","sources":["../../src/commands/relay-start.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { RelayServer, initDb, config } from '@tapflowio/relay';
|
|
4
|
+
import { RelayServer, initDb, config, createCertProvider, startCertRenewal, startAddressPublisher, buildCorsOrigins, proxyWithoutPublicUrlWarning, loadDataDirEnv } from '@tapflowio/relay';
|
|
5
5
|
import { banner, step, warn } from '../lib/print.js';
|
|
6
6
|
import { startConfiguredTunnel } from '../lib/tunnel-runner.js';
|
|
7
7
|
const DEFAULT_PORT = config.local.port;
|
|
@@ -17,10 +17,35 @@ export async function cmdRelayStart(opts) {
|
|
|
17
17
|
if (!fs.existsSync(path.join(process.cwd(), 'tapflow.config.json'))) {
|
|
18
18
|
warn('tapflow.config.json not found — using defaults. Run tapflow init to configure.');
|
|
19
19
|
}
|
|
20
|
+
// Load gitignored credentials (DNS/ACME tokens) before any cert issuance reads process.env.
|
|
21
|
+
const envPath = loadDataDirEnv(config.local.dataDir);
|
|
22
|
+
if (envPath)
|
|
23
|
+
step(`Loaded credentials from ${envPath}`);
|
|
20
24
|
initDb(path.join(config.local.dataDir, 'tapflow.db'));
|
|
21
|
-
|
|
25
|
+
let tls;
|
|
26
|
+
let certProvider = null;
|
|
27
|
+
if (config.tls) {
|
|
28
|
+
certProvider = createCertProvider(config.tls, { dataDir: config.local.dataDir });
|
|
29
|
+
const material = await certProvider.ensureCert();
|
|
30
|
+
tls = { cert: material.cert, key: material.key };
|
|
31
|
+
}
|
|
32
|
+
const httpScheme = tls ? 'https' : 'http';
|
|
33
|
+
const wsScheme = tls ? 'wss' : 'ws';
|
|
34
|
+
// A domain-bound cert won't validate against localhost, so advertise the cert's domain instead.
|
|
35
|
+
const displayHost = config.tls?.mode === 'byo-api-token' ? config.tls.domain : 'localhost';
|
|
36
|
+
const proxyWarning = proxyWithoutPublicUrlWarning(config);
|
|
37
|
+
if (proxyWarning)
|
|
38
|
+
warn(proxyWarning);
|
|
39
|
+
const server = new RelayServer({ port, uploadsDir: path.join(config.local.dataDir, 'uploads'), wsBackpressureBytes: config.local.wsBackpressureBytes, trustedProxies: config.local.trustedProxies, corsOrigins: buildCorsOrigins(config, port), tls });
|
|
22
40
|
await server.start();
|
|
23
|
-
step(`Relay started on
|
|
41
|
+
step(`Relay started on ${httpScheme}://${displayHost}:${port}`);
|
|
42
|
+
const stopRenewal = certProvider
|
|
43
|
+
? startCertRenewal(certProvider, { onRenew: (m) => server.updateTlsContext({ cert: m.cert, key: m.key }) })
|
|
44
|
+
: null;
|
|
45
|
+
// byo-api-token: publish the relay's LAN IP to the domain's A record so teammates just open the URL.
|
|
46
|
+
const stopPublish = config.tls?.mode === 'byo-api-token' && config.tls.publishAddress !== false
|
|
47
|
+
? startAddressPublisher(config.tls)
|
|
48
|
+
: null;
|
|
24
49
|
const SUPPORTED_PROVIDERS = ['rathole', 'tailscale'];
|
|
25
50
|
if (opts.tunnel && !SUPPORTED_PROVIDERS.includes(opts.tunnel)) {
|
|
26
51
|
banner('error', 'TUNNEL CONFIG ERROR', [`Unsupported tunnel provider: "${opts.tunnel}". Supported: ${SUPPORTED_PROVIDERS.join(', ')}`]);
|
|
@@ -39,12 +64,14 @@ export async function cmdRelayStart(opts) {
|
|
|
39
64
|
publicUrl = started.publicUrl;
|
|
40
65
|
}
|
|
41
66
|
banner('success', 'TAPFLOW RELAY READY', [
|
|
42
|
-
`Relay :
|
|
67
|
+
`Relay : ${httpScheme}://${displayHost}:${port}`,
|
|
43
68
|
...(publicUrl ? [`Public : ${publicUrl}`] : []),
|
|
44
|
-
`Connect Mac agents: tapflow agent start --relay
|
|
69
|
+
`Connect Mac agents: tapflow agent start --relay ${wsScheme}://<host>:${port}`,
|
|
45
70
|
'Press Ctrl+C to stop.',
|
|
46
71
|
]);
|
|
47
72
|
process.on('SIGINT', () => {
|
|
73
|
+
stopRenewal?.();
|
|
74
|
+
stopPublish?.();
|
|
48
75
|
void tunnel?.stop();
|
|
49
76
|
process.exit(0);
|
|
50
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-start.js","sourceRoot":"","sources":["../../src/commands/relay-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"relay-start.js","sourceRoot":"","sources":["../../src/commands/relay-start.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tapflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Self-hosted iOS/Android simulator streaming for the whole team",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ios",
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@clack/prompts": "^1.5.0",
|
|
47
47
|
"cac": "^6.7.14",
|
|
48
|
-
"ws": "^8.
|
|
48
|
+
"ws": "^8.21.0",
|
|
49
49
|
"zod": "^4.4.3",
|
|
50
|
-
"@tapflowio/agent-core": "0.
|
|
51
|
-
"@tapflowio/
|
|
52
|
-
"@tapflowio/
|
|
53
|
-
"@tapflowio/relay": "0.
|
|
50
|
+
"@tapflowio/agent-core": "0.9.0",
|
|
51
|
+
"@tapflowio/android-agent": "0.9.0",
|
|
52
|
+
"@tapflowio/ios-agent": "0.9.0",
|
|
53
|
+
"@tapflowio/relay": "0.9.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/node": "^20.0.0",
|