feat(marketing-pages): conformance manifest + self-asserting bind-production

This commit is contained in:
2026-05-13 00:10:29 +02:00
parent 7953a44203
commit 5fa7de48d8
3 changed files with 31 additions and 0 deletions

View File

@@ -6,8 +6,10 @@ import {
type ILogger,
} from "@repo/core-shared/instrumentation";
import type { BindProductionContext } from "@repo/core-shared/di";
import { assertFeatureConformance } from "@repo/core-shared/conformance";
import { marketingPagesContainer } from "./container";
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
import { marketingPagesManifest } from "../feature.manifest";
import { PagesRepository } from "../infrastructure/repositories/pages.repository";
import { SiteSettingsRepository } from "../infrastructure/repositories/site-settings.repository";
import { getSiteSettingsUseCase } from "../application/use-cases/get-site-settings.use-case";
@@ -172,4 +174,15 @@ export function bindProductionMarketingPages(ctx: BindProductionContext): void {
void realtime;
void realtimeRegistry;
// <gen:realtime-handlers>
// Boot-time conformance check.
assertFeatureConformance(
marketingPagesContainer,
marketingPagesManifest,
{
getPageBySlug: MARKETING_PAGES_SYMBOLS.IGetPageBySlugUseCase,
getSiteSettings: MARKETING_PAGES_SYMBOLS.IGetSiteSettingsUseCase,
},
ctx,
);
}

View File

@@ -0,0 +1,17 @@
import { defineFeature } from "@repo/core-shared/conformance";
/**
* The marketing-pages feature's conformance manifest.
*/
export const marketingPagesManifest = defineFeature({
name: "marketing-pages",
requiredCores: [],
useCases: {
getPageBySlug: { mutates: false, audits: [], publishes: [], consumes: [] },
getSiteSettings: { mutates: false, audits: [], publishes: [], consumes: [] },
},
realtimeChannels: [],
jobs: [],
} as const);
export type MarketingPagesManifest = typeof marketingPagesManifest;

View File

@@ -26,3 +26,4 @@ export type { IGetSiteSettingsController } from "./interface-adapters/controller
// <gen:events>
// <gen:realtime-channels>
export { marketingPagesManifest, type MarketingPagesManifest } from "./feature.manifest";