@fastbaas/client
v0.1.0-beta.1
Published
Framework-free TypeScript client for FastBaaS APIs.
Readme
@fastbaas/client
Framework-free TypeScript client for FastBaaS. It works in modern browsers, Node.js 18+, tests, and bundlers without React or TanStack Query.
The package is ready to publish but is not published by repository builds.
Its 0.x versions target the matching FastBaaS beta line; breaking client
changes require a new minor version until 1.0.
Install and create a client
bun add @fastbaas/clientimport { createFastBaaSClient } from "@fastbaas/client";
const client = createFastBaaSClient({
baseUrl: "https://baas.example.com/platform",
apiBasePath: "/api",
dashboardBasePath: "/console",
auth: { mode: "bearer", token: () => session.accessToken },
});
const users = await client.users.list({
page: 1,
limit: 20,
sort: ["-created_at"],
filter: { active: true },
});Use auth: { mode: "cookie" } for browser cookies,
auth: { mode: "apiKey", apiKey } for X-Api-Key, or inject a session with
getToken, setTokens, clear, and optional refresh. A request retries only
once after a successful session refresh.
Requests, errors, and cancellation
import { FastBaaSError } from "@fastbaas/client";
try {
const controller = new AbortController();
const status = await client.get("/system/status", {
signal: controller.signal,
headers: { "X-Product": "support-console" },
});
} catch (error) {
if (error instanceof FastBaaSError) {
console.error(error.status, error.code, error.requestId, error.details);
}
}Custom fetch, default headers, upload adapters, API paths, and Dashboard paths
are constructor options. Uploads use standard fetch unless progress is
requested; progress requires an injected adapter because Fetch does not expose
portable upload progress events.
Stable query keys
import { fastBaaSQueryKeys } from "@fastbaas/client";
const key = fastBaaSQueryKeys.collection.list("article", {
page: 1,
filter: { published: true },
});Query-key objects are recursively key-sorted and do not depend on a query library.
Generated types
Built-in API types are generated deterministically from the FastBaaS OpenAPI components by the repository CLI:
bun run --cwd packages/client generate
bun run --cwd packages/client check:generatedImport the complete generated surface from @fastbaas/client/generated.
Applications with dynamic schemas should run fastbaas types generate against
their own schema source and keep those product types next to their application.
