Subscriptions
Graphql-js expects subscription fields to return an AsyncIterable
. Grats enforces this pattern by requiring that subscription fields return an AsyncIterable<T>
. Beyond that, there is nothing special about subscriptions in Grats.
Example
- TypeScript
- GraphQL
import { Int } from "grats";
/** @gqlType */
type Subscription = unknown;
/** @gqlField */
export async function* countdown(_: Subscription): AsyncIterable<Int> {
for (let i = 10; i >= 0; i--) {
await sleep(1);
yield i;
}
}
function sleep(s: number) {
return new Promise((resolve) => setTimeout(resolve, s * 1000));
}
type Subscription {
countdown: Int
}
Working Example
See our Yoga Example Project for a working example of subscriptions in Grats.