@void-snippets/client

Configuration

configure() and getConfiguredInstance() for shared axios instance.

#configure(instance: AxiosInstance): void

Registers a single axios instance that every ResourceService subclass will use. Call this once — at your app's entry point — and every service you create picks it up automatically.

typescript
// main.ts — run this before anything else
import axios from 'axios';
import { configure } from '@void-snippets/client';

const http = axios.create({
  baseURL: import.meta.env.VITE_API_URL,
  headers: { 'Content-Type': 'application/json' },
  timeout: 10_000,
});

// Auth token on every request
http.interceptors.request.use((config) => {
  const token = localStorage.getItem('access_token');
  if (token) config.headers.Authorization = `Bearer ${token}`;
  return config;
});

// Redirect to login on 401
http.interceptors.response.use(
  (res) => res,
  (err) => {
    if (err.response?.status === 401) window.location.href = '/auth/login';
    return Promise.reject(err);
  },
);

configure(http); // done — all services are now wired

Call configure() before any ResourceService subclass is instantiated. If you create a service (e.g. const ContactsApis = new ContactsApiService()) at module scope, configure() must run before that module is imported.