From f06f7dbadf74dceced080dedfeb9c775e3ca5fb1 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Wed, 13 May 2026 07:35:40 +0200 Subject: [PATCH] feat(features): extend assertFeatureConformance to bind-dev-seed paths --- packages/auth/src/di/bind-dev-seed.ts | 14 ++++++++++++++ packages/blog/src/di/bind-dev-seed.ts | 14 ++++++++++++++ packages/marketing-pages/src/di/bind-dev-seed.ts | 13 +++++++++++++ packages/media/src/di/bind-dev-seed.ts | 14 ++++++++++++++ packages/navigation/src/di/bind-dev-seed.ts | 10 ++++++++++ 5 files changed, 65 insertions(+) diff --git a/packages/auth/src/di/bind-dev-seed.ts b/packages/auth/src/di/bind-dev-seed.ts index e0ee6d4..2a66aed 100644 --- a/packages/auth/src/di/bind-dev-seed.ts +++ b/packages/auth/src/di/bind-dev-seed.ts @@ -6,6 +6,8 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { BindContext } from "@repo/core-shared/di"; +import { assertFeatureConformance } from "@repo/core-shared/conformance"; +import { authManifest } from "../feature.manifest.js"; import { authContainer } from "./container.js"; import { AUTH_SYMBOLS } from "./symbols.js"; import { MockUsersRepository } from "../infrastructure/repositories/users.repository.mock.js"; @@ -152,4 +154,16 @@ export async function bindDevSeedAuth(ctx: BindContext): Promise { // // // + + // Boot-time conformance check (dev-seed mode). + assertFeatureConformance( + authContainer, + authManifest, + { + signIn: AUTH_SYMBOLS.ISignInUseCase, + signUp: AUTH_SYMBOLS.ISignUpUseCase, + signOut: AUTH_SYMBOLS.ISignOutUseCase, + }, + ctx, + ); } diff --git a/packages/blog/src/di/bind-dev-seed.ts b/packages/blog/src/di/bind-dev-seed.ts index dc978cc..b4b9ce2 100644 --- a/packages/blog/src/di/bind-dev-seed.ts +++ b/packages/blog/src/di/bind-dev-seed.ts @@ -6,6 +6,8 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { BindContext } from "@repo/core-shared/di"; +import { assertFeatureConformance } from "@repo/core-shared/conformance"; +import { blogManifest } from "../feature.manifest.js"; import { blogContainer } from "./container.js"; import { BLOG_SYMBOLS } from "./symbols.js"; import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock.js"; @@ -145,4 +147,16 @@ export async function bindDevSeedBlog(ctx: BindContext): Promise { // // // + + // Boot-time conformance check (dev-seed mode). + assertFeatureConformance( + blogContainer, + blogManifest, + { + getArticles: BLOG_SYMBOLS.IGetArticlesUseCase, + getArticleBySlug: BLOG_SYMBOLS.IGetArticleBySlugUseCase, + createArticle: BLOG_SYMBOLS.ICreateArticleUseCase, + }, + ctx, + ); } diff --git a/packages/marketing-pages/src/di/bind-dev-seed.ts b/packages/marketing-pages/src/di/bind-dev-seed.ts index a563570..02290e5 100644 --- a/packages/marketing-pages/src/di/bind-dev-seed.ts +++ b/packages/marketing-pages/src/di/bind-dev-seed.ts @@ -6,6 +6,8 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { BindContext } from "@repo/core-shared/di"; +import { assertFeatureConformance } from "@repo/core-shared/conformance"; +import { marketingPagesManifest } from "../feature.manifest.js"; import { marketingPagesContainer } from "./container.js"; import { MARKETING_PAGES_SYMBOLS } from "./symbols.js"; import { MockPagesRepository } from "../infrastructure/repositories/pages.repository.mock.js"; @@ -196,4 +198,15 @@ export async function bindDevSeedMarketingPages(ctx: BindContext): Promise void realtime; void realtimeRegistry; // + + // Boot-time conformance check (dev-seed mode). + assertFeatureConformance( + marketingPagesContainer, + marketingPagesManifest, + { + getPageBySlug: MARKETING_PAGES_SYMBOLS.IGetPageBySlugUseCase, + getSiteSettings: MARKETING_PAGES_SYMBOLS.IGetSiteSettingsUseCase, + }, + ctx, + ); } diff --git a/packages/media/src/di/bind-dev-seed.ts b/packages/media/src/di/bind-dev-seed.ts index fb05c7a..6510550 100644 --- a/packages/media/src/di/bind-dev-seed.ts +++ b/packages/media/src/di/bind-dev-seed.ts @@ -6,6 +6,8 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { BindContext } from "@repo/core-shared/di"; +import { assertFeatureConformance } from "@repo/core-shared/conformance"; +import { mediaManifest } from "../feature.manifest.js"; import { mediaContainer } from "./container.js"; import { MEDIA_SYMBOLS } from "./symbols.js"; import { MockMediaRepository } from "../infrastructure/repositories/media.repository.mock.js"; @@ -145,4 +147,16 @@ export async function bindDevSeedMedia(ctx: BindContext): Promise { // // // + + // Boot-time conformance check (dev-seed mode). + assertFeatureConformance( + mediaContainer, + mediaManifest, + { + getMedia: MEDIA_SYMBOLS.IGetMediaUseCase, + listMedia: MEDIA_SYMBOLS.IListMediaUseCase, + deleteMedia: MEDIA_SYMBOLS.IDeleteMediaUseCase, + }, + ctx, + ); } diff --git a/packages/navigation/src/di/bind-dev-seed.ts b/packages/navigation/src/di/bind-dev-seed.ts index 39ecb5d..d64d8c6 100644 --- a/packages/navigation/src/di/bind-dev-seed.ts +++ b/packages/navigation/src/di/bind-dev-seed.ts @@ -6,6 +6,8 @@ import { type ILogger, } from "@repo/core-shared/instrumentation"; import type { BindContext } from "@repo/core-shared/di"; +import { assertFeatureConformance } from "@repo/core-shared/conformance"; +import { navigationManifest } from "../feature.manifest.js"; import { navigationContainer } from "./container.js"; import { NAVIGATION_SYMBOLS } from "./symbols.js"; import { MockHeaderRepository } from "../infrastructure/repositories/header.repository.mock.js"; @@ -89,4 +91,12 @@ export async function bindDevSeedNavigation(ctx: BindContext): Promise { // // // + + // Boot-time conformance check (dev-seed mode). + assertFeatureConformance( + navigationContainer, + navigationManifest, + { getHeader: NAVIGATION_SYMBOLS.IGetHeaderUseCase }, + ctx, + ); }