diff --git a/packages/marketing-pages/src/di/bind-production.ts b/packages/marketing-pages/src/di/bind-production.ts index de21601..71ae7b4 100644 --- a/packages/marketing-pages/src/di/bind-production.ts +++ b/packages/marketing-pages/src/di/bind-production.ts @@ -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; // + + // Boot-time conformance check. + assertFeatureConformance( + marketingPagesContainer, + marketingPagesManifest, + { + getPageBySlug: MARKETING_PAGES_SYMBOLS.IGetPageBySlugUseCase, + getSiteSettings: MARKETING_PAGES_SYMBOLS.IGetSiteSettingsUseCase, + }, + ctx, + ); } diff --git a/packages/marketing-pages/src/feature.manifest.ts b/packages/marketing-pages/src/feature.manifest.ts new file mode 100644 index 0000000..8c0c01e --- /dev/null +++ b/packages/marketing-pages/src/feature.manifest.ts @@ -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; diff --git a/packages/marketing-pages/src/index.ts b/packages/marketing-pages/src/index.ts index f821700..5404b98 100644 --- a/packages/marketing-pages/src/index.ts +++ b/packages/marketing-pages/src/index.ts @@ -26,3 +26,4 @@ export type { IGetSiteSettingsController } from "./interface-adapters/controller // // +export { marketingPagesManifest, type MarketingPagesManifest } from "./feature.manifest";