From 579c5911fd8691c538bc0f56f3af8ef14e4d177a Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Fri, 8 May 2026 22:41:13 +0200 Subject: [PATCH] feat(marketing-pages): bind binders accept (realtime, realtimeRegistry) params Extend bindProductionMarketingPages and bindDevSeedMarketingPages to 7-arg signatures. Co-Authored-By: Claude Sonnet 4.6 --- packages/marketing-pages/package.json | 1 + packages/marketing-pages/src/di/bind-dev-seed.test.ts | 11 ++++++----- packages/marketing-pages/src/di/bind-dev-seed.ts | 5 +++++ packages/marketing-pages/src/di/bind-production.ts | 5 +++++ 4 files changed, 17 insertions(+), 5 deletions(-) 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; // }