import { BACKEND_API_URL } from '$lib/server/config'; export class ApiClient { private token: string; constructor(token: string) { this.token = token; } private async request(endpoint: string, options: RequestInit = {}): Promise { return fetch(`${BACKEND_API_URL}${endpoint}`, { ...options, headers: { Authorization: `Bearer ${this.token}`, ...options.headers } }); } async get(endpoint: string): Promise { return this.request(endpoint); } async post(endpoint: string, data: unknown): Promise { return this.request(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); } async postForm(endpoint: string, data: Record): Promise { return this.request(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams(data).toString() }); } async postMultipart(endpoint: string, formData: FormData): Promise { return this.request(endpoint, { method: 'POST', body: formData }); } async put(endpoint: string, data: unknown): Promise { return this.request(endpoint, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); } async putMultipart(endpoint: string, formData: FormData) { return this.request(endpoint, { method: 'PUT', body: formData }); } async delete(endpoint: string): Promise { return this.request(endpoint, { method: 'DELETE' }); } async patch(endpoint: string, data: unknown): Promise { return this.request(endpoint, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); } }