Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
SqliteApi
✓ import { SqliteApi } from 'kysely-zod-sqlite'
✗ import SqliteApi from 'kysely-zod-sqlite'
Named export, not default. Use destructured import.
BetterSqlite3Driver
✓ import { BetterSqlite3Driver } from 'kysely-zod-sqlite/driver/sqlite-driver'
✗ import { BetterSqlite3Driver } from 'kysely-zod-sqlite'
Driver exports are under subpaths, not the main entry.
D1Driver
✓ import { D1Driver } from 'kysely-zod-sqlite/driver/d1-driver'
✗ import D1Driver from 'kysely-zod-sqlite/driver/d1-driver'
Named export, not default. For Cloudflare Workers/Pages.
zJsonObject
✓ import { zJsonObject } from 'kysely-zod-sqlite'
Main entry export, used in Zod schemas.
zRelationOne
✓ import { zRelationOne } from 'kysely-zod-sqlite'
Main entry export for defining relations.
Sets up a local SQLite database with Zod validation, Kysely query builder, and Prisma-like API for CRUD operations.
import { z } from 'zod';
import { SqliteApi, zJsonObject, zJsonSchema, zRelationOne, zBoolean, zDate } from 'kysely-zod-sqlite';
import { BetterSqlite3Driver } from 'kysely-zod-sqlite/driver/sqlite-driver';
import Database from 'better-sqlite3';
const userSchema = z.object({
id: z.string(),
name: z.string(),
email: z.string().optional(),
data: zJsonObject(),
config: zJsonSchema(z.object({ language: z.string() })),
created_at: zDate(),
updated_at: zDate(),
isDelete: zBoolean(),
});
const dbSchema = z.object({ users: userSchema });
type DbSchema = typeof dbSchema;
class MyApi extends SqliteApi<DbSchema> {
get users() { return this.table('users'); }
}
const db = new Database(':memory:');
const driver = new BetterSqlite3Driver(db, {});
const api = new MyApi({
schema: dbSchema,
config: {},
kysely: new Kysely({
dialect: new SqliteDialect({ database: db }),
}),
});
async function main() {
await api.users.create({ data: { id: '1', name: 'Alice', data: {}, config: { language: 'en' }, created_at: new Date(), updated_at: new Date(), isDelete: false } });
const user = await api.users.selectFirst({ where: { name: 'Alice' }, include: {} });
console.log(user);
}
main().catch(console.error);
Errors
Common errors & fixes
Cannot find module 'better-sqlite3'
Missing optional dependency for local driver.
fixInstall better-sqlite3: `npm install better-sqlite3`.
Cannot read properties of undefined (reading 'selectFrom')
Accessing `api.ky` before initializing the Kysely instance.
fixEnsure Kysely is properly passed to the Api constructor via the `kysely` option.
TypeError: Cannot import 'BetterSqlite3Driver' from 'kysely-zod-sqlite'
Importing from the wrong path.
fixUse `import { BetterSqlite3Driver } from 'kysely-zod-sqlite/driver/sqlite-driver'`. Audit
Dependencies
kyselyrequiredpeer dependency for SQL query builder
zodrequiredpeer dependency for schema validation
better-sqlite3optionalrequired for local driver (BetterSqlite3Driver)