WIR-03 · Le module d’un bounded context n’exporte que son contrat publié
Signal
exports: [WalletRepository, DebitWalletHandler]danswallets.module.ts.- Un autre bounded context qui importe
WalletsModulepour injecter son repository ou l’un de ses handlers.
Pourquoi
Un provider exporté peut être injecté par tout module qui importe celui-ci. Exporter un repository ou un handler ouvre l’intérieur du bounded context aux autres, en contournant son contrat : ils chargent ses aggregates, lancent ses use cases sans passer par sa facade, et le bounded context ne peut plus les changer seul.
Les règles d’import empêchent déjà un autre bounded context d’importer la classe. L’export est la même porte, vue depuis le container.
Exceptions
shared.module.ts exporte les ports techniques partagés (Unit of Work, outbox, horloge) : il n’a pas de contrat à protéger (PLC-02).
Correction
Le module exporte la facade de public, et rien d’autre. Son implémentation vit dans driving/in-process (LAY-04).
@Module({
providers: [
{ ...construct(WalletsFacadeAdapter, [CreditWalletHandler, GetWalletHandler]), provide: WalletsFacade },
],
exports: [WalletsFacade],
})
export class WalletsModule {}Voir aussi
CTX-01 et MAP-01 : un autre bounded context ne passe que par public. PUB-01 documente ce que la facade publie.