UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

80 lines 3.01 kB
import type { ActivityActor, ActivityTenant } from "../ports/audit.js"; /** * Ambient correlation values for the request currently being handled. * * The server enters this context before user hooks run so instrumentation * sinks can correlate events recorded anywhere in the request lifecycle. * Identity values (`actor`, `tenant`) are refreshed by the server whenever * hooks finalize a new context, so wrappers such as `createAmbientAuditLog` * observe the elevated identity at record time. */ export interface ActiveRequestContext { requestId?: string; traceId?: string; spanId?: string; parentSpanId?: string; traceparent?: string; tracestate?: string; /** * Actor for the current request or service execution, when known. */ actor?: ActivityActor; /** * Tenant scope for the current request or service execution, when known. */ tenant?: ActivityTenant; } /** * Enter the ambient request context for the current async execution. */ export declare function enterActiveRequestContext(context: ActiveRequestContext): void; /** * Clear the ambient request context for the current async execution. */ export declare function clearActiveRequestContext(): void; /** * Run a function inside a scoped ambient request context frame. * * Internal to the server runtime — not part of the public package surface. * `server.runServiceContext(...)` uses this `AsyncLocalStorage.run` form * instead of `enterWith` because resuming an `enterWith` frame across * top-level await crashes Bun 1.3.x in plain scripts. */ export declare function runWithActiveRequestContext<T>(context: ActiveRequestContext, fn: () => T): T; /** * Read the ambient request context, when one is active. */ export declare function getActiveRequestContext(): ActiveRequestContext | undefined; /** * Read a normalized actor from an app context object, when present. */ export declare function readContextActor(ctx: unknown): ActivityActor | undefined; /** * Read a normalized tenant from an app context object, when present. */ export declare function readContextTenant(ctx: unknown): ActivityTenant | undefined; /** * Update identity fields on the active ambient request context in place. * * The server calls this after hooks finalize a new request context so the * elevated actor/tenant become visible to ambient consumers, including async * frames that captured the context object before the update. No-op when no * ambient context is active. */ export declare function setActiveRequestIdentity(identity: { actor?: ActivityActor; tenant?: ActivityTenant; }): void; /** * Fill missing correlation fields on an event from the ambient request * context. */ export declare function inheritActiveRequestContext<Event extends { requestId?: string; traceId?: string; spanId?: string; parentSpanId?: string; traceparent?: string; tracestate?: string; }>(event: Event): Event; //# sourceMappingURL=request-context.d.ts.map