You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@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.