/
vshmidt
/
label-studio
Обзор
Документация
Войти
/
vshmidt
/
label-studio
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
web/libs/core/src/lib/api-provider/api-instance.ts
71 строка
2 KB
bmartel
chore: FIT-772: [FE] Refactor API Provider to avoid problematic imports (#8620)
10 окт 2025, 19:12
Не верифицирован
10 окт 2025, 19:12
55aafeb
Код
Авторство
О чём код?
import { APIProxy } from "../api-proxy"; import type { ApiProviderConfig } from "./types"; let apiInstance: APIProxy<Record<string, unknown>> | null = null; /** * Creates and initializes the API instance with the provided configuration. * This should be called once at application startup. * * @param config - Configuration for the API instance * @returns The initialized API instance */ export function createApiInstance(config: ApiProviderConfig): APIProxy<Record<string, unknown>> { if (apiInstance) { console.warn("API instance already exists. Returning existing instance."); return apiInstance; } apiInstance = new APIProxy({ gateway: config.gateway, endpoints: config.endpoints, commonHeaders: config.commonHeaders, onRequestFinished: config.onRequestFinished, alwaysExpectJSON: config.alwaysExpectJSON, sharedParams: config.sharedParams, mockDelay: config.mockDelay, mockDisabled: config.mockDisabled, }); return apiInstance; } /** * Gets the current API instance. * Throws an error if the instance has not been initialized. * * @returns The API instance * @throws {Error} If API instance is not initialized */ export function getApiInstance(): APIProxy<Record<string, unknown>> { if (!apiInstance) { throw new Error("API instance not initialized. Call createApiInstance first."); } return apiInstance; } /** * Resets the API instance (useful for testing). * This should not be used in production code. */ export function resetApiInstance(): void { apiInstance = null; } /** * Export singleton proxy that lazily gets the API instance. * This maintains backward compatibility with direct API imports. */ export const API = new Proxy({} as APIProxy<Record<string, unknown>>, { get(_target, prop) { const instance = getApiInstance(); const value = instance[prop as keyof APIProxy<Record<string, unknown>>]; // Bind methods to the instance if (typeof value === "function") { return value.bind(instance); } return value; }, });