kawkab-frontend
Version:
Kawkab frontend is a frontend library for the Kawkab framework
74 lines (73 loc) • 3.57 kB
JavaScript
// -------------------- 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';