@seanhogg/builderforce-webcontainers 2026.10.6 → 2026.10.8

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.
Files changed (72) hide show
  1. package/dist/assets.js +3 -3
  2. package/dist/check/worker.js +8 -8
  3. package/dist/host.d.ts +25 -9
  4. package/dist/host.d.ts.map +1 -1
  5. package/dist/host.js +39 -25
  6. package/dist/host.js.map +1 -1
  7. package/dist/index.d.ts +9 -3
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/node/index.d.ts +5 -9
  12. package/dist/node/index.d.ts.map +1 -1
  13. package/dist/node/index.js +1 -25
  14. package/dist/node/index.js.map +1 -1
  15. package/dist/node/portResponder.d.ts +45 -0
  16. package/dist/node/portResponder.d.ts.map +1 -0
  17. package/dist/node/portResponder.js +136 -0
  18. package/dist/node/portResponder.js.map +1 -0
  19. package/dist/node/processHost.d.ts +26 -2
  20. package/dist/node/processHost.d.ts.map +1 -1
  21. package/dist/node/processHost.js +67 -16
  22. package/dist/node/processHost.js.map +1 -1
  23. package/dist/node/protocol.d.ts +42 -9
  24. package/dist/node/protocol.d.ts.map +1 -1
  25. package/dist/node/protocol.js.map +1 -1
  26. package/dist/node/responseWire.d.ts +27 -0
  27. package/dist/node/responseWire.d.ts.map +1 -0
  28. package/dist/node/responseWire.js +99 -0
  29. package/dist/node/responseWire.js.map +1 -0
  30. package/dist/node/worker.js +143 -127
  31. package/dist/node/workerProcess.d.ts +3 -1
  32. package/dist/node/workerProcess.d.ts.map +1 -1
  33. package/dist/node/workerProcess.js +49 -19
  34. package/dist/node/workerProcess.js.map +1 -1
  35. package/dist/previewBridge.d.ts +37 -0
  36. package/dist/previewBridge.d.ts.map +1 -0
  37. package/dist/previewBridge.js +116 -0
  38. package/dist/previewBridge.js.map +1 -0
  39. package/dist/previewMessages.d.ts +24 -0
  40. package/dist/previewMessages.d.ts.map +1 -0
  41. package/dist/previewMessages.js +59 -0
  42. package/dist/previewMessages.js.map +1 -0
  43. package/dist/process-worker.js +143 -127
  44. package/dist/protocol.d.ts +23 -1
  45. package/dist/protocol.d.ts.map +1 -1
  46. package/dist/protocol.js +8 -0
  47. package/dist/protocol.js.map +1 -1
  48. package/dist/relay.html +1 -1
  49. package/dist/snapshotStore.d.ts +30 -0
  50. package/dist/snapshotStore.d.ts.map +1 -0
  51. package/dist/snapshotStore.js +115 -0
  52. package/dist/snapshotStore.js.map +1 -0
  53. package/dist/sw.js +1 -1
  54. package/dist/swRouter.d.ts +8 -1
  55. package/dist/swRouter.d.ts.map +1 -1
  56. package/dist/swRouter.js +40 -5
  57. package/dist/swRouter.js.map +1 -1
  58. package/package.json +3 -2
  59. package/src/host.ts +62 -31
  60. package/src/index.ts +8 -3
  61. package/src/node/index.ts +5 -24
  62. package/src/node/portResponder.ts +175 -0
  63. package/src/node/processHost.ts +92 -15
  64. package/src/node/protocol.ts +25 -4
  65. package/src/node/responseWire.ts +97 -0
  66. package/src/node/workerProcess.ts +52 -21
  67. package/src/previewBridge.ts +148 -0
  68. package/src/previewMessages.ts +79 -0
  69. package/src/protocol.ts +35 -1
  70. package/src/snapshotStore.ts +135 -0
  71. package/src/sw.ts +2 -0
  72. package/src/swRouter.ts +35 -6
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Answering preview requests addressed to virtual servers (`/__port/<n>/…`).
3
+ * The request reaches the server carrying the cookies the host holds for that
4
+ * port; the response streams back to the service worker as the server writes
5
+ * it (head, then `chunk` messages, then `end`); its `Set-Cookie`s go into the
6
+ * jar (a service worker could not set them); and an HTML page gets the preview
7
+ * bridge — the WebSocket shim and `document.cookie` — injected after `<head>`.
8
+ */
9
+ import { bridgeInsertionPoint, drainBody, errorBridgeScript, scriptTag, parsePortPath, previewCookieScript, previewSocketScript, readBody, textResponse, } from '@seanhogg/builderforce-webcontainers-core';
10
+ const NO_STORE = { 'cache-control': 'no-store' };
11
+ function headerKey(headers, name) {
12
+ return Object.keys(headers).find((key) => key.toLowerCase() === name);
13
+ }
14
+ /** Send a preview request to its virtual server; resolves with the head and a body that streams. */
15
+ export async function openPortResponse(host, request, options = {}) {
16
+ const target = parsePortPath(request.path);
17
+ const jar = options.cookies?.jar(target.port);
18
+ const headers = {};
19
+ for (const [key, value] of Object.entries(request.headers ?? {}))
20
+ if (!jar || key.toLowerCase() !== 'cookie')
21
+ headers[key] = value;
22
+ const cookie = jar?.header(target.path);
23
+ if (cookie)
24
+ headers.cookie = cookie;
25
+ const response = (await host.requestStream(target.port, { method: request.method ?? 'GET', url: target.path + request.search, headers, body: request.body ? new Uint8Array(request.body) : null })) ??
26
+ textResponse(502, `Nothing is listening on port ${target.port}. Start a server (node server.js) first.`);
27
+ const out = {};
28
+ const setCookies = [];
29
+ for (const [key, value] of Object.entries(response.headers)) {
30
+ if (key.toLowerCase() === 'set-cookie')
31
+ setCookies.push(...(Array.isArray(value) ? value : [value]));
32
+ else
33
+ out[key] = Array.isArray(value) ? value.join(', ') : String(value);
34
+ }
35
+ if (response.status === 502 && !headerKey(out, 'cache-control'))
36
+ Object.assign(out, NO_STORE);
37
+ jar?.store(setCookies, target.path);
38
+ let body = response.body;
39
+ const type = headerKey(out, 'content-type');
40
+ // A compressed body cannot be edited in flight; such a page goes without the bridge.
41
+ const hasBody = request.method !== 'HEAD' && response.status !== 204 && response.status !== 304;
42
+ if (options.bridge !== false && hasBody && type && /^\s*text\/html/i.test(out[type]) && !headerKey(out, 'content-encoding')) {
43
+ body = injectBridge(body, bridgeFor(jar, target.path, options.scripts?.() ?? []));
44
+ const length = headerKey(out, 'content-length');
45
+ if (length)
46
+ delete out[length];
47
+ // The bridge pushes a `<meta charset>` past the 1,024-byte prescan; say it in the header instead.
48
+ if (!/charset=/i.test(out[type]))
49
+ out[type] = `${out[type]}; charset=utf-8`;
50
+ }
51
+ return { status: response.status, headers: out, body };
52
+ }
53
+ /** The same bridge a dev-server page gets (errors, console, sockets), plus cookies and the host's scripts. */
54
+ function bridgeFor(jar, path, scripts) {
55
+ return [errorBridgeScript(), previewSocketScript(), jar ? previewCookieScript(jar.documentCookie(path)) : '', ...scripts.map(scriptTag)].join('');
56
+ }
57
+ /** Insert `script` into a streamed document, after `<head>` (see `bridgeInsertionPoint`), passing the rest through as it arrives. */
58
+ export function injectBridge(body, script) {
59
+ // windows-1252 maps every byte to one UTF-16 unit, so string indices are byte offsets.
60
+ const latin1 = new TextDecoder('latin1');
61
+ const bridge = new TextEncoder().encode(script);
62
+ let held = new Uint8Array(0);
63
+ let injected = false;
64
+ const tryInject = (controller, complete) => {
65
+ const at = bridgeInsertionPoint(latin1.decode(held), complete);
66
+ if (at === undefined)
67
+ return;
68
+ if (at)
69
+ controller.enqueue(held.subarray(0, at));
70
+ controller.enqueue(bridge);
71
+ if (at < held.byteLength)
72
+ controller.enqueue(held.subarray(at));
73
+ held = new Uint8Array(0);
74
+ injected = true;
75
+ };
76
+ return body.pipeThrough(new TransformStream({
77
+ transform(chunk, controller) {
78
+ if (injected)
79
+ return controller.enqueue(chunk);
80
+ const joined = new Uint8Array(held.byteLength + chunk.byteLength);
81
+ joined.set(held);
82
+ joined.set(chunk, held.byteLength);
83
+ held = joined;
84
+ tryInject(controller, false);
85
+ },
86
+ flush(controller) {
87
+ if (!injected)
88
+ tryInject(controller, true);
89
+ },
90
+ }));
91
+ }
92
+ /** A transferable copy of a chunk. */
93
+ const transferable = (data) => new Uint8Array(data).buffer;
94
+ /** Answer a preview request with the whole body (tests, simple hosts). The preview path streams instead: {@link createPortResponder}. */
95
+ export async function servePortRequest(host, request, options) {
96
+ const opened = await openPortResponse(host, request, options);
97
+ const body = transferable(await readBody(opened.body));
98
+ return { message: { type: 'response', reqId: request.reqId, status: opened.status, headers: opened.headers, body }, transfer: [body] };
99
+ }
100
+ /** One per service-worker channel (request ids are unique within a channel). */
101
+ export function createPortResponder(host, options) {
102
+ const streaming = new Map();
103
+ return {
104
+ async serve(request, post) {
105
+ const { reqId } = request;
106
+ let opened;
107
+ try {
108
+ opened = await openPortResponse(host, request, options);
109
+ }
110
+ catch (error) {
111
+ return post({ type: 'response', reqId, status: 500, headers: { 'content-type': 'text/plain; charset=utf-8', ...NO_STORE }, body: String(error instanceof Error ? error.message : error) }, []);
112
+ }
113
+ post({ type: 'response', reqId, status: opened.status, headers: opened.headers, body: null, streaming: true }, []);
114
+ streaming.set(reqId, drainBody(opened.body, {
115
+ chunk(data) {
116
+ const buffer = transferable(data);
117
+ post({ type: 'chunk', reqId, data: buffer }, [buffer]);
118
+ },
119
+ end(error) {
120
+ streaming.delete(reqId);
121
+ post(error ? { type: 'end', reqId, error } : { type: 'end', reqId }, []);
122
+ },
123
+ }));
124
+ },
125
+ cancel(reqId) {
126
+ streaming.get(reqId)?.();
127
+ streaming.delete(reqId);
128
+ },
129
+ dispose() {
130
+ for (const stop of streaming.values())
131
+ stop();
132
+ streaming.clear();
133
+ },
134
+ };
135
+ }
136
+ //# sourceMappingURL=portResponder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portResponder.js","sourceRoot":"","sources":["../../src/node/portResponder.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,12 @@
5
5
  * write reaches the page, then every other worker). Children a worker spawns
6
6
  * (the shell running `node`, `child_process`) are started here too, so every
7
7
  * process — however deep — can be killed by terminating its worker.
8
+ *
9
+ * Responses from a worker's servers stream through here chunk by chunk (see
10
+ * responseWire.ts), and upgraded connections (WebSockets) are relayed as raw
11
+ * bytes between the client end the caller holds and the server's worker.
8
12
  */
9
- import { PortRegistry, ServerEvents, type ChildHandle, type HttpRequestData, type HttpResponseData, type ProcessOptions, type RuntimeProcess, type VirtualFileSystem } from '@seanhogg/builderforce-webcontainers-core';
13
+ import { PortRegistry, ServerEvents, type ByteChannel, type ChildHandle, type HttpRequestData, type HttpResponseData, type HttpStreamResponse, type ProcessOptions, type RuntimeProcess, type VirtualFileSystem } from '@seanhogg/builderforce-webcontainers-core';
10
14
  /** The part of `Worker` the host uses — a real Worker, or an in-thread fake in tests. */
11
15
  export interface WorkerLike {
12
16
  postMessage(message: unknown): void;
@@ -33,6 +37,17 @@ export interface ProcessHostOptions {
33
37
  /** How long a killed process may take to exit before its worker is terminated. Default 2000ms. */
34
38
  killGraceMs?: number;
35
39
  }
40
+ /** A running process, as `listProcesses()` reports it. */
41
+ export interface ProcessInfo {
42
+ pid: number;
43
+ command: string;
44
+ args: string[];
45
+ cwd: string;
46
+ /** Epoch ms. */
47
+ startedAt: number;
48
+ /** Ports its servers listen on. */
49
+ ports: number[];
50
+ }
36
51
  export declare class ProcessHost {
37
52
  private readonly options;
38
53
  readonly ports: PortRegistry;
@@ -42,6 +57,7 @@ export declare class ProcessHost {
42
57
  private applyingFrom?;
43
58
  private flushScheduled;
44
59
  private nextReq;
60
+ private nextConn;
45
61
  private readonly unwatch;
46
62
  private readonly stopPorts;
47
63
  constructor(options: ProcessHostOptions);
@@ -50,8 +66,14 @@ export declare class ProcessHost {
50
66
  run(command: string, args?: string[], options?: ProcessOptions): RuntimeProcess;
51
67
  run(command: string, options?: ProcessOptions): RuntimeProcess;
52
68
  spawnChild(command: string, args?: string[], options?: ProcessOptions): ChildHandle;
53
- /** Dispatch an HTTP request to the server on `port` (the preview service worker's `/__port/<port>/` path). */
69
+ /** Every process still running, oldest first — children started by a shell included. */
70
+ list(): ProcessInfo[];
71
+ /** Dispatch an HTTP request to the server on `port` and wait for the whole response. */
54
72
  request(port: number, request: HttpRequestData): Promise<HttpResponseData | undefined>;
73
+ /** Dispatch an HTTP request to the server on `port` (the preview's `/__port/<port>/` path); resolves at the head, the body streaming. */
74
+ requestStream(port: number, request: HttpRequestData): Promise<HttpStreamResponse | undefined>;
75
+ /** Open an upgraded connection (a WebSocket) to the server on `port`; returns the client end. */
76
+ upgrade(port: number, request: HttpRequestData): ByteChannel | undefined;
55
77
  dispose(): void;
56
78
  private kill;
57
79
  private cleanup;
@@ -60,5 +82,7 @@ export declare class ProcessHost {
60
82
  private flushOutboxes;
61
83
  private onWorkerMessage;
62
84
  private forward;
85
+ /** Relay an upgraded connection: `socket` is the server end; its bytes go to the worker, and the worker's come back. */
86
+ private forwardUpgrade;
63
87
  }
64
88
  //# sourceMappingURL=processHost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processHost.d.ts","sourceRoot":"","sources":["../../src/node/processHost.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,YAAY,EACZ,YAAY,EAIZ,KAAK,WAAW,EAEhB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,2CAA2C,CAAC;AAInD,yFAAyF;AACzF,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACzD,SAAS,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,iBAAiB,CAAC;IACtB,YAAY,IAAI,UAAU,CAAC;IAC3B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD,qBAAa,WAAW;IAWV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,QAAQ,CAAC,KAAK,eAAsB;IACpC,oDAAoD;IACpD,QAAQ,CAAC,OAAO,eAAsB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,YAAY,CAAC,CAAO;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAEV,OAAO,EAAE,kBAAkB;IASxD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,uFAAuF;IACvF,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc;IAC/E,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc;IAM9D,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,WAAW;IA2D3F,8GAA8G;IAC9G,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAItF,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,IAAI;IAgBZ,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IA6EvB,OAAO,CAAC,OAAO;CAOhB"}
1
+ {"version":3,"file":"processHost.d.ts","sourceRoot":"","sources":["../../src/node/processHost.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,16 @@
5
5
  * write reaches the page, then every other worker). Children a worker spawns
6
6
  * (the shell running `node`, `child_process`) are started here too, so every
7
7
  * process — however deep — can be killed by terminating its worker.
8
+ *
9
+ * Responses from a worker's servers stream through here chunk by chunk (see
10
+ * responseWire.ts), and upgraded connections (WebSockets) are relayed as raw
11
+ * bytes between the client end the caller holds and the server's worker.
8
12
  */
9
- import { DEFAULT_ENV, PortRegistry, ServerEvents, allocatePid, runArguments, toRuntimeProcess, } from '@seanhogg/builderforce-webcontainers-core';
13
+ import { DEFAULT_ENV, PortRegistry, ServerEvents, allocatePid, runArguments, textResponse, toRuntimeProcess, } from '@seanhogg/builderforce-webcontainers-core';
10
14
  import { portPath } from './protocol.js';
15
+ import { ResponseReceiver, sendResponse } from './responseWire.js';
11
16
  const SIGNAL_CODES = { SIGINT: 130, SIGTERM: 143, SIGKILL: 137, SIGHUP: 129 };
17
+ const EXITED = 'The server process exited.';
12
18
  export class ProcessHost {
13
19
  options;
14
20
  ports = new PortRegistry();
@@ -18,6 +24,7 @@ export class ProcessHost {
18
24
  applyingFrom;
19
25
  flushScheduled = false;
20
26
  nextReq = 1;
27
+ nextConn = 1;
21
28
  unwatch;
22
29
  stopPorts;
23
30
  constructor(options) {
@@ -44,6 +51,7 @@ export class ProcessHost {
44
51
  const exit = new Promise((resolve) => (resolveExit = resolve));
45
52
  const proc = {
46
53
  pid,
54
+ info: { pid, command, args: [...args], cwd: options.cwd ?? '/', startedAt: Date.now() },
47
55
  worker,
48
56
  stdout: new Set(),
49
57
  stderr: new Set(),
@@ -57,7 +65,9 @@ export class ProcessHost {
57
65
  },
58
66
  registrations: new Map(),
59
67
  children: new Map(),
60
- pendingHttp: new Map(),
68
+ responses: new ResponseReceiver(),
69
+ loopbacks: new Map(),
70
+ sockets: new Map(),
61
71
  outbox: [],
62
72
  };
63
73
  this.procs.add(proc);
@@ -96,10 +106,22 @@ export class ProcessHost {
96
106
  exit,
97
107
  };
98
108
  }
99
- /** Dispatch an HTTP request to the server on `port` (the preview service worker's `/__port/<port>/` path). */
109
+ /** Every process still running, oldest first — children started by a shell included. */
110
+ list() {
111
+ return [...this.procs].map((proc) => ({ ...proc.info, args: [...proc.info.args], ports: [...proc.registrations.keys()] }));
112
+ }
113
+ /** Dispatch an HTTP request to the server on `port` and wait for the whole response. */
100
114
  request(port, request) {
115
+ return this.ports.requestBuffered(port, request);
116
+ }
117
+ /** Dispatch an HTTP request to the server on `port` (the preview's `/__port/<port>/` path); resolves at the head, the body streaming. */
118
+ requestStream(port, request) {
101
119
  return this.ports.request(port, request);
102
120
  }
121
+ /** Open an upgraded connection (a WebSocket) to the server on `port`; returns the client end. */
122
+ upgrade(port, request) {
123
+ return this.ports.upgrade(port, request);
124
+ }
103
125
  dispose() {
104
126
  for (const proc of [...this.procs]) {
105
127
  proc.worker.terminate();
@@ -129,9 +151,13 @@ export class ProcessHost {
129
151
  for (const registration of proc.registrations.values())
130
152
  registration.close();
131
153
  proc.registrations.clear();
132
- for (const respond of proc.pendingHttp.values())
133
- respond({ status: 502, headers: { 'content-type': 'text/plain' }, body: new TextEncoder().encode('The server process exited.') });
134
- proc.pendingHttp.clear();
154
+ proc.responses.abort(() => textResponse(502, EXITED), EXITED);
155
+ for (const cancel of [...proc.loopbacks.values()])
156
+ cancel();
157
+ proc.loopbacks.clear();
158
+ for (const socket of proc.sockets.values())
159
+ socket.close();
160
+ proc.sockets.clear();
135
161
  this.procs.delete(proc);
136
162
  queueMicrotask(() => proc.worker.terminate());
137
163
  }
@@ -221,7 +247,7 @@ export class ProcessHost {
221
247
  return proc.children.get(message.childId)?.resize?.(message.cols, message.rows);
222
248
  case 'listen': {
223
249
  try {
224
- const registration = this.ports.listen(message.port, (request) => this.forward(proc, message.port, request));
250
+ const registration = this.ports.listen(message.port, (request) => this.forward(proc, message.port, request), (request, socket) => this.forwardUpgrade(proc, message.port, request, socket));
225
251
  proc.registrations.set(message.port, registration);
226
252
  }
227
253
  catch (error) {
@@ -234,24 +260,49 @@ export class ProcessHost {
234
260
  proc.registrations.get(message.port)?.close();
235
261
  proc.registrations.delete(message.port);
236
262
  return;
237
- case 'http-response':
238
- proc.pendingHttp.get(message.reqId)?.(message.response);
239
- proc.pendingHttp.delete(message.reqId);
263
+ case 'response-head':
264
+ case 'response-chunk':
265
+ case 'response-end':
266
+ return proc.responses.receive(message);
267
+ case 'loopback': {
268
+ const { reqId } = message;
269
+ const cancel = sendResponse((reply) => this.post(proc, reply), reqId, this.ports.request(message.port, message.request), () => proc.loopbacks.delete(reqId));
270
+ proc.loopbacks.set(reqId, cancel);
240
271
  return;
241
- case 'loopback':
242
- void this.ports.request(message.port, message.request).then((response) => this.post(proc, { type: 'loopback-response', reqId: message.reqId, response: response ?? null }));
272
+ }
273
+ case 'request-cancel':
274
+ return proc.loopbacks.get(message.reqId)?.();
275
+ case 'socket-data':
276
+ return proc.sockets.get(message.connId)?.send(message.data);
277
+ case 'socket-close':
278
+ proc.sockets.get(message.connId)?.close();
279
+ proc.sockets.delete(message.connId);
243
280
  return;
244
281
  case 'listening':
245
282
  this.servers.announce({ port: message.port, url: message.url });
246
283
  return;
247
284
  }
248
285
  }
249
- forward(proc, port, request) {
286
+ async forward(proc, port, request) {
287
+ if (proc.exited)
288
+ return textResponse(502, EXITED);
250
289
  const reqId = this.nextReq++;
251
- return new Promise((resolve) => {
252
- proc.pendingHttp.set(reqId, resolve);
253
- this.post(proc, { type: 'http-request', reqId, port, request });
290
+ const response = proc.responses.expect(reqId, () => this.post(proc, { type: 'request-cancel', reqId }));
291
+ this.post(proc, { type: 'http-request', reqId, port, request });
292
+ return (await response) ?? textResponse(502, `Nothing is listening on port ${port}.`);
293
+ }
294
+ /** Relay an upgraded connection: `socket` is the server end; its bytes go to the worker, and the worker's come back. */
295
+ forwardUpgrade(proc, port, request, socket) {
296
+ if (proc.exited)
297
+ return socket.close();
298
+ const connId = this.nextConn++;
299
+ proc.sockets.set(connId, socket);
300
+ socket.onData((data) => this.post(proc, { type: 'socket-data', connId, data }));
301
+ socket.onClose(() => {
302
+ if (proc.sockets.delete(connId))
303
+ this.post(proc, { type: 'socket-close', connId });
254
304
  });
305
+ this.post(proc, { type: 'socket-open', connId, port, request });
255
306
  }
256
307
  }
257
308
  //# sourceMappingURL=processHost.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processHost.js","sourceRoot":"","sources":["../../src/node/processHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processHost.js","sourceRoot":"","sources":["../../src/node/processHost.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,15 @@
2
2
  * Messages between the page (the process host, which owns the master file
3
3
  * system and the port table) and one process Worker. Everything is plain
4
4
  * structured-clone data; file contents travel as strings or bytes.
5
+ *
6
+ * HTTP responses stream in both directions with the same three messages: a
7
+ * `response-head`, `response-chunk`s as the server writes, a `response-end`.
8
+ * Worker → page they answer an `http-request` (ids the page allocated); page →
9
+ * worker they answer a `loopback` (ids the worker allocated). `request-cancel`
10
+ * goes the other way: the reader hung up. Upgraded connections (WebSockets)
11
+ * are opened by the page (`socket-open`) and carry raw bytes both ways.
5
12
  */
6
- import type { FileContent, HttpRequestData, HttpResponseData } from '@seanhogg/builderforce-webcontainers-core';
13
+ import type { FileContent, HttpRequestData, HttpResponseHead } from '@seanhogg/builderforce-webcontainers-core';
7
14
  export type FsOp = {
8
15
  op: 'write';
9
16
  path: string;
@@ -38,6 +45,29 @@ export interface StartMessage {
38
45
  /** Use Cache Storage for npm tarballs. */
39
46
  packageCache: boolean;
40
47
  }
48
+ /** A streamed response, chunk by chunk; `head: null` means nothing listens on that port (loopback only). */
49
+ export type ResponseMessage = {
50
+ type: 'response-head';
51
+ reqId: number;
52
+ head: HttpResponseHead | null;
53
+ } | {
54
+ type: 'response-chunk';
55
+ reqId: number;
56
+ data: Uint8Array;
57
+ } | {
58
+ type: 'response-end';
59
+ reqId: number;
60
+ error?: string;
61
+ };
62
+ /** Raw bytes of an upgraded connection, either way; ids allocated by the page. */
63
+ export type SocketMessage = {
64
+ type: 'socket-data';
65
+ connId: number;
66
+ data: Uint8Array;
67
+ } | {
68
+ type: 'socket-close';
69
+ connId: number;
70
+ };
41
71
  /** page → worker */
42
72
  export type HostToWorker = StartMessage | {
43
73
  type: 'stdin';
@@ -76,10 +106,14 @@ export type HostToWorker = StartMessage | {
76
106
  port: number;
77
107
  request: HttpRequestData;
78
108
  } | {
79
- type: 'loopback-response';
109
+ type: 'request-cancel';
80
110
  reqId: number;
81
- response: HttpResponseData | null;
82
- };
111
+ } | {
112
+ type: 'socket-open';
113
+ connId: number;
114
+ port: number;
115
+ request: HttpRequestData;
116
+ } | ResponseMessage | SocketMessage;
83
117
  /** worker → page */
84
118
  export type WorkerToHost = {
85
119
  type: 'stdout' | 'stderr';
@@ -120,20 +154,19 @@ export type WorkerToHost = {
120
154
  } | {
121
155
  type: 'unlisten';
122
156
  port: number;
123
- } | {
124
- type: 'http-response';
125
- reqId: number;
126
- response: HttpResponseData;
127
157
  } | {
128
158
  type: 'loopback';
129
159
  reqId: number;
130
160
  port: number;
131
161
  request: HttpRequestData;
162
+ } | {
163
+ type: 'request-cancel';
164
+ reqId: number;
132
165
  } | {
133
166
  type: 'listening';
134
167
  port: number;
135
168
  url: string;
136
- };
169
+ } | ResponseMessage | SocketMessage;
137
170
  /** The preview-relative URL a virtual server on `port` is reachable at. */
138
171
  export declare function portPath(previewBase: string, port: number): string;
139
172
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/node/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/node/protocol.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/node/protocol.ts"],"names":[],"mappings":"AA2DA,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,IAAY;IACxD,OAAO,GAAG,WAAW,UAAU,IAAI,GAAG,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/node/protocol.ts"],"names":[],"mappings":"AAgFA,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,IAAY;IACxD,OAAO,GAAG,WAAW,UAAU,IAAI,GAAG,CAAC;AACzC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Streamed HTTP responses over postMessage, used on both sides of the
3
+ * page ↔ process-worker boundary: the side that holds a response sends it as
4
+ * head / chunk / end messages as the server writes it, and the side that asked
5
+ * rebuilds an `HttpStreamResponse` whose body stream is fed by them. A reader
6
+ * that cancels the body sends `request-cancel` back, so the server hears the
7
+ * client hang up.
8
+ */
9
+ import { type HttpStreamResponse } from '@seanhogg/builderforce-webcontainers-core';
10
+ import type { ResponseMessage } from './protocol.js';
11
+ /**
12
+ * Send `response` as messages once it resolves (`undefined`: nothing listens).
13
+ * A rejected handler becomes a 500 carrying the error. Returns a cancel for
14
+ * when the requester hangs up; `onDone` runs once, when the exchange is over.
15
+ */
16
+ export declare function sendResponse(post: (message: ResponseMessage) => void, reqId: number, response: Promise<HttpStreamResponse | undefined>, onDone?: () => void): () => void;
17
+ /** Rebuilds streamed responses from the messages answering requests this side sent. */
18
+ export declare class ResponseReceiver {
19
+ private readonly heads;
20
+ private readonly bodies;
21
+ /** The response to request `reqId`; `cancel` runs if its reader hangs up before the end. */
22
+ expect(reqId: number, cancel: () => void): Promise<HttpStreamResponse | undefined>;
23
+ receive(message: ResponseMessage): void;
24
+ /** The other side is gone: waiting requests get `fallback`, bodies in flight break off with `reason`. */
25
+ abort(fallback: () => HttpStreamResponse | undefined, reason: string): void;
26
+ }
27
+ //# sourceMappingURL=responseWire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseWire.d.ts","sourceRoot":"","sources":["../../src/node/responseWire.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAiC,KAAK,kBAAkB,EAAmB,MAAM,2CAA2C,CAAC;AACpI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAoCxK;AAED,uFAAuF;AACvF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkG;IACxH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD,4FAA4F;IAC5F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAIlF,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAuBvC,yGAAyG;IACzG,KAAK,CAAC,QAAQ,EAAE,MAAM,kBAAkB,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAM5E"}