Skip to content

0.17.0 Kulich

Choose a tag to compare

@github-actions github-actions released this 18 Oct 23:49
· 23 commits to master since this release
  • @deletes(type:id:), the second directive that is not Relay's: a mutation
    whose payload carries no id of the record it deletes names the record by
    its type and the variable its key is passed as, as in
    mutation DeleteEntry($id: Int!) @deletes(type: "MediaList", id: $id)
    over DeleteMediaListEntry(id: $id) { deleted }. The plan carries the
    type and the variable, and each call renders the exact key, so no type is
    probed and nothing is ambiguous. The deletion is an edit of the commit, as
    an edge directive's is: the optimistic response carries it, so the row is
    gone in the turn of the call; a refusal reverts it with the layer; the
    server's response, or a payload committed for the mutation through
    commitPayload, makes it. The record is deleted as @deleteRecord
    deletes one, and a record memory does not hold is forgotten in the image
    by its key. The payload does not gate it: any response the commit takes
    makes the edit, where Relay's @deleteRecord waits for a non-null field.
    Both runtimes. The compiler takes the directive off the document before
    Relay's front end and reports at the directive, its type or its variable
    in the host file: on a query, a subscription, a field or a fragment; a
    type the schema lacks, or one that is not an object type, has no key or is
    keyed by several fields; a variable the mutation does not declare, that no
    field passes, that is a list, or whose type is not the key field's. Swift
    format 20, Kotlin format 4: generated code of the format before fails to
    compile at its marker with the message; rebuild with this release's
    compiler. Held by the cases discard-note-n2 and discard-asset-a1 and
    the scripts deletes and deletes-image
    (the decision,
    #50). Declined: a client
    field the optimistic payload fills, which the server's response never
    carries, so the server's commit would not delete; and a directive that
    sets a field, which is local state written by the compiler. A field on a
    record the payload does not reach is written by commitPayload after the
    mutation.
  • The site, the articles, the principles, the vision, and the recipes are
    written in plain sentences. The claims, the numbers, the code samples,
    and the decision records are unchanged.
  • docs/recipes/accounts.md: a sign-out, a switch of accounts, and what
    the disk keeps. Where the account lives, in the image's path or its
    version; the order of a sign-out, end the environment, remove the
    image, forget the credential last, and what a crash after each step
    leaves; what a held view, handle, lens, fetch, mutation and subscription
    see after the end; the walkthrough an adopter asked for, A signs out, B
    signs in, relaunch offline, with the persistence and lifetime tests that
    prove each step; and the three ways to keep data off the disk,
    transient, the protection class and no image. It quotes both GitHub
    samples' sign-out. The README, the docs index, the terminology's session
    and image entries, the Relay porting table and the site link it.
  • Eleven articles under docs/articles/, and an Articles section on the
    site: the design argued at length, one essay per choice that shapes the
    library, with its evidence and the alternatives it refused. Relay
    without the read side; what Meta built, and what you can download;
    materialization is the bill; the first frame has the data; two runtimes,
    no bridge; a compiler, not a configuration; how a fast store stays
    honest; twelve words, and why the list is closed; Baton beside fate; the
    small lies a client tells; settled stays settled. Every number in them
    is one BENCHMARKS.md already holds, with its machine and date, or is
    attributed to the public source it came from.
  • docs/recipes/outside-views.md: how code that is not a view, a
    service or a background refresh, fetches, reads once through a
    storeOnly handle, keeps data with a retention, and writes, in Swift
    and Kotlin, and why fetch returns no data. The README links it, and
    the Relay porting table maps fetchQuery to it. OutsideViewsTests
    prove it on both runtimes.
  • The Relay harvest runs its @stream cases. The five normalizer tests
    and the two availability checks of RelayResponseNormalizer-test.js
    and DataChecker-test.js that batonc rejected before 0.16.0 now
    compile, and every one passes on both runtimes. The three
    @stream_connection reader tests read a fragment at a record, which
    the harvest does not express, and stay not-ingested.