@seanhogg/builderforce-webcontainers 2026.10.7 → 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 (71) hide show
  1. package/dist/assets.js +3 -3
  2. package/dist/host.d.ts +7 -1
  3. package/dist/host.d.ts.map +1 -1
  4. package/dist/host.js +27 -8
  5. package/dist/host.js.map +1 -1
  6. package/dist/index.d.ts +6 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/node/index.d.ts +4 -8
  11. package/dist/node/index.d.ts.map +1 -1
  12. package/dist/node/index.js +1 -25
  13. package/dist/node/index.js.map +1 -1
  14. package/dist/node/portResponder.d.ts +45 -0
  15. package/dist/node/portResponder.d.ts.map +1 -0
  16. package/dist/node/portResponder.js +136 -0
  17. package/dist/node/portResponder.js.map +1 -0
  18. package/dist/node/processHost.d.ts +13 -2
  19. package/dist/node/processHost.d.ts.map +1 -1
  20. package/dist/node/processHost.js +62 -16
  21. package/dist/node/processHost.js.map +1 -1
  22. package/dist/node/protocol.d.ts +42 -9
  23. package/dist/node/protocol.d.ts.map +1 -1
  24. package/dist/node/protocol.js.map +1 -1
  25. package/dist/node/responseWire.d.ts +27 -0
  26. package/dist/node/responseWire.d.ts.map +1 -0
  27. package/dist/node/responseWire.js +99 -0
  28. package/dist/node/responseWire.js.map +1 -0
  29. package/dist/node/worker.js +141 -125
  30. package/dist/node/workerProcess.d.ts +3 -1
  31. package/dist/node/workerProcess.d.ts.map +1 -1
  32. package/dist/node/workerProcess.js +49 -19
  33. package/dist/node/workerProcess.js.map +1 -1
  34. package/dist/previewBridge.d.ts +37 -0
  35. package/dist/previewBridge.d.ts.map +1 -0
  36. package/dist/previewBridge.js +116 -0
  37. package/dist/previewBridge.js.map +1 -0
  38. package/dist/previewMessages.d.ts +5 -0
  39. package/dist/previewMessages.d.ts.map +1 -1
  40. package/dist/previewMessages.js +18 -11
  41. package/dist/previewMessages.js.map +1 -1
  42. package/dist/process-worker.js +141 -125
  43. package/dist/protocol.d.ts +23 -1
  44. package/dist/protocol.d.ts.map +1 -1
  45. package/dist/protocol.js +8 -0
  46. package/dist/protocol.js.map +1 -1
  47. package/dist/relay.html +1 -1
  48. package/dist/snapshotStore.d.ts +30 -0
  49. package/dist/snapshotStore.d.ts.map +1 -0
  50. package/dist/snapshotStore.js +115 -0
  51. package/dist/snapshotStore.js.map +1 -0
  52. package/dist/sw.js +1 -1
  53. package/dist/swRouter.d.ts +8 -1
  54. package/dist/swRouter.d.ts.map +1 -1
  55. package/dist/swRouter.js +40 -5
  56. package/dist/swRouter.js.map +1 -1
  57. package/package.json +3 -2
  58. package/src/host.ts +31 -8
  59. package/src/index.ts +6 -2
  60. package/src/node/index.ts +4 -23
  61. package/src/node/portResponder.ts +175 -0
  62. package/src/node/processHost.ts +73 -15
  63. package/src/node/protocol.ts +25 -4
  64. package/src/node/responseWire.ts +97 -0
  65. package/src/node/workerProcess.ts +52 -21
  66. package/src/previewBridge.ts +148 -0
  67. package/src/previewMessages.ts +17 -9
  68. package/src/protocol.ts +35 -1
  69. package/src/snapshotStore.ts +135 -0
  70. package/src/sw.ts +2 -0
  71. package/src/swRouter.ts +35 -6
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * The worker side of one process: mirror the file system, build a `System`
3
3
  * whose spawn/listen/loopback are relayed to the page, run the program, and
4
- * stream its output back. No worker globals in here — `post` and the message
4
+ * stream its output back. Its servers' responses stream to the page as they
5
+ * are written, and connections the page upgrades reach the server's `upgrade`
6
+ * handler as a byte pipe. No worker globals in here — `post` and the message
5
7
  * feed are injected — so the same code runs in a real Worker (worker.ts) and
6
8
  * in-thread in tests.
7
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"workerProcess.d.ts","sourceRoot":"","sources":["../../src/node/workerProcess.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,MAAM,EACZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAQ,YAAY,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAC;AAGpF,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAC9C,+FAA+F;IAC/F,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7D,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAAE,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAuLrG"}
1
+ {"version":3,"file":"workerProcess.d.ts","sourceRoot":"","sources":["../../src/node/workerProcess.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAYL,KAAK,YAAY,EACjB,KAAK,MAAM,EAEZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAQ,YAAY,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAC;AAIpF,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAC9C,+FAA+F;IAC/F,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7D,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAAE,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAgNrG"}
@@ -1,19 +1,27 @@
1
1
  /**
2
2
  * The worker side of one process: mirror the file system, build a `System`
3
3
  * whose spawn/listen/loopback are relayed to the page, run the program, and
4
- * stream its output back. No worker globals in here — `post` and the message
4
+ * stream its output back. Its servers' responses stream to the page as they
5
+ * are written, and connections the page upgrades reach the server's `upgrade`
6
+ * handler as a byte pipe. No worker globals in here — `post` and the message
5
7
  * feed are injected — so the same code runs in a real Worker (worker.ts) and
6
8
  * in-thread in tests.
7
9
  */
8
- import { VirtualFileSystem, commandNotFound, defaultPrograms, resolveCommand, runProgram, } from '@seanhogg/builderforce-webcontainers-core';
10
+ import { VirtualFileSystem, commandNotFound, createChannelPair, defaultPrograms, resolveCommand, runProgram, textResponse, } from '@seanhogg/builderforce-webcontainers-core';
9
11
  import { portPath } from './protocol.js';
12
+ import { ResponseReceiver, sendResponse } from './responseWire.js';
10
13
  const EPHEMERAL = 49152;
11
14
  export function createWorkerProcess(deps) {
12
15
  const fs = new VirtualFileSystem();
13
16
  const handlers = new Map();
14
17
  const knownPorts = new Set();
15
18
  const children = new Map();
16
- const loopbacks = new Map();
19
+ /** Responses to this process's loopback requests, streaming in from the page. */
20
+ const loopbacks = new ResponseReceiver();
21
+ /** Responses this process's servers are streaming to the page, by the page's request id. */
22
+ const serving = new Map();
23
+ /** Upgraded connections the page opened, by its connection id (our end of the pipe to the server). */
24
+ const sockets = new Map();
17
25
  let nextChild = 1;
18
26
  let nextReq = 1;
19
27
  let applying = false;
@@ -98,7 +106,7 @@ export function createWorkerProcess(deps) {
98
106
  throw commandNotFound(command);
99
107
  return remoteChild(command, args, { ...options, cwd, env });
100
108
  },
101
- listen(port, handler) {
109
+ listen(port, handler, upgrade) {
102
110
  let actual = port;
103
111
  if (!actual)
104
112
  for (actual = EPHEMERAL + (message.pid % 1000) * 8; knownPorts.has(actual); actual++)
@@ -106,12 +114,13 @@ export function createWorkerProcess(deps) {
106
114
  if (knownPorts.has(actual))
107
115
  throw Object.assign(new Error(`listen EADDRINUSE: address already in use :::${actual}`), { code: 'EADDRINUSE', errno: -98, syscall: 'listen', port: actual });
108
116
  knownPorts.add(actual);
109
- handlers.set(actual, handler);
117
+ const entry = { handler, upgrade };
118
+ handlers.set(actual, entry);
110
119
  deps.post({ type: 'listen', port: actual });
111
120
  return {
112
121
  port: actual,
113
122
  close() {
114
- if (handlers.get(actual) !== handler)
123
+ if (handlers.get(actual) !== entry)
115
124
  return;
116
125
  handlers.delete(actual);
117
126
  knownPorts.delete(actual);
@@ -122,12 +131,11 @@ export function createWorkerProcess(deps) {
122
131
  loopback(port, request) {
123
132
  const local = handlers.get(port);
124
133
  if (local)
125
- return local(request);
134
+ return local.handler(request);
126
135
  const reqId = nextReq++;
127
- return new Promise((resolve) => {
128
- loopbacks.set(reqId, resolve);
129
- deps.post({ type: 'loopback', reqId, port, request });
130
- });
136
+ const response = loopbacks.expect(reqId, () => deps.post({ type: 'request-cancel', reqId }));
137
+ deps.post({ type: 'loopback', reqId, port, request });
138
+ return response;
131
139
  },
132
140
  serverUrl: (port) => new URL(portPath(message.previewBase, port), message.previewOrigin).href,
133
141
  announceServer: (port, url) => deps.post({ type: 'listening', port, url }),
@@ -192,16 +200,38 @@ export function createWorkerProcess(deps) {
192
200
  return;
193
201
  }
194
202
  case 'http-request': {
195
- const handler = handlers.get(message.port);
196
- const respond = (response) => deps.post({ type: 'http-response', reqId: message.reqId, response });
197
- if (!handler)
198
- return respond({ status: 502, headers: { 'content-type': 'text/plain' }, body: new TextEncoder().encode(`Nothing is listening on port ${message.port}.`) });
199
- void handler(message.request).then(respond, (error) => respond({ status: 500, headers: { 'content-type': 'text/plain' }, body: new TextEncoder().encode(String(error instanceof Error ? error.stack : error)) }));
203
+ const { reqId } = message;
204
+ const entry = handlers.get(message.port);
205
+ const response = entry ? entry.handler(message.request) : Promise.resolve(textResponse(502, `Nothing is listening on port ${message.port}.`));
206
+ serving.set(reqId, sendResponse(deps.post, reqId, response, () => serving.delete(reqId)));
200
207
  return;
201
208
  }
202
- case 'loopback-response':
203
- loopbacks.get(message.reqId)?.(message.response ?? undefined);
204
- loopbacks.delete(message.reqId);
209
+ case 'request-cancel':
210
+ return serving.get(message.reqId)?.();
211
+ case 'response-head':
212
+ case 'response-chunk':
213
+ case 'response-end':
214
+ return loopbacks.receive(message);
215
+ case 'socket-open': {
216
+ const { connId } = message;
217
+ const upgrade = handlers.get(message.port)?.upgrade;
218
+ if (!upgrade)
219
+ return deps.post({ type: 'socket-close', connId });
220
+ const [ours, server] = createChannelPair();
221
+ sockets.set(connId, ours);
222
+ ours.onData((data) => deps.post({ type: 'socket-data', connId, data }));
223
+ ours.onClose(() => {
224
+ sockets.delete(connId);
225
+ deps.post({ type: 'socket-close', connId });
226
+ });
227
+ upgrade(message.request, server);
228
+ return;
229
+ }
230
+ case 'socket-data':
231
+ return sockets.get(message.connId)?.send(message.data);
232
+ case 'socket-close':
233
+ sockets.get(message.connId)?.close();
234
+ sockets.delete(message.connId);
205
235
  return;
206
236
  }
207
237
  },
@@ -1 +1 @@
1
- {"version":3,"file":"workerProcess.js","sourceRoot":"","sources":["../../src/node/workerProcess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workerProcess.js","sourceRoot":"","sources":["../../src/node/workerProcess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The host end of the preview bridge (see core's previewBridge.ts for the page
3
+ * end). A service worker cannot carry a WebSocket or set a cookie, so preview
4
+ * pages ask this page instead, each over a MessagePort they transfer:
5
+ *
6
+ * • `SOCKET_MESSAGE_TYPE` — connect a WebSocket to the virtual server on a
7
+ * port. The handshake and frames run over an upgraded connection to the
8
+ * server (`connectWebSocket` over `ProcessHost.upgrade`), carrying the
9
+ * preview's cookies for that port; messages relay both ways on the port.
10
+ * • `COOKIE_MESSAGE_TYPE` — keep a virtual-server page's `document.cookie`
11
+ * in step with the jar, and store what the page assigns.
12
+ *
13
+ * One window listener per runtime, accepting only messages from the preview
14
+ * origin whose page sits under this runtime's base (as `listenToPreview` does).
15
+ */
16
+ import { type ByteChannel, type HttpRequestData, type PortCookieJars } from '@seanhogg/builderforce-webcontainers-core';
17
+ export interface PreviewBridgeOptions {
18
+ /** Open an upgraded connection to the server on `port` (`ProcessHost.upgrade`). */
19
+ upgrade(port: number, request: HttpRequestData): ByteChannel | undefined;
20
+ /** The runtime's cookie jars: sent with WebSocket handshakes and mirrored into `document.cookie`. */
21
+ cookies?: PortCookieJars;
22
+ }
23
+ /** The slice of MessagePort the bridge uses. */
24
+ export interface BridgePort {
25
+ postMessage(message: unknown, transfer?: Transferable[]): void;
26
+ onmessage: ((event: {
27
+ data: unknown;
28
+ }) => void) | null;
29
+ close(): void;
30
+ }
31
+ export interface PreviewBridge {
32
+ /** WebSockets currently open through the bridge. */
33
+ readonly openSockets: number;
34
+ dispose(): void;
35
+ }
36
+ export declare function listenToPreviewBridge(target: Pick<Window, 'addEventListener' | 'removeEventListener'>, origin: string, base: string, options: PreviewBridgeOptions): PreviewBridge;
37
+ //# sourceMappingURL=previewBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewBridge.d.ts","sourceRoot":"","sources":["../src/previewBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAGnD,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;IACzE,qGAAqG;IACrG,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC/D,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,IAAI,IAAI,CAAC;CACjB;AAaD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,CAAC,EAChE,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,aAAa,CAoFf"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * The host end of the preview bridge (see core's previewBridge.ts for the page
3
+ * end). A service worker cannot carry a WebSocket or set a cookie, so preview
4
+ * pages ask this page instead, each over a MessagePort they transfer:
5
+ *
6
+ * • `SOCKET_MESSAGE_TYPE` — connect a WebSocket to the virtual server on a
7
+ * port. The handshake and frames run over an upgraded connection to the
8
+ * server (`connectWebSocket` over `ProcessHost.upgrade`), carrying the
9
+ * preview's cookies for that port; messages relay both ways on the port.
10
+ * • `COOKIE_MESSAGE_TYPE` — keep a virtual-server page's `document.cookie`
11
+ * in step with the jar, and store what the page assigns.
12
+ *
13
+ * One window listener per runtime, accepting only messages from the preview
14
+ * origin whose page sits under this runtime's base (as `listenToPreview` does).
15
+ */
16
+ import { COOKIE_MESSAGE_TYPE, SOCKET_MESSAGE_TYPE, connectWebSocket, parsePortPath, } from '@seanhogg/builderforce-webcontainers-core';
17
+ import { previewPageOf } from './previewMessages.js';
18
+ /** Pages kept in sync per server port; older ones (navigated away, never said so) are dropped past this. */
19
+ const COOKIE_PAGES_PER_PORT = 50;
20
+ export function listenToPreviewBridge(target, origin, base, options) {
21
+ const sockets = new Set();
22
+ const cookiePages = new Map();
23
+ function openSocket(channel, data, page) {
24
+ const port = Number(data.port);
25
+ const path = typeof data.path === 'string' && data.path.startsWith('/') ? data.path : undefined;
26
+ const protocols = Array.isArray(data.protocols) ? data.protocols.filter((p) => typeof p === 'string') : [];
27
+ if (!Number.isInteger(port) || port < 1 || port > 65535 || !path) {
28
+ channel.postMessage({ kind: 'close', code: 1006, reason: '', wasClean: false });
29
+ return channel.close();
30
+ }
31
+ const headers = { host: `localhost:${port}`, origin: page.origin };
32
+ const cookie = options.cookies?.jar(port).header(path);
33
+ if (cookie)
34
+ headers.cookie = cookie;
35
+ if (typeof navigator !== 'undefined' && navigator.userAgent)
36
+ headers['user-agent'] = navigator.userAgent;
37
+ const connection = connectWebSocket((request) => options.upgrade(port, request), { path, protocols, headers });
38
+ sockets.add(connection);
39
+ connection.onOpen(({ protocol }) => channel.postMessage({ kind: 'open', protocol }));
40
+ connection.onMessage((message) => {
41
+ if (typeof message === 'string')
42
+ return channel.postMessage({ kind: 'message', data: message });
43
+ const buffer = new Uint8Array(message).buffer;
44
+ channel.postMessage({ kind: 'message', data: buffer }, [buffer]);
45
+ });
46
+ connection.onClose((info) => {
47
+ sockets.delete(connection);
48
+ channel.postMessage({ kind: 'close', ...info });
49
+ channel.close();
50
+ });
51
+ channel.onmessage = (event) => {
52
+ const message = event.data;
53
+ if (message?.kind === 'send') {
54
+ if (typeof message.data === 'string')
55
+ connection.send(message.data);
56
+ else if (message.data instanceof ArrayBuffer)
57
+ connection.send(new Uint8Array(message.data));
58
+ }
59
+ else if (message?.kind === 'close') {
60
+ connection.close(typeof message.code === 'number' ? message.code : undefined, typeof message.reason === 'string' ? message.reason : undefined);
61
+ }
62
+ };
63
+ }
64
+ function syncCookies(channel, page) {
65
+ const cookies = options.cookies;
66
+ const server = parsePortPath(page.pathname.slice(base.length - 1));
67
+ if (!cookies || !server)
68
+ return channel.close();
69
+ const pages = cookiePages.get(server.port) ?? [];
70
+ pages.push({ port: channel, path: server.path });
71
+ if (pages.length > COOKIE_PAGES_PER_PORT)
72
+ pages.shift()?.port.close();
73
+ cookiePages.set(server.port, pages);
74
+ channel.onmessage = (event) => {
75
+ const message = event.data;
76
+ if (message?.kind === 'set-cookie' && typeof message.value === 'string')
77
+ cookies.jar(server.port).setFromDocument(message.value, server.path);
78
+ };
79
+ // The page started from the jar as it was when served; catch up on anything since.
80
+ channel.postMessage({ kind: 'cookies', value: cookies.jar(server.port).documentCookie(server.path) });
81
+ }
82
+ const stopCookies = options.cookies?.onChange((port) => {
83
+ const jar = options.cookies.jar(port);
84
+ for (const page of cookiePages.get(port) ?? [])
85
+ page.port.postMessage({ kind: 'cookies', value: jar.documentCookie(page.path) });
86
+ });
87
+ const onMessage = (event) => {
88
+ const data = event.data;
89
+ const channel = event.ports?.[0];
90
+ const page = channel && data ? previewPageOf(event, origin, base) : undefined;
91
+ if (!page)
92
+ return;
93
+ if (data.type === SOCKET_MESSAGE_TYPE)
94
+ openSocket(channel, data, page);
95
+ else if (data.type === COOKIE_MESSAGE_TYPE)
96
+ syncCookies(channel, page);
97
+ };
98
+ target.addEventListener('message', onMessage);
99
+ return {
100
+ get openSockets() {
101
+ return sockets.size;
102
+ },
103
+ dispose() {
104
+ target.removeEventListener('message', onMessage);
105
+ stopCookies?.();
106
+ for (const connection of [...sockets])
107
+ connection.close(1001, 'The runtime stopped.');
108
+ sockets.clear();
109
+ for (const pages of cookiePages.values())
110
+ for (const page of pages)
111
+ page.port.close();
112
+ cookiePages.clear();
113
+ },
114
+ };
115
+ }
116
+ //# sourceMappingURL=previewBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewBridge.js","sourceRoot":"","sources":["../src/previewBridge.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,10 @@ export interface PreviewMessages {
15
15
  onConsole(listener: (message: PreviewConsoleMessage) => void): () => void;
16
16
  dispose(): void;
17
17
  }
18
+ /**
19
+ * The preview page a window message came from, when it is one of THIS runtime's:
20
+ * sent from the preview origin, by a page under `base`. Undefined otherwise.
21
+ */
22
+ export declare function previewPageOf(event: MessageEvent, origin: string, base: string): URL | undefined;
18
23
  export declare function listenToPreview(target: Pick<Window, 'addEventListener' | 'removeEventListener'>, origin: string, base: string): PreviewMessages;
19
24
  //# sourceMappingURL=previewMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"previewMessages.d.ts","sourceRoot":"","sources":["../src/previewMessages.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7D,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1E,OAAO,IAAI,IAAI,CAAC;CACjB;AASD,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAiC/I"}
1
+ {"version":3,"file":"previewMessages.d.ts","sourceRoot":"","sources":["../src/previewMessages.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7D,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1E,OAAO,IAAI,IAAI,CAAC;CACjB;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAShG;AAOD,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CA0B/I"}
@@ -7,6 +7,22 @@
7
7
  */
8
8
  import { CONSOLE_MESSAGE_TYPE, ERROR_MESSAGE_TYPE } from '@seanhogg/builderforce-webcontainers-core';
9
9
  const LEVELS = new Set(['log', 'info', 'warn', 'error', 'debug']);
10
+ /**
11
+ * The preview page a window message came from, when it is one of THIS runtime's:
12
+ * sent from the preview origin, by a page under `base`. Undefined otherwise.
13
+ */
14
+ export function previewPageOf(event, origin, base) {
15
+ const href = event.data?.href;
16
+ if (typeof href !== 'string' || event.origin !== origin)
17
+ return undefined;
18
+ try {
19
+ const page = new URL(href);
20
+ return page.pathname.startsWith(base) ? page : undefined; // else: another runtime's preview
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ }
10
26
  function subscribe(set, listener) {
11
27
  set.add(listener);
12
28
  return () => set.delete(listener);
@@ -15,18 +31,9 @@ export function listenToPreview(target, origin, base) {
15
31
  const errors = new Set();
16
32
  const consoles = new Set();
17
33
  const onMessage = (event) => {
18
- const data = event.data;
19
- if (!data || typeof data.href !== 'string' || event.origin !== origin)
34
+ if (!previewPageOf(event, origin, base))
20
35
  return;
21
- let path;
22
- try {
23
- path = new URL(data.href).pathname;
24
- }
25
- catch {
26
- return;
27
- }
28
- if (!path.startsWith(base))
29
- return; // another runtime's preview
36
+ const data = event.data;
30
37
  if (data.type === ERROR_MESSAGE_TYPE) {
31
38
  const error = { message: String(data.message ?? ''), stack: typeof data.stack === 'string' ? data.stack : undefined, href: data.href };
32
39
  for (const listener of errors)
@@ -1 +1 @@
1
- {"version":3,"file":"previewMessages.js","sourceRoot":"","sources":["../src/previewMessages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAuBrG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1E,SAAS,SAAS,CAAI,GAA4B,EAAE,QAA4B;IAC9E,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgE,EAAE,MAAc,EAAE,IAAY;IAC5H,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4C,CAAC;IAErE,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAsH,CAAC;QAC1I,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO;QAC9E,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,4BAA4B;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,MAAM,KAAK,GAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACrJ,KAAK,MAAM,QAAQ,IAAI,MAAM;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1G,MAAM,OAAO,GAA0B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7H,KAAK,MAAM,QAAQ,IAAI,QAAQ;gBAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAA0B,CAAC,CAAC;IAE/D,OAAO;QACL,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;QAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACtD,OAAO;YACL,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAA0B,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"previewMessages.js","sourceRoot":"","sources":["../src/previewMessages.ts"],"names":[],"mappings":"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"}