@dumbql/core
v1.0.5
Published
Angular GraphQL core — GraphqlService, middleware pipeline, gql tag, pipes, standalone helpers, reactive variables
Maintainers
Readme
Features
GraphqlService— query, mutate, refetch, poll, setEndpoint- Middleware pipeline — auth, logging, devtools, cache, custom
- Standalone functions —
query(),mutate(),refetch(),poll()(injection‑free) - Result helpers —
isSuccess,isError,unwrap,unwrapOrThrow,mapResult gqltag —parse()-basedDocumentNodecreationTypedDocumentNode<TResult, TVars>— phantom‑typed documents- Angular pipes —
GqlPipe,GraphqlDataPipe,GraphqlErrorPipe, and more - Reactive variables —
makeVar<T>(),ReactiveVar<T> - Client directive —
@clientfield resolution - Router integration —
guardedRoute(),provideDumbqlRouter() - Auto‑refetch —
mutationCachePolicy(),provideAutoRefetch() - DevTools —
DevtoolsService,devtoolsMiddleware - Schema service —
SchemaService,provideSchemaFetch() - Request batching, deduplication, retry
- Plugin system —
DumbqlPluginwithonInit+getMiddleware ng addschematics — interactive setup
Install
ng add @dumbql/core
# or
npm install @dumbql/coreQuick Start
import { provideDumbql } from '@dumbql/core';
bootstrapApplication(App, {
providers: [provideDumbql({ endpoint: '/graphql' })],
});import { Component, inject } from '@angular/core';
import { GraphqlService, gql, isSuccess, unwrap } from '@dumbql/core';
@Component({ template: '...' })
class TodosComponent {
private graphql = inject(GraphqlService);
todos$ = this.graphql.query<{ todos: Todo[] }>(
gql`query Todos { todos { id title } }`,
).pipe(
isSuccess(),
unwrap(),
);
}API Overview
| Export | Description |
|--------|-------------|
| GraphqlService | Core service — query, mutate, refetch, poll |
| provideDumbql(config) | Provider for DumbqlConfig |
| DumbqlConfig | Unified config interface |
| gql\…`| Template tag forDocumentNode|
|query(doc, vars?)| Standalone query →QueryHandle|
|mutate(doc, vars?, opts?)| Standalone mutation |
|refetch(handle)| Re‑execute aQueryHandle|
|poll(doc, vars?, interval?)| Polling query |
|isSuccess()/isError()| RxJS operators forGraphQLResult|
|unwrap()/unwrapOrThrow()| Extract data from result |
|mapResult(fn)| Map over success data |
|hasPartialErrors()/getGraphQLErrors()| Error helpers |
|GraphqlEndpoint/provideEndpoint| Multi‑endpoint support |
|makeVar(initial)| Reactive variable |
|cacheMiddleware(policies?)| Query caching + entity merging |
|mutationCachePolicy()| Mutation eviction policy |
|clientDirectiveMiddleware()|@clientfield handling |
|streamingMiddleware()|@defer/@streamsupport |
|provideDumbqlRouter()| Router guard integration |
|guardedRoute(path, guards)| Guarded route config |
|DumbqlQueryDirective| Structural directive with query context |
|DevtoolsService| DevTools extension communication |
|gqlPipe/GraphqlDataPipe/GraphqlErrorPipe` | Angular pipes |
Sub‑packages
| Package | Purpose |
|---------|---------|
| @dumbql/cache | Normalized entity cache |
| @dumbql/middlewares | Auth, retry, offline queue, focus refetch |
| @dumbql/subscriptions | WebSocket subscriptions |
| @dumbql/file-upload | Multipart uploads |
| @dumbql/pagination | Cursor + offset pagination |
| @dumbql/persisted-queries | APQ middleware |
| @dumbql/fragments | Fragment definitions |
| @dumbql/ssr | Server‑side rendering |
| @dumbql/debugging | Debug utilities |
| @dumbql/testing | Mock backend |
| @dumbql/downloader | Schema download (Node.js) |
| @dumbql/codegen | TypeScript codegen |
Dependencies
@angular/common, @angular/core, @dumbql/cache, graphql, rxjs
