Skip to content

Latest commit

 

History

History
102 lines (74 loc) · 2.42 KB

File metadata and controls

102 lines (74 loc) · 2.42 KB

Getting Started

Prerequisites

  • Node.js ≥ 18
  • npm ≥ 9

Install

npm install @devraj-labs/api-kit

Setup — 3 steps

1 — Pick a storage

api-kit does not store tokens itself. You pass a TokenStorage implementation that fits your platform.

Platform Recommended
Browser HttpOnly cookies via your server — see storage.md
React Native @devraj-labs/rn-storage-kitSecureStorageAdapter — see storage.md
Node.js script MemoryTokenStorage (built-in)

2 — Initialise the singleton once

Call ApiClient.getInstance(config) once, at your app's entry point. Every subsequent call returns the same instance with no config required.

Browser

import { ApiClient }          from "@devraj-labs/api-kit";
import { CookieTokenStorage }  from "./storage/cookieTokenStorage";

ApiClient.getInstance({
  baseURL: "https://api.example.com",
  storage: new CookieTokenStorage(),
  hooks: {
    onAuthFailure() { window.location.href = "/login"; },
  },
});

React Native

import { ApiClient }            from "@devraj-labs/api-kit";
import { rnSecureTokenStorage } from "./storage/tokenStorage"; // SecureStorageAdapter bridge

ApiClient.getInstance({
  baseURL: "https://api.example.com",
  storage: rnSecureTokenStorage,
  hooks: {
    onAuthFailure() {
      navigationRef.current?.reset({ index: 0, routes: [{ name: "Login" }] });
    },
  },
});

Node.js

import { ApiClient, MemoryTokenStorage } from "@devraj-labs/api-kit";

ApiClient.getInstance({
  baseURL: "http://localhost:4000",
  storage: new MemoryTokenStorage(),
});

3 — Use it anywhere

import { ApiClient } from "@devraj-labs/api-kit";

const client = ApiClient.getInstance(); // no config — returns the existing instance

const { data } = await client.get<User>("/api/me");
await client.post("/api/orders", { itemId: 42 });

After login — store the tokens

api-kit doesn't intercept your login call. After your login request resolves, pass the tokens to storage:

const { data } = await client.post<{
  accessToken: string;
  refreshToken: string;
  accessTokenExpiresAt: number;
}>("/auth/login", { username, password });

await storage.setTokens(data);
// All subsequent requests are now authenticated automatically

Next: Configuration Reference