kirak

Token management for Kirak backends. api() attaches your session's access token to every call, refreshes it when a call returns 401 (or ahead of expiry when KirakAuthOptions.autoRefresh is on), and keeps the session in the store you supply (the built-in store is in-memory only) - so you never write token-handling code.

Install

dependencies:
  kirak: ^0.1.0

Or, working from inside this repo:

dependencies:
  kirak:
    path: ../kirak

Quickstart

import 'package:kirak/kirak.dart';

final kirak = await createClient('https://your-app.kirak.dev');

await kirak.api('auth.login', params: {'email': 'a@example.com', 'password': 'secret'});
final posts = await kirak.api('posts.fetch');

Every /auth/* response carrying tokens is adopted automatically - auth.login, auth.verify-otp, auth.<provider>.mobile, auth.verify-web-auth. For a session your app obtained some other way (a deep link, a native provider SDK), call kirak.session.adoptSession(AdoptSessionInput(accessToken: ..., refreshToken: ...)) directly.

Storage

kirak's only built-in store is in-memory - it does not persist across process restarts. For a real Flutter app, use kirak_flutter's createKirakFlutterClient instead, which defaults to a real persistent store. Pass your own KirakClientOptions(auth: KirakAuthOptions(storage: ...)) (anything implementing AuthStore) for a server, a CLI, or a custom persistence layer.

Errors

Every call returns a KirakResult<T> (data/error) - it never throws for an HTTP or network failure, so check .error rather than wrapping calls in try/catch.

License

MIT - see LICENSE.

Libraries

kirak