From f85b0891eeb7db87a8c320241d32931ab2b7140d Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Fri, 8 May 2026 22:41:10 +0200 Subject: [PATCH] feat(media): bind binders accept (realtime, realtimeRegistry) params Extend bindProductionMedia and bindDevSeedMedia to 7-arg signatures. Co-Authored-By: Claude Sonnet 4.6 --- packages/media/package.json | 1 + packages/media/src/di/bind-dev-seed.test.ts | 11 ++++++----- packages/media/src/di/bind-dev-seed.ts | 5 +++++ packages/media/src/di/bind-production.ts | 5 +++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/media/package.json b/packages/media/package.json index 55f15fe..06ab100 100644 --- a/packages/media/package.json +++ b/packages/media/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "@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/media/src/di/bind-dev-seed.test.ts b/packages/media/src/di/bind-dev-seed.test.ts index f2055b4..27fda94 100644 --- a/packages/media/src/di/bind-dev-seed.test.ts +++ b/packages/media/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 { bindDevSeedMedia } from "@/di/bind-dev-seed"; import { mediaContainer } from "@/di/container"; import { MEDIA_SYMBOLS } from "@/di/symbols"; @@ -32,7 +33,7 @@ describe("bindDevSeedMedia", () => { }); it("populates the repository with the dev media entries", async () => { - await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const repo = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, @@ -43,7 +44,7 @@ describe("bindDevSeedMedia", () => { }); it("seeds placeholder-1 reachable by id", async () => { - await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const repo = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, @@ -56,13 +57,13 @@ describe("bindDevSeedMedia", () => { }); it("is idempotent — calling twice rebuilds a fresh populated repo", async () => { - await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const before = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, ); const beforeCount = (await before.listMedia()).length; - await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue(), new RecordingRealtimeBroadcaster(), new RealtimeHandlerRegistry()); const after = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, ); diff --git a/packages/media/src/di/bind-dev-seed.ts b/packages/media/src/di/bind-dev-seed.ts index a24212e..b935c99 100644 --- a/packages/media/src/di/bind-dev-seed.ts +++ b/packages/media/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 { mediaContainer } from "./container.js"; import { MEDIA_SYMBOLS } from "./symbols.js"; @@ -34,6 +35,8 @@ export async function bindDevSeedMedia( logger: ILogger, bus: IEventBus, queue: IJobQueue, + realtime: IRealtimeBroadcaster, + realtimeRegistry: IRealtimeHandlerRegistry, ): Promise { // Bind shared instrumentation into feature container if (mediaContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { @@ -144,6 +147,8 @@ export async function bindDevSeedMedia( // output at the / anchors below. void bus; void queue; + void realtime; + void realtimeRegistry; // // // diff --git a/packages/media/src/di/bind-production.ts b/packages/media/src/di/bind-production.ts index cd5aa4b..d5e4599 100644 --- a/packages/media/src/di/bind-production.ts +++ b/packages/media/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 { mediaContainer } from "./container"; import { MEDIA_SYMBOLS } from "./symbols"; @@ -24,6 +25,8 @@ export function bindProductionMedia( logger: ILogger, bus: IEventBus, queue: IJobQueue, + realtime: IRealtimeBroadcaster, + realtimeRegistry: IRealtimeHandlerRegistry, ): void { // Bind shared instrumentation into feature container if (mediaContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { @@ -135,6 +138,8 @@ export function bindProductionMedia( // output at the / anchors below. void bus; void queue; + void realtime; + void realtimeRegistry; // // //