@hooklink/cli 0.1.55 → 0.1.57
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/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +4 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +124 -105
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +7 -3
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +6 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +9 -7
- package/dist/commands/tunnel.js.map +1 -1
- package/dist/core/http-forwarder.d.ts +13 -3
- package/dist/core/http-forwarder.d.ts.map +1 -1
- package/dist/core/http-forwarder.js +105 -54
- package/dist/core/http-forwarder.js.map +1 -1
- package/dist/core/websocket-client.d.ts +7 -2
- package/dist/core/websocket-client.d.ts.map +1 -1
- package/dist/core/websocket-client.js +58 -1
- package/dist/core/websocket-client.js.map +1 -1
- package/dist/core/websocket-pool.d.ts +40 -0
- package/dist/core/websocket-pool.d.ts.map +1 -0
- package/dist/core/websocket-pool.js +129 -0
- package/dist/core/websocket-pool.js.map +1 -0
- package/dist/index.js +38 -3
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/api.d.ts +6 -4
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +30 -24
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/config.d.ts +10 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +82 -7
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
|
@@ -63,6 +63,29 @@ function isTextContentType(contentType) {
|
|
|
63
63
|
const ct = contentType.toLowerCase().split(';')[0].trim();
|
|
64
64
|
return TEXT_CONTENT_TYPE_PATTERNS.some((pattern) => pattern.test(ct));
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Determine whether a response can be streamed directly (no buffering needed).
|
|
68
|
+
*
|
|
69
|
+
* Streamable when:
|
|
70
|
+
* - Binary content type (images, fonts, wasm, etc.) -- no URL rewriting needed
|
|
71
|
+
* - Already compressed by origin (content-encoding present) -- safety net for servers
|
|
72
|
+
* that ignore accept-encoding: identity; can't rewrite compressed bytes anyway
|
|
73
|
+
*
|
|
74
|
+
* Must buffer when:
|
|
75
|
+
* - Uncompressed text (HTML, JS, CSS, JSON) -- needs URL rewriting for tunnel mode
|
|
76
|
+
*
|
|
77
|
+
* Note: we send accept-encoding: identity to localhost, so content-encoding should
|
|
78
|
+
* normally be absent. The check is kept as a safety net.
|
|
79
|
+
*/
|
|
80
|
+
function canStreamResponse(contentType, contentEncoding) {
|
|
81
|
+
// Origin sent compressed data despite accept-encoding: identity -- stream as-is
|
|
82
|
+
if (contentEncoding && contentEncoding !== 'identity')
|
|
83
|
+
return true;
|
|
84
|
+
// Binary content types don't need URL rewriting
|
|
85
|
+
if (isBinaryContentType(contentType))
|
|
86
|
+
return true;
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
66
89
|
class HttpForwarder {
|
|
67
90
|
constructor(targetUrl) {
|
|
68
91
|
// Peer mappings: localOrigin → remoteOrigin for cross-endpoint URL rewriting
|
|
@@ -72,29 +95,35 @@ class HttpForwarder {
|
|
|
72
95
|
/**
|
|
73
96
|
* Register peer endpoint mappings for cross-endpoint URL rewriting.
|
|
74
97
|
* In multi-target tunnel mode, a page from endpoint A may reference
|
|
75
|
-
* assets served by endpoint B
|
|
98
|
+
* assets served by endpoint B -- this map enables rewriting those URLs.
|
|
76
99
|
*/
|
|
77
100
|
setPeerOriginMap(map) {
|
|
78
101
|
this.peerOriginMap = map;
|
|
79
102
|
}
|
|
80
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Forward a request to the local server.
|
|
105
|
+
*
|
|
106
|
+
* When streamCtx is provided and the response is binary or pre-compressed,
|
|
107
|
+
* chunks are sent directly over WebSocket as they arrive from the origin.
|
|
108
|
+
* Text responses that need URL rewriting are still fully buffered.
|
|
109
|
+
*
|
|
110
|
+
* Returns a WSResponseMessage for buffered responses, or a StreamedResult
|
|
111
|
+
* when the response was streamed via streamCtx.
|
|
112
|
+
*/
|
|
113
|
+
async forward(request, streamCtx) {
|
|
81
114
|
try {
|
|
82
115
|
// Build full URL: prefer server-provided targetUrl (accounts for canonical_target
|
|
83
116
|
// and basePath), fall back to constructing from this.targetUrl + request.path.
|
|
84
|
-
// When server has canonical_target, targetUrl is a full URL with path+query.
|
|
85
|
-
// When server falls back to local_target_url, targetUrl is just a base URL.
|
|
86
117
|
let url;
|
|
87
118
|
if (request.targetUrl) {
|
|
88
119
|
const parsed = new URL(request.targetUrl);
|
|
89
120
|
if (parsed.pathname === '/') {
|
|
90
|
-
// Base URL only (legacy endpoint) — append request path and query
|
|
91
121
|
url = new URL(request.path, request.targetUrl);
|
|
92
122
|
Object.entries(request.query).forEach(([key, value]) => {
|
|
93
123
|
url.searchParams.append(key, value);
|
|
94
124
|
});
|
|
95
125
|
}
|
|
96
126
|
else {
|
|
97
|
-
// Full URL from server (from buildForwardingUrl) — use directly
|
|
98
127
|
url = parsed;
|
|
99
128
|
}
|
|
100
129
|
}
|
|
@@ -110,21 +139,23 @@ class HttpForwarder {
|
|
|
110
139
|
requestData = Buffer.from(request.body, 'base64');
|
|
111
140
|
}
|
|
112
141
|
// Follow same-origin redirects internally to avoid tunnel roundtrip latency.
|
|
113
|
-
// Apps like WordPress use redirect-based cron (ALTERNATE_WP_CRON) that loops
|
|
114
|
-
// when the redirect goes back through the tunnel due to added latency.
|
|
115
142
|
let currentUrl = url.toString();
|
|
116
143
|
const currentMethod = request.method;
|
|
117
144
|
const currentData = requestData;
|
|
118
145
|
let currentHeaders = this.filterHeaders(request.headers);
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
146
|
+
// Tell the local server not to compress responses. We handle compression
|
|
147
|
+
// ourselves in the buffered path (gzip for text over WS). This prevents
|
|
148
|
+
// a mismatch where axios decompresses the stream but leaves the
|
|
149
|
+
// content-encoding header, causing ERR_CONTENT_DECODING_FAILED in browsers.
|
|
150
|
+
currentHeaders['accept-encoding'] = 'identity';
|
|
151
|
+
// For tunnel mode: set Host to the public tunnel hostname
|
|
122
152
|
const forwardedHost = request.headers['x-forwarded-host'] ||
|
|
123
153
|
request.headers['X-Forwarded-Host'];
|
|
124
154
|
if (forwardedHost) {
|
|
125
155
|
currentHeaders['host'] = String(forwardedHost);
|
|
126
156
|
}
|
|
127
157
|
const collectedCookies = [];
|
|
158
|
+
// Use 'stream' responseType so we can decide to stream or buffer after reading headers
|
|
128
159
|
let response;
|
|
129
160
|
let redirectCount = 0;
|
|
130
161
|
const localOrigin = new URL(currentUrl).origin;
|
|
@@ -139,7 +170,8 @@ class HttpForwarder {
|
|
|
139
170
|
timeout: 120000,
|
|
140
171
|
maxBodyLength: 150 * 1024 * 1024,
|
|
141
172
|
maxContentLength: 150 * 1024 * 1024,
|
|
142
|
-
responseType: '
|
|
173
|
+
responseType: 'stream',
|
|
174
|
+
decompress: false, // We send accept-encoding: identity; don't let axios add its own decompression
|
|
143
175
|
httpAgent,
|
|
144
176
|
httpsAgent,
|
|
145
177
|
};
|
|
@@ -160,8 +192,7 @@ class HttpForwarder {
|
|
|
160
192
|
const cookies = Array.isArray(hopCookies) ? hopCookies : [hopCookies];
|
|
161
193
|
collectedCookies.push(...cookies);
|
|
162
194
|
}
|
|
163
|
-
// Follow same-origin GET/HEAD redirects internally
|
|
164
|
-
// are passed back to the browser so it can update its URL bar (PRG pattern).
|
|
195
|
+
// Follow same-origin GET/HEAD redirects internally
|
|
165
196
|
const status = response.status;
|
|
166
197
|
const location = response.headers['location'];
|
|
167
198
|
const isGetOrHead = currentMethod === 'GET' || currentMethod === 'HEAD';
|
|
@@ -169,13 +200,12 @@ class HttpForwarder {
|
|
|
169
200
|
location &&
|
|
170
201
|
status >= 300 && status < 400 &&
|
|
171
202
|
redirectCount < MAX_INTERNAL_REDIRECTS) {
|
|
172
|
-
// Resolve relative Location against current URL
|
|
173
203
|
const resolved = new URL(location, currentUrl);
|
|
174
|
-
// Only follow same-origin redirects (security: never leave localhost)
|
|
175
204
|
if (resolved.origin === localOrigin) {
|
|
176
205
|
redirectCount++;
|
|
177
206
|
currentUrl = resolved.toString();
|
|
178
|
-
//
|
|
207
|
+
// Discard the redirect response body
|
|
208
|
+
response.data.resume();
|
|
179
209
|
if (collectedCookies.length > 0) {
|
|
180
210
|
const cookieValues = collectedCookies.map(c => c.split(';')[0]);
|
|
181
211
|
const existing = currentHeaders['cookie'] || '';
|
|
@@ -195,11 +225,60 @@ class HttpForwarder {
|
|
|
195
225
|
: [];
|
|
196
226
|
response.headers['set-cookie'] = [...collectedCookies, ...finalCookieArr];
|
|
197
227
|
}
|
|
198
|
-
// Determine if response is binary
|
|
199
228
|
const responseContentType = response.headers['content-type'];
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
229
|
+
const responseContentEncoding = response.headers['content-encoding'];
|
|
230
|
+
// ─── Streaming path: binary or pre-compressed responses ───────────
|
|
231
|
+
// Send chunks directly over WebSocket as they arrive from origin.
|
|
232
|
+
// No buffering, no URL rewriting, no re-compression.
|
|
233
|
+
if (streamCtx && canStreamResponse(responseContentType, responseContentEncoding)) {
|
|
234
|
+
const sanitizedHeaders = this.sanitizeHeaders(response.headers);
|
|
235
|
+
// Strip security headers incompatible with tunnel proxying
|
|
236
|
+
delete sanitizedHeaders['content-security-policy'];
|
|
237
|
+
delete sanitizedHeaders['content-security-policy-report-only'];
|
|
238
|
+
delete sanitizedHeaders['x-frame-options'];
|
|
239
|
+
delete sanitizedHeaders['cross-origin-opener-policy'];
|
|
240
|
+
delete sanitizedHeaders['cross-origin-embedder-policy'];
|
|
241
|
+
delete sanitizedHeaders['cross-origin-resource-policy'];
|
|
242
|
+
// Rewrite Location/Link/Cookie headers (these are in headers, not body)
|
|
243
|
+
const remoteHost = request.headers['x-forwarded-host'] ||
|
|
244
|
+
request.headers['X-Forwarded-Host'];
|
|
245
|
+
const remoteProto = request.headers['x-forwarded-proto'] ||
|
|
246
|
+
request.headers['X-Forwarded-Proto'] ||
|
|
247
|
+
'https';
|
|
248
|
+
const remoteOrigin = remoteHost ? `${remoteProto}://${remoteHost}` : null;
|
|
249
|
+
const effectiveBaseUrl = request.targetUrl
|
|
250
|
+
? new URL(request.targetUrl).origin
|
|
251
|
+
: this.targetUrl;
|
|
252
|
+
if (remoteOrigin && typeof sanitizedHeaders['location'] === 'string') {
|
|
253
|
+
sanitizedHeaders['location'] = this.rewriteUrl(sanitizedHeaders['location'], remoteOrigin, effectiveBaseUrl);
|
|
254
|
+
}
|
|
255
|
+
if (remoteOrigin && typeof sanitizedHeaders['link'] === 'string') {
|
|
256
|
+
sanitizedHeaders['link'] = this.rewriteUrls(sanitizedHeaders['link'], remoteOrigin, effectiveBaseUrl);
|
|
257
|
+
}
|
|
258
|
+
if (remoteHost && sanitizedHeaders['set-cookie']) {
|
|
259
|
+
sanitizedHeaders['set-cookie'] = this.rewriteCookieDomains(sanitizedHeaders['set-cookie'], remoteHost, effectiveBaseUrl);
|
|
260
|
+
}
|
|
261
|
+
// Send headers immediately -- browser can start processing
|
|
262
|
+
streamCtx.sendStart(request.requestId, response.status, sanitizedHeaders);
|
|
263
|
+
// Pipe body chunks directly.
|
|
264
|
+
// Awaiting sendChunk applies backpressure: if the WS send buffer is
|
|
265
|
+
// full, the await blocks, which stops reading from the HTTP stream,
|
|
266
|
+
// which causes TCP backpressure on the local server connection.
|
|
267
|
+
const stream = response.data;
|
|
268
|
+
for await (const chunk of stream) {
|
|
269
|
+
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
270
|
+
await streamCtx.sendChunk(request.requestId, buf);
|
|
271
|
+
}
|
|
272
|
+
streamCtx.sendEnd(request.requestId);
|
|
273
|
+
return { streamed: true, statusCode: response.status };
|
|
274
|
+
}
|
|
275
|
+
// ─── Buffered path: text responses needing URL rewriting ──────────
|
|
276
|
+
// Collect the full body, rewrite URLs, strip CSP, optionally compress.
|
|
277
|
+
const chunks = [];
|
|
278
|
+
for await (const chunk of response.data) {
|
|
279
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
280
|
+
}
|
|
281
|
+
const responseBuffer = Buffer.concat(chunks);
|
|
203
282
|
const binary = isBinaryContentType(responseContentType);
|
|
204
283
|
// Build remote origin from proxy headers for URL rewriting
|
|
205
284
|
const remoteHost = request.headers['x-forwarded-host'] ||
|
|
@@ -208,8 +287,6 @@ class HttpForwarder {
|
|
|
208
287
|
request.headers['X-Forwarded-Proto'] ||
|
|
209
288
|
'https';
|
|
210
289
|
const remoteOrigin = remoteHost ? `${remoteProto}://${remoteHost}` : null;
|
|
211
|
-
// Derive the effective local base URL for URL rewriting
|
|
212
|
-
// When server provides targetUrl, extract its origin (may differ from this.targetUrl)
|
|
213
290
|
const effectiveBaseUrl = request.targetUrl
|
|
214
291
|
? new URL(request.targetUrl).origin
|
|
215
292
|
: this.targetUrl;
|
|
@@ -218,38 +295,31 @@ class HttpForwarder {
|
|
|
218
295
|
if (!binary && remoteOrigin && isTextContentType(responseContentType)) {
|
|
219
296
|
bodyStr = this.rewriteUrls(bodyStr, remoteOrigin, effectiveBaseUrl);
|
|
220
297
|
}
|
|
221
|
-
// Strip CSP-related meta tags from HTML
|
|
298
|
+
// Strip CSP-related meta tags from HTML
|
|
222
299
|
if (!binary &&
|
|
223
300
|
typeof responseContentType === 'string' &&
|
|
224
301
|
responseContentType.toLowerCase().includes('text/html')) {
|
|
225
|
-
// Remove ALL CSP meta variations (case + attribute order safe)
|
|
226
302
|
bodyStr = bodyStr.replace(/<meta\b[^>]*http-equiv\s*=\s*["']?\s*content-security-policy(?:-report-only)?\s*["']?[^>]*>/gi, '');
|
|
227
|
-
// Some frameworks inject CSP via <meta content="..." http-equiv="...">
|
|
228
303
|
bodyStr = bodyStr.replace(/<meta\b[^>]*content\s*=\s*["'][^"']*content-security-policy[^"']*["'][^>]*>/gi, '');
|
|
229
|
-
// Do NOT inject a replacement CSP — if the local app had none, adding one
|
|
230
|
-
// would be more restrictive than the default (no CSP = everything allowed).
|
|
231
304
|
}
|
|
232
|
-
// Strip
|
|
305
|
+
// Strip security headers
|
|
233
306
|
delete response.headers['content-security-policy'];
|
|
234
307
|
delete response.headers['content-security-policy-report-only'];
|
|
235
308
|
delete response.headers['x-frame-options'];
|
|
236
309
|
delete response.headers['cross-origin-opener-policy'];
|
|
237
310
|
delete response.headers['cross-origin-embedder-policy'];
|
|
238
311
|
delete response.headers['cross-origin-resource-policy'];
|
|
239
|
-
// Remove
|
|
312
|
+
// Remove SRI attributes
|
|
240
313
|
bodyStr = bodyStr.replace(/\sintegrity\s*=\s*["'][^"']*["']/gi, '');
|
|
241
|
-
// crossorigin without integrity is useless and may trigger CORS issues
|
|
242
314
|
bodyStr = bodyStr.replace(/\scrossorigin\s*=\s*["'][^"']*["']/gi, '');
|
|
243
|
-
// Rewrite
|
|
315
|
+
// Rewrite headers
|
|
244
316
|
const sanitizedHeaders = this.sanitizeHeaders(response.headers);
|
|
245
317
|
if (remoteOrigin && typeof sanitizedHeaders['location'] === 'string') {
|
|
246
318
|
sanitizedHeaders['location'] = this.rewriteUrl(sanitizedHeaders['location'], remoteOrigin, effectiveBaseUrl);
|
|
247
319
|
}
|
|
248
|
-
// Rewrite Link header URLs (e.g. WordPress REST API discovery)
|
|
249
320
|
if (remoteOrigin && typeof sanitizedHeaders['link'] === 'string') {
|
|
250
321
|
sanitizedHeaders['link'] = this.rewriteUrls(sanitizedHeaders['link'], remoteOrigin, effectiveBaseUrl);
|
|
251
322
|
}
|
|
252
|
-
// Rewrite Set-Cookie domain attributes to match the tunnel host
|
|
253
323
|
if (remoteHost && sanitizedHeaders['set-cookie']) {
|
|
254
324
|
sanitizedHeaders['set-cookie'] = this.rewriteCookieDomains(sanitizedHeaders['set-cookie'], remoteHost, effectiveBaseUrl);
|
|
255
325
|
}
|
|
@@ -267,7 +337,6 @@ class HttpForwarder {
|
|
|
267
337
|
bodyEncoding: 'base64',
|
|
268
338
|
};
|
|
269
339
|
}
|
|
270
|
-
// Return response with appropriate encoding
|
|
271
340
|
return {
|
|
272
341
|
type: 'response',
|
|
273
342
|
requestId: request.requestId,
|
|
@@ -278,14 +347,12 @@ class HttpForwarder {
|
|
|
278
347
|
};
|
|
279
348
|
}
|
|
280
349
|
catch (error) {
|
|
281
|
-
// Only report unexpected errors to Sentry; local connection failures are expected
|
|
282
350
|
const code = error.code;
|
|
283
351
|
const isLocalError = (code && LOCAL_ERROR_CODES.has(code)) ||
|
|
284
352
|
(error instanceof Error && LOCAL_ERROR_MESSAGES.some((msg) => error.message.includes(msg)));
|
|
285
353
|
if (!isLocalError) {
|
|
286
354
|
(0, sentry_1.captureException)(error);
|
|
287
355
|
}
|
|
288
|
-
// Return error response
|
|
289
356
|
return {
|
|
290
357
|
type: 'response',
|
|
291
358
|
requestId: request.requestId,
|
|
@@ -325,7 +392,6 @@ class HttpForwarder {
|
|
|
325
392
|
sanitized[key] = value;
|
|
326
393
|
}
|
|
327
394
|
else if (Array.isArray(value)) {
|
|
328
|
-
// Keep set-cookie as array — joining with ", " breaks cookies
|
|
329
395
|
if (key.toLowerCase() === 'set-cookie') {
|
|
330
396
|
sanitized[key] = value.map(String);
|
|
331
397
|
}
|
|
@@ -339,11 +405,9 @@ class HttpForwarder {
|
|
|
339
405
|
rewriteCookieDomains(cookies, remoteHost, baseUrl) {
|
|
340
406
|
const cookieArray = Array.isArray(cookies) ? cookies : [cookies];
|
|
341
407
|
const localHost = new URL(baseUrl || this.targetUrl).hostname;
|
|
342
|
-
// Remote host without port (cookie domain must not have port)
|
|
343
408
|
const remoteDomain = remoteHost.split(':')[0];
|
|
344
409
|
return cookieArray.map((cookie) => {
|
|
345
|
-
|
|
346
|
-
const rewritten = cookie.replace(/domain=([^;,\s]+)/gi, (_match, domain) => {
|
|
410
|
+
return cookie.replace(/domain=([^;,\s]+)/gi, (_match, domain) => {
|
|
347
411
|
const d = domain.toLowerCase();
|
|
348
412
|
if (d === localHost ||
|
|
349
413
|
d === `.${localHost}` ||
|
|
@@ -353,18 +417,11 @@ class HttpForwarder {
|
|
|
353
417
|
}
|
|
354
418
|
return _match;
|
|
355
419
|
});
|
|
356
|
-
// If cookie has no domain attribute, it defaults to the request host — which is
|
|
357
|
-
// already the tunnel host on the browser side, so no change needed.
|
|
358
|
-
// Remove Secure flag if tunnel is not HTTPS (rare but safe)
|
|
359
|
-
// Keep Secure flag if it was set — the tunnel typically uses HTTPS.
|
|
360
|
-
return rewritten;
|
|
361
420
|
});
|
|
362
421
|
}
|
|
363
422
|
getLocalOrigins(baseUrl) {
|
|
364
423
|
const parsed = new URL(baseUrl || this.targetUrl);
|
|
365
424
|
const origins = [parsed.origin];
|
|
366
|
-
// Also match the opposite protocol variant (http↔https)
|
|
367
|
-
// WordPress and other apps may hardcode https://localhost in their output
|
|
368
425
|
const altProtocol = parsed.protocol === 'https:' ? 'http:' : 'https:';
|
|
369
426
|
const altOrigin = `${altProtocol}//${parsed.host}`;
|
|
370
427
|
origins.push(altOrigin);
|
|
@@ -376,16 +433,12 @@ class HttpForwarder {
|
|
|
376
433
|
const encodedRemoteOrigin = encodeURIComponent(remoteOrigin);
|
|
377
434
|
let result = body;
|
|
378
435
|
for (const origin of origins) {
|
|
379
|
-
// Replace plain URLs: http://localhost:9001
|
|
380
436
|
result = result.split(origin).join(remoteOrigin);
|
|
381
|
-
// Replace JSON-escaped URLs: http:\/\/localhost:9001
|
|
382
437
|
const escapedOrigin = origin.replace(/\//g, '\\/');
|
|
383
438
|
result = result.split(escapedOrigin).join(escapedRemoteOrigin);
|
|
384
|
-
// Replace URL-encoded URLs: http%3A%2F%2Flocalhost%3A9001
|
|
385
439
|
const encodedOrigin = encodeURIComponent(origin);
|
|
386
440
|
result = result.split(encodedOrigin).join(encodedRemoteOrigin);
|
|
387
441
|
}
|
|
388
|
-
// Cross-endpoint rewriting: replace peer local origins with their remote origins
|
|
389
442
|
for (const [peerLocal, peerRemote] of this.peerOriginMap) {
|
|
390
443
|
const peerOrigins = this.getLocalOrigins(peerLocal);
|
|
391
444
|
const escapedPeerRemote = peerRemote.replace(/\//g, '\\/');
|
|
@@ -407,7 +460,6 @@ class HttpForwarder {
|
|
|
407
460
|
return remoteOrigin + url.slice(origin.length);
|
|
408
461
|
}
|
|
409
462
|
}
|
|
410
|
-
// Check peer origins for cross-endpoint redirects
|
|
411
463
|
for (const [peerLocal, peerRemote] of this.peerOriginMap) {
|
|
412
464
|
const peerOrigins = this.getLocalOrigins(peerLocal);
|
|
413
465
|
for (const peerOrigin of peerOrigins) {
|
|
@@ -416,7 +468,6 @@ class HttpForwarder {
|
|
|
416
468
|
}
|
|
417
469
|
}
|
|
418
470
|
}
|
|
419
|
-
// Also rewrite URL-encoded origins inside query strings
|
|
420
471
|
const encodedRemoteOrigin = encodeURIComponent(remoteOrigin);
|
|
421
472
|
let result = url;
|
|
422
473
|
for (const origin of origins) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-forwarder.js","sourceRoot":"","sources":["../../src/core/http-forwarder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-forwarder.js","sourceRoot":"","sources":["../../src/core/http-forwarder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { WSRequestMessage,
|
|
2
|
+
import { WSRequestMessage, StreamContext, ForwardResult } from '../types';
|
|
3
3
|
export interface WebSocketClientOptions {
|
|
4
4
|
wsUrl: string;
|
|
5
5
|
apiKey: string;
|
|
@@ -8,7 +8,10 @@ export interface WebSocketClientOptions {
|
|
|
8
8
|
trialToken?: string;
|
|
9
9
|
sessionId?: string;
|
|
10
10
|
maxReconnectAttempts?: number;
|
|
11
|
-
|
|
11
|
+
/** Pool ID for connection pooling. Multiple connections sharing a poolId
|
|
12
|
+
* count as one logical connection for plan limits. */
|
|
13
|
+
poolId?: string;
|
|
14
|
+
onRequest: (request: WSRequestMessage, streamCtx?: StreamContext) => Promise<ForwardResult>;
|
|
12
15
|
}
|
|
13
16
|
export declare class WebSocketClient extends EventEmitter {
|
|
14
17
|
private ws;
|
|
@@ -32,6 +35,8 @@ export declare class WebSocketClient extends EventEmitter {
|
|
|
32
35
|
private handleMessage;
|
|
33
36
|
private handleRequest;
|
|
34
37
|
private sendRaw;
|
|
38
|
+
private static WS_HWM;
|
|
39
|
+
private sendBinary;
|
|
35
40
|
disconnect(): void;
|
|
36
41
|
isConnected(): boolean;
|
|
37
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/core/websocket-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/core/websocket-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAqB,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI7F,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;2DACuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7F;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,mBAAmB,CAA+B;IAG1D,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAI7B;gBAES,OAAO,EAAE,sBAAsB;IAQrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmG9B,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;YA0BX,aAAa;YAuCb,aAAa;IA0D3B,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAc;IAEnC,OAAO,CAAC,UAAU;IAqBlB,UAAU,IAAI,IAAI;IAalB,WAAW,IAAI,OAAO;CAGvB"}
|
|
@@ -123,6 +123,9 @@ class WebSocketClient extends events_1.EventEmitter {
|
|
|
123
123
|
else if (this.options.endpointId) {
|
|
124
124
|
payload.endpointId = this.options.endpointId;
|
|
125
125
|
}
|
|
126
|
+
if (this.options.poolId) {
|
|
127
|
+
payload.poolId = this.options.poolId;
|
|
128
|
+
}
|
|
126
129
|
this.sendRaw({ type: 'auth', payload });
|
|
127
130
|
}
|
|
128
131
|
startHeartbeat() {
|
|
@@ -190,7 +193,34 @@ class WebSocketClient extends events_1.EventEmitter {
|
|
|
190
193
|
}
|
|
191
194
|
async handleRequest(payload) {
|
|
192
195
|
try {
|
|
193
|
-
|
|
196
|
+
// Build a StreamContext that sends chunks as binary WS frames.
|
|
197
|
+
// Binary frame format: 36-byte ASCII requestId + raw chunk data.
|
|
198
|
+
const streamCtx = {
|
|
199
|
+
sendStart: (requestId, statusCode, headers) => {
|
|
200
|
+
this.sendRaw({
|
|
201
|
+
type: 'response_start',
|
|
202
|
+
payload: { requestId, statusCode, headers },
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
sendChunk: async (requestId, data) => {
|
|
206
|
+
const idBuf = Buffer.from(requestId.padEnd(36, '\0'));
|
|
207
|
+
const frame = Buffer.concat([idBuf, data]);
|
|
208
|
+
await this.sendBinary(frame);
|
|
209
|
+
},
|
|
210
|
+
sendEnd: (requestId) => {
|
|
211
|
+
this.sendRaw({
|
|
212
|
+
type: 'response_end',
|
|
213
|
+
payload: { requestId },
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
const result = await this.options.onRequest(payload, streamCtx);
|
|
218
|
+
// If the response was streamed, chunks were already sent via streamCtx
|
|
219
|
+
if ('streamed' in result && result.streamed) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// Buffered path: send the full response as a single message
|
|
223
|
+
const response = result;
|
|
194
224
|
this.sendRaw({
|
|
195
225
|
type: 'response',
|
|
196
226
|
payload: {
|
|
@@ -219,6 +249,30 @@ class WebSocketClient extends events_1.EventEmitter {
|
|
|
219
249
|
this.ws.send(JSON.stringify(message));
|
|
220
250
|
}
|
|
221
251
|
}
|
|
252
|
+
sendBinary(data) {
|
|
253
|
+
return new Promise((resolve, reject) => {
|
|
254
|
+
if (!this.ws || this.ws.readyState !== ws_1.default.OPEN) {
|
|
255
|
+
resolve();
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
this.ws.send(data, (err) => {
|
|
259
|
+
if (err) {
|
|
260
|
+
reject(err);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
// If the WS send buffer is above the high-water mark, wait for it
|
|
264
|
+
// to drain before letting the caller send the next chunk.
|
|
265
|
+
// This propagates backpressure to the upstream HTTP stream.
|
|
266
|
+
if (this.ws && this.ws.bufferedAmount > WebSocketClient.WS_HWM) {
|
|
267
|
+
const onDrain = () => resolve();
|
|
268
|
+
this.ws.once('drain', onDrain);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
resolve();
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}
|
|
222
276
|
disconnect() {
|
|
223
277
|
this.shouldReconnect = false;
|
|
224
278
|
this.stopHeartbeat();
|
|
@@ -242,4 +296,7 @@ WebSocketClient.FATAL_CLOSE_CODES = new Set([
|
|
|
242
296
|
4002, // Trial expired
|
|
243
297
|
4003, // Connection limit / no active endpoints
|
|
244
298
|
]);
|
|
299
|
+
// High-water mark for WS send buffer backpressure (256KB).
|
|
300
|
+
// When bufferedAmount exceeds this, we wait for drain before sending more.
|
|
301
|
+
WebSocketClient.WS_HWM = 256 * 1024;
|
|
245
302
|
//# sourceMappingURL=websocket-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../src/core/websocket-client.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA2B;AAC3B,mCAAsC;AAEtC,4CAAyC;AACzC,4CAAmD;
|
|
1
|
+
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../src/core/websocket-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { WSRequestMessage, StreamContext, ForwardResult } from '../types';
|
|
3
|
+
export interface WebSocketPoolOptions {
|
|
4
|
+
/** Number of parallel WebSocket connections (default: 4) */
|
|
5
|
+
poolSize?: number;
|
|
6
|
+
wsUrl: string;
|
|
7
|
+
apiKey: string;
|
|
8
|
+
endpointId?: string;
|
|
9
|
+
endpointIds?: string[];
|
|
10
|
+
trialToken?: string;
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
maxReconnectAttempts?: number;
|
|
13
|
+
onRequest: (request: WSRequestMessage, streamCtx?: StreamContext) => Promise<ForwardResult>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Pool of WebSocket connections to the same server.
|
|
17
|
+
*
|
|
18
|
+
* The server dispatches incoming requests round-robin across all
|
|
19
|
+
* connections in the pool, so parallel HTTP requests (JS, CSS, images)
|
|
20
|
+
* travel over separate TCP streams and no longer block each other.
|
|
21
|
+
*
|
|
22
|
+
* All connections share the same poolId so the server counts them
|
|
23
|
+
* as a single logical connection for plan-limit purposes.
|
|
24
|
+
*/
|
|
25
|
+
export declare class WebSocketPool extends EventEmitter {
|
|
26
|
+
private clients;
|
|
27
|
+
private options;
|
|
28
|
+
private poolSize;
|
|
29
|
+
private poolId;
|
|
30
|
+
private connectedCount;
|
|
31
|
+
private hasEmittedConnected;
|
|
32
|
+
private hasEmittedReconnected;
|
|
33
|
+
constructor(options: WebSocketPoolOptions);
|
|
34
|
+
connect(): Promise<void>;
|
|
35
|
+
disconnect(): void;
|
|
36
|
+
isConnected(): boolean;
|
|
37
|
+
getActiveCount(): number;
|
|
38
|
+
getPoolSize(): number;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=websocket-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-pool.d.ts","sourceRoot":"","sources":["../../src/core/websocket-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG1E,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7F;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,OAAO,EAAE,oBAAoB;IAOnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2F9B,UAAU,IAAI,IAAI;IAQlB,WAAW,IAAI,OAAO;IAItB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;CAGtB"}
|