diff --git a/packages/marketing-pages/package.json b/packages/marketing-pages/package.json index c1d6b93..5bacd49 100644 --- a/packages/marketing-pages/package.json +++ b/packages/marketing-pages/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/marketing-pages/src/di/bind-dev-seed.test.ts b/packages/marketing-pages/src/di/bind-dev-seed.test.ts index cac2e39..e6c2b2a 100644 --- a/packages/marketing-pages/src/di/bind-dev-seed.test.ts +++ b/packages/marketing-pages/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 { bindDevSeedMarketingPages } from "@/di/bind-dev-seed"; import { marketingPagesContainer } from "@/di/container"; import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols"; @@ -59,7 +60,7 @@ describe("bindDevSeedMarketingPages", () => { }); it("populates the pages repository with the dev pages", async () => { - await bindDevSeedMarketingPages(noop.tracer, noop.logger); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const repo = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.IPagesRepository, @@ -70,7 +71,7 @@ describe("bindDevSeedMarketingPages", () => { }); it("seeds site settings with a non-default site name", async () => { - await bindDevSeedMarketingPages(noop.tracer, noop.logger); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const settingsRepo = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository, @@ -82,13 +83,13 @@ describe("bindDevSeedMarketingPages", () => { }); it("is idempotent — calling twice rebuilds fresh populated repos", async () => { - await bindDevSeedMarketingPages(noop.tracer, noop.logger); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const before = marketingPagesContainer.get( MARKETING_PAGES_SYMBOLS.IPagesRepository, ); const beforeCount = (await before.getPages()).length; - await bindDevSeedMarketingPages(noop.tracer, noop.logger); + await bindDevSeedMarketingPages(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); 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 a1e14fd..3ea9d75 100644 --- a/packages/marketing-pages/src/di/bind-dev-seed.ts +++ b/packages/marketing-pages/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 { marketingPagesContainer } from "./container.js"; import { MARKETING_PAGES_SYMBOLS } from "./symbols.js"; import { MockPagesRepository } from "../infrastructure/repositories/pages.repository.mock.js"; @@ -26,7 +28,12 @@ import type { ISiteSettingsRepository } from "../application/repositories/site-s * Idempotent: safe to call multiple times; each call rebuilds fresh populated * repos and rebinds both symbols. */ -export async function bindDevSeedMarketingPages(tracer: ITracer, logger: ILogger): Promise { +export async function bindDevSeedMarketingPages( + tracer: ITracer, + logger: ILogger, + bus: IEventBus, + queue: IJobQueue, +): Promise { // Bind shared instrumentation into feature container if (marketingPagesContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { marketingPagesContainer.unbind(INSTRUMENTATION_SYMBOLS.TRACER); @@ -120,6 +127,10 @@ export async function bindDevSeedMarketingPages(tracer: ITracer, logger: ILogger ), ), ); + // 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/marketing-pages/src/di/bind-production.ts b/packages/marketing-pages/src/di/bind-production.ts index b15b4af..598e4b2 100644 --- a/packages/marketing-pages/src/di/bind-production.ts +++ b/packages/marketing-pages/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 { marketingPagesContainer } from "./container"; import { MARKETING_PAGES_SYMBOLS } from "./symbols"; import { PagesRepository } from "../infrastructure/repositories/pages.repository"; @@ -19,6 +21,8 @@ export function bindProductionMarketingPages( config: SanitizedConfig, tracer: ITracer, logger: ILogger, + bus: IEventBus, + queue: IJobQueue, ): void { // Bind shared instrumentation into feature container if (marketingPagesContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { @@ -113,6 +117,10 @@ export function bindProductionMarketingPages( ), ), ); + // 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 6a3ca36..6d340d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -772,6 +772,9 @@ importers: packages/marketing-pages: dependencies: + '@repo/core-events': + specifier: workspace:* + version: link:../core-events '@repo/core-shared': specifier: workspace:* version: link:../core-shared