Skip to content

0.80.0

Choose a tag to compare

@b10x-bot b10x-bot released this 01 Nov 12:27
· 210 commits to main since this release
dc60f45

HTTP-bound inputs and short names in generated types, and input-type rules in Entity Runtime.
1 added, 3 fixed.

Changed

  • ess generate types takes --http <binding> (and --refines), compiled as ess generate --kind openapi --http compiles it (#656). Under it each <command>.input is the request body the bound OpenAPI document publishes, without the fields its route carries in the path, so the Rust, Go and TypeScript types decode that body; a command whose route publishes no body (encoded query, or every field in the path) has no input root: --root <command>.input is refused as unpublished_body naming the command and why, and --all-commands leaves it out. Responses and view rows are unchanged, and without --http every generated file keeps its bytes.
  • ess generate types --names short combines with --all-commands and --all-views (#409): a command's input or response and a view's row are named by their owner's last segment and the member, demo.notes.Create.input as CreateInput and demo.notes.ByOwner.row as ByOwnerRow, where every input shortened to Input and every row to Row and two commands or views were refused as short_name_collision. Declared type and event short names are unchanged, and two commands of one name in two domains are still refused, naming both.
  • Entity Runtime lowering no longer drops the invariants: and prefix: of a command input's type unless every accepting branch stores the input in a field of that type: an update holds them as operation preconditions over $args.input.<field>, lowered as a guard is, so an ordering over a Timestamp becomes before/after; a creation, which has no precondition in entity-core, and an ordering over text, which entity-core cannot decide, are refused as InputInvariantUnsupported naming the input.
  • A when: guard on the identity input of a row a branch is sent for, below a non-creating unknown_instance: or on the subject the branch acts on, is decided on the identity of the row the scenario arranges, a compound guard by its identity parts: the row's creator is steered onto an identity that keeps the branch, and where none does the branch is refused as ESS-SYNTH-003 naming the guard, where the scenario was sent a row of another identity and the target answered another branch. A related row's boundary run that would create a second row under the identity such a guard steers it onto gives way to the next branch answering there, where the whole scenario was refused as ESS-SYNTH-001. A boundary run that sends such an identity input another value, or after a deletes: branch removed the row, is sent a row of that identity, or is refused naming the guard and not sent, where it was sent an identity no row carries and the target answered unknown (#645, #693).

Every change: CHANGELOG.md § 0.80.0