diff --git a/packages/media/package.json b/packages/media/package.json index 8adc0f7..55f15fe 100644 --- a/packages/media/package.json +++ b/packages/media/package.json @@ -18,6 +18,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@repo/core-events": "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 d56c856..f2055b4 100644 --- a/packages/media/src/di/bind-dev-seed.test.ts +++ b/packages/media/src/di/bind-dev-seed.test.ts @@ -1,6 +1,7 @@ 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 { bindDevSeedMedia } from "@/di/bind-dev-seed"; import { mediaContainer } from "@/di/container"; import { MEDIA_SYMBOLS } from "@/di/symbols"; @@ -31,7 +32,7 @@ describe("bindDevSeedMedia", () => { }); it("populates the repository with the dev media entries", async () => { - await bindDevSeedMedia(noop.tracer, noop.logger); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const repo = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, @@ -42,7 +43,7 @@ describe("bindDevSeedMedia", () => { }); it("seeds placeholder-1 reachable by id", async () => { - await bindDevSeedMedia(noop.tracer, noop.logger); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const repo = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, @@ -55,13 +56,13 @@ describe("bindDevSeedMedia", () => { }); it("is idempotent — calling twice rebuilds a fresh populated repo", async () => { - await bindDevSeedMedia(noop.tracer, noop.logger); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const before = mediaContainer.get( MEDIA_SYMBOLS.IMediaRepository, ); const beforeCount = (await before.listMedia()).length; - await bindDevSeedMedia(noop.tracer, noop.logger); + await bindDevSeedMedia(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); 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 fc72c2f..b80305c 100644 --- a/packages/media/src/di/bind-dev-seed.ts +++ b/packages/media/src/di/bind-dev-seed.ts @@ -5,6 +5,8 @@ import { type ITracer, type ILogger, } from "@repo/core-shared/instrumentation"; +import type { IEventBus } from "@repo/core-events"; +import type { IJobQueue } from "@repo/core-shared/jobs"; import { mediaContainer } from "./container.js"; import { MEDIA_SYMBOLS } from "./symbols.js"; import { MockMediaRepository } from "../infrastructure/repositories/media.repository.mock.js"; @@ -27,7 +29,12 @@ import type { IMediaRepository } from "../application/repositories/media.reposit * Idempotent: safe to call multiple times; each call rebuilds a fresh * populated repo and rebinds the symbol. */ -export async function bindDevSeedMedia(tracer: ITracer, logger: ILogger): Promise { +export async function bindDevSeedMedia( + tracer: ITracer, + logger: ILogger, + bus: IEventBus, + queue: IJobQueue, +): Promise { // Bind shared instrumentation into feature container if (mediaContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { mediaContainer.unbind(INSTRUMENTATION_SYMBOLS.TRACER); @@ -133,6 +140,10 @@ export async function bindDevSeedMedia(tracer: ITracer, logger: ILogger): Promis ), ), ); + // bus + queue are accept-and-forward in Phase 6; consumed by Phase 7 generator + // output at the / anchors below. + void bus; + void queue; // // } diff --git a/packages/media/src/di/bind-production.ts b/packages/media/src/di/bind-production.ts index 7d46835..8f13853 100644 --- a/packages/media/src/di/bind-production.ts +++ b/packages/media/src/di/bind-production.ts @@ -6,6 +6,8 @@ import { type ITracer, type ILogger, } from "@repo/core-shared/instrumentation"; +import type { IEventBus } from "@repo/core-events"; +import type { IJobQueue } from "@repo/core-shared/jobs"; import { mediaContainer } from "./container"; import { MEDIA_SYMBOLS } from "./symbols"; import { MediaRepository } from "../infrastructure/repositories/media.repository"; @@ -20,6 +22,8 @@ export function bindProductionMedia( config: SanitizedConfig, tracer: ITracer, logger: ILogger, + bus: IEventBus, + queue: IJobQueue, ): void { // Bind shared instrumentation into feature container if (mediaContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { @@ -127,6 +131,10 @@ export function bindProductionMedia( ), ), ); + // bus + queue are accept-and-forward in Phase 6; consumed by Phase 7 generator + // output at the / anchors below. + void bus; + void queue; // // } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a3f108..6a3ca36 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -812,6 +812,9 @@ importers: packages/media: dependencies: + '@repo/core-events': + specifier: workspace:* + version: link:../core-events '@repo/core-shared': specifier: workspace:* version: link:../core-shared