feat(features): extend assertFeatureConformance to bind-dev-seed paths

This commit is contained in:
2026-05-13 07:35:40 +02:00
parent 171ed20527
commit f06f7dbadf
5 changed files with 65 additions and 0 deletions

View File

@@ -6,6 +6,8 @@ import {
type ILogger, type ILogger,
} from "@repo/core-shared/instrumentation"; } from "@repo/core-shared/instrumentation";
import type { BindContext } from "@repo/core-shared/di"; 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 { authContainer } from "./container.js";
import { AUTH_SYMBOLS } from "./symbols.js"; import { AUTH_SYMBOLS } from "./symbols.js";
import { MockUsersRepository } from "../infrastructure/repositories/users.repository.mock.js"; import { MockUsersRepository } from "../infrastructure/repositories/users.repository.mock.js";
@@ -152,4 +154,16 @@ export async function bindDevSeedAuth(ctx: BindContext): Promise<void> {
// <gen:event-handlers> // <gen:event-handlers>
// <gen:jobs> // <gen:jobs>
// <gen:realtime-handlers> // <gen:realtime-handlers>
// Boot-time conformance check (dev-seed mode).
assertFeatureConformance(
authContainer,
authManifest,
{
signIn: AUTH_SYMBOLS.ISignInUseCase,
signUp: AUTH_SYMBOLS.ISignUpUseCase,
signOut: AUTH_SYMBOLS.ISignOutUseCase,
},
ctx,
);
} }

View File

@@ -6,6 +6,8 @@ import {
type ILogger, type ILogger,
} from "@repo/core-shared/instrumentation"; } from "@repo/core-shared/instrumentation";
import type { BindContext } from "@repo/core-shared/di"; 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 { blogContainer } from "./container.js";
import { BLOG_SYMBOLS } from "./symbols.js"; import { BLOG_SYMBOLS } from "./symbols.js";
import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock.js"; import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock.js";
@@ -145,4 +147,16 @@ export async function bindDevSeedBlog(ctx: BindContext): Promise<void> {
// <gen:event-handlers> // <gen:event-handlers>
// <gen:jobs> // <gen:jobs>
// <gen:realtime-handlers> // <gen:realtime-handlers>
// Boot-time conformance check (dev-seed mode).
assertFeatureConformance(
blogContainer,
blogManifest,
{
getArticles: BLOG_SYMBOLS.IGetArticlesUseCase,
getArticleBySlug: BLOG_SYMBOLS.IGetArticleBySlugUseCase,
createArticle: BLOG_SYMBOLS.ICreateArticleUseCase,
},
ctx,
);
} }

View File

@@ -6,6 +6,8 @@ import {
type ILogger, type ILogger,
} from "@repo/core-shared/instrumentation"; } from "@repo/core-shared/instrumentation";
import type { BindContext } from "@repo/core-shared/di"; 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 { marketingPagesContainer } from "./container.js";
import { MARKETING_PAGES_SYMBOLS } from "./symbols.js"; import { MARKETING_PAGES_SYMBOLS } from "./symbols.js";
import { MockPagesRepository } from "../infrastructure/repositories/pages.repository.mock.js"; import { MockPagesRepository } from "../infrastructure/repositories/pages.repository.mock.js";
@@ -196,4 +198,15 @@ export async function bindDevSeedMarketingPages(ctx: BindContext): Promise<void>
void realtime; void realtime;
void realtimeRegistry; void realtimeRegistry;
// <gen:realtime-handlers> // <gen:realtime-handlers>
// Boot-time conformance check (dev-seed mode).
assertFeatureConformance(
marketingPagesContainer,
marketingPagesManifest,
{
getPageBySlug: MARKETING_PAGES_SYMBOLS.IGetPageBySlugUseCase,
getSiteSettings: MARKETING_PAGES_SYMBOLS.IGetSiteSettingsUseCase,
},
ctx,
);
} }

View File

@@ -6,6 +6,8 @@ import {
type ILogger, type ILogger,
} from "@repo/core-shared/instrumentation"; } from "@repo/core-shared/instrumentation";
import type { BindContext } from "@repo/core-shared/di"; 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 { mediaContainer } from "./container.js";
import { MEDIA_SYMBOLS } from "./symbols.js"; import { MEDIA_SYMBOLS } from "./symbols.js";
import { MockMediaRepository } from "../infrastructure/repositories/media.repository.mock.js"; import { MockMediaRepository } from "../infrastructure/repositories/media.repository.mock.js";
@@ -145,4 +147,16 @@ export async function bindDevSeedMedia(ctx: BindContext): Promise<void> {
// <gen:event-handlers> // <gen:event-handlers>
// <gen:jobs> // <gen:jobs>
// <gen:realtime-handlers> // <gen:realtime-handlers>
// Boot-time conformance check (dev-seed mode).
assertFeatureConformance(
mediaContainer,
mediaManifest,
{
getMedia: MEDIA_SYMBOLS.IGetMediaUseCase,
listMedia: MEDIA_SYMBOLS.IListMediaUseCase,
deleteMedia: MEDIA_SYMBOLS.IDeleteMediaUseCase,
},
ctx,
);
} }

View File

@@ -6,6 +6,8 @@ import {
type ILogger, type ILogger,
} from "@repo/core-shared/instrumentation"; } from "@repo/core-shared/instrumentation";
import type { BindContext } from "@repo/core-shared/di"; 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 { navigationContainer } from "./container.js";
import { NAVIGATION_SYMBOLS } from "./symbols.js"; import { NAVIGATION_SYMBOLS } from "./symbols.js";
import { MockHeaderRepository } from "../infrastructure/repositories/header.repository.mock.js"; import { MockHeaderRepository } from "../infrastructure/repositories/header.repository.mock.js";
@@ -89,4 +91,12 @@ export async function bindDevSeedNavigation(ctx: BindContext): Promise<void> {
// <gen:event-handlers> // <gen:event-handlers>
// <gen:jobs> // <gen:jobs>
// <gen:realtime-handlers> // <gen:realtime-handlers>
// Boot-time conformance check (dev-seed mode).
assertFeatureConformance(
navigationContainer,
navigationManifest,
{ getHeader: NAVIGATION_SYMBOLS.IGetHeaderUseCase },
ctx,
);
} }