kawkab-frontend
Version:
Kawkab frontend is a frontend library for the Kawkab framework
74 lines (73 loc) • 3.46 kB
JavaScript
// -------------------- Initialization --------------------
import { ApiClient } from './core/ApiClient';
import { AuthManager } from './core/AuthManager';
import { SocketClient } from './core/SocketClient';
import { ClientStorage } from './core/ClientStorage';
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';
export { AuthManager } from './core/AuthManager';
export { SocketClient } from './core/SocketClient';
export { ClientStorage } from './core/ClientStorage';
export { BaseRepository } from './core/BaseRepository';
export { BaseModel } from './core/BaseModel';
export { createStore, defineStore, persistStore } from './core/createStore';
// Validation
export { rule } from './validation/zod';
// Env
export { env, setEnv } from './env/env';
// Utils
export { collect } from './utils/collect';
export { Str as str } from './utils/string';
export { Time as time } from './utils/time';
export { Num as num } from './utils/number';
export { formatTranslations } from './utils/translation';
export { Cookie as cookie } from './utils/cookie';
export { LocalStorage as localStorage } from './utils/localStorage';
export { SessionStorage as sessionStorage } from './utils/sessionStorage';
// i18n - Translation
export { translator, t, changeLanguage, getCurrentLanguage, getLanguageDirection, isRTL, isLTR, } from './utils/translator';
export { translate, getI18nInstance, setCurrentLanguage, detectLanguageFromCookies, detectLanguageFromHeader, initLanguageFromRequest, hydrateLanguage, updateDocumentLanguage, initI18n, getI18nDebugInfo, onLanguageChange, } from './utils/i18n';
// Hooks
export { useApi } from './hooks/useApi';
export { useAuth } from './hooks/useAuth';
export { useSocket } from './hooks/useSocket';
export { useForm } from './hooks/useForm';
export { useRouteParams, useQuery } from './hooks/useRouter';
export { useTranslation } from './hooks/useTranslation';
export { useCookie } from './hooks/useCookie';
export { useLocalStorage } from './hooks/useLocalStorage';
export { useSessionStorage } from './hooks/useSessionStorage';
// Components
export { TranslationProvider } from './components/TranslationProvider';
export { Meta } from './components/meta/Meta';
export { Links } from './components/meta/Links';
export { Scripts } from './components/meta/Scripts';
export { Kawkab } from './components/Kawkab';
export { Image } from './components/Image';
// React Router
export { Outlet, Link, NavLink, Form, ScrollRestoration, useNavigate, useNavigation, useParams, useLocation, useFetcher, useLoaderData, useActionData, isRouteErrorResponse, redirect, } from 'react-router-dom';