@gencow/client
v0.2.5
Published
Framework-agnostic Gencow browser client — defs, auth, realtime, procedure RPC
Readme
@gencow/client
Framework-agnostic Gencow browser client: typed query/mutation definitions, auth, WebSocket realtime, and procedure RPC wire codec.
Release policy: Keep
versionin sync with@gencow/react. Publish client and react together on every release (same semver).
No React peer dependency. For GencowProvider, useQuery, useMutation, and useAuth, use @gencow/react (depends on this package).
Install
better-auth is a required dependency (auth-types and better-auth-bridge import better-auth/client at the top level). It is installed automatically with @gencow/client.
npm i @gencow/clientUsage
defineQuery, defineProcedureQuery, and defineMutation are emitted into gencow/api.ts by codegen — do not hand-write those defs in app code.
// lib/auth.ts — app code
import { createAuthClient } from "@gencow/client";
export const auth = createAuthClient("https://api.example.com");
// gencow/api.ts — generated by Gencow CLI (imports define* from @gencow/client)
import { api } from "./gencow/api.js";
// Non-React: call through the generated def + auth strategy
const result = await api.tasks.list._fetch("https://api.example.com", auth.strategy, {});React apps still use @gencow/react hooks with the same generated api object: useQuery(api.tasks.list).
Procedure RPC (server / codegen)
import { ProcedureRpcHandler, ProcedureRpcLinkCodec } from "@gencow/client/procedure-rpc";SSR / RSC
Next.js apps use useServerQuery from @gencow/client/next (cookie-forwarding SSR helper).
Source layout (copied from @gencow/react, minus provider/hooks)
| Module | Role |
|--------|------|
| types.ts, definitions.ts, procedure-definitions.ts | Query/mutation defs |
| auth-*.ts, better-auth-bridge.ts, lazy-proxy.ts, auth-client.ts | Auth client (no useAuth) |
| realtime.ts | WebSocket client |
| query-anonymous.ts, query-state.ts | Shared query semantics |
| adapters/procedure-rpc/ | Procedure wire codec |
Stays in @gencow/react only: context.tsx, use-query.tsx, use-realtime-channel.tsx, hook exports in index.tsx.
Subpath exports
| Export | Purpose |
|--------|---------|
| @gencow/client | Main client surface |
| @gencow/client/next | Next.js server helpers (useServerQuery, getGencowServerAuth) |
| @gencow/client/procedure-rpc | Procedure wire codec + handler |
Related
@gencow/react— React hooks and provider- Package split spec
