UNPKG

kawkab-frontend

Version:

Kawkab frontend is a frontend library for the Kawkab framework

74 lines (73 loc) 3.57 kB
// -------------------- Initialization -------------------- import { ApiClient } from './core/ApiClient.js'; import { AuthManager } from './core/AuthManager.js'; import { SocketClient } from './core/SocketClient.js'; import { ClientStorage } from './core/ClientStorage.js'; let apiInstance; let authInstance; let socketInstance = null; let storageInstance; let isInitialized = false; function init(config) { if (isInitialized) return; const finalConfig = { storageType: 'localStorage', ...config, }; storageInstance = new ClientStorage(finalConfig.storageType); authInstance = new AuthManager(storageInstance, finalConfig.auth?.tokenKey); apiInstance = new ApiClient({ baseURL: finalConfig.apiBaseUrl, getToken: () => authInstance.getToken(), }); if (finalConfig.socketUrl) { socketInstance = new SocketClient(finalConfig.socketUrl); } isInitialized = true; } export { init, apiInstance as api, authInstance as auth, socketInstance as socket, storageInstance as storage, }; // -------------------- Direct Export -------------------- // Core export { ApiClient } from './core/ApiClient.js'; export { AuthManager } from './core/AuthManager.js'; export { SocketClient } from './core/SocketClient.js'; export { ClientStorage } from './core/ClientStorage.js'; export { BaseRepository } from './core/BaseRepository.js'; export { BaseModel } from './core/BaseModel.js'; export { createStore, defineStore, persistStore } from './core/createStore.js'; // Validation export { rule } from './validation/zod.js'; // Env export { env, setEnv } from './env/env.js'; // Utils export { collect } from './utils/collect.js'; export { Str as str } from './utils/string.js'; export { Time as time } from './utils/time.js'; export { Num as num } from './utils/number.js'; export { formatTranslations } from './utils/translation.js'; export { Cookie as cookie } from './utils/cookie.js'; export { LocalStorage as localStorage } from './utils/localStorage.js'; export { SessionStorage as sessionStorage } from './utils/sessionStorage.js'; // i18n - Translation export { translator, t, changeLanguage, getCurrentLanguage, getLanguageDirection, isRTL, isLTR, } from './utils/translator.js'; export { translate, getI18nInstance, setCurrentLanguage, detectLanguageFromCookies, detectLanguageFromHeader, initLanguageFromRequest, hydrateLanguage, updateDocumentLanguage, initI18n, getI18nDebugInfo, onLanguageChange, } from './utils/i18n.js'; // Hooks export { useApi } from './hooks/useApi.js'; export { useAuth } from './hooks/useAuth.js'; export { useSocket } from './hooks/useSocket.js'; export { useForm } from './hooks/useForm.js'; export { useRouteParams, useQuery } from './hooks/useRouter.js'; export { useTranslation } from './hooks/useTranslation.js'; export { useCookie } from './hooks/useCookie.js'; export { useLocalStorage } from './hooks/useLocalStorage.js'; export { useSessionStorage } from './hooks/useSessionStorage.js'; // Components export { TranslationProvider } from './components/TranslationProvider.js'; export { Meta } from './components/meta/Meta.js'; export { Links } from './components/meta/Links.js'; export { Scripts } from './components/meta/Scripts.js'; export { Kawkab } from './components/Kawkab.js'; export { Image } from './components/Image.js'; // React Router export { Outlet, Link, NavLink, Form, ScrollRestoration, useNavigate, useNavigation, useParams, useLocation, useFetcher, useLoaderData, useActionData, isRouteErrorResponse, redirect, } from 'react-router-dom';