Agnostic by construction
No Angular, no React, no RxJS, no Signals. Plain TypeScript that returns a URI and parses a body.
v1.0.0 · zero dependencies
@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/coreNo Angular, no React, no RxJS, no Signals. Plain TypeScript that returns a URI and parses a body.
Import one driver and the other seventeen tree-shake out. Zero runtime dependencies, ever.
Filters, operators, sorting, field selection, includes, embeds and pagination in one chain.
QubeeStore speaks the useSyncExternalStore contract — each adapter supplies its own.
Pick a driver, describe the query, call generateUri(). Every driver speaks its own dialect of filters, sorts and pagination — the builder API stays identical.
| import | min | gzip |
|---|---|---|
STRAPI_DRIVER | 6.5 kB | 2.5 kB |
DRIVERS (all 18) | 49 kB | 9.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]=25Request and response strategies, capability-checked.