Unify completion callback pattern across browser-javascript and javascript-repl

- Remove fallback timeout from ConsoleRuntimeProvider (was causing 2s delays)
- Add completion callback support to SandboxedIframe REPL wrapper
- Call completion callbacks before window.complete() in both success/error paths
- Both browser-javascript and javascript-repl now use identical completion pattern
- Ensures console logs are batched and sent before execution completes
This commit is contained in:
Mario Zechner 2025-10-09 20:24:20 +02:00
parent 6983ad4eaa
commit 33418d9dea
2 changed files with 20 additions and 9 deletions

View file

@ -329,9 +329,29 @@ export class SandboxIframe extends LitElement {
(async () => {
try {
${userCode}
// Call completion callbacks before complete()
if (window.__completionCallbacks && window.__completionCallbacks.length > 0) {
try {
await Promise.all(window.__completionCallbacks.map(cb => cb(true)));
} catch (e) {
console.error('Completion callback error:', e);
}
}
window.complete();
} catch (error) {
console.error(error?.stack || error?.message || String(error));
// Call completion callbacks before complete() (error path)
if (window.__completionCallbacks && window.__completionCallbacks.length > 0) {
try {
await Promise.all(window.__completionCallbacks.map(cb => cb(false)));
} catch (e) {
console.error('Completion callback error:', e);
}
}
window.complete({
message: error?.message || String(error),
stack: error?.stack || new Error().stack