nostrbasedocs
Start building
API reference
.md

Read the richer queries guide. Signatures below come from the published SDK declarations. Access SDK services through db; use their constructors only when integrating at a lower level.

QueryOperator

type QueryOperator =
  | "eq"
  | "neq"
  | "in"
  | "gt"
  | "gte"
  | "lt"
  | "lte"
  | "is"
  | "textSearch"
  | "contains"
  | "containedBy"
  | "overlaps"
  | "like"
  | "ilike";

FilterOperator

type FilterOperator = QueryOperator | "cs" | "cd" | "ov";

QueryField

type QueryField<T> = Keys<T> | `${JsonRoot<T>}->${string}`;

QueryFieldValue

type QueryFieldValue<T, K extends string> = K extends keyof T
  ? T[K]
  : K extends `${infer Root}->${infer Rest}`
    ? Root extends keyof T
      ? Rest extends `>${string}`
        ? string | null | undefined
        : JsonPathValue<T[Root], Rest>
      : unknown
    : unknown;

DeepPartial

type DeepPartial<T> = T extends readonly (infer V)[]
  ? readonly DeepPartial<V>[]
  : T extends object
    ? {
        [K in keyof T]?: DeepPartial<T[K]>;
      }
    : T;

FilterValue

type FilterValue<T, O extends FilterOperator> = O extends "in"
  ? readonly T[]
  : O extends "is"
    ? null | boolean
    : O extends "like" | "ilike" | "textSearch"
      ? string
      : O extends "contains" | "containedBy" | "cs" | "cd"
        ? DeepPartial<T>
        : O extends "overlaps" | "ov"
          ? NonNullable<T> extends readonly unknown[]
            ? NonNullable<T>
            : unknown extends T
              ? readonly unknown[]
              : never
          : T;

Supporting declarations

These types appear in public signatures but are not package exports.

PredicateOperator

type PredicateOperator = QueryOperator | "and" | "or" | "not";

Predicate

interface Predicate {
  field: string;
  op: PredicateOperator;
  value: unknown;
}

Keys

type Keys<T> = keyof T & string;

JsonRoot

type JsonRoot<T> = {
  [K in Keys<T>]: NonNullable<T[K]> extends object ? K : never;
}[Keys<T>];

Child

type Child<T, K extends string> = K extends keyof NonNullable<T>
  ? NonNullable<T>[K]
  : NonNullable<T> extends readonly (infer V)[]
    ? K extends `${number}`
      ? V
      : unknown
    : unknown;

JsonPathValue

type JsonPathValue<T, P extends string> = P extends `${infer K}->${infer Rest}`
  ? Rest extends `>${string}`
    ? string | null | undefined
    : JsonPathValue<Child<T, K>, Rest>
  : Child<T, P> | undefined;

Search guides, API methods, and protocols.