FormidableLabs / groqd

A schema-unaware, runtime and type-safe query builder for GROQ.
https://commerce.nearform.com/open-source/groqd
MIT License
230 stars 16 forks source link

Export types #287

Open maxijonson opened 6 months ago

maxijonson commented 6 months ago

Is there an existing issue for this?

Code of Conduct

Feature Request

Whenever I need a type from groqd, I often need to either copy it from the declarations file myself or make an arbitrary query to extract it's type:

// src/utils/groqd.types.ts
// copied from index.d.ts
export type WithAssetOption =
  | "base"
  | "dimensions"
  | "location"
  | "lqip"
  | "palette"
  | "isOpaque"
  | "hasAlpha"
  | "blurHash";

const unknownArrayQuery = q("").filter();
export type UnknownArrayQuery = typeof unknownArrayQuery;

const entityQuery = q("").filter().slice(0);
export type EntityQuery = typeof entityQuery;

It would be nice if the library exported its types, not only to make it simpler to build wrappers around it, but also to make sure that we don't end up with outdated types on our end after updating groqd.

Currently, these are the only things that can be imported:

import {
  q,
  z,
  sanityImage,
  makeSafeQueryRunner,
  nullToUndefined,
  pipe, // Not sure what this is, it's not documented anywhere
  type BaseQuery,
  type GroqdParseError,
  type InferType,
  type Selection,
  type TypeFromSelection,
} from "groqd";
multiplehats commented 5 months ago

+1

I need type BaseType and ButFirst among a few others