diff --git a/packages/auth/package.json b/packages/auth/package.json index 818159e..e29e395 100644 --- a/packages/auth/package.json +++ b/packages/auth/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/auth/src/di/bind-dev-seed.test.ts b/packages/auth/src/di/bind-dev-seed.test.ts index 79898b0..939b03d 100644 --- a/packages/auth/src/di/bind-dev-seed.test.ts +++ b/packages/auth/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 { bindDevSeedAuth } from "@/di/bind-dev-seed"; import { authContainer } from "@/di/container"; import { AUTH_SYMBOLS } from "@/di/symbols"; @@ -31,7 +32,7 @@ describe("bindDevSeedAuth", () => { }); it("populates the repository with the dev users", async () => { - await bindDevSeedAuth(noop.tracer, noop.logger); + await bindDevSeedAuth(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const repo = authContainer.get( AUTH_SYMBOLS.IUsersRepository, @@ -44,7 +45,7 @@ describe("bindDevSeedAuth", () => { }); it("seeds alice reachable by username", async () => { - await bindDevSeedAuth(noop.tracer, noop.logger); + await bindDevSeedAuth(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const repo = authContainer.get( AUTH_SYMBOLS.IUsersRepository, @@ -57,13 +58,13 @@ describe("bindDevSeedAuth", () => { }); it("is idempotent — calling twice rebuilds a fresh populated repo", async () => { - await bindDevSeedAuth(noop.tracer, noop.logger); + await bindDevSeedAuth(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const before = authContainer.get( AUTH_SYMBOLS.IUsersRepository, ); const beforeAlice = await before.getUserByUsername("alice"); - await bindDevSeedAuth(noop.tracer, noop.logger); + await bindDevSeedAuth(noop.tracer, noop.logger, new RecordingEventBus(), new RecordingJobQueue()); const after = authContainer.get( AUTH_SYMBOLS.IUsersRepository, ); diff --git a/packages/auth/src/di/bind-dev-seed.ts b/packages/auth/src/di/bind-dev-seed.ts index 4b8311d..337b1a6 100644 --- a/packages/auth/src/di/bind-dev-seed.ts +++ b/packages/auth/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 { authContainer } from "./container.js"; import { AUTH_SYMBOLS } from "./symbols.js"; import { MockUsersRepository } from "../infrastructure/repositories/users.repository.mock.js"; @@ -31,7 +33,12 @@ import type { IAuthenticationService } from "../application/services/authenticat * Idempotent: safe to call multiple times; each call rebuilds a fresh * populated repo and rebinds the symbol. */ -export async function bindDevSeedAuth(tracer: ITracer, logger: ILogger): Promise { +export async function bindDevSeedAuth( + tracer: ITracer, + logger: ILogger, + bus: IEventBus, + queue: IJobQueue, +): Promise { // Bind shared instrumentation into feature container if (authContainer.isBound(INSTRUMENTATION_SYMBOLS.TRACER)) { authContainer.unbind(INSTRUMENTATION_SYMBOLS.TRACER); @@ -140,6 +147,10 @@ export async function bindDevSeedAuth(tracer: ITracer, logger: ILogger): Promise ), ), ); + // 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/auth/src/di/bind-production.ts b/packages/auth/src/di/bind-production.ts index 7110209..7fc9ef5 100644 --- a/packages/auth/src/di/bind-production.ts +++ b/packages/auth/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 { authContainer } from "./container"; import { AUTH_SYMBOLS } from "./symbols"; import { UsersRepository } from "../infrastructure/repositories/users.repository"; @@ -25,6 +27,8 @@ export function bindProductionAuth( config: SanitizedConfig, tracer: ITracer, logger: ILogger, + bus: IEventBus, + queue: IJobQueue, ): void { if (bound) return; bound = true; @@ -141,6 +145,10 @@ export function bindProductionAuth( ), ), ); + // 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 9687f80..49fef34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -324,6 +324,9 @@ importers: packages/auth: dependencies: + '@repo/core-events': + specifier: workspace:* + version: link:../core-events '@repo/core-shared': specifier: workspace:* version: link:../core-shared