Vanilla
@queryweave/coreThe runtime on its own, with no framework in the dependency graph.
- Runs in
- Any ECMAScript runtime
- Needs
- No framework
pnpm add @queryweave/core @queryweave/browserEvery integration on this page is a binding. None of them re-implements decoding, encoding,
defaults, or transitions — they all drive the same @queryweave/core runtime, and they can all be
removed without changing what a query means.
The path a query takes through the model, stage by stage.
Query model → Query runtime. Query runtime → Adapter. Adapter → Binding. Binding → Your components.
Read that from the left: you can stop after any stage. A server stops at the model. A vanilla client stops at the runtime. A Vue application takes one more step, and that step adds reactivity — nothing else.
@queryweave/coreThe runtime on its own, with no framework in the dependency graph.
pnpm add @queryweave/core @queryweave/browser@queryweave/vueReadonly reactive values and explicit operations, bound to one model.
pnpm add @queryweave/core @queryweave/vue@queryweave/vue-routerA router-backed adapter that keeps path and hash intact.
pnpm add @queryweave/core @queryweave/vue-router@queryweave/nuxtA module plus a request-scoped runtime plugin for server rendering.
pnpm add @queryweave/core @queryweave/vue @queryweave/nuxtOnly what the framework itself requires:
A binding may not add a second way to decode, a different default rule, or its own navigation
policy. If you can observe a behavioral difference between useQueryModel(model) and
createQueryRuntime({ model, adapter }), that is a bug.
The core contracts were designed to be implemented from outside. An adapter is four methods, and a
binding is a thin layer over QueryBinding. See
writing an adapter for the rules, and the
architecture page for the dependency direction to preserve.
Additional framework adapters are on the roadmap as work designed against these contracts rather than as a rewrite of them.