feat(core-shared): BindContext + BindProductionContext types
This commit is contained in:
42
packages/core-shared/src/di/bind-context.ts
Normal file
42
packages/core-shared/src/di/bind-context.ts
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import type { SanitizedConfig } from "payload";
|
||||||
|
import type { ITracer, ILogger } from "../instrumentation";
|
||||||
|
import type { IJobQueue } from "../jobs";
|
||||||
|
import type {
|
||||||
|
EventBusProtocol,
|
||||||
|
RealtimeBroadcasterProtocol,
|
||||||
|
RealtimeRegistryProtocol,
|
||||||
|
} from "./bind-protocols";
|
||||||
|
|
||||||
|
/** Always-present fields. Feature binders rely on these unconditionally. */
|
||||||
|
export type BindContextBase = {
|
||||||
|
tracer: ITracer;
|
||||||
|
logger: ILogger;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optional cross-cutting deps. Generics let the app aggregator narrow the
|
||||||
|
* shape to full interfaces (`IEventBus`, `IRealtimeBroadcaster`, etc.); feature
|
||||||
|
* binders see only the protocol surface, which is enough for the methods they
|
||||||
|
* call. When an optional core package is absent the corresponding generic
|
||||||
|
* defaults to its protocol type, and `ctx.bus` / `ctx.realtime` are undefined
|
||||||
|
* at runtime.
|
||||||
|
*/
|
||||||
|
export type BindContext<
|
||||||
|
Bus extends EventBusProtocol = EventBusProtocol,
|
||||||
|
Realtime extends RealtimeBroadcasterProtocol = RealtimeBroadcasterProtocol,
|
||||||
|
RealtimeReg extends RealtimeRegistryProtocol = RealtimeRegistryProtocol,
|
||||||
|
> = BindContextBase & {
|
||||||
|
bus?: Bus;
|
||||||
|
queue?: IJobQueue;
|
||||||
|
realtime?: Realtime;
|
||||||
|
realtimeRegistry?: RealtimeReg;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Production binders also receive the resolved Payload config. */
|
||||||
|
export type BindProductionContext<
|
||||||
|
Bus extends EventBusProtocol = EventBusProtocol,
|
||||||
|
Realtime extends RealtimeBroadcasterProtocol = RealtimeBroadcasterProtocol,
|
||||||
|
RealtimeReg extends RealtimeRegistryProtocol = RealtimeRegistryProtocol,
|
||||||
|
> = BindContext<Bus, Realtime, RealtimeReg> & {
|
||||||
|
config: SanitizedConfig;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user