@heojeongbo/wirestage 0.1.0 → 0.1.1
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/entities/plugin/model/http.d.ts +12 -3
- package/dist/entities/plugin/model/http.d.ts.map +1 -1
- package/dist/entities/plugin/model/socket.d.ts +12 -7
- package/dist/entities/plugin/model/socket.d.ts.map +1 -1
- package/dist/entities/plugin/model/stream.d.ts +7 -4
- package/dist/entities/plugin/model/stream.d.ts.map +1 -1
- package/dist/features/sse/lib/create-sse.d.ts.map +1 -1
- package/dist/features/sse/lib/create-sse.js +2 -1
- package/dist/features/sse/lib/create-sse.js.map +1 -1
- package/dist/features/sse/model/types.d.ts +8 -2
- package/dist/features/sse/model/types.d.ts.map +1 -1
- package/dist/features/websocket/lib/proxy.d.ts.map +1 -1
- package/dist/features/websocket/lib/proxy.js +16 -3
- package/dist/features/websocket/lib/proxy.js.map +1 -1
- package/dist/features/websocket/model/types.d.ts +5 -1
- package/dist/features/websocket/model/types.d.ts.map +1 -1
- package/dist/shared/api/playwright/ports.d.ts +10 -1
- package/dist/shared/api/playwright/ports.d.ts.map +1 -1
- package/dist/shared/api/stream-server/stream-server.d.ts +3 -1
- package/dist/shared/api/stream-server/stream-server.d.ts.map +1 -1
- package/dist/shared/api/stream-server/stream-server.js +10 -3
- package/dist/shared/api/stream-server/stream-server.js.map +1 -1
- package/dist/widgets/stage/lib/create-stage.d.ts.map +1 -1
- package/dist/widgets/stage/lib/create-stage.js +2 -0
- package/dist/widgets/stage/lib/create-stage.js.map +1 -1
- package/dist/widgets/stage/lib/http-router.d.ts +11 -2
- package/dist/widgets/stage/lib/http-router.d.ts.map +1 -1
- package/dist/widgets/stage/lib/http-router.js +317 -76
- package/dist/widgets/stage/lib/http-router.js.map +1 -1
- package/dist/widgets/stage/lib/response-stream.d.ts +17 -3
- package/dist/widgets/stage/lib/response-stream.d.ts.map +1 -1
- package/dist/widgets/stage/lib/response-stream.js +88 -36
- package/dist/widgets/stage/lib/response-stream.js.map +1 -1
- package/dist/widgets/stage/lib/socket-router.d.ts.map +1 -1
- package/dist/widgets/stage/lib/socket-router.js +44 -15
- package/dist/widgets/stage/lib/socket-router.js.map +1 -1
- package/dist/widgets/stage/model/stage.d.ts +8 -6
- package/dist/widgets/stage/model/stage.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/entities/plugin/model/http.ts +12 -3
- package/src/entities/plugin/model/socket.ts +12 -7
- package/src/entities/plugin/model/stream.ts +7 -4
- package/src/features/sse/lib/create-sse.ts +2 -1
- package/src/features/sse/model/types.ts +8 -2
- package/src/features/websocket/lib/proxy.ts +15 -3
- package/src/features/websocket/model/types.ts +5 -1
- package/src/shared/api/playwright/ports.ts +7 -2
- package/src/shared/api/stream-server/stream-server.ts +11 -3
- package/src/widgets/stage/lib/create-stage.ts +2 -0
- package/src/widgets/stage/lib/http-router.ts +425 -91
- package/src/widgets/stage/lib/response-stream.ts +110 -37
- package/src/widgets/stage/lib/socket-router.ts +45 -16
- package/src/widgets/stage/model/stage.ts +8 -6
|
@@ -2,6 +2,100 @@ import { toBuffer, toBytes, utf8 } from "../../../shared/lib/bytes/index.js";
|
|
|
2
2
|
import { WirestageError } from "../../../shared/lib/errors/index.js";
|
|
3
3
|
import { compileUrlMatcher } from "../../../shared/lib/match/index.js";
|
|
4
4
|
import { createResponseStream } from "./response-stream.js";
|
|
5
|
+
/**
|
|
6
|
+
* Playwright's abort codes. Keyed by the contract's type, so the two cannot
|
|
7
|
+
* drift: a code missing here, or one too many, does not compile.
|
|
8
|
+
*/
|
|
9
|
+
const ABORT_CODES = {
|
|
10
|
+
aborted: true,
|
|
11
|
+
accessdenied: true,
|
|
12
|
+
addressunreachable: true,
|
|
13
|
+
blockedbyclient: true,
|
|
14
|
+
blockedbyresponse: true,
|
|
15
|
+
connectionaborted: true,
|
|
16
|
+
connectionclosed: true,
|
|
17
|
+
connectionfailed: true,
|
|
18
|
+
connectionrefused: true,
|
|
19
|
+
connectionreset: true,
|
|
20
|
+
internetdisconnected: true,
|
|
21
|
+
namenotresolved: true,
|
|
22
|
+
timedout: true,
|
|
23
|
+
failed: true,
|
|
24
|
+
};
|
|
25
|
+
/** RFC 9110's `token`: what a header name may be made of. */
|
|
26
|
+
const HEADER_NAME = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
|
|
27
|
+
/** A host whose http pages are secure contexts. */
|
|
28
|
+
const LOOPBACK_HOST = /^(localhost|.+\.localhost|127(\.\d{1,3}){3}|\[::1\])$/;
|
|
29
|
+
/** A loopback address, as Chromium reports the server of a response. */
|
|
30
|
+
const LOOPBACK_ADDRESS = /^(127\.|::ffff:127\.|\[?::1\]?$)/;
|
|
31
|
+
/**
|
|
32
|
+
* Refuse a header Chromium refuses: a name that is not a token, a value
|
|
33
|
+
* with a line break or NUL. Playwright reports such an answer sent while
|
|
34
|
+
* Chromium never sends it, and the request hangs.
|
|
35
|
+
*/
|
|
36
|
+
function checkHeader(name, value) {
|
|
37
|
+
if (!HEADER_NAME.test(name))
|
|
38
|
+
throw new WirestageError("INVALID_ARGUMENT", `${JSON.stringify(name)} is not a valid header name`);
|
|
39
|
+
if (/[\r\n\0]/.test(value))
|
|
40
|
+
throw new WirestageError("INVALID_ARGUMENT", `the value of header "${name}" has a line break or NUL in it`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A fulfill's headers, as Chromium takes them. A value may carry several,
|
|
44
|
+
* one per line: Playwright sends `set-cookie` as a header line each, and
|
|
45
|
+
* any other header is folded into one value, `, `-separated, as HTTP joins
|
|
46
|
+
* repeated header lines.
|
|
47
|
+
*/
|
|
48
|
+
function fulfillHeaders(headers = {}) {
|
|
49
|
+
const sent = {};
|
|
50
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
51
|
+
const values = value.split("\n");
|
|
52
|
+
for (const each of values)
|
|
53
|
+
checkHeader(name, each);
|
|
54
|
+
sent[name] =
|
|
55
|
+
name.toLowerCase() === "set-cookie" ? value : values.join(", ");
|
|
56
|
+
}
|
|
57
|
+
return sent;
|
|
58
|
+
}
|
|
59
|
+
/** Where a `continue` goes: relative to the request, in its scheme. */
|
|
60
|
+
function continueUrl(target, request) {
|
|
61
|
+
const url = new URL(target, request);
|
|
62
|
+
if (url.protocol !== request.protocol)
|
|
63
|
+
throw new WirestageError("INVALID_ARGUMENT", `continue cannot change the scheme (${request.protocol} to ${url.protocol}): Playwright rewrites a URL within its scheme only`);
|
|
64
|
+
return url.href;
|
|
65
|
+
}
|
|
66
|
+
/** Whether a page at `url` is a secure context: https, or http on loopback. */
|
|
67
|
+
const isSecure = ({ protocol, hostname }) => protocol === "https:" ||
|
|
68
|
+
(protocol === "http:" && LOOPBACK_HOST.test(hostname));
|
|
69
|
+
/** A request the browser reports failed, with its error text. */
|
|
70
|
+
const networkFault = (error) => ({
|
|
71
|
+
kind: "fault",
|
|
72
|
+
direction: "none",
|
|
73
|
+
source: "network",
|
|
74
|
+
meta: { reason: "network", error },
|
|
75
|
+
});
|
|
76
|
+
/** A live stream whose request never reached the stream server. */
|
|
77
|
+
const unreached = (error) => ({
|
|
78
|
+
kind: "fault",
|
|
79
|
+
direction: "none",
|
|
80
|
+
source: "stub",
|
|
81
|
+
meta: { reason: "unreached", error },
|
|
82
|
+
});
|
|
83
|
+
/** How a stream that ran its course is on record. */
|
|
84
|
+
const endOf = (end) => end === "cut"
|
|
85
|
+
? {
|
|
86
|
+
kind: "fault",
|
|
87
|
+
direction: "none",
|
|
88
|
+
source: "stub",
|
|
89
|
+
meta: { reason: "cut" },
|
|
90
|
+
}
|
|
91
|
+
: {
|
|
92
|
+
kind: "lifecycle",
|
|
93
|
+
direction: "none",
|
|
94
|
+
// The page let go of it, or the stub ended it.
|
|
95
|
+
source: end === "cancelled" ? "page" : "stub",
|
|
96
|
+
meta: { event: "close", end },
|
|
97
|
+
};
|
|
98
|
+
const messageOf = (error) => error instanceof Error ? error.message : String(error);
|
|
5
99
|
/**
|
|
6
100
|
* Turns HTTP rules into ONE Playwright route per attached context and runs
|
|
7
101
|
* the chain itself: the newest rule that matches decides, and a `fallback`
|
|
@@ -19,43 +113,87 @@ export function createHttpRouter(deps) {
|
|
|
19
113
|
const attachments = new Map();
|
|
20
114
|
const routes = new Map();
|
|
21
115
|
const pending = new WeakMap();
|
|
22
|
-
|
|
116
|
+
/** Live streams whose request the browser has not brought yet. */
|
|
117
|
+
const unclaimed = new Map();
|
|
118
|
+
/** Live streams the stream server is serving. */
|
|
119
|
+
const serving = new Set();
|
|
120
|
+
/** Where each frame's document came from, as its navigation reported. */
|
|
121
|
+
const documents = new WeakMap();
|
|
23
122
|
/** Responses being read off the browser, on their way to the timeline. */
|
|
24
123
|
const settling = new Set();
|
|
25
124
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
125
|
+
* The origin a live stream from `frame` needs `local-network-access`
|
|
126
|
+
* for, if any. Chromium's Local Network Access stops a page it cannot
|
|
127
|
+
* place in an address space — any page a route fulfilled — from reaching
|
|
128
|
+
* the loopback stream server unless its origin holds the permission. A
|
|
129
|
+
* page a loopback server really served needs none, and one that is not a
|
|
130
|
+
* secure context is refused loopback, granted or not.
|
|
31
131
|
*/
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
132
|
+
const grantFor = (frame) => {
|
|
133
|
+
// A service worker's request has no frame, and a frame that has shown
|
|
134
|
+
// no document yet no URL: neither has an origin to grant.
|
|
135
|
+
if (frame === undefined || !URL.canParse(frame.url()))
|
|
136
|
+
return undefined;
|
|
137
|
+
const url = new URL(frame.url());
|
|
138
|
+
if (!isSecure(url))
|
|
139
|
+
return undefined;
|
|
140
|
+
const document = documents.get(frame);
|
|
141
|
+
return document?.origin === url.origin && document.loopback
|
|
142
|
+
? undefined
|
|
143
|
+
: url.origin;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Granted per stream, to that page's origin alone: Playwright merges it
|
|
147
|
+
* with the grants the test made for that origin, and a test that cleared
|
|
148
|
+
* its permissions has it back with the next stream. A browser without
|
|
149
|
+
* the permission refuses it, and then needs none.
|
|
150
|
+
*/
|
|
151
|
+
const allowLocalNetwork = async ({ attachment, frame, }) => {
|
|
152
|
+
const origin = grantFor(frame);
|
|
153
|
+
if (origin === undefined)
|
|
154
|
+
return;
|
|
155
|
+
try {
|
|
156
|
+
await attachment.context.grantPermissions?.(["local-network-access"], {
|
|
157
|
+
origin,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
deps.log.debug("local-network-access not granted", { origin }, error);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
/** Note where a frame's document came from, for `grantFor`. */
|
|
165
|
+
const noteDocument = async (request) => {
|
|
166
|
+
try {
|
|
167
|
+
const frame = request.frame();
|
|
168
|
+
const server = await (await request.response())?.serverAddr();
|
|
169
|
+
documents.set(frame, {
|
|
170
|
+
origin: new URL(request.url()).origin,
|
|
171
|
+
loopback: server != null && LOOPBACK_ADDRESS.test(server.ipAddress),
|
|
39
172
|
});
|
|
40
|
-
localNetwork.set(attachment, granting);
|
|
41
173
|
}
|
|
42
|
-
|
|
174
|
+
catch (error) {
|
|
175
|
+
// A service worker's document has no frame, a closed page no answer.
|
|
176
|
+
deps.log.debug("could not tell where a document came from", { url: request.url() }, error);
|
|
177
|
+
}
|
|
43
178
|
};
|
|
44
|
-
|
|
179
|
+
/** The frame and the page a request came from; a service worker's has neither. */
|
|
180
|
+
const senderOf = (request) => {
|
|
181
|
+
try {
|
|
182
|
+
const frame = request.frame();
|
|
183
|
+
return { frame, page: deps.pageId(frame.page()) };
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Service-worker requests have no frame.
|
|
187
|
+
return {};
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const createView = async (request, attachment, url, page) => {
|
|
45
191
|
let body;
|
|
46
192
|
let correlation;
|
|
47
193
|
const getBody = () => {
|
|
48
194
|
body ??= toBytes(request.postDataBuffer() ?? new Uint8Array(0));
|
|
49
195
|
return body;
|
|
50
196
|
};
|
|
51
|
-
let page;
|
|
52
|
-
try {
|
|
53
|
-
page = deps.pageId(request.frame().page());
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Service-worker requests have no frame.
|
|
57
|
-
page = undefined;
|
|
58
|
-
}
|
|
59
197
|
return {
|
|
60
198
|
get correlation() {
|
|
61
199
|
correlation ??= deps.correlation();
|
|
@@ -156,10 +294,87 @@ export function createHttpRouter(deps) {
|
|
|
156
294
|
rule.onPassthroughFailure !== undefined))
|
|
157
295
|
pending.set(exchange.request, exchange);
|
|
158
296
|
};
|
|
297
|
+
/** A request that outlived its context fails for that reason alone. */
|
|
298
|
+
const levelOf = ({ attachment }) => attachments.has(attachment) ? "error" : "debug";
|
|
299
|
+
/** What the page is told of a rule that failed; the app may display it. */
|
|
300
|
+
const failureBody = ({ rule }, error) => `wirestage: rule "${rule.label}" failed: ${messageOf(error)}`;
|
|
301
|
+
/** Say which rule failed: in the log, and on the timeline. */
|
|
302
|
+
const report = (exchange, entry, error) => {
|
|
303
|
+
const { rule } = entry;
|
|
304
|
+
deps.log[levelOf(exchange)]("rule failed", { rule: rule.label, url: exchange.view.url.href }, error);
|
|
305
|
+
append(exchange, rule.protocol, nameOf(entry, exchange.view), {
|
|
306
|
+
kind: "fault",
|
|
307
|
+
direction: "none",
|
|
308
|
+
source: "stub",
|
|
309
|
+
meta: { reason: "rule-error", error: messageOf(error) },
|
|
310
|
+
});
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* Serve a live stream once the browser has brought its request to the
|
|
314
|
+
* stream server. A rule that throws there is a rule that failed, as a
|
|
315
|
+
* throwing `fulfill` is — not the page letting go.
|
|
316
|
+
*/
|
|
317
|
+
const serveStream = (outcome, exchange, entry) => async (request, response) => {
|
|
318
|
+
const served = createResponseStream(request, response, (end, failed) => {
|
|
319
|
+
serving.delete(served);
|
|
320
|
+
// A rule that failed is on record as its error, not as an end.
|
|
321
|
+
if (!failed)
|
|
322
|
+
close(exchange, endOf(end));
|
|
323
|
+
});
|
|
324
|
+
serving.add(served);
|
|
325
|
+
try {
|
|
326
|
+
await outcome.open(served.stream);
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
if (served.fail(failureBody(entry, error)))
|
|
330
|
+
report(exchange, entry, error);
|
|
331
|
+
// It was over first, and is on record as such: a write into a
|
|
332
|
+
// connection the page let go of, or one the rule ended.
|
|
333
|
+
else
|
|
334
|
+
deps.log.debug("a stream's rule failed after the stream was over", { rule: entry.rule.label }, error);
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* Wait for the browser to bring a redirected stream to the stream
|
|
339
|
+
* server. Until it does, the session holds a place on a listener and the
|
|
340
|
+
* exchange has no end — and a page that let go first, while the rule
|
|
341
|
+
* decided or just after the redirect, never comes: Playwright takes the
|
|
342
|
+
* redirect all the same. Given up when the request fails, the context is
|
|
343
|
+
* detached, or `timeoutMs` passes.
|
|
344
|
+
*/
|
|
345
|
+
const awaitBrowser = (exchange, session) => {
|
|
346
|
+
const release = (frame) => {
|
|
347
|
+
session.dispose();
|
|
348
|
+
close(exchange, frame);
|
|
349
|
+
};
|
|
350
|
+
const failure = exchange.request.failure();
|
|
351
|
+
if (failure !== null) {
|
|
352
|
+
// It failed while the rule decided or the redirect was made.
|
|
353
|
+
release(networkFault(failure.errorText));
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
const deadline = new AbortController();
|
|
357
|
+
const settle = (frame) => {
|
|
358
|
+
unclaimed.delete(exchange.request);
|
|
359
|
+
deadline.abort();
|
|
360
|
+
if (frame !== undefined)
|
|
361
|
+
release(frame);
|
|
362
|
+
};
|
|
363
|
+
unclaimed.set(exchange.request, {
|
|
364
|
+
attachment: exchange.attachment,
|
|
365
|
+
settle,
|
|
366
|
+
});
|
|
367
|
+
void deps.clock.sleep(deps.timeoutMs, deadline.signal).then(() => {
|
|
368
|
+
deps.log.warn("a live stream's request never reached the stream server, and was given up", { url: exchange.view.url.href, timeoutMs: deps.timeoutMs });
|
|
369
|
+
settle(unreached(`the browser did not bring the request to the stream server within ${deps.timeoutMs} ms`));
|
|
370
|
+
},
|
|
371
|
+
// It came, failed or was detached first.
|
|
372
|
+
() => undefined);
|
|
373
|
+
};
|
|
159
374
|
const execute = {
|
|
160
375
|
async fulfill(outcome, exchange) {
|
|
161
376
|
const status = outcome.status ?? 200;
|
|
162
|
-
const headers =
|
|
377
|
+
const headers = fulfillHeaders(outcome.headers);
|
|
163
378
|
const body = outcome.body === undefined ? undefined : toBytes(outcome.body);
|
|
164
379
|
await exchange.route.fulfill(body === undefined
|
|
165
380
|
? { status, headers }
|
|
@@ -172,26 +387,15 @@ export function createHttpRouter(deps) {
|
|
|
172
387
|
meta: { status, headers },
|
|
173
388
|
});
|
|
174
389
|
},
|
|
175
|
-
async stream(outcome, exchange) {
|
|
390
|
+
async stream(outcome, exchange, entry) {
|
|
391
|
+
let claimed = false;
|
|
392
|
+
const serve = serveStream(outcome, exchange, entry);
|
|
176
393
|
const session = await deps.streams.open((request, response) => {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
kind: "fault",
|
|
181
|
-
direction: "none",
|
|
182
|
-
source: "stub",
|
|
183
|
-
meta: { reason: "cut" },
|
|
184
|
-
}
|
|
185
|
-
: {
|
|
186
|
-
kind: "lifecycle",
|
|
187
|
-
direction: "none",
|
|
188
|
-
// The page let go of it, or the stub ended it.
|
|
189
|
-
source: end === "cancelled" ? "page" : "stub",
|
|
190
|
-
meta: { event: "close", end },
|
|
191
|
-
}));
|
|
192
|
-
return outcome.open(stream);
|
|
394
|
+
claimed = true;
|
|
395
|
+
unclaimed.get(exchange.request)?.settle();
|
|
396
|
+
return serve(request, response);
|
|
193
397
|
}, { secure: exchange.view.url.protocol === "https:" });
|
|
194
|
-
await allowLocalNetwork(exchange
|
|
398
|
+
await allowLocalNetwork(exchange);
|
|
195
399
|
try {
|
|
196
400
|
await exchange.route.continue({ url: session.url });
|
|
197
401
|
}
|
|
@@ -199,12 +403,20 @@ export function createHttpRouter(deps) {
|
|
|
199
403
|
session.dispose();
|
|
200
404
|
throw error;
|
|
201
405
|
}
|
|
406
|
+
// The browser may come before Playwright says the redirect is made.
|
|
407
|
+
if (!claimed)
|
|
408
|
+
awaitBrowser(exchange, session);
|
|
202
409
|
},
|
|
203
410
|
async continue(outcome, exchange, entry) {
|
|
411
|
+
const url = outcome.url === undefined
|
|
412
|
+
? undefined
|
|
413
|
+
: continueUrl(outcome.url, exchange.view.url);
|
|
414
|
+
for (const [name, value] of Object.entries(outcome.headers ?? {}))
|
|
415
|
+
checkHeader(name, value);
|
|
204
416
|
exchange.passed.push(entry);
|
|
205
417
|
track(exchange);
|
|
206
418
|
await exchange.route.continue({
|
|
207
|
-
...(
|
|
419
|
+
...(url === undefined ? {} : { url }),
|
|
208
420
|
...(outcome.method === undefined ? {} : { method: outcome.method }),
|
|
209
421
|
...(outcome.headers === undefined
|
|
210
422
|
? {}
|
|
@@ -216,6 +428,8 @@ export function createHttpRouter(deps) {
|
|
|
216
428
|
},
|
|
217
429
|
async abort(outcome, exchange) {
|
|
218
430
|
const error = outcome.error ?? "failed";
|
|
431
|
+
if (!Object.hasOwn(ABORT_CODES, error))
|
|
432
|
+
throw new WirestageError("INVALID_ARGUMENT", `"${error}" is not an abort error code; Playwright takes ${Object.keys(ABORT_CODES).join(", ")}`);
|
|
219
433
|
await exchange.route.abort(error);
|
|
220
434
|
close(exchange, {
|
|
221
435
|
kind: "fault",
|
|
@@ -226,32 +440,24 @@ export function createHttpRouter(deps) {
|
|
|
226
440
|
},
|
|
227
441
|
};
|
|
228
442
|
/**
|
|
229
|
-
* A throwing stub is a bug in the test,
|
|
230
|
-
*
|
|
443
|
+
* A throwing stub is a bug in the test, as is an answer Playwright or
|
|
444
|
+
* Chromium would refuse, and a stream that cannot open is a setup
|
|
445
|
+
* problem. Either way answer 500 so the page sees an error instead of
|
|
231
446
|
* hanging, and say which rule failed — in the log AND in the body the app
|
|
232
447
|
* may display.
|
|
233
448
|
*/
|
|
234
449
|
const fail = async (exchange, entry, error) => {
|
|
235
|
-
|
|
236
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
237
|
-
// A request that outlived its context fails for that reason alone.
|
|
238
|
-
const level = attachments.has(exchange.attachment) ? "error" : "debug";
|
|
239
|
-
deps.log[level]("rule failed", { rule: rule.label, url: exchange.view.url.href }, error);
|
|
240
|
-
append(exchange, rule.protocol, nameOf(entry, exchange.view), {
|
|
241
|
-
kind: "fault",
|
|
242
|
-
direction: "none",
|
|
243
|
-
source: "stub",
|
|
244
|
-
meta: { reason: "rule-error", error: message },
|
|
245
|
-
});
|
|
450
|
+
report(exchange, entry, error);
|
|
246
451
|
await exchange.route
|
|
247
452
|
.fulfill({
|
|
248
453
|
status: 500,
|
|
249
454
|
headers: { "content-type": "text/plain; charset=utf-8" },
|
|
250
|
-
body:
|
|
455
|
+
body: failureBody(entry, error),
|
|
251
456
|
})
|
|
252
457
|
.catch((secondary) => {
|
|
253
|
-
// The route
|
|
254
|
-
|
|
458
|
+
// The route took an answer before the failure, and Playwright
|
|
459
|
+
// takes no other: the page waits for good.
|
|
460
|
+
deps.log[levelOf(exchange)]("could not answer a failed rule: the request is left without an answer", { rule: entry.rule.label, url: exchange.view.url.href }, secondary);
|
|
255
461
|
});
|
|
256
462
|
};
|
|
257
463
|
const dispatch = async (attachment, route, request) => {
|
|
@@ -261,11 +467,13 @@ export function createHttpRouter(deps) {
|
|
|
261
467
|
const chain = entries.filter((entry) => wants(entry, url)).reverse();
|
|
262
468
|
if (chain.length === 0)
|
|
263
469
|
return route.fallback();
|
|
470
|
+
const sender = senderOf(request);
|
|
264
471
|
const exchange = {
|
|
265
|
-
view: await createView(request, attachment, url),
|
|
472
|
+
view: await createView(request, attachment, url, sender.page),
|
|
266
473
|
attachment,
|
|
267
474
|
route,
|
|
268
475
|
request,
|
|
476
|
+
frame: sender.frame,
|
|
269
477
|
recorded: new Map(),
|
|
270
478
|
passed: [],
|
|
271
479
|
};
|
|
@@ -327,11 +535,8 @@ export function createHttpRouter(deps) {
|
|
|
327
535
|
deps.log.error("passthrough observer failed", { rule: entry.rule.label }, error);
|
|
328
536
|
}
|
|
329
537
|
};
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
if (exchange === undefined)
|
|
333
|
-
return;
|
|
334
|
-
pending.delete(request);
|
|
538
|
+
/** Record the network's answer to a request a rule passed on. */
|
|
539
|
+
const record = async (exchange, request) => {
|
|
335
540
|
try {
|
|
336
541
|
const response = await request.response();
|
|
337
542
|
if (response === null)
|
|
@@ -356,18 +561,38 @@ export function createHttpRouter(deps) {
|
|
|
356
561
|
deps.log.warn("could not read a passed-through response", { url: exchange.view.url.href }, error);
|
|
357
562
|
}
|
|
358
563
|
};
|
|
564
|
+
/** Whether a finished request was passed on, and its recording if so. */
|
|
565
|
+
const onFinished = (request) => {
|
|
566
|
+
const exchange = pending.get(request);
|
|
567
|
+
if (exchange === undefined)
|
|
568
|
+
return undefined;
|
|
569
|
+
pending.delete(request);
|
|
570
|
+
return record(exchange, request);
|
|
571
|
+
};
|
|
572
|
+
/**
|
|
573
|
+
* `reading`, as long as a read waits for it. Reading a body is a round
|
|
574
|
+
* trip to the page, which a dialog holds up until it closes: a read waits
|
|
575
|
+
* as long as a page is given to answer, then goes on, and the response
|
|
576
|
+
* reaches the timeline when its body does.
|
|
577
|
+
*/
|
|
578
|
+
const bounded = (reading, url) => {
|
|
579
|
+
const waiting = new AbortController();
|
|
580
|
+
return Promise.race([
|
|
581
|
+
reading,
|
|
582
|
+
deps.clock.sleep(deps.timeoutMs, waiting.signal).then(() => deps.log.warn("a response did not hand over its body in time; reads go on without it until it does (is a dialog open?)", { url, timeoutMs: deps.timeoutMs }),
|
|
583
|
+
// The body came first.
|
|
584
|
+
() => undefined),
|
|
585
|
+
]).finally(() => waiting.abort());
|
|
586
|
+
};
|
|
359
587
|
const onFailed = (request) => {
|
|
588
|
+
const error = request.failure()?.errorText;
|
|
589
|
+
// A live stream the page let go of before the browser could bring it.
|
|
590
|
+
unclaimed.get(request)?.settle(networkFault(error));
|
|
360
591
|
const exchange = pending.get(request);
|
|
361
592
|
if (exchange === undefined)
|
|
362
593
|
return;
|
|
363
594
|
pending.delete(request);
|
|
364
|
-
|
|
365
|
-
close(exchange, {
|
|
366
|
-
kind: "fault",
|
|
367
|
-
direction: "none",
|
|
368
|
-
source: "network",
|
|
369
|
-
meta: { reason: "network", error },
|
|
370
|
-
});
|
|
595
|
+
close(exchange, networkFault(error));
|
|
371
596
|
for (const entry of exchange.passed)
|
|
372
597
|
notify(entry, (rule) => rule.onPassthroughFailure?.(error, exchange.view));
|
|
373
598
|
};
|
|
@@ -414,8 +639,14 @@ export function createHttpRouter(deps) {
|
|
|
414
639
|
async attach(attachment) {
|
|
415
640
|
const own = {
|
|
416
641
|
finished: (request) => {
|
|
417
|
-
|
|
418
|
-
|
|
642
|
+
if (request.resourceType() === "document")
|
|
643
|
+
void noteDocument(request);
|
|
644
|
+
const reading = onFinished(request);
|
|
645
|
+
if (reading === undefined)
|
|
646
|
+
return;
|
|
647
|
+
const waiting = bounded(reading, request.url());
|
|
648
|
+
settling.add(waiting);
|
|
649
|
+
void waiting.then(() => settling.delete(waiting));
|
|
419
650
|
},
|
|
420
651
|
failed: onFailed,
|
|
421
652
|
};
|
|
@@ -434,6 +665,10 @@ export function createHttpRouter(deps) {
|
|
|
434
665
|
attachments.delete(attachment);
|
|
435
666
|
attachment.context.off("requestfinished", own.finished);
|
|
436
667
|
attachment.context.off("requestfailed", own.failed);
|
|
668
|
+
// Nothing brings these now, and each holds a place on a listener.
|
|
669
|
+
for (const waiting of [...unclaimed.values()])
|
|
670
|
+
if (waiting.attachment === attachment)
|
|
671
|
+
waiting.settle(unreached("the context was detached first"));
|
|
437
672
|
const installing = routes.get(attachment);
|
|
438
673
|
routes.delete(attachment);
|
|
439
674
|
if (installing === undefined)
|
|
@@ -448,7 +683,13 @@ export function createHttpRouter(deps) {
|
|
|
448
683
|
}
|
|
449
684
|
},
|
|
450
685
|
async settle() {
|
|
451
|
-
await Promise.all(
|
|
686
|
+
await Promise.all([
|
|
687
|
+
...settling,
|
|
688
|
+
// A stream the stub ended or cut is on its way to the timeline.
|
|
689
|
+
...[...serving]
|
|
690
|
+
.filter((served) => served.closing)
|
|
691
|
+
.map((served) => served.stream.closed),
|
|
692
|
+
]);
|
|
452
693
|
},
|
|
453
694
|
};
|
|
454
695
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-router.js","sourceRoot":"","sources":["../../../../src/widgets/stage/lib/http-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-router.js","sourceRoot":"","sources":["../../../../src/widgets/stage/lib/http-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
import type { ResponseStream } from "../../../entities/plugin/index.js";
|
|
2
|
+
import type { ResponseStream, StreamEnd } from "../../../entities/plugin/index.js";
|
|
3
|
+
/** A stream as the stage serves it: the rule's end of it, and the stage's. */
|
|
4
|
+
export interface ServedStream {
|
|
5
|
+
/** What the rule writes. */
|
|
6
|
+
readonly stream: ResponseStream;
|
|
7
|
+
/** The stub asked for the end, and `closed` is on its way. */
|
|
8
|
+
readonly closing: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* The rule writing the stream failed: answer 500 with `body` while
|
|
11
|
+
* nothing has gone out, and cut the connection after. False when the
|
|
12
|
+
* response was over first — ended, cut, or let go of by the page.
|
|
13
|
+
*/
|
|
14
|
+
fail(body: string): boolean;
|
|
15
|
+
}
|
|
3
16
|
/**
|
|
4
17
|
* A Node response as the stream a rule writes: the adapter between the
|
|
5
18
|
* stream server's sockets and the plugin contract, which knows nothing of
|
|
6
|
-
* Node.
|
|
19
|
+
* Node. `onClose` hears how the response ended before `closed` resolves, so
|
|
20
|
+
* whoever awaits `closed` finds the end already on record.
|
|
7
21
|
*/
|
|
8
|
-
export declare function createResponseStream(request: IncomingMessage, response: ServerResponse):
|
|
22
|
+
export declare function createResponseStream(request: IncomingMessage, response: ServerResponse, onClose: (end: StreamEnd, failed: boolean) => void): ServedStream;
|
|
9
23
|
//# sourceMappingURL=response-stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-stream.d.ts","sourceRoot":"","sources":["../../../../src/widgets/stage/lib/response-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"response-stream.d.ts","sourceRoot":"","sources":["../../../../src/widgets/stage/lib/response-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EAEf,cAAc,EACd,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EACX,cAAc,EACd,SAAS,EACT,MAAM,mCAAmC,CAAC;AAK3C,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC5B,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAChD,YAAY,CAoGd"}
|