UNPKG

agentcrumbs

Version:
28 lines 802 B
// Browser JS is single-threaded so a simple stack replaces AsyncLocalStorage. // Limitation: concurrent Promise.all branches won't isolate context. const contextStack = []; export function getContext() { return contextStack[contextStack.length - 1]; } export function runWithContext(ctx, fn) { contextStack.push(ctx); try { const result = fn(); if (result instanceof Promise) { return result.then((val) => { contextStack.pop(); return val; }, (err) => { contextStack.pop(); throw err; }); } contextStack.pop(); return result; } catch (err) { contextStack.pop(); throw err; } } //# sourceMappingURL=context-browser.mjs.map