Skip to content

Release v6.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 19:13
f65c4cc

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 readmodels or sink <Name> for graphs at the application root, and store a read model or graph there with a bare sink <Name> line. Everything else keeps using its kind's default sink. (#1182)
  • SemanticCompilation.Sinks, ReadModelSinks and GraphSinks expose 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 PLAY0931 to PLAY0939 for malformed, duplicate, unknown, mismatched, repeated and unused sinks, a sink on a passive read model, and a property named sink whose type differs only in case from a sink, reported by both the C# and TypeScript compilers.
  • Renaming a sink renames every sink line that names it, including read models in other files, and find-references finds them; a property named sink is 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.