@karpo.dev/sdk-core
v0.4.0
Published
Transport-agnostic Karpo client: local replica, queries, mutations, outbox, sync.
Downloads
459
Readme
@karpo.dev/sdk-core
The transport-agnostic Karpo client: the local SQLite replica, the query and
watch layer, the outbox, the sync loop, and the auth session. Everything
environmental — opening a database, fetch, clocks, id generation — arrives
through a Platform seam, which is what lets the same core run in a browser
worker, in Node, and in tests without behaving differently.
npm install @karpo.dev/sdk-coreApplications normally install a runtime package instead — @karpo.dev/sdk-web
in the browser — and get this one as a dependency.
Entry points
| Import | What it gives you |
| --- | --- |
| @karpo.dev/sdk-core | createCoreClient, the runtime interfaces, the query layer, sync and outbox types |
| @karpo.dev/sdk-core/node | createNodeClient / createNodePlatform over Node's built-in node:sqlite |
| @karpo.dev/sdk-core/testing | The in-memory fixture and transport stub the suites drive |
Usage
import { createNodeClient } from "@karpo.dev/sdk-core/node";
import schema from "./karpo/generated/schema.json";
const karpo = await createNodeClient({
schema,
user: "u01",
dataDir: ".karpo/replica",
target: "dev",
});
await karpo.runtime.insert("workspaces", "todos", {
containerId: "ws-demo",
title: "Write the README",
});
// Re-runs after any committed transaction touching the table.
const stop = karpo.runtime.watchTables(["workspaces.todos"], () => {
void karpo.runtime.selectSql("select * from todos", []).then(render);
});Reads are local and synchronous-fast; writes commit locally, enter the outbox,
and push in the background, so the client works offline and converges when the
connection returns. selectSql rejects anything that is not a single SELECT —
it is the seam the typed query layer compiles onto.
Documentation
- Queries: https://karpo.dev/queries
- Sync: https://karpo.dev/sync
- Transactions: https://karpo.dev/transactions
- Source: https://github.com/Chirich-GmbH/karpo-core (
packages/sdk-core)
