@exyconn/common 2.1.0 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +969 -261
- package/dist/client/hooks/index.d.mts +1042 -0
- package/dist/client/hooks/index.d.ts +1042 -0
- package/dist/client/hooks/index.js +2276 -0
- package/dist/client/hooks/index.js.map +1 -0
- package/dist/client/hooks/index.mjs +2217 -0
- package/dist/client/hooks/index.mjs.map +1 -0
- package/dist/client/http/index.d.mts +217 -49
- package/dist/client/http/index.d.ts +217 -49
- package/dist/client/http/index.js +473 -94
- package/dist/client/http/index.js.map +1 -1
- package/dist/client/http/index.mjs +441 -84
- package/dist/client/http/index.mjs.map +1 -1
- package/dist/client/index.d.mts +6 -4
- package/dist/client/index.d.ts +6 -4
- package/dist/client/index.js +481 -319
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +449 -290
- package/dist/client/index.mjs.map +1 -1
- package/dist/client/utils/index.d.mts +3 -279
- package/dist/client/utils/index.d.ts +3 -279
- package/dist/client/web/index.d.mts +1461 -0
- package/dist/client/web/index.d.ts +1461 -0
- package/dist/client/web/index.js +2681 -0
- package/dist/client/web/index.js.map +1 -0
- package/dist/client/web/index.mjs +2618 -0
- package/dist/client/web/index.mjs.map +1 -0
- package/dist/data/brand-identity.d.mts +149 -0
- package/dist/data/brand-identity.d.ts +149 -0
- package/dist/data/brand-identity.js +235 -0
- package/dist/data/brand-identity.js.map +1 -0
- package/dist/data/brand-identity.mjs +220 -0
- package/dist/data/brand-identity.mjs.map +1 -0
- package/dist/data/countries.d.mts +61 -0
- package/dist/data/countries.d.ts +61 -0
- package/dist/data/countries.js +987 -0
- package/dist/data/countries.js.map +1 -0
- package/dist/data/countries.mjs +971 -0
- package/dist/data/countries.mjs.map +1 -0
- package/dist/data/currencies.d.mts +19 -0
- package/dist/data/currencies.d.ts +19 -0
- package/dist/data/currencies.js +162 -0
- package/dist/data/currencies.js.map +1 -0
- package/dist/data/currencies.mjs +153 -0
- package/dist/data/currencies.mjs.map +1 -0
- package/dist/data/index.d.mts +7 -0
- package/dist/data/index.d.ts +7 -0
- package/dist/data/index.js +2087 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/index.mjs +1948 -0
- package/dist/data/index.mjs.map +1 -0
- package/dist/data/phone-codes.d.mts +15 -0
- package/dist/data/phone-codes.d.ts +15 -0
- package/dist/data/phone-codes.js +219 -0
- package/dist/data/phone-codes.js.map +1 -0
- package/dist/data/phone-codes.mjs +211 -0
- package/dist/data/phone-codes.mjs.map +1 -0
- package/dist/data/regex.d.mts +287 -0
- package/dist/data/regex.d.ts +287 -0
- package/dist/data/regex.js +306 -0
- package/dist/data/regex.js.map +1 -0
- package/dist/data/regex.mjs +208 -0
- package/dist/data/regex.mjs.map +1 -0
- package/dist/data/timezones.d.mts +16 -0
- package/dist/data/timezones.d.ts +16 -0
- package/dist/data/timezones.js +98 -0
- package/dist/data/timezones.js.map +1 -0
- package/dist/data/timezones.mjs +89 -0
- package/dist/data/timezones.mjs.map +1 -0
- package/dist/index-BZf42T3R.d.mts +305 -0
- package/dist/index-CF0D8PGE.d.ts +305 -0
- package/dist/index-Ckhm_HaX.d.mts +138 -0
- package/dist/index-DKn4raO7.d.ts +222 -0
- package/dist/index-NS8dS0p9.d.mts +222 -0
- package/dist/index-Nqm5_lwT.d.ts +188 -0
- package/dist/index-br6POSyA.d.ts +138 -0
- package/dist/index-jBi3V6e5.d.mts +188 -0
- package/dist/index.d.mts +21 -580
- package/dist/index.d.ts +21 -580
- package/dist/index.js +1839 -347
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1850 -359
- package/dist/index.mjs.map +1 -1
- package/dist/packageCheck-B_qfsD6R.d.ts +280 -0
- package/dist/packageCheck-C2_FT_Rl.d.mts +280 -0
- package/dist/server/configs/index.d.mts +602 -0
- package/dist/server/configs/index.d.ts +602 -0
- package/dist/server/configs/index.js +707 -0
- package/dist/server/configs/index.js.map +1 -0
- package/dist/server/configs/index.mjs +665 -0
- package/dist/server/configs/index.mjs.map +1 -0
- package/dist/server/index.d.mts +4 -1
- package/dist/server/index.d.ts +4 -1
- package/dist/server/index.js +1330 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1286 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middleware/index.d.mts +283 -2
- package/dist/server/middleware/index.d.ts +283 -2
- package/dist/server/middleware/index.js +761 -0
- package/dist/server/middleware/index.js.map +1 -1
- package/dist/server/middleware/index.mjs +751 -1
- package/dist/server/middleware/index.mjs.map +1 -1
- package/dist/shared/config/index.d.mts +40 -0
- package/dist/shared/config/index.d.ts +40 -0
- package/dist/shared/config/index.js +58 -0
- package/dist/shared/config/index.js.map +1 -0
- package/dist/shared/config/index.mjs +51 -0
- package/dist/shared/config/index.mjs.map +1 -0
- package/dist/shared/constants/index.d.mts +593 -0
- package/dist/shared/constants/index.d.ts +593 -0
- package/dist/shared/constants/index.js +391 -0
- package/dist/shared/constants/index.js.map +1 -0
- package/dist/shared/constants/index.mjs +360 -0
- package/dist/shared/constants/index.mjs.map +1 -0
- package/dist/shared/index.d.mts +5 -1
- package/dist/shared/index.d.ts +5 -1
- package/dist/shared/types/index.d.mts +140 -0
- package/dist/shared/types/index.d.ts +140 -0
- package/dist/shared/types/index.js +4 -0
- package/dist/shared/types/index.js.map +1 -0
- package/dist/shared/types/index.mjs +3 -0
- package/dist/shared/types/index.mjs.map +1 -0
- package/dist/shared/utils/index.d.mts +255 -0
- package/dist/shared/utils/index.d.ts +255 -0
- package/dist/shared/utils/index.js +623 -0
- package/dist/shared/utils/index.js.map +1 -0
- package/dist/shared/utils/index.mjs +324 -0
- package/dist/shared/utils/index.mjs.map +1 -0
- package/dist/shared/validation/index.d.mts +258 -0
- package/dist/shared/validation/index.d.ts +258 -0
- package/dist/shared/validation/index.js +185 -0
- package/dist/shared/validation/index.js.map +1 -0
- package/dist/shared/validation/index.mjs +172 -0
- package/dist/shared/validation/index.mjs.map +1 -0
- package/package.json +127 -62
- package/dist/index-BcxL4_V4.d.ts +0 -2946
- package/dist/index-DEzgM15j.d.ts +0 -67
- package/dist/index-DNFVgQx8.d.ts +0 -1375
- package/dist/index-DbV04Dx8.d.mts +0 -67
- package/dist/index-DfqEP6Oe.d.mts +0 -1375
- package/dist/index-bvvCev9Q.d.mts +0 -2946
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/client/http/axios-instance.ts","../../../src/client/http/response-parser.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\n/**\r\n * HTTP Client Configuration Options\r\n */\r\nexport interface HttpClientOptions {\r\n baseURL: string;\r\n timeout?: number;\r\n withCredentials?: boolean;\r\n getAuthToken?: () => string | null;\r\n onUnauthorized?: () => void;\r\n onServerError?: (error: AxiosError) => void;\r\n}\r\n\r\n/**\r\n * Create configured Axios instance\r\n */\r\nexport const createHttpClient = (options: HttpClientOptions): AxiosInstance => {\r\n const {\r\n baseURL,\r\n timeout = 30000,\r\n withCredentials = true,\r\n getAuthToken,\r\n onUnauthorized,\r\n onServerError,\r\n } = options;\r\n\r\n const instance = axios.create({\r\n baseURL,\r\n timeout,\r\n withCredentials,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n // Request interceptor - add auth token\r\n instance.interceptors.request.use(\r\n (config: InternalAxiosRequestConfig) => {\r\n if (getAuthToken) {\r\n const token = getAuthToken();\r\n if (token && config.headers) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n }\r\n }\r\n return config;\r\n },\r\n (error: unknown) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - handle errors\r\n instance.interceptors.response.use(\r\n (response: AxiosResponse) => response,\r\n (error: AxiosError) => {\r\n if (error.response) {\r\n const status = error.response.status;\r\n\r\n // Handle 401 Unauthorized\r\n if (status === 401 && onUnauthorized) {\r\n onUnauthorized();\r\n }\r\n\r\n // Handle 5xx Server Errors\r\n if (status >= 500 && onServerError) {\r\n onServerError(error);\r\n }\r\n }\r\n\r\n return Promise.reject(error);\r\n }\r\n );\r\n\r\n return instance;\r\n};\r\n\r\n/**\r\n * Default request config helpers\r\n */\r\nexport const withFormData = (): AxiosRequestConfig => ({\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n});\r\n\r\nexport const withTimeout = (ms: number): AxiosRequestConfig => ({\r\n timeout: ms,\r\n});\r\n\r\nexport const withAbortSignal = (signal: AbortSignal): AxiosRequestConfig => ({\r\n signal,\r\n});\r\n\r\nexport default {\r\n createHttpClient,\r\n withFormData,\r\n withTimeout,\r\n withAbortSignal,\r\n};\r\n","import { AxiosResponse, AxiosError } from 'axios';\r\n\r\n/**\r\n * Standard API Response Structure\r\n */\r\nexport interface ApiResponse<T = unknown> {\r\n success: boolean;\r\n message: string;\r\n data?: T;\r\n error?: string;\r\n statusCode?: number;\r\n}\r\n\r\n/**\r\n * Paginated Response Structure\r\n */\r\nexport interface PaginatedResponse<T = unknown> extends ApiResponse<T[]> {\r\n pagination: {\r\n total: number;\r\n page: number;\r\n limit: number;\r\n totalPages: number;\r\n hasNextPage: boolean;\r\n hasPrevPage: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * Parse successful API response\r\n */\r\nexport const parseResponse = <T>(response: AxiosResponse<ApiResponse<T>>): T | null => {\r\n if (response.data?.success && response.data?.data !== undefined) {\r\n return response.data.data;\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Parse API response with full metadata\r\n */\r\nexport const parseFullResponse = <T>(response: AxiosResponse<ApiResponse<T>>): ApiResponse<T> => {\r\n return response.data;\r\n};\r\n\r\n/**\r\n * Parse error from API response\r\n */\r\nexport const parseError = (error: AxiosError<ApiResponse>): string => {\r\n // Check for API error message\r\n if (error.response?.data?.message) {\r\n return error.response.data.message;\r\n }\r\n\r\n if (error.response?.data?.error) {\r\n return error.response.data.error;\r\n }\r\n\r\n // Check for network error\r\n if (error.code === 'ERR_NETWORK') {\r\n return 'Network error. Please check your connection.';\r\n }\r\n\r\n // Check for timeout\r\n if (error.code === 'ECONNABORTED') {\r\n return 'Request timed out. Please try again.';\r\n }\r\n\r\n // Default error message\r\n return error.message || 'An unexpected error occurred.';\r\n};\r\n\r\n/**\r\n * Check if response is successful\r\n */\r\nexport const isSuccess = <T>(response: AxiosResponse<ApiResponse<T>>): boolean => {\r\n return response.data?.success === true;\r\n};\r\n\r\n/**\r\n * Check if error is a specific status code\r\n */\r\nexport const isStatusError = (error: AxiosError, statusCode: number): boolean => {\r\n return error.response?.status === statusCode;\r\n};\r\n\r\n/**\r\n * Check if error is unauthorized (401)\r\n */\r\nexport const isUnauthorized = (error: AxiosError): boolean => {\r\n return isStatusError(error, 401);\r\n};\r\n\r\n/**\r\n * Check if error is forbidden (403)\r\n */\r\nexport const isForbidden = (error: AxiosError): boolean => {\r\n return isStatusError(error, 403);\r\n};\r\n\r\n/**\r\n * Check if error is not found (404)\r\n */\r\nexport const isNotFound = (error: AxiosError): boolean => {\r\n return isStatusError(error, 404);\r\n};\r\n\r\n/**\r\n * Check if error is server error (5xx)\r\n */\r\nexport const isServerError = (error: AxiosError): boolean => {\r\n const status = error.response?.status;\r\n return status !== undefined && status >= 500;\r\n};\r\n\r\nexport default {\r\n parseResponse,\r\n parseFullResponse,\r\n parseError,\r\n isSuccess,\r\n isStatusError,\r\n isUnauthorized,\r\n isForbidden,\r\n isNotFound,\r\n isServerError,\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/client/http/logger.ts","../../../src/client/http/response-parser.ts","../../../src/client/http/http.ts","../../../src/client/http/slug.ts"],"names":["parseError"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * Client Logger Utility\r\n *\r\n * Centralized logging utility that:\r\n * - Only logs in development mode\r\n * - Can be extended to send logs to external services (Sentry, LogRocket, etc.)\r\n * - Provides consistent logging interface\r\n */\r\n\r\ninterface LogOptions {\r\n context?: string;\r\n metadata?: Record<string, unknown>;\r\n}\r\n\r\nclass Logger {\r\n private isDevelopment =\r\n typeof window !== 'undefined' && window.location.hostname === 'localhost';\r\n\r\n /**\r\n * Log informational messages\r\n */\r\n info(message: string, data?: unknown, options?: LogOptions): void {\r\n if (this.isDevelopment) {\r\n const prefix = options?.context ? `[${options.context}]` : '';\r\n console.log(`${prefix} ${message}`, data ?? '');\r\n }\r\n }\r\n\r\n /**\r\n * Log warning messages\r\n */\r\n warn(message: string, data?: unknown, options?: LogOptions): void {\r\n if (this.isDevelopment) {\r\n const prefix = options?.context ? `[${options.context}]` : '';\r\n console.warn(`${prefix} ${message}`, data ?? '');\r\n }\r\n // TODO: Send to monitoring service in production\r\n }\r\n\r\n /**\r\n * Log error messages\r\n */\r\n error(message: string, error?: unknown, options?: LogOptions): void {\r\n const prefix = options?.context ? `[${options.context}]` : '';\r\n\r\n if (this.isDevelopment) {\r\n console.error(`${prefix} ${message}`, error, options?.metadata || '');\r\n }\r\n\r\n // TODO: Send to error tracking service (Sentry, etc.) in production\r\n }\r\n\r\n /**\r\n * Log debug messages (only in development)\r\n */\r\n debug(message: string, data?: unknown, options?: LogOptions): void {\r\n if (this.isDevelopment) {\r\n const prefix = options?.context ? `[${options.context}]` : '';\r\n console.debug(`${prefix} ${message}`, data || '');\r\n }\r\n }\r\n\r\n /**\r\n * Log API errors with structured information\r\n */\r\n apiError(endpoint: string, error: unknown, metadata?: Record<string, unknown>): void {\r\n this.error(`API Error: ${endpoint}`, error, {\r\n context: 'API',\r\n metadata: {\r\n endpoint,\r\n ...metadata,\r\n },\r\n });\r\n }\r\n}\r\n\r\n// Export singleton instance\r\nexport const logger = new Logger();\r\n\r\n// Export default for easier imports\r\nexport default logger;\r\n","/**\r\n * Response Parser Utility\r\n *\r\n * Comprehensive response parsing utilities for API responses.\r\n * Aligned with server-side response structures.\r\n */\r\n\r\nimport { logger } from './logger';\r\n\r\n/**\r\n * Standard API response structure from server\r\n */\r\nexport interface ApiResponse<T = unknown> {\r\n message: string;\r\n data: T | null;\r\n status: string;\r\n statusCode: number;\r\n paginationData?: PaginationData;\r\n columns?: ColumnMetadata[];\r\n}\r\n\r\n/**\r\n * Pagination metadata structure\r\n */\r\nexport interface PaginationData {\r\n total?: number;\r\n page?: number;\r\n limit?: number;\r\n totalPages?: number;\r\n}\r\n\r\n/**\r\n * Column metadata from server\r\n */\r\nexport interface ColumnMetadata {\r\n name: string;\r\n required: boolean;\r\n datatype: string;\r\n}\r\n\r\n/**\r\n * Status codes aligned with backend\r\n */\r\nexport const STATUS_CODES = {\r\n SUCCESS: 200,\r\n CREATED: 201,\r\n NO_CONTENT: 204,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n CONFLICT: 409,\r\n ERROR: 500,\r\n} as const;\r\n\r\n/**\r\n * Status messages aligned with backend\r\n */\r\nexport const STATUS_MESSAGES = {\r\n SUCCESS: 'success',\r\n CREATED: 'created',\r\n NO_CONTENT: 'no_content',\r\n BAD_REQUEST: 'bad_request',\r\n UNAUTHORIZED: 'unauthorized',\r\n FORBIDDEN: 'forbidden',\r\n NOT_FOUND: 'not_found',\r\n CONFLICT: 'conflict',\r\n ERROR: 'error',\r\n};\r\n\r\n// Success status codes\r\nexport const SUCCESS_CODES = [200, 201, 204];\r\nexport const ERROR_CODES = [400, 401, 403, 404, 409, 500];\r\n\r\n/**\r\n * Safely extracts data from API response\r\n */\r\nexport const parseResponseData = <T = unknown>(\r\n response: unknown,\r\n fallback: T | null = null\r\n): T | null => {\r\n try {\r\n if (!response || typeof response !== 'object') {\r\n return fallback;\r\n }\r\n\r\n const resp = response as Record<string, unknown>;\r\n\r\n // Standard backend response has data property\r\n if ('data' in resp) {\r\n return (resp['data'] as T) ?? fallback;\r\n }\r\n\r\n // Fallback: return the response itself\r\n return response as T;\r\n } catch (error) {\r\n logger.error('Error parsing response data', error);\r\n return fallback;\r\n }\r\n};\r\n\r\n/**\r\n * Extracts message from response\r\n */\r\nexport const parseResponseMessage = (response: unknown, fallback = ''): string => {\r\n try {\r\n if (!response || typeof response !== 'object') {\r\n return fallback;\r\n }\r\n\r\n const resp = response as Record<string, unknown>;\r\n\r\n if ('message' in resp && typeof resp['message'] === 'string') {\r\n return resp['message'];\r\n }\r\n\r\n return fallback;\r\n } catch (error) {\r\n logger.error('Error parsing response message', error);\r\n return fallback;\r\n }\r\n};\r\n\r\n/**\r\n * Extracts status code from response\r\n */\r\nexport const parseResponseStatus = (response: unknown): number | null => {\r\n try {\r\n if (!response || typeof response !== 'object') {\r\n return null;\r\n }\r\n\r\n const resp = response as Record<string, unknown>;\r\n\r\n if ('statusCode' in resp && typeof resp['statusCode'] === 'number') {\r\n return resp['statusCode'];\r\n }\r\n\r\n if ('status' in resp && typeof resp['status'] === 'number') {\r\n return resp['status'];\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n logger.error('Error parsing response status', error);\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Extracts status message from response\r\n */\r\nexport const parseResponseStatusMessage = (response: unknown, fallback = ''): string => {\r\n try {\r\n if (!response || typeof response !== 'object') {\r\n return fallback;\r\n }\r\n\r\n const resp = response as Record<string, unknown>;\r\n\r\n if ('status' in resp && typeof resp['status'] === 'string') {\r\n return resp['status'];\r\n }\r\n\r\n return fallback;\r\n } catch (error) {\r\n logger.error('Error parsing response status message', error);\r\n return fallback;\r\n }\r\n};\r\n\r\n/**\r\n * Checks if response indicates success\r\n */\r\nexport const isSuccessResponse = (response: unknown): boolean => {\r\n try {\r\n const statusCode = parseResponseStatus(response);\r\n if (statusCode !== null) {\r\n return SUCCESS_CODES.includes(statusCode);\r\n }\r\n\r\n const status = parseResponseStatusMessage(response);\r\n return [STATUS_MESSAGES.SUCCESS, STATUS_MESSAGES.CREATED, STATUS_MESSAGES.NO_CONTENT].includes(\r\n status\r\n );\r\n } catch (error) {\r\n logger.error('Error checking response success', error);\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * Checks if response indicates error\r\n */\r\nexport const isErrorResponse = (response: unknown): boolean => {\r\n try {\r\n const statusCode = parseResponseStatus(response);\r\n if (statusCode !== null) {\r\n return ERROR_CODES.includes(statusCode);\r\n }\r\n return false;\r\n } catch (error) {\r\n logger.error('Error checking response error', error);\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * Paginated response structure\r\n */\r\nexport interface PaginatedResponse<T> {\r\n items: T[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n totalPages?: number;\r\n columns?: ColumnMetadata[];\r\n}\r\n\r\n/**\r\n * Parses paginated response from backend\r\n */\r\nexport const parsePaginatedResponse = <T = unknown>(response: unknown): PaginatedResponse<T> => {\r\n try {\r\n if (!response || typeof response !== 'object') {\r\n return { items: [], total: 0, page: 1, limit: 10 };\r\n }\r\n\r\n const resp = response as Record<string, unknown>;\r\n\r\n // Extract data array\r\n let items: T[] = [];\r\n if ('data' in resp && Array.isArray(resp['data'])) {\r\n items = resp['data'] as T[];\r\n }\r\n\r\n // Extract pagination data\r\n let total = items.length;\r\n let page = 1;\r\n let limit = 10;\r\n let totalPages: number | undefined;\r\n\r\n if (\r\n 'paginationData' in resp &&\r\n resp['paginationData'] &&\r\n typeof resp['paginationData'] === 'object'\r\n ) {\r\n const paginationData = resp['paginationData'] as Record<string, unknown>;\r\n\r\n if ('total' in paginationData && typeof paginationData['total'] === 'number') {\r\n total = paginationData['total'];\r\n }\r\n if ('page' in paginationData && typeof paginationData['page'] === 'number') {\r\n page = paginationData['page'];\r\n }\r\n if ('limit' in paginationData && typeof paginationData['limit'] === 'number') {\r\n limit = paginationData['limit'];\r\n }\r\n if ('totalPages' in paginationData && typeof paginationData['totalPages'] === 'number') {\r\n totalPages = paginationData['totalPages'];\r\n }\r\n }\r\n\r\n // Extract columns metadata\r\n let columns: ColumnMetadata[] | undefined;\r\n if ('columns' in resp && Array.isArray(resp['columns'])) {\r\n columns = resp['columns'] as ColumnMetadata[];\r\n }\r\n\r\n return {\r\n items,\r\n total,\r\n page,\r\n limit,\r\n ...(totalPages !== undefined && { totalPages }),\r\n ...(columns !== undefined && { columns }),\r\n };\r\n } catch (error) {\r\n logger.error('Error parsing paginated response', error);\r\n return { items: [], total: 0, page: 1, limit: 10 };\r\n }\r\n};\r\n\r\n/**\r\n * Extracts specific nested data with path\r\n */\r\nexport const extractNestedData = <T = unknown>(\r\n response: unknown,\r\n path: string,\r\n fallback: T | null = null\r\n): T | null => {\r\n try {\r\n const keys = path.split('.');\r\n let current: unknown = response;\r\n\r\n for (const key of keys) {\r\n if (current && typeof current === 'object' && key in current) {\r\n current = (current as Record<string, unknown>)[key];\r\n } else {\r\n return fallback;\r\n }\r\n }\r\n\r\n return current as T;\r\n } catch (error) {\r\n logger.error('Error extracting nested data', error);\r\n return fallback;\r\n }\r\n};\r\n\r\n/**\r\n * Safe JSON parse with fallback\r\n */\r\nexport const safeJsonParse = <T = unknown>(json: string, fallback: T | null = null): T | null => {\r\n try {\r\n return JSON.parse(json) as T;\r\n } catch (error) {\r\n logger.error('Error parsing JSON', error);\r\n return fallback;\r\n }\r\n};\r\n\r\n/**\r\n * Extracts error message from axios error response\r\n */\r\nexport const parseAxiosErrorMessage = (error: unknown): string => {\r\n try {\r\n if (!error || typeof error !== 'object') {\r\n return 'An unexpected error occurred';\r\n }\r\n\r\n const err = error as Record<string, unknown>;\r\n\r\n // Check for axios response structure\r\n if ('response' in err && err['response'] && typeof err['response'] === 'object') {\r\n const response = err['response'] as Record<string, unknown>;\r\n\r\n if ('data' in response && response['data'] && typeof response['data'] === 'object') {\r\n const data = response['data'] as Record<string, unknown>;\r\n\r\n // Check for nested data.message (ImageKit and other external APIs)\r\n if ('data' in data && data['data'] && typeof data['data'] === 'object') {\r\n const nestedData = data['data'] as Record<string, unknown>;\r\n if ('message' in nestedData && typeof nestedData['message'] === 'string') {\r\n return nestedData['message'];\r\n }\r\n }\r\n // Check for message in response data (backend standard)\r\n if ('message' in data && typeof data['message'] === 'string') {\r\n return data['message'];\r\n }\r\n // Check for error property\r\n if ('error' in data && typeof data['error'] === 'string') {\r\n return data['error'];\r\n }\r\n }\r\n }\r\n\r\n // Check for direct error message\r\n if ('message' in err && typeof err['message'] === 'string') {\r\n return err['message'];\r\n }\r\n\r\n // Check for string error\r\n if (typeof error === 'string') {\r\n return error;\r\n }\r\n\r\n return 'An unexpected error occurred';\r\n } catch (parseError) {\r\n logger.error('Error parsing axios error message', parseError);\r\n return 'An unexpected error occurred';\r\n }\r\n};\r\n\r\n/**\r\n * Standardized error object\r\n */\r\nexport interface ParsedError {\r\n message: string;\r\n statusCode: number | null;\r\n data: unknown;\r\n status?: string;\r\n}\r\n\r\n/**\r\n * Parses error into standardized format\r\n */\r\nexport const parseError = (error: unknown): ParsedError => {\r\n try {\r\n if (!error || typeof error !== 'object') {\r\n return {\r\n message: 'An unexpected error occurred',\r\n statusCode: null,\r\n data: null,\r\n };\r\n }\r\n\r\n const err = error as Record<string, unknown>;\r\n let statusCode: number | null = null;\r\n let data: unknown = null;\r\n let status: string | undefined;\r\n\r\n // Extract from axios response structure\r\n if ('response' in err && err['response'] && typeof err['response'] === 'object') {\r\n const response = err['response'] as Record<string, unknown>;\r\n\r\n if ('status' in response && typeof response['status'] === 'number') {\r\n statusCode = response['status'];\r\n }\r\n\r\n if ('data' in response && response['data'] !== undefined) {\r\n data = response['data'];\r\n\r\n if (data && typeof data === 'object' && 'status' in data) {\r\n const dataObj = data as Record<string, unknown>;\r\n if (typeof dataObj['status'] === 'string') {\r\n status = dataObj['status'];\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Fallback to direct properties\r\n if (statusCode === null && 'statusCode' in err && typeof err['statusCode'] === 'number') {\r\n statusCode = err['statusCode'];\r\n }\r\n\r\n if (data === null && 'data' in err && err['data'] !== undefined) {\r\n data = err['data'];\r\n }\r\n\r\n if (!status && 'status' in err && typeof err['status'] === 'string') {\r\n status = err['status'];\r\n }\r\n\r\n return {\r\n message: parseAxiosErrorMessage(error),\r\n statusCode,\r\n data,\r\n ...(status !== undefined && { status }),\r\n };\r\n } catch (err) {\r\n logger.error('Error parsing error object', err);\r\n return {\r\n message: 'An unexpected error occurred',\r\n statusCode: null,\r\n data: null,\r\n };\r\n }\r\n};\r\n\r\n// ==================== Simple Parse Helpers ====================\r\n\r\ninterface SimpleApiResponse {\r\n data?: {\r\n data?: {\r\n data?: unknown;\r\n meta?: Record<string, unknown>;\r\n };\r\n };\r\n}\r\n\r\nexport const simpleParseResponse = (response: SimpleApiResponse) => {\r\n return response?.data?.data?.data;\r\n};\r\n\r\nexport const simpleMetaParseResponse = (response: SimpleApiResponse) => {\r\n return response?.data?.data?.meta;\r\n};\r\n\r\nexport const simpleParseDualDataResponse = (response: SimpleApiResponse) => {\r\n return response?.data?.data;\r\n};\r\n\r\nexport default {\r\n parseResponseData,\r\n parseResponseMessage,\r\n parseResponseStatus,\r\n parseResponseStatusMessage,\r\n isSuccessResponse,\r\n isErrorResponse,\r\n parsePaginatedResponse,\r\n extractNestedData,\r\n safeJsonParse,\r\n parseAxiosErrorMessage,\r\n parseError,\r\n simpleParseResponse,\r\n simpleMetaParseResponse,\r\n simpleParseDualDataResponse,\r\n STATUS_CODES,\r\n STATUS_MESSAGES,\r\n SUCCESS_CODES,\r\n ERROR_CODES,\r\n};\r\n","/**\r\n * HTTP Client Module\r\n *\r\n * Unified HTTP utilities combining axios-based requests with response parsing.\r\n * Provides consistent API calls with standardized error handling.\r\n *\r\n * Features:\r\n * - Pre-configured axios instance\r\n * - Automatic organization header injection\r\n * - Response parsing utilities\r\n * - Error handling with standardized format\r\n * - File upload support\r\n * - Pagination support\r\n */\r\n\r\nimport axios from 'axios';\r\nimport type { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';\r\nimport {\r\n parseResponseData,\r\n parseResponseMessage,\r\n parseError,\r\n parsePaginatedResponse,\r\n type ApiResponse,\r\n type PaginatedResponse,\r\n} from './response-parser';\r\nimport { logger } from './logger';\r\n\r\n// ==================== API Configuration ====================\r\n\r\n/**\r\n * API Base URL and Prefix Configuration\r\n * Automatically switches between development and production URLs\r\n */\r\nconst isDevelopment =\r\n typeof window !== 'undefined' && window.location.hostname === 'localhost';\r\n\r\nexport const API_BASE_URL = isDevelopment\r\n ? 'http://localhost:4002'\r\n : 'https://service-api.exyconn.com';\r\n\r\nexport const API_PREFIX = '/v1/api';\r\n\r\n// Configure axios defaults\r\nconst axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: 30000, // 30 seconds\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n});\r\n\r\n// Request interceptor - Add organization header automatically\r\naxiosInstance.interceptors.request.use(\r\n config => {\r\n // Add organization header if available in localStorage\r\n try {\r\n if (typeof window !== 'undefined' && window.localStorage) {\r\n const selectedOrg = localStorage.getItem('selectedOrganization');\r\n if (selectedOrg) {\r\n const org = JSON.parse(selectedOrg);\r\n if (org && org._id) {\r\n config.headers['x-organization-id'] = org._id;\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n // Silently ignore localStorage errors\r\n logger.warn('Failed to read organization from localStorage', error);\r\n }\r\n\r\n return config;\r\n },\r\n error => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// Response interceptor - Standardize error handling\r\naxiosInstance.interceptors.response.use(\r\n response => response,\r\n (error: AxiosError) => {\r\n const parsedError = parseError(error);\r\n logger.error('API Error', parsedError);\r\n return Promise.reject(parsedError);\r\n }\r\n);\r\n\r\n// ==================== Helper Functions ====================\r\n\r\n/**\r\n * Build request headers\r\n */\r\nconst buildHeaders = (customHeaders?: Record<string, string>): Record<string, string> => {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n ...customHeaders,\r\n };\r\n return headers;\r\n};\r\n\r\n/**\r\n * Build axios config with headers and params\r\n */\r\nconst buildConfig = (\r\n params?: Record<string, unknown>,\r\n customHeaders?: Record<string, string>\r\n): AxiosRequestConfig => {\r\n const config: AxiosRequestConfig = {\r\n headers: buildHeaders(customHeaders),\r\n };\r\n\r\n if (params) {\r\n config.params = params;\r\n }\r\n\r\n return config;\r\n};\r\n\r\n// ==================== HTTP Methods ====================\r\n\r\n/**\r\n * GET request\r\n */\r\nexport const getRequest = async <T = unknown>(\r\n url: string,\r\n params?: Record<string, unknown>,\r\n customHeaders?: Record<string, string>\r\n): Promise<AxiosResponse<T>> => {\r\n const config = buildConfig(params, customHeaders);\r\n return axiosInstance.get<T>(url, config);\r\n};\r\n\r\n/**\r\n * POST request\r\n */\r\nexport const postRequest = async <T = unknown>(\r\n url: string,\r\n data?: unknown,\r\n customHeaders?: Record<string, string>\r\n): Promise<AxiosResponse<T>> => {\r\n const config = buildConfig(undefined, customHeaders);\r\n return axiosInstance.post<T>(url, data, config);\r\n};\r\n\r\n/**\r\n * PUT request\r\n */\r\nexport const putRequest = async <T = unknown>(\r\n url: string,\r\n data?: unknown,\r\n customHeaders?: Record<string, string>\r\n): Promise<AxiosResponse<T>> => {\r\n const config = buildConfig(undefined, customHeaders);\r\n return axiosInstance.put<T>(url, data, config);\r\n};\r\n\r\n/**\r\n * PATCH request\r\n */\r\nexport const patchRequest = async <T = unknown>(\r\n url: string,\r\n data?: unknown,\r\n customHeaders?: Record<string, string>\r\n): Promise<AxiosResponse<T>> => {\r\n const config = buildConfig(undefined, customHeaders);\r\n return axiosInstance.patch<T>(url, data, config);\r\n};\r\n\r\n/**\r\n * DELETE request\r\n */\r\nexport const deleteRequest = async <T = unknown>(\r\n url: string,\r\n params?: Record<string, unknown>,\r\n customHeaders?: Record<string, string>\r\n): Promise<AxiosResponse<T>> => {\r\n const config = buildConfig(params, customHeaders);\r\n return axiosInstance.delete<T>(url, config);\r\n};\r\n\r\n/**\r\n * File upload with FormData\r\n */\r\nexport const uploadFile = async <T = unknown>(\r\n url: string,\r\n file: File,\r\n additionalData?: Record<string, unknown>\r\n): Promise<AxiosResponse<T>> => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n // Add additional form fields if provided\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n formData.append(key, String(value));\r\n });\r\n }\r\n\r\n const config: AxiosRequestConfig = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n };\r\n\r\n return axiosInstance.post<T>(url, formData, config);\r\n};\r\n\r\n// ==================== Utility Functions ====================\r\n\r\n/**\r\n * Extract data from response using response-parser\r\n */\r\nexport const extractData = <T = unknown>(response: AxiosResponse): T | null => {\r\n return parseResponseData<T>(response.data);\r\n};\r\n\r\n/**\r\n * Extract message from response\r\n */\r\nexport const extractMessage = (response: unknown): string => {\r\n return parseResponseMessage(response, '');\r\n};\r\n\r\n/**\r\n * Check if response is successful\r\n */\r\nexport const isSuccess = (response: AxiosResponse): boolean => {\r\n return response.status >= 200 && response.status < 300;\r\n};\r\n\r\n/**\r\n * Extract paginated data from response\r\n */\r\nexport const extractPaginatedData = <T = unknown>(\r\n response: AxiosResponse\r\n): PaginatedResponse<T> => {\r\n return parsePaginatedResponse<T>(response.data);\r\n};\r\n\r\n// ==================== Export Axios Instance ====================\r\n\r\n/**\r\n * Export axios instance for advanced use cases\r\n */\r\nexport { axiosInstance as axios };\r\n\r\n/**\r\n * Re-export types and utilities from response-parser\r\n */\r\nexport type { ApiResponse, PaginatedResponse, AxiosResponse, AxiosError };\r\nexport {\r\n parseResponseData,\r\n parseResponseMessage,\r\n parseResponseStatus,\r\n parseResponseStatusMessage,\r\n isSuccessResponse,\r\n isErrorResponse,\r\n parseError,\r\n parseAxiosErrorMessage,\r\n parsePaginatedResponse,\r\n extractNestedData,\r\n safeJsonParse,\r\n simpleParseResponse,\r\n simpleMetaParseResponse,\r\n simpleParseDualDataResponse,\r\n STATUS_CODES,\r\n STATUS_MESSAGES,\r\n SUCCESS_CODES,\r\n ERROR_CODES,\r\n} from './response-parser';\r\nexport type { ParsedError, PaginationData, ColumnMetadata } from './response-parser';\r\n","/**\r\n * Slug Utility\r\n *\r\n * Generates slugs from text for use in URLs and object properties.\r\n */\r\n\r\n/**\r\n * Generates a camelCase slug from a given text for use in object properties\r\n * @param text - The text to convert to camelCase slug\r\n * @returns The generated camelCase slug\r\n */\r\nexport const generateSlug = (text: string): string => {\r\n if (!text) return '';\r\n\r\n return text\r\n .trim()\r\n .replace(/[^\\w\\s]/g, '') // Remove special characters except alphanumeric and spaces\r\n .replace(/\\s+(.)/g, (_, char) => char.toUpperCase()) // Convert to camelCase\r\n .replace(/\\s+/g, '') // Remove remaining spaces\r\n .replace(/^(.)/, (_, char) => char.toLowerCase()); // Ensure first char is lowercase\r\n};\r\n\r\n/**\r\n * Generates a kebab-case slug from a given text for use in URLs\r\n * @param text - The text to convert to kebab-case slug\r\n * @returns The generated kebab-case slug\r\n */\r\nexport const generateUrlSlug = (text: string): string => {\r\n if (!text) return '';\r\n\r\n return text\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[^\\w\\s-]/g, '') // Remove special characters except alphanumeric, spaces and hyphens\r\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\r\n .replace(/-+/g, '-') // Replace multiple hyphens with single hyphen\r\n .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens\r\n};\r\n\r\n/**\r\n * Generates a snake_case slug from a given text\r\n * @param text - The text to convert to snake_case slug\r\n * @returns The generated snake_case slug\r\n */\r\nexport const generateSnakeSlug = (text: string): string => {\r\n if (!text) return '';\r\n\r\n return text\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[^\\w\\s]/g, '') // Remove special characters except alphanumeric and spaces\r\n .replace(/\\s+/g, '_') // Replace spaces with underscores\r\n .replace(/_+/g, '_') // Replace multiple underscores with single underscore\r\n .replace(/^_|_$/g, ''); // Remove leading/trailing underscores\r\n};\r\n\r\nexport default {\r\n generateSlug,\r\n generateUrlSlug,\r\n generateSnakeSlug,\r\n};\r\n"]}
|
package/dist/client/index.d.mts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export { ApiResponse,
|
|
1
|
+
export { API_BASE_URL, API_PREFIX, ApiResponse, ColumnMetadata, ERROR_CODES, PaginatedResponse, PaginationData, ParsedError, STATUS_CODES, STATUS_MESSAGES, SUCCESS_CODES, axios, deleteRequest, extractData, extractMessage, extractNestedData, extractPaginatedData, generateSlug, generateSnakeSlug, generateUrlSlug, getRequest, isErrorResponse, isSuccess, isSuccessResponse, logger, parseAxiosErrorMessage, parseError, parsePaginatedResponse, parseResponseData, parseResponseMessage, parseResponseStatus, parseResponseStatusMessage, patchRequest, postRequest, putRequest, safeJsonParse, simpleMetaParseResponse, simpleParseDualDataResponse, simpleParseResponse, uploadFile } from './http/index.mjs';
|
|
2
2
|
export { ClientLogger, ClientLoggerConfig, LogLevel, clientLogger, createClientLogger } from './logger/index.mjs';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
|
|
3
|
+
export { c as camelToKebab, a as capitalize, b as capitalizeWords, d as copyToClipboard, e as createEmptyPaginationMeta, f as createErrorResponse, g as createSuccessResponse, h as formatDate, i as formatDateTime, j as formatRelativeTime, k as getErrorMessage, l as getNextPage, m as getPrevPage, n as getResponseData, o as hasData, p as hasMorePages, q as isUtilErrorResponse, r as isUtilSuccessResponse, s as kebabToCamel, t as packageCheck, u as slugify, v as slugifyUnique, w as truncate, x as truncateWords, y as unslugify } from '../packageCheck-C2_FT_Rl.mjs';
|
|
4
|
+
export { BatteryState, Dimensions, GeolocationState, MousePosition, NetworkState, ObjectStateUpdate, OrientationState, RenderInfo, ScriptStatus, SetValue, SnackbarSeverity, SnackbarState, ThemeMode, UseContinuousRetryOptions, UseContinuousRetryReturn, UseCopyToClipboardReturn, UseCountdownOptions, UseCountdownReturn, UseCounterOptions, UseCounterReturn, UseDocumentTitleOptions, UseFetchOptions, UseFetchReturn, UseGeolocationOptions, UseGeolocationReturn, UseHistoryStateOptions, UseHistoryStateReturn, UseHoverReturn, UseIdleOptions, UseIdleReturn, UseIntersectionObserverOptions, UseIntersectionObserverReturn, UseKeyPressOptions, UseKeyPressReturn, UseListReturn, UseLocalStorageOptions, UseLoggerOptions, UseLongPressOptions, UseLongPressReturn, UseMapReturn, UseMeasureReturn, UseMouseOptions, UseMouseReturn, UseObjectStateReturn, UsePageLeaveOptions, UsePageTitleOptions, UsePreferredLanguageReturn, UseQueueReturn, UseScriptOptions, UseScriptReturn, UseSessionStorageOptions, UseSetReturn, UseSnackbarReturn, UseTimeoutReturn, UseToggleReturn, UseVisibilityChangeReturn, UseWindowScrollReturn, WindowScrollPosition, WindowSize, useBattery, useClickAway, useContinuousRetry, useCopyToClipboard, useCountdown, useCounter, useDebounce, useDefault, useDocumentTitle, useEventListener, useFavicon, useFetch, useGeolocation, useHistoryState, useHover, useIdle, useIntersectionObserver, useInterval, useIntervalWhen, useIsClient, useIsDesktop, useIsFirstRender, useIsMobile, useIsMobileOrTablet, useIsTablet, useKeyPress, useList, useLocalStorage, useLockBodyScroll, useLogger, useLongPress, useMap, useMeasure, useMediaQuery, useMouse, useNetworkState, useObjectState, useOnClickOutside, useOrientation, usePageLeave, usePageTitle, usePreferredLanguage, usePrevious, useQueue, useRandomInterval, useRenderCount, useRenderInfo, useScript, useSessionStorage, useSet, useSnackbar, useThemeDetector, useThrottle, useTimeout, useToggle, useVisibilityChange, useWindowScroll, useWindowSize } from './hooks/index.mjs';
|
|
5
|
+
export { BannerProps, BorderRadius, Breakpoints, ButtonProps, ButtonSize, ButtonVariant, CardProps, ColProps, ColorPalette, ComponentThemes, ContactForm, ContactFormProps, ContactFormValues, ContainerProps, CtaSectionProps, FaqItem, FaqSectionProps, Feature, FeatureSectionProps, FooterColumn, FooterProps, FormFieldError, FormSubmitResult, HeaderProps, LoaderProps, LoaderSize, LoaderVariant, LoginForm, LoginFormProps, LoginFormValues, NavLink, NewsletterForm, NewsletterFormProps, NewsletterFormValues, NewsletterSectionProps, PasswordRequirements, PricingFeature, PricingPlan, PricingSectionProps, RegisterForm, RegisterFormProps, RegisterFormValues, RowProps, SemanticColors, Shadows, SocialLink, Spacing, TailwindBgColor, TailwindBorderRadius, TailwindClasses, TailwindFontSize, TailwindFontWeight, TailwindGap, TailwindHeight, TailwindMargin, TailwindPadding, TailwindShadow, TailwindTextColor, TailwindWidth, Testimonial, TestimonialSectionProps, Theme, ThemeConfig, ThemeContext, ThemeContextValue, ThemeProvider, ThemeProviderProps, ThemeToggle, ThemeToggleProps, ThreeColumnProps, TwoColumnProps, Typography, VALIDATION_MESSAGES, WebThemeMode, adjustColor, contactFormSchema, createRegisterFormSchema, createTheme, createThemeFromBrand, cssVar, deepMerge, defaultDarkTheme, defaultLightTheme, dummyBannerData, dummyFaqItems, dummyFeatures, dummyFooterData, dummyHeaderData, dummyImage, dummyPricingPlans, dummyTestimonials, flattenToCssVars, generateCssVars, getContrastColor, getSystemColorScheme, hexToRgba, injectCssVars, loadThemeFromUrl, loadThemeMode, loginFormSchema, loremIpsum, newsletterFormSchema, registerFormSchema, removeCssVars, resolveThemeMode, saveThemeMode, useTheme, useThemeValue } from './web/index.mjs';
|
|
6
|
+
export { AxiosError, AxiosResponse } from 'axios';
|
|
6
7
|
import '../response.types-D--UhLJq.mjs';
|
|
7
8
|
import 'react';
|
|
9
|
+
import '../data/brand-identity.mjs';
|
|
8
10
|
import 'yup';
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export { ApiResponse,
|
|
1
|
+
export { API_BASE_URL, API_PREFIX, ApiResponse, ColumnMetadata, ERROR_CODES, PaginatedResponse, PaginationData, ParsedError, STATUS_CODES, STATUS_MESSAGES, SUCCESS_CODES, axios, deleteRequest, extractData, extractMessage, extractNestedData, extractPaginatedData, generateSlug, generateSnakeSlug, generateUrlSlug, getRequest, isErrorResponse, isSuccess, isSuccessResponse, logger, parseAxiosErrorMessage, parseError, parsePaginatedResponse, parseResponseData, parseResponseMessage, parseResponseStatus, parseResponseStatusMessage, patchRequest, postRequest, putRequest, safeJsonParse, simpleMetaParseResponse, simpleParseDualDataResponse, simpleParseResponse, uploadFile } from './http/index.js';
|
|
2
2
|
export { ClientLogger, ClientLoggerConfig, LogLevel, clientLogger, createClientLogger } from './logger/index.js';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
|
|
3
|
+
export { c as camelToKebab, a as capitalize, b as capitalizeWords, d as copyToClipboard, e as createEmptyPaginationMeta, f as createErrorResponse, g as createSuccessResponse, h as formatDate, i as formatDateTime, j as formatRelativeTime, k as getErrorMessage, l as getNextPage, m as getPrevPage, n as getResponseData, o as hasData, p as hasMorePages, q as isUtilErrorResponse, r as isUtilSuccessResponse, s as kebabToCamel, t as packageCheck, u as slugify, v as slugifyUnique, w as truncate, x as truncateWords, y as unslugify } from '../packageCheck-B_qfsD6R.js';
|
|
4
|
+
export { BatteryState, Dimensions, GeolocationState, MousePosition, NetworkState, ObjectStateUpdate, OrientationState, RenderInfo, ScriptStatus, SetValue, SnackbarSeverity, SnackbarState, ThemeMode, UseContinuousRetryOptions, UseContinuousRetryReturn, UseCopyToClipboardReturn, UseCountdownOptions, UseCountdownReturn, UseCounterOptions, UseCounterReturn, UseDocumentTitleOptions, UseFetchOptions, UseFetchReturn, UseGeolocationOptions, UseGeolocationReturn, UseHistoryStateOptions, UseHistoryStateReturn, UseHoverReturn, UseIdleOptions, UseIdleReturn, UseIntersectionObserverOptions, UseIntersectionObserverReturn, UseKeyPressOptions, UseKeyPressReturn, UseListReturn, UseLocalStorageOptions, UseLoggerOptions, UseLongPressOptions, UseLongPressReturn, UseMapReturn, UseMeasureReturn, UseMouseOptions, UseMouseReturn, UseObjectStateReturn, UsePageLeaveOptions, UsePageTitleOptions, UsePreferredLanguageReturn, UseQueueReturn, UseScriptOptions, UseScriptReturn, UseSessionStorageOptions, UseSetReturn, UseSnackbarReturn, UseTimeoutReturn, UseToggleReturn, UseVisibilityChangeReturn, UseWindowScrollReturn, WindowScrollPosition, WindowSize, useBattery, useClickAway, useContinuousRetry, useCopyToClipboard, useCountdown, useCounter, useDebounce, useDefault, useDocumentTitle, useEventListener, useFavicon, useFetch, useGeolocation, useHistoryState, useHover, useIdle, useIntersectionObserver, useInterval, useIntervalWhen, useIsClient, useIsDesktop, useIsFirstRender, useIsMobile, useIsMobileOrTablet, useIsTablet, useKeyPress, useList, useLocalStorage, useLockBodyScroll, useLogger, useLongPress, useMap, useMeasure, useMediaQuery, useMouse, useNetworkState, useObjectState, useOnClickOutside, useOrientation, usePageLeave, usePageTitle, usePreferredLanguage, usePrevious, useQueue, useRandomInterval, useRenderCount, useRenderInfo, useScript, useSessionStorage, useSet, useSnackbar, useThemeDetector, useThrottle, useTimeout, useToggle, useVisibilityChange, useWindowScroll, useWindowSize } from './hooks/index.js';
|
|
5
|
+
export { BannerProps, BorderRadius, Breakpoints, ButtonProps, ButtonSize, ButtonVariant, CardProps, ColProps, ColorPalette, ComponentThemes, ContactForm, ContactFormProps, ContactFormValues, ContainerProps, CtaSectionProps, FaqItem, FaqSectionProps, Feature, FeatureSectionProps, FooterColumn, FooterProps, FormFieldError, FormSubmitResult, HeaderProps, LoaderProps, LoaderSize, LoaderVariant, LoginForm, LoginFormProps, LoginFormValues, NavLink, NewsletterForm, NewsletterFormProps, NewsletterFormValues, NewsletterSectionProps, PasswordRequirements, PricingFeature, PricingPlan, PricingSectionProps, RegisterForm, RegisterFormProps, RegisterFormValues, RowProps, SemanticColors, Shadows, SocialLink, Spacing, TailwindBgColor, TailwindBorderRadius, TailwindClasses, TailwindFontSize, TailwindFontWeight, TailwindGap, TailwindHeight, TailwindMargin, TailwindPadding, TailwindShadow, TailwindTextColor, TailwindWidth, Testimonial, TestimonialSectionProps, Theme, ThemeConfig, ThemeContext, ThemeContextValue, ThemeProvider, ThemeProviderProps, ThemeToggle, ThemeToggleProps, ThreeColumnProps, TwoColumnProps, Typography, VALIDATION_MESSAGES, WebThemeMode, adjustColor, contactFormSchema, createRegisterFormSchema, createTheme, createThemeFromBrand, cssVar, deepMerge, defaultDarkTheme, defaultLightTheme, dummyBannerData, dummyFaqItems, dummyFeatures, dummyFooterData, dummyHeaderData, dummyImage, dummyPricingPlans, dummyTestimonials, flattenToCssVars, generateCssVars, getContrastColor, getSystemColorScheme, hexToRgba, injectCssVars, loadThemeFromUrl, loadThemeMode, loginFormSchema, loremIpsum, newsletterFormSchema, registerFormSchema, removeCssVars, resolveThemeMode, saveThemeMode, useTheme, useThemeValue } from './web/index.js';
|
|
6
|
+
export { AxiosError, AxiosResponse } from 'axios';
|
|
6
7
|
import '../response.types-D--UhLJq.js';
|
|
7
8
|
import 'react';
|
|
9
|
+
import '../data/brand-identity.js';
|
|
8
10
|
import 'yup';
|