UNPKG

zephyr-agent

Version:
80 lines • 3.58 kB
import type { BuildContribution, BuildParticipant, BuildSessionFailureCallback, BuildSessionIdentity, BuildSessionPublication, BuildSessionReadiness, BuildSessionStatus } from './zephyr-engine.types.mjs'; export declare class BuildSessionStateError extends Error { constructor(message: string); } export declare class BuildSessionNotReadyError extends BuildSessionStateError { readonly readiness: BuildSessionReadiness; constructor(readiness: BuildSessionReadiness); } export declare class BuildSessionAssetCollisionError extends Error { readonly path: string; readonly existingHash: string; readonly incomingHash: string; constructor(path: string, existingHash: string, incomingHash: string); } export declare class BuildSessionAbortedError extends Error { readonly reason: unknown; constructor(reason?: unknown); } export declare class BuildParticipantFailedError extends Error { readonly participant: string; readonly cause: unknown; constructor(participant: string, cause: unknown); } export declare class BuildSessionRollbackError extends Error { readonly buildError: Error; readonly rollbackError: Error; constructor(buildError: Error, rollbackError: Error); } interface BuildSessionCallbacks<TData, TResult> { prepare?: (identity: BuildSessionIdentity) => void | Promise<void>; publish: (publication: BuildSessionPublication<TData>) => TResult | Promise<TResult>; finish?: (publication: BuildSessionPublication<TData>, result: TResult) => void | Promise<void>; onFailure?: BuildSessionFailureCallback; } /** * Coordinates every compiler involved in one logical application build. A session is * deliberately independent from bundler APIs: adapters contribute keyed asset maps, * complete their barriers, and share one idempotent publish operation. */ export declare class BuildSession<TData = unknown, TResult = void> { readonly identity: BuildSessionIdentity; private readonly participants; private readonly postprocessors; private readonly completedParticipants; private readonly completedPostprocessors; private readonly contributions; private readonly callbacks; private readonly barrier; private state; private terminalError; private failureNotified; private sealedPublication; private publishPromise; constructor(identity: BuildSessionIdentity, participants: readonly BuildParticipant[], postprocessors: readonly string[], callbacks: BuildSessionCallbacks<TData, TResult>); get status(): BuildSessionStatus; /** Terminal failure, exposed so an ApplicationContext can refuse unsafe supersession. */ get failure(): Error | null; get readiness(): BuildSessionReadiness; get isTerminal(): boolean; contribute(contribution: BuildContribution<TData>): void; completeParticipant(participant: string): void; completePostprocess(postprocessor: string): void; fail(participant: string, cause: unknown): void; abort(reason?: unknown): void; /** Validate, merge, and freeze the complete publication without uploading it. */ seal(): BuildSessionPublication<TData>; /** * Wait for the completion/postprocess barrier and publish exactly once. Every caller * receives the same in-flight promise and result. */ publish(): Promise<TResult>; private runPublish; private createPublication; private resolveBarrierWhenReady; private rejectSession; private notifyFailure; private assertCollecting; } export {}; //# sourceMappingURL=build-session.d.mts.map