Pre-alpha. API may change between releases.
Auth for SvelteKit. Email+OTP + optional passkeys.
"Anahtar" = key (Turkish)
onSendOTP callbackpnpm add @mrgnw/anahtar
Create your auth instance:
// src/lib/server/auth.ts
import { createAuth } from "@mrgnw/anahtar";
import { sqliteAdapter } from "@mrgnw/anahtar/sqlite";
import Database from "better-sqlite3";
const db = new Database("data/app.db");
export const auth = createAuth({
db: sqliteAdapter(db),
onSendOTP: async (email, code) => {
console.log(`[dev] OTP for ${email}: ${code}`);
},
});
Wire into SvelteKit:
// src/hooks.server.ts
import { auth } from "$lib/server/auth";
export const handle = auth.handle;
// src/routes/api/auth/[...path]/+server.ts
import { auth } from "$lib/server/auth";
export const { GET, POST } = auth.handlers;
Optional UI component:
<script>
import { AuthFlow } from '@mrgnw/anahtar/components';
import { goto } from '$app/navigation';
</script>
<AuthFlow onSuccess={() => goto('/')} />
68 tests: 46 unit (node) + 22 component (happy-dom).
pnpm test:unit
pnpm test:browser
pnpm test