@seanhogg/builderforce-webcontainers 2026.10.6 → 2026.10.7
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/assets.js +2 -2
- package/dist/check/worker.js +8 -8
- package/dist/host.d.ts +19 -9
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +15 -20
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/processHost.d.ts +13 -0
- package/dist/node/processHost.d.ts.map +1 -1
- package/dist/node/processHost.js +5 -0
- package/dist/node/processHost.js.map +1 -1
- package/dist/node/worker.js +72 -72
- package/dist/previewMessages.d.ts +19 -0
- package/dist/previewMessages.d.ts.map +1 -0
- package/dist/previewMessages.js +52 -0
- package/dist/previewMessages.js.map +1 -0
- package/dist/process-worker.js +72 -72
- package/dist/relay.html +1 -1
- package/package.json +2 -2
- package/src/host.ts +34 -26
- package/src/index.ts +3 -2
- package/src/node/index.ts +1 -1
- package/src/node/processHost.ts +19 -0
- package/src/previewMessages.ts +71 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface PreviewError {
|
|
2
|
+
message: string;
|
|
3
|
+
stack?: string;
|
|
4
|
+
href: string;
|
|
5
|
+
}
|
|
6
|
+
export type ConsoleLevel = 'log' | 'info' | 'warn' | 'error' | 'debug';
|
|
7
|
+
export interface PreviewConsoleMessage {
|
|
8
|
+
level: ConsoleLevel;
|
|
9
|
+
/** The arguments flattened to text, capped at 4,000 characters. */
|
|
10
|
+
text: string;
|
|
11
|
+
href: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PreviewMessages {
|
|
14
|
+
onError(listener: (error: PreviewError) => void): () => void;
|
|
15
|
+
onConsole(listener: (message: PreviewConsoleMessage) => void): () => void;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function listenToPreview(target: Pick<Window, 'addEventListener' | 'removeEventListener'>, origin: string, base: string): PreviewMessages;
|
|
19
|
+
//# sourceMappingURL=previewMessages.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a preview reports to the host page: uncaught errors and console output,
|
|
3
|
+
* posted by the bridge script every served page starts with. One window
|
|
4
|
+
* listener per runtime, accepting only messages from the preview origin whose
|
|
5
|
+
* page sits under this runtime's base, so two runtimes on one page never hear
|
|
6
|
+
* each other's previews.
|
|
7
|
+
*/
|
|
8
|
+
import { CONSOLE_MESSAGE_TYPE, ERROR_MESSAGE_TYPE } from '@seanhogg/builderforce-webcontainers-core';
|
|
9
|
+
const LEVELS = new Set(['log', 'info', 'warn', 'error', 'debug']);
|
|
10
|
+
function subscribe(set, listener) {
|
|
11
|
+
set.add(listener);
|
|
12
|
+
return () => set.delete(listener);
|
|
13
|
+
}
|
|
14
|
+
export function listenToPreview(target, origin, base) {
|
|
15
|
+
const errors = new Set();
|
|
16
|
+
const consoles = new Set();
|
|
17
|
+
const onMessage = (event) => {
|
|
18
|
+
const data = event.data;
|
|
19
|
+
if (!data || typeof data.href !== 'string' || event.origin !== origin)
|
|
20
|
+
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
|
|
30
|
+
if (data.type === ERROR_MESSAGE_TYPE) {
|
|
31
|
+
const error = { message: String(data.message ?? ''), stack: typeof data.stack === 'string' ? data.stack : undefined, href: data.href };
|
|
32
|
+
for (const listener of errors)
|
|
33
|
+
listener(error);
|
|
34
|
+
}
|
|
35
|
+
else if (data.type === CONSOLE_MESSAGE_TYPE && typeof data.level === 'string' && LEVELS.has(data.level)) {
|
|
36
|
+
const message = { level: data.level, text: String(data.text ?? ''), href: data.href };
|
|
37
|
+
for (const listener of consoles)
|
|
38
|
+
listener(message);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
target.addEventListener('message', onMessage);
|
|
42
|
+
return {
|
|
43
|
+
onError: (listener) => subscribe(errors, listener),
|
|
44
|
+
onConsole: (listener) => subscribe(consoles, listener),
|
|
45
|
+
dispose() {
|
|
46
|
+
target.removeEventListener('message', onMessage);
|
|
47
|
+
errors.clear();
|
|
48
|
+
consoles.clear();
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=previewMessages.js.map
|
|
@@ -0,0 +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"}
|