refactor(web-next): aggregator builds BindContext once

This commit is contained in:
2026-05-09 12:46:27 +02:00
parent 3911405102
commit 2854023d13

View File

@@ -12,6 +12,7 @@ import {
type ITracer, type ITracer,
type ILogger, type ILogger,
} from "@repo/core-shared/instrumentation"; } from "@repo/core-shared/instrumentation";
import type { BindProductionContext, BindContext } from "@repo/core-shared/di";
import { import {
InMemoryEventBus, InMemoryEventBus,
PayloadJobsEventBus, PayloadJobsEventBus,
@@ -118,11 +119,22 @@ export async function bindAllProduction(deps: BindAllDeps): Promise<void> {
const { bus, queue } = await resolveEventsAndJobsProduction(); const { bus, queue } = await resolveEventsAndJobsProduction();
const resolvedConfig = await config; const resolvedConfig = await config;
const { realtime, realtimeRegistry } = deps; const { realtime, realtimeRegistry } = deps;
bindProductionAuth(resolvedConfig, tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 19
bindProductionBlog(resolvedConfig, tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 18 const ctx: BindProductionContext<IEventBus, IRealtimeBroadcaster, IRealtimeHandlerRegistry> = {
bindProductionMarketingPages(resolvedConfig, tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 20 config: resolvedConfig,
bindProductionNavigation(resolvedConfig, tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 21 tracer,
bindProductionMedia(resolvedConfig, tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 22 logger,
bus,
queue,
realtime,
realtimeRegistry,
};
bindProductionAuth(ctx); // Phase E task 19
bindProductionBlog(ctx); // Phase E task 18
bindProductionMarketingPages(ctx); // Phase E task 20
bindProductionNavigation(ctx); // Phase E task 21
bindProductionMedia(ctx); // Phase E task 22
maybeRegisterRealtimePing(realtimeRegistry, realtime, tracer, logger); maybeRegisterRealtimePing(realtimeRegistry, realtime, tracer, logger);
bindRealtimeBridge(bus, realtime); bindRealtimeBridge(bus, realtime);
} }
@@ -138,11 +150,21 @@ export async function bindAllDevSeed(deps: BindAllDeps): Promise<void> {
const { tracer, logger } = resolveInstrumentation(); // Rule 0 const { tracer, logger } = resolveInstrumentation(); // Rule 0
const { bus, queue } = resolveEventsAndJobsDevSeed(); const { bus, queue } = resolveEventsAndJobsDevSeed();
const { realtime, realtimeRegistry } = deps; const { realtime, realtimeRegistry } = deps;
await bindDevSeedAuth(tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 19
await bindDevSeedBlog(tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 18 const ctx: BindContext<IEventBus, IRealtimeBroadcaster, IRealtimeHandlerRegistry> = {
await bindDevSeedMarketingPages(tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 20 tracer,
await bindDevSeedNavigation(tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 21 logger,
await bindDevSeedMedia(tracer, logger, bus, queue, realtime, realtimeRegistry); // Phase E task 22 bus,
queue,
realtime,
realtimeRegistry,
};
await bindDevSeedAuth(ctx); // Phase E task 19
await bindDevSeedBlog(ctx); // Phase E task 18
await bindDevSeedMarketingPages(ctx); // Phase E task 20
await bindDevSeedNavigation(ctx); // Phase E task 21
await bindDevSeedMedia(ctx); // Phase E task 22
maybeRegisterRealtimePing(realtimeRegistry, realtime, tracer, logger); maybeRegisterRealtimePing(realtimeRegistry, realtime, tracer, logger);
bindRealtimeBridge(bus, realtime); bindRealtimeBridge(bus, realtime);
} }