import { validateBuiltInModuleContribution } from "../../composition/module-declaration-catalog"; import { createBuiltInToolcraftProductModuleDefinition, type ToolcraftProductModuleDefinition, type ToolcraftProductModuleRecord, } from "../contract/module-definition"; import type { ToolcraftProductModuleContribution } from "../contract/contribution"; type InvalidTestToolcraftProductModuleRecordInput = Pick< ToolcraftProductModuleRecord, "contractVersion" | "id" | "provides" | "requires" > & Partial< Pick< ToolcraftProductModuleRecord, "contributions" | "defaultProviders" | "portRequirements" > >; export function createTestToolcraftProductModuleDefinition( record: Omit, ): ToolcraftProductModuleDefinition { return createBuiltInToolcraftProductModuleDefinition(record, validateBuiltInModuleContribution); } export function createInvalidTestToolcraftProductModuleRecord( record: InvalidTestToolcraftProductModuleRecordInput, ): ToolcraftProductModuleRecord { return { contractVersion: record.contractVersion, contributions: record.contributions ?? [], defaultProviders: record.defaultProviders ?? [], id: record.id, portRequirements: record.portRequirements ?? [], provides: record.provides, requires: record.requires, }; } export function unsafeCastTestOnlyToolcraftProductModuleRecord( record: object, ): ToolcraftProductModuleDefinition { return record as ToolcraftProductModuleDefinition; } export function unsafeCastTestOnlyToolcraftProductModuleContribution( contribution: object, ): ToolcraftProductModuleContribution { return contribution as ToolcraftProductModuleContribution; }