2 Commits
Author SHA1 Message Date
zeekayandHanzo Dev f3c6e28a43 a query that cannot be parsed is refused, not held open
Every pass of the top-level scan must consume something. Standing still on
input it does not understand returns no answer, forever, holding the request
open — and this is a public endpoint. Two deliberate breaks of the scan hung
the whole test suite instead of failing it; now they fail it.

Also covers the whitespace GraphQL allows and clients emit: a space before a
field's arguments, and around an alias's colon.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-11 12:51:43 -07:00
zeekayandHanzo Dev 9bf7bae609 answer every field a document asks for, minified or not
parseTopFields split top-level fields on NEWLINES, so a one-line document
parsed as a single field — name taken up to the first paren — and every field
after it was dropped with no error. The explore page asks for its bundle,
factory, tokens, pools and day series in one document; minified, it would have
been answered with the bundle alone. A field now ends where its own arguments
and selection set end, which is the same place whether the client pretty-prints
or not.

Also from reading the live wire: a day's token-denominated value locked was
rendered as currency (two decimals reads a small holding as none), and the
token a row points at was a stub — a client selecting through it saw a token
that had never traded.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-11 11:47:49 -07:00