groqd
v0.15.11
Published
[![GROQD — Formidable, We build the modern web](https://raw.githubusercontent.com/FormidableLabs/groqd/main/groqd-Hero.png)](https://formidable.com/open-source/groqd)
Downloads
38,995
Readme
Check out the official documentation.
groqd
is a schema-unaware, runtime-safe query builder for GROQ. The goal of groqd
is to give you (most of) the flexibility of GROQ, with the runtime/type safety of Zod and TypeScript.
groqd
works by accepting a series of GROQ operations, and generating a query to be used by GROQ and a Zod schema to be used for parsing the associated GROQ response.
An illustrative example:
import { q } from "groqd";
// Get all of the Pokemon types, and the Pokemon associated to each type.
const { query, schema } = q("*")
.filter("_type == 'poketype'")
.grab({
name: q.string(),
pokemons: q("*")
.filter("_type == 'pokemon' && references(^._id)")
.grab({ name: q.string() }),
});
// Use the schema and the query as you see fit, for example:
const response = schema.parse(await sanityClient.fetch(query));
// At this point, response has a type of:
// { name: string, pokemons: { name: string }[] }[]
// 👆👆