JavaScript and TypeScript

@raquery/query owns the framework-neutral client API.

Two authoring forms

Use the relational builders when composition is the point:

const query = limit(
  project(
    where(relation("products"), "department == 'outdoor'"),
    ["name", "price"]
  ),
  10
);

Use the compact form for a small single-source query:

const query = {
  source: "products",
  select: ["name", "price"],
  where: "department == 'outdoor'",
  limit: 10,
};

Both forms lower to the same canonical relational AST.

Core capabilities

The package declarations expose discriminated AST and expression types so TypeScript consumers can inspect or transform queries safely.