diff --git a/packages/marketing-pages/package.json b/packages/marketing-pages/package.json index 5afb693..76b586f 100644 --- a/packages/marketing-pages/package.json +++ b/packages/marketing-pages/package.json @@ -24,6 +24,7 @@ "dependencies": { "@repo/auth": "workspace:*", "@repo/core-events": "workspace:*", + "@repo/core-realtime": "workspace:*", "@repo/core-shared": "workspace:*", "@trpc/server": "^11.0.0", "inversify": "^6.2.0", diff --git a/packages/marketing-pages/src/di/bind-dev-seed.test.ts b/packages/marketing-pages/src/di/bind-dev-seed.test.ts index e6c2b2a..2b0a0e6 100644 --- a/packages/marketing-pages/src/di/bind-dev-seed.test.ts +++ b/packages/marketing-pages/src/di/bind-dev-seed.test.ts @@ -1,7 +1,8 @@ import "reflect-metadata"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { NoopTracer, NoopLogger } from "@repo/core-shared/instrumentation"; -import { RecordingEventBus, RecordingJobQueue } from "@repo/core-testing/instrumentation"; +import { RecordingEventBus, RecordingJobQueue, RecordingRealtimeBroadcaster } from "@repo/core-testing/instrumentation"; +import { RealtimeHandlerRegistry } from "@repo/core-realtime"; import { bindDevSeedMarketingPages } from "@/di/bind-dev-seed"; import { marketingPagesContainer } from "@/di/container"; import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols"; @@ -60,7 +61,7 @@ describe("bindDevSeedMarketingPages", () => { }); it("populates the pages repository with the dev pages", async () => { - await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const repo = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.IPagesRepository, @@ -71,7 +72,7 @@ describe("bindDevSeedMarketingPages", () => { }); it("seeds site settings with a non-default site name", async () => { - await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const settingsRepo = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository, @@ -83,13 +84,13 @@ describe("bindDevSeedMarketingPages", () => { }); it("is idempotent — calling twice rebuilds fresh populated repos", async () => { - await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const before = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.IPagesRepository, ); const beforeCount = (await before.getPages()).length; - await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const after = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.IPagesRepository, ); diff --git a/packages/marketing-pages/src/di/bind-dev-seed.ts b/packages/marketing-pages/src/di/bind-dev-seed.ts index 209da6b..c5f6d12 100644 --- a/packages/marketing-pages/src/di/bind-dev-seed.ts +++ b/packages/marketing-pages/src/di/bind-dev-seed.ts @@ -6,6 +6,7 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { IEventBus } from "@repo/core-events"; +import type { IRealtimeBroadcaster, IRealtimeHandlerRegistry } from "@repo/core-realtime"; import type { IJobQueue } from "@repo/core-shared/jobs"; import { marketingPagesContainer } from "./container.js"; import { MARKETING_PAGES_SYMBOLS } from "./symbols.js"; @@ -38,6 +39,8 @@ export async function bindDevSeedMarketingPages( logger: ILogger, bus: IEventBus, queue: IJobQueue, + realtime: IRealtimeBroadcaster, + realtimeRegistry: IRealtimeHandlerRegistry, ): Promise { // Bind shared instrumentation into feature container if (marketingPagesContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { @@ -193,5 +196,7 @@ export async function bindDevSeedMarketingPages( }, ); } + void realtime; + void realtimeRegistry; // } diff --git a/packages/marketing-pages/src/di/bind-production.ts b/packages/marketing-pages/src/di/bind-production.ts index d0fdd1d..710efb6 100644 --- a/packages/marketing-pages/src/di/bind-production.ts +++ b/packages/marketing-pages/src/di/bind-production.ts @@ -7,6 +7,7 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { IEventBus } from "@repo/core-events"; +import type { IRealtimeBroadcaster, IRealtimeHandlerRegistry } from "@repo/core-realtime"; import type { IJobQueue } from "@repo/core-shared/jobs"; import { marketingPagesContainer } from "./container"; import { MARKETING_PAGES_SYMBOLS } from "./symbols"; @@ -28,6 +29,8 @@ export function bindProductionMarketingPages( logger: ILogger, bus: IEventBus, queue: IJobQueue, + realtime: IRealtimeBroadcaster, + realtimeRegistry: IRealtimeHandlerRegistry, ): void { // Bind shared instrumentation into feature container if (marketingPagesContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { @@ -171,5 +174,7 @@ export function bindProductionMarketingPages( marketingPagesContainer.unbind(MARKETING_PAGES_SYMBOLS.ISendWelcomeEmailJob); } marketingPagesContainer.bind(MARKETING_PAGES_SYMBOLS.ISendWelcomeEmailJob).toConstantValue(wrappedSendWelcomeEmail); + void realtime; + void realtimeRegistry; // }