feat(core-shared): BindContext.auditLog? field (5th generic)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import type {
|
||||
RealtimeBroadcasterProtocol,
|
||||
RealtimeRegistryProtocol,
|
||||
MetricsProtocol,
|
||||
AuditLogProtocol,
|
||||
} from "./bind-protocols";
|
||||
|
||||
/** Always-present fields. Feature binders rely on these unconditionally. */
|
||||
@@ -17,25 +18,28 @@ type BindContextBase = {
|
||||
/**
|
||||
* Optional cross-cutting deps. Generics let the app aggregator narrow the
|
||||
* shape to full interfaces (`IEventBus`, `IRealtimeBroadcaster`, `IMetrics`,
|
||||
* etc.); feature binders see only the protocol surface, which is enough for
|
||||
* the methods they call. When an optional core package is absent the
|
||||
* `IAuditLog`, 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` / `ctx.metrics` are undefined at runtime.
|
||||
* `ctx.realtime` / `ctx.metrics` / `ctx.auditLog` are undefined at runtime.
|
||||
*
|
||||
* The 4th generic `Metrics` defaults to `MetricsProtocol` so existing call
|
||||
* sites that pass 3 explicit args remain backward-compatible.
|
||||
* The 4th generic `Metrics` and 5th generic `Audit` both default to their
|
||||
* protocol types so existing call sites that pass fewer explicit args remain
|
||||
* backward-compatible.
|
||||
*/
|
||||
export type BindContext<
|
||||
Bus extends EventBusProtocol = EventBusProtocol,
|
||||
Realtime extends RealtimeBroadcasterProtocol = RealtimeBroadcasterProtocol,
|
||||
RealtimeReg extends RealtimeRegistryProtocol = RealtimeRegistryProtocol,
|
||||
Metrics extends MetricsProtocol = MetricsProtocol,
|
||||
Audit extends AuditLogProtocol = AuditLogProtocol,
|
||||
> = BindContextBase & {
|
||||
bus?: Bus;
|
||||
queue?: IJobQueue;
|
||||
realtime?: Realtime;
|
||||
realtimeRegistry?: RealtimeReg;
|
||||
metrics?: Metrics;
|
||||
auditLog?: Audit;
|
||||
};
|
||||
|
||||
/** Production binders also receive the resolved Payload config. */
|
||||
@@ -44,6 +48,7 @@ export type BindProductionContext<
|
||||
Realtime extends RealtimeBroadcasterProtocol = RealtimeBroadcasterProtocol,
|
||||
RealtimeReg extends RealtimeRegistryProtocol = RealtimeRegistryProtocol,
|
||||
Metrics extends MetricsProtocol = MetricsProtocol,
|
||||
> = BindContext<Bus, Realtime, RealtimeReg, Metrics> & {
|
||||
Audit extends AuditLogProtocol = AuditLogProtocol,
|
||||
> = BindContext<Bus, Realtime, RealtimeReg, Metrics, Audit> & {
|
||||
config: SanitizedConfig;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user