v1.0.0 · zero dependencies

Build the query.
Not the plumbing.

@qubeejs/core turns a fluent, typed chain into whatever query string your backend speaks — across eighteen of them — and parses the page that comes back. It performs no I/O.

$ npm i @qubeejs/core

Agnostic by construction

No Angular, no React, no RxJS, no Signals. Plain TypeScript that returns a URI and parses a body.

2.5 kB gzipped

Import one driver and the other seventeen tree-shake out. Zero runtime dependencies, ever.

Fluent, chainable, typed

Filters, operators, sorting, field selection, includes, embeds and pagination in one chain.

Bring your own reactivity

QubeeStore speaks the useSyncExternalStore contract — each adapter supplies its own.

One chain in, a URI out

Pick a driver, describe the query, call generateUri(). Every driver speaks its own dialect of filters, sorts and pagination — the builder API stays identical.

importmingzip
STRAPI_DRIVER6.5 kB2.5 kB
DRIVERS (all 18)49 kB9.5 kB
import { createQubee, STRAPI_DRIVER, SortEnum } from '@qubeejs/core';

const { builder, paginator } = createQubee({ driver: STRAPI_DRIVER });

const uri = builder
  .setResource('articles')
  .addFilter('status', 'published')
  .addSort('createdAt', SortEnum.DESC)
  .setLimit(25)
  .generateUri();

// → /articles?filters[status][$eq]=published
//   &sort[0]=createdAt:desc
//   &pagination[page]=1&pagination[pageSize]=25

Eighteen backends, one builder

Request and response strategies, capability-checked.