Repository navigation
Release v6.4.0
A model can now say where a read model or graph is stored. It names logical sinks, and the deployment maps each name to real storage. Existing models keep their meaning: in a read model, sink <Name> is the directive only when <Name> is a declared sink, so a property called sink still compiles as before.
Added
- Named sinks: declare
sink <Name> for readmodelsorsink <Name> for graphsat the application root, and store a read model or graph there with a baresink <Name>line. Everything else keeps using its kind's default sink. (#1182) SemanticCompilation.Sinks,ReadModelSinksandGraphSinksexpose the declared sinks and each read model's and graph's choice. They sit outside the executable model, so adding or changing a sink leaves the ESM bytes and revision unchanged; renderers must include them in hashed render input.- Diagnostics
PLAY0931toPLAY0939for malformed, duplicate, unknown, mismatched, repeated and unused sinks, a sink on a passive read model, and a property namedsinkwhose type differs only in case from a sink, reported by both the C# and TypeScript compilers. - Renaming a sink renames every
sinkline that names it, including read models in other files, andfind-referencesfinds them; a property namedsinkis left alone. - Sink highlighting, hover and completion in the Monaco editor and the VS Code extension, a Sinks documentation page, and named sinks in the Invoicing and Organization samples.