@djangocfg/api 2.1.233 → 2.1.235
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/dist/auth-server.cjs +6 -2
- package/dist/auth-server.cjs.map +1 -1
- package/dist/auth-server.mjs +6 -2
- package/dist/auth-server.mjs.map +1 -1
- package/dist/auth.cjs +8 -6
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.mjs +8 -6
- package/dist/auth.mjs.map +1 -1
- package/dist/clients.cjs.map +1 -1
- package/dist/clients.mjs.map +1 -1
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/auth/context/AuthContext.tsx +2 -1
- package/src/auth/hooks/useBase64.ts +1 -1
- package/src/auth/utils/analytics.ts +3 -2
- package/src/auth/utils/env.ts +3 -0
- package/src/auth/utils/logger.ts +1 -1
package/dist/clients.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/clients.ts","../src/_api/generated/cfg_accounts/accounts__auth/client.ts","../src/_api/generated/cfg_accounts/accounts__oauth/client.ts","../src/_api/generated/cfg_accounts/accounts__user_profile/client.ts","../src/_api/generated/cfg_accounts/accounts/client.ts","../src/_api/generated/cfg_accounts/http.ts","../src/_api/generated/cfg_accounts/errors.ts","../src/_api/generated/cfg_accounts/logger.ts","../src/_api/generated/cfg_accounts/retry.ts","../src/_api/generated/cfg_accounts/client.ts","../src/_api/generated/cfg_accounts/storage.ts","../src/_api/generated/cfg_accounts/enums.ts","../src/_api/generated/cfg_accounts/_utils/schemas/AccountDeleteResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/CentrifugoToken.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/CfgAccountsProfileAvatarCreateRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthAuthorizeRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthAuthorizeResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthCallbackRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthConnection.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthDisconnectRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthError.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthProvidersResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthTokenResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPErrorResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPRequestResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPVerifyRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPVerifyResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/User.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/PatchedUserProfileUpdateRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/TokenRefresh.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/TokenRefreshRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/UserProfileUpdateRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts.ts","../src/_api/generated/cfg_accounts/api-instance.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts__auth.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts__oauth.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts__user_profile.ts","../src/_api/generated/cfg_accounts/index.ts","../src/_api/generated/cfg_centrifugo/centrifugo__centrifugo_auth/client.ts","../src/_api/generated/cfg_centrifugo/http.ts","../src/_api/generated/cfg_centrifugo/errors.ts","../src/_api/generated/cfg_centrifugo/logger.ts","../src/_api/generated/cfg_centrifugo/retry.ts","../src/_api/generated/cfg_centrifugo/client.ts","../src/_api/generated/cfg_centrifugo/storage.ts","../src/_api/generated/cfg_centrifugo/_utils/schemas/index.ts","../src/_api/generated/cfg_centrifugo/_utils/schemas/ConnectionTokenResponse.schema.ts","../src/_api/generated/cfg_centrifugo/_utils/fetchers/index.ts","../src/_api/generated/cfg_centrifugo/_utils/fetchers/centrifugo__centrifugo_auth.ts","../src/_api/generated/cfg_centrifugo/api-instance.ts","../src/_api/generated/cfg_centrifugo/index.ts","../src/_api/generated/cfg_totp/totp__backup_codes/client.ts","../src/_api/generated/cfg_totp/totp__totp_management/client.ts","../src/_api/generated/cfg_totp/totp__totp_setup/client.ts","../src/_api/generated/cfg_totp/totp__totp_verification/client.ts","../src/_api/generated/cfg_totp/totp/client.ts","../src/_api/generated/cfg_totp/http.ts","../src/_api/generated/cfg_totp/errors.ts","../src/_api/generated/cfg_totp/logger.ts","../src/_api/generated/cfg_totp/retry.ts","../src/_api/generated/cfg_totp/client.ts","../src/_api/generated/cfg_totp/storage.ts","../src/_api/generated/cfg_totp/enums.ts","../src/_api/generated/cfg_totp/_utils/schemas/index.ts","../src/_api/generated/cfg_totp/_utils/schemas/BackupCodesRegenerateRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/BackupCodesRegenerateResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/BackupCodesStatus.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/ConfirmSetupRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/ConfirmSetupResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/DeviceList.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/DeviceListResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/DisableRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/PaginatedDeviceListResponseList.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/SetupRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/SetupResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/TotpVerifyUser.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/VerifyBackupRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/VerifyRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/VerifyResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/fetchers/index.ts","../src/_api/generated/cfg_totp/api-instance.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__backup_codes.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__totp_management.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__totp_setup.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__totp_verification.ts","../src/_api/generated/cfg_totp/index.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts__auth.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts__oauth.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts__user_profile.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts.ts","../src/_api/generated/cfg_centrifugo/_utils/hooks/index.ts","../src/_api/generated/cfg_centrifugo/_utils/hooks/centrifugo__centrifugo_auth.ts","../src/_api/generated/cfg_totp/_utils/hooks/index.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__backup_codes.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__totp_management.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__totp_setup.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__totp_verification.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp.ts"],"sourcesContent":["/**\n * @djangocfg/api - Pre-configured API Clients\n *\n * Ready-to-use API instances for accounts and centrifugo.\n *\n * Usage:\n * import { apiAccounts, apiCentrifugo } from '@djangocfg/api/clients';\n * import { useAccountsOauthGithubCallbackCreate } from '@djangocfg/api/clients';\n */\n\nimport { API as AccountsAPIClass, LocalStorageAdapter } from './_api/generated/cfg_accounts';\nimport { API as CentrifugoAPIClass } from './_api/generated/cfg_centrifugo';\nimport { API as TotpAPIClass } from './_api/generated/cfg_totp';\n\n// ============================================================================\n// Pre-configured API instances (for hooks and direct usage)\n// ============================================================================\nconst isStaticBuild = process.env.NEXT_PUBLIC_STATIC_BUILD === 'true';\nconst apiUrl = isStaticBuild ? '' : process.env.NEXT_PUBLIC_API_URL || '';\nconst storage = new LocalStorageAdapter();\n\nexport const apiAccounts = new AccountsAPIClass(apiUrl, { storage });\nexport const apiTotp = new TotpAPIClass(apiUrl, { storage });\nexport const apiCentrifugo = new CentrifugoAPIClass(apiUrl, { storage });\n\n// ============================================================================\n// Enums (re-export from accounts)\n// ============================================================================\nexport * as Enums from './_api/generated/cfg_accounts/enums';\n\n// ============================================================================\n// CFG Accounts (primary exports - includes shared types)\n// ============================================================================\nexport * from './_api/generated/cfg_accounts/_utils/hooks';\nexport * from './_api/generated/cfg_accounts/_utils/fetchers';\nexport * from './_api/generated/cfg_accounts/_utils/schemas';\n\n// ============================================================================\n// CFG Centrifugo (namespaced to avoid conflicts)\n// ============================================================================\nexport * as CentrifugoHooks from './_api/generated/cfg_centrifugo/_utils/hooks';\nexport * as CentrifugoFetchers from './_api/generated/cfg_centrifugo/_utils/fetchers';\nexport * as CentrifugoTypes from './_api/generated/cfg_centrifugo/_utils/schemas';\n\n// ============================================================================\n// CFG TOTP (namespaced to avoid conflicts)\n// ============================================================================\nexport * as TotpHooks from './_api/generated/cfg_totp/_utils/hooks';\nexport * as TotpFetchers from './_api/generated/cfg_totp/_utils/fetchers';\nexport * as TotpTypes from './_api/generated/cfg_totp/_utils/schemas';\n\n// ============================================================================\n// API Classes (for creating custom instances)\n// ============================================================================\nexport { API as AccountsAPI } from './_api/generated/cfg_accounts';\nexport { API as TotpAPI } from './_api/generated/cfg_totp';\nexport { API as CentrifugoAPI } from './_api/generated/cfg_centrifugo';\n","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Auth.\n */\nexport class Auth {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Refresh JWT token.\n */\n async accountsTokenRefreshCreate(data: Models.TokenRefreshRequest): Promise<Models.TokenRefresh> {\n const response = await this.client.request('POST', \"/cfg/accounts/token/refresh/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Oauth.\n */\nexport class Oauth {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * List OAuth connections\n * \n * Get all OAuth connections for the current user.\n */\n async accountsOauthConnectionsList(): Promise<any> {\n const response = await this.client.request('GET', \"/cfg/accounts/oauth/connections/\");\n return (response as any).results || response;\n }\n\n /**\n * Disconnect OAuth provider\n * \n * Remove OAuth connection for the specified provider.\n */\n async accountsOauthDisconnectCreate(data: Models.OAuthDisconnectRequestRequest): Promise<any> {\n const response = await this.client.request('POST', \"/cfg/accounts/oauth/disconnect/\", { body: data });\n return response;\n }\n\n /**\n * Start GitHub OAuth\n * \n * Generate GitHub OAuth authorization URL. Redirect user to this URL to\n * start authentication.\n */\n async accountsOauthGithubAuthorizeCreate(data: Models.OAuthAuthorizeRequestRequest): Promise<Models.OAuthAuthorizeResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/oauth/github/authorize/\", { body: data });\n return response;\n }\n\n /**\n * Complete GitHub OAuth\n * \n * Exchange authorization code for JWT tokens. Call this after GitHub\n * redirects back with code.\n */\n async accountsOauthGithubCallbackCreate(data: Models.OAuthCallbackRequestRequest): Promise<Models.OAuthTokenResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/oauth/github/callback/\", { body: data });\n return response;\n }\n\n /**\n * List OAuth providers\n * \n * Get list of available OAuth providers for authentication.\n */\n async accountsOauthProvidersRetrieve(): Promise<Models.OAuthProvidersResponse> {\n const response = await this.client.request('GET', \"/cfg/accounts/oauth/providers/\");\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for User Profile.\n */\nexport class UserProfile {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Get current user profile\n * \n * Retrieve the current authenticated user's profile information.\n */\n async accountsProfileRetrieve(): Promise<Models.User> {\n const response = await this.client.request('GET', \"/cfg/accounts/profile/\");\n return response;\n }\n\n /**\n * Upload user avatar\n * \n * Upload avatar image for the current authenticated user. Accepts\n * multipart/form-data with 'avatar' field.\n */\n async accountsProfileAvatarCreate(data: Models.CfgAccountsProfileAvatarCreateRequest): Promise<Models.User> {\n const formData = new FormData();\n formData.append('avatar', data.avatar);\n const response = await this.client.request('POST', \"/cfg/accounts/profile/avatar/\", { formData });\n return response;\n }\n\n /**\n * Delete user account\n * \n * Permanently delete the current user's account. This operation: -\n * Deactivates the account (user cannot log in) - Anonymizes personal data\n * (GDPR compliance) - Frees up the email address for re-registration -\n * Preserves audit trail The account can be restored by an administrator if\n * needed.\n */\n async accountsProfileDeleteCreate(): Promise<Models.AccountDeleteResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/profile/delete/\");\n return response;\n }\n\n /**\n * Partial update user profile\n * \n * Partially update the current authenticated user's profile information.\n * Supports avatar upload.\n */\n async accountsProfilePartialUpdate(data: Models.UserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PUT', \"/cfg/accounts/profile/partial/\", { body: data });\n return response;\n }\n\n /**\n * Partial update user profile\n * \n * Partially update the current authenticated user's profile information.\n * Supports avatar upload.\n */\n async accountsProfilePartialPartialUpdate(data?: Models.PatchedUserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PATCH', \"/cfg/accounts/profile/partial/\", { body: data });\n return response;\n }\n\n /**\n * Update user profile\n * \n * Update the current authenticated user's profile information.\n */\n async accountsProfileUpdateUpdate(data: Models.UserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PUT', \"/cfg/accounts/profile/update/\", { body: data });\n return response;\n }\n\n /**\n * Update user profile\n * \n * Update the current authenticated user's profile information.\n */\n async accountsProfileUpdatePartialUpdate(data?: Models.PatchedUserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PATCH', \"/cfg/accounts/profile/update/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Accounts.\n */\nexport class Accounts {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Request OTP code to email.\n */\n async otpRequestCreate(data: Models.OTPRequestRequest): Promise<Models.OTPRequestResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/otp/request/\", { body: data });\n return response;\n }\n\n /**\n * Verify OTP code and return JWT tokens or 2FA session. If user has 2FA\n * enabled: - Returns requires_2fa=True with session_id - Client must\n * complete 2FA verification at /cfg/totp/verify/ If user has no 2FA: -\n * Returns JWT tokens and user data directly\n */\n async otpVerifyCreate(data: Models.OTPVerifyRequest): Promise<Models.OTPVerifyResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/otp/verify/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * HTTP Client Adapter Pattern\n *\n * Allows switching between fetch/axios/httpx without changing generated code.\n * Provides unified interface for making HTTP requests.\n */\n\nexport interface HttpRequest {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n params?: Record<string, any>;\n /** FormData for file uploads (multipart/form-data) */\n formData?: FormData;\n /** Binary data for octet-stream uploads */\n binaryBody?: Blob | ArrayBuffer;\n}\n\nexport interface HttpResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/**\n * HTTP Client Adapter Interface.\n * Implement this to use custom HTTP clients (axios, httpx, etc.)\n */\nexport interface HttpClientAdapter {\n request<T = any>(request: HttpRequest): Promise<HttpResponse<T>>;\n}\n\n/**\n * Default Fetch API adapter.\n * Uses native browser fetch() with proper error handling.\n */\nexport class FetchAdapter implements HttpClientAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const { method, url, headers, body, params, formData, binaryBody } = request;\n\n // Build URL with query params\n let finalUrl = url;\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n finalUrl = url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;\n }\n }\n\n // Build headers\n const finalHeaders: Record<string, string> = { ...headers };\n\n // Determine body and content-type\n let requestBody: string | FormData | Blob | ArrayBuffer | undefined;\n\n if (formData) {\n // For multipart/form-data, let browser set Content-Type with boundary\n requestBody = formData;\n // Don't set Content-Type - browser will set it with boundary\n } else if (binaryBody) {\n // Binary upload (application/octet-stream)\n finalHeaders['Content-Type'] = 'application/octet-stream';\n requestBody = binaryBody;\n } else if (body) {\n // JSON request\n finalHeaders['Content-Type'] = 'application/json';\n requestBody = JSON.stringify(body);\n }\n\n // Make request\n const response = await fetch(finalUrl, {\n method,\n headers: finalHeaders,\n body: requestBody,\n credentials: 'include', // Include Django session cookies\n });\n\n // Parse response\n let data: any = null;\n const contentType = response.headers.get('content-type');\n\n if (response.status !== 204 && contentType?.includes('application/json')) {\n data = await response.json();\n } else if (response.status !== 204) {\n data = await response.text();\n }\n\n // Convert Headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n };\n }\n}\n\n/**\n * FetchAdapter with keepalive:true.\n *\n * Use this adapter when you need requests to survive page unload\n * (visibilitychange / beforeunload) — the browser will complete the request\n * even after the page is navigated away. Typical use: monitor / analytics flush.\n *\n * @example\n * ```typescript\n * import { APIClient, KeepAliveFetchAdapter } from './client';\n * const client = new APIClient(baseUrl, { httpClient: new KeepAliveFetchAdapter() });\n * ```\n */\nexport class KeepAliveFetchAdapter extends FetchAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const origFetch = globalThis.fetch;\n globalThis.fetch = (input: RequestInfo | URL, init?: RequestInit) =>\n origFetch(input, { ...init, keepalive: true });\n try {\n return await super.request<T>(request);\n } finally {\n globalThis.fetch = origFetch;\n }\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Error Classes\n *\n * Typed error classes with Django REST Framework support.\n */\n\n/**\n * HTTP API Error with DRF field-specific validation errors.\n *\n * Usage:\n * ```typescript\n * try {\n * await api.users.create(userData);\n * } catch (error) {\n * if (error instanceof APIError) {\n * if (error.isValidationError) {\n * console.log('Field errors:', error.fieldErrors);\n * // { \"email\": [\"Email already exists\"], \"username\": [\"Required\"] }\n * }\n * }\n * }\n * ```\n */\nexport class APIError extends Error {\n constructor(\n public statusCode: number,\n public statusText: string,\n public response: any,\n public url: string,\n message?: string\n ) {\n super(message || `HTTP ${statusCode}: ${statusText}`);\n this.name = 'APIError';\n }\n\n /**\n * Get error details from response.\n * DRF typically returns: { \"detail\": \"Error message\" } or { \"field\": [\"error1\", \"error2\"] }\n */\n get details(): Record<string, any> | null {\n if (typeof this.response === 'object' && this.response !== null) {\n return this.response;\n }\n return null;\n }\n\n /**\n * Get field-specific validation errors from DRF.\n * Returns: { \"field_name\": [\"error1\", \"error2\"], ... }\n */\n get fieldErrors(): Record<string, string[]> | null {\n const details = this.details;\n if (!details) return null;\n\n // DRF typically returns: { \"field\": [\"error1\", \"error2\"] }\n const fieldErrors: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(details)) {\n if (Array.isArray(value)) {\n fieldErrors[key] = value;\n }\n }\n\n return Object.keys(fieldErrors).length > 0 ? fieldErrors : null;\n }\n\n /**\n * Get single error message from DRF.\n * Checks for \"detail\", \"message\", or first field error.\n */\n get errorMessage(): string {\n const details = this.details;\n if (!details) return this.message;\n\n // Check for \"detail\" field (common in DRF)\n if (details.detail) {\n return Array.isArray(details.detail) ? details.detail.join(', ') : String(details.detail);\n }\n\n // Check for \"message\" field\n if (details.message) {\n return String(details.message);\n }\n\n // Return first field error\n const fieldErrors = this.fieldErrors;\n if (fieldErrors) {\n const firstField = Object.keys(fieldErrors)[0];\n if (firstField) {\n return `${firstField}: ${fieldErrors[firstField]?.join(', ')}`;\n }\n }\n\n return this.message;\n }\n\n // Helper methods for common HTTP status codes\n get isValidationError(): boolean { return this.statusCode === 400; }\n get isAuthError(): boolean { return this.statusCode === 401; }\n get isPermissionError(): boolean { return this.statusCode === 403; }\n get isNotFoundError(): boolean { return this.statusCode === 404; }\n get isServerError(): boolean { return this.statusCode >= 500 && this.statusCode < 600; }\n}\n\n/**\n * Network Error (connection failed, timeout, etc.)\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public url: string,\n public originalError?: Error\n ) {\n super(message);\n this.name = 'NetworkError';\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Logger with Consola\n * Beautiful console logging for API requests and responses\n *\n * Installation:\n * npm install consola\n */\n\nimport { type ConsolaInstance, createConsola } from 'consola';\n\n/**\n * Request log data\n */\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\n/**\n * Response log data\n */\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Error log data\n */\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n /** Enable logging */\n enabled: boolean;\n /** Log requests */\n logRequests: boolean;\n /** Log responses */\n logResponses: boolean;\n /** Log errors */\n logErrors: boolean;\n /** Log request/response bodies */\n logBodies: boolean;\n /** Log headers (excluding sensitive ones) */\n logHeaders: boolean;\n /** Custom consola instance */\n consola?: ConsolaInstance;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: process.env.NODE_ENV !== 'production',\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\n/**\n * Sensitive header names to filter out\n */\nconst SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-csrf-token',\n];\n\n/**\n * API Logger class\n */\nexport class APILogger {\n private config: LoggerConfig;\n private consola: ConsolaInstance;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.consola = config.consola || createConsola({\n level: this.config.enabled ? 4 : 0,\n });\n }\n\n /**\n * Enable logging\n */\n enable(): void {\n this.config.enabled = true;\n }\n\n /**\n * Disable logging\n */\n disable(): void {\n this.config.enabled = false;\n }\n\n /**\n * Update configuration\n */\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Filter sensitive headers\n */\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_HEADERS.includes(lowerKey)) {\n filtered[key] = '***';\n } else {\n filtered[key] = headers[key] || '';\n }\n });\n\n return filtered;\n }\n\n /**\n * Log request\n */\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n\n const { method, url, headers, body } = request;\n\n this.consola.start(`${method} ${url}`);\n\n if (this.config.logHeaders && headers) {\n this.consola.debug('Headers:', this.filterHeaders(headers));\n }\n\n if (this.config.logBodies && body) {\n this.consola.debug('Body:', body);\n }\n }\n\n /**\n * Log response\n */\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n\n const statusColor = status >= 500 ? 'red'\n : status >= 400 ? 'yellow'\n : status >= 300 ? 'cyan'\n : 'green';\n\n this.consola.success(\n `${method} ${url} ${status} ${statusText} (${duration}ms)`\n );\n\n if (this.config.logBodies && data) {\n this.consola.debug('Response:', data);\n }\n }\n\n /**\n * Log error\n */\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n\n this.consola.error(\n `${method} ${url} ${statusCode || 'Network'} Error (${duration}ms)`\n );\n\n this.consola.error('Message:', message);\n\n if (fieldErrors && Object.keys(fieldErrors).length > 0) {\n this.consola.error('Field Errors:');\n Object.entries(fieldErrors).forEach(([field, errors]) => {\n errors.forEach((err) => {\n this.consola.error(` • ${field}: ${err}`);\n });\n });\n }\n }\n\n /**\n * Log general info\n */\n info(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.info(message, ...args);\n }\n\n /**\n * Log warning\n */\n warn(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.warn(message, ...args);\n }\n\n /**\n * Log error\n */\n error(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.error(message, ...args);\n }\n\n /**\n * Log debug\n */\n debug(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.debug(message, ...args);\n }\n\n /**\n * Log success\n */\n success(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.success(message, ...args);\n }\n\n /**\n * Create a sub-logger with prefix\n */\n withTag(tag: string): ConsolaInstance {\n return this.consola.withTag(tag);\n }\n}\n\n/**\n * Default logger instance\n */\nexport const defaultLogger = new APILogger();","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Retry Configuration and Utilities\n *\n * Provides automatic retry logic for failed HTTP requests using p-retry.\n * Retries only on network errors and server errors (5xx), not client errors (4xx).\n */\n\nimport pRetry, { AbortError } from 'p-retry';\nimport { APIError, NetworkError } from './errors';\n\n/**\n * Information about a failed retry attempt.\n */\nexport interface FailedAttemptInfo {\n /** The error that caused the failure */\n error: Error;\n /** The attempt number (1-indexed) */\n attemptNumber: number;\n /** Number of retries left */\n retriesLeft: number;\n}\n\n/**\n * Retry configuration options.\n *\n * Uses exponential backoff with jitter by default to avoid thundering herd.\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts.\n * @default 3\n */\n retries?: number;\n\n /**\n * Exponential backoff factor.\n * @default 2\n */\n factor?: number;\n\n /**\n * Minimum wait time between retries (ms).\n * @default 1000\n */\n minTimeout?: number;\n\n /**\n * Maximum wait time between retries (ms).\n * @default 60000\n */\n maxTimeout?: number;\n\n /**\n * Add randomness to wait times (jitter).\n * Helps avoid thundering herd problem.\n * @default true\n */\n randomize?: boolean;\n\n /**\n * Callback called on each failed attempt.\n */\n onFailedAttempt?: (info: FailedAttemptInfo) => void;\n}\n\n/**\n * Default retry configuration.\n */\nexport const DEFAULT_RETRY_CONFIG: Required<RetryConfig> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 60000,\n randomize: true,\n onFailedAttempt: () => {},\n};\n\n/**\n * Determine if an error should trigger a retry.\n *\n * Retries on:\n * - Network errors (connection refused, timeout, etc.)\n * - Server errors (5xx status codes)\n * - Rate limiting (429 status code)\n *\n * Does NOT retry on:\n * - Client errors (4xx except 429)\n * - Authentication errors (401, 403)\n * - Not found (404)\n *\n * @param error - The error to check\n * @returns true if should retry, false otherwise\n */\nexport function shouldRetry(error: any): boolean {\n // Always retry network errors\n if (error instanceof NetworkError) {\n return true;\n }\n\n // For API errors, check status code\n if (error instanceof APIError) {\n const status = error.statusCode;\n\n // Retry on 5xx server errors\n if (status >= 500 && status < 600) {\n return true;\n }\n\n // Retry on 429 (rate limit)\n if (status === 429) {\n return true;\n }\n\n // Do NOT retry on 4xx client errors\n return false;\n }\n\n // Retry on unknown errors (might be network issues)\n return true;\n}\n\n/**\n * Wrap a function with retry logic.\n *\n * @param fn - Async function to retry\n * @param config - Retry configuration\n * @returns Result of the function\n *\n * @example\n * ```typescript\n * const result = await withRetry(\n * async () => fetch('https://api.example.com/users'),\n * { retries: 5, minTimeout: 2000 }\n * );\n * ```\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const finalConfig = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n return pRetry(\n async () => {\n try {\n return await fn();\n } catch (error) {\n // Check if we should retry this error\n if (!shouldRetry(error)) {\n // Abort retry immediately for non-retryable errors\n throw new AbortError(error as Error);\n }\n\n // Re-throw error to trigger retry\n throw error;\n }\n },\n {\n retries: finalConfig.retries,\n factor: finalConfig.factor,\n minTimeout: finalConfig.minTimeout,\n maxTimeout: finalConfig.maxTimeout,\n randomize: finalConfig.randomize,\n onFailedAttempt: finalConfig.onFailedAttempt ? (error) => {\n // Adapt p-retry's FailedAttemptError to our FailedAttemptInfo\n const pRetryError = error as any; // p-retry's internal type\n finalConfig.onFailedAttempt!({\n error: pRetryError as Error,\n attemptNumber: pRetryError.attemptNumber,\n retriesLeft: pRetryError.retriesLeft,\n });\n } : undefined,\n }\n );\n}","import { Auth } from \"./accounts__auth\";\nimport { Oauth } from \"./accounts__oauth\";\nimport { UserProfile } from \"./accounts__user_profile\";\nimport { Accounts } from \"./accounts\";\nimport { HttpClientAdapter, FetchAdapter } from \"./http\";\nimport { APIError, NetworkError } from \"./errors\";\nimport { APILogger, type LoggerConfig } from \"./logger\";\nimport { withRetry, type RetryConfig } from \"./retry\";\n\n\n/**\n * Async API client for Django CFG API.\n *\n * Usage:\n * ```typescript\n * const client = new APIClient('https://api.example.com');\n * const users = await client.users.list();\n * const post = await client.posts.create(newPost);\n *\n * // Custom HTTP adapter (e.g., Axios)\n * const client = new APIClient('https://api.example.com', {\n * httpClient: new AxiosAdapter()\n * });\n * ```\n */\nexport class APIClient {\n private baseUrl: string;\n private httpClient: HttpClientAdapter;\n private logger: APILogger | null = null;\n private retryConfig: RetryConfig | null = null;\n private tokenGetter: (() => string | null) | null = null;\n\n // Sub-clients\n public auth: Auth;\n public oauth: Oauth;\n public user_profile: UserProfile;\n public accounts: Accounts;\n\n constructor(\n baseUrl: string,\n options?: {\n httpClient?: HttpClientAdapter;\n loggerConfig?: Partial<LoggerConfig>;\n retryConfig?: RetryConfig;\n tokenGetter?: () => string | null;\n }\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.httpClient = options?.httpClient || new FetchAdapter();\n this.tokenGetter = options?.tokenGetter || null;\n\n // Initialize logger if config provided\n if (options?.loggerConfig !== undefined) {\n this.logger = new APILogger(options.loggerConfig);\n }\n\n // Store retry configuration\n if (options?.retryConfig !== undefined) {\n this.retryConfig = options.retryConfig;\n }\n\n // Initialize sub-clients\n this.auth = new Auth(this);\n this.oauth = new Oauth(this);\n this.user_profile = new UserProfile(this);\n this.accounts = new Accounts(this);\n }\n\n /**\n * Get CSRF token from cookies (for SessionAuthentication).\n *\n * Returns null if cookie doesn't exist (JWT-only auth).\n */\n getCsrfToken(): string | null {\n const name = 'csrftoken';\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n /**\n * Get the base URL for building streaming/download URLs.\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Get JWT token for URL authentication (used in streaming endpoints).\n * Returns null if no token getter is configured or no token is available.\n */\n getToken(): string | null {\n return this.tokenGetter ? this.tokenGetter() : null;\n }\n\n /**\n * Make HTTP request with Django CSRF and session handling.\n * Automatically retries on network errors and 5xx server errors.\n */\n async request<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Wrap request in retry logic if configured\n if (this.retryConfig) {\n return withRetry(() => this._makeRequest<T>(method, path, options), {\n ...this.retryConfig,\n onFailedAttempt: (info) => {\n // Log retry attempts\n if (this.logger) {\n this.logger.warn(\n `Retry attempt ${info.attemptNumber}/${info.retriesLeft + info.attemptNumber} ` +\n `for ${method} ${path}: ${info.error.message}`\n );\n }\n // Call user's onFailedAttempt if provided\n this.retryConfig?.onFailedAttempt?.(info);\n },\n });\n }\n\n // No retry configured, make request directly\n return this._makeRequest<T>(method, path, options);\n }\n\n /**\n * Internal request method (without retry wrapper).\n * Used by request() method with optional retry logic.\n */\n private async _makeRequest<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Build URL - handle both absolute and relative paths\n // When baseUrl is empty (static builds), path is used as-is (relative to current origin)\n const url = this.baseUrl ? `${this.baseUrl}${path}` : path;\n const startTime = Date.now();\n\n // Build headers - start with custom headers from options\n const headers: Record<string, string> = {\n ...(options?.headers || {})\n };\n\n // Don't set Content-Type for FormData/binaryBody (browser will set it with boundary)\n if (!options?.formData && !options?.binaryBody && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n // CSRF not needed - SessionAuthentication not enabled in DRF config\n // Your API uses JWT/Token authentication (no CSRF required)\n\n // Log request\n if (this.logger) {\n this.logger.logRequest({\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n });\n }\n\n try {\n // Make request via HTTP adapter\n const response = await this.httpClient.request<T>({\n method,\n url: url,\n headers,\n params: options?.params,\n body: options?.body,\n formData: options?.formData,\n binaryBody: options?.binaryBody,\n });\n\n const duration = Date.now() - startTime;\n\n // Check for HTTP errors\n if (response.status >= 400) {\n const error = new APIError(\n response.status,\n response.statusText,\n response.data,\n url\n );\n\n // Log error\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: error.message,\n statusCode: response.status,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw error;\n }\n\n // Log successful response\n if (this.logger) {\n this.logger.logResponse(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n return response.data as T;\n } catch (error) {\n const duration = Date.now() - startTime;\n\n // Re-throw APIError as-is\n if (error instanceof APIError) {\n throw error;\n }\n\n // Classify network error using PerformanceResourceTiming.\n // Browser intentionally makes CORS errors indistinguishable from network failures\n // (same TypeError: \"Failed to fetch\") for security reasons. We use PerformanceResourceTiming\n // as the best available heuristic:\n // - Entry exists with responseStatus === 0 → request reached server, JS blocked → likely CORS\n // - No entry / entry missing → connection never established → server unavailable / DNS / offline\n // All cases are dispatched as 'network-error' with a `possibly_cors` flag.\n let possiblyCors = false;\n if (error instanceof TypeError && typeof window !== 'undefined') {\n try {\n const isCrossOrigin = (() => {\n try { return new URL(url).origin !== window.location.origin; } catch { return false; }\n })();\n if (isCrossOrigin) {\n const entries = performance.getEntriesByName(url, 'resource');\n if (entries.length > 0) {\n const last = entries[entries.length - 1] as PerformanceResourceTiming;\n possiblyCors = 'responseStatus' in last && (last as any).responseStatus === 0;\n }\n }\n } catch { /* ignore — PerformanceResourceTiming not available */ }\n }\n\n if (this.logger) {\n this.logger.error(`⚠️ Network Error: ${method} ${url}`);\n this.logger.error(` → ${error instanceof Error ? error.message : String(error)}`);\n if (possiblyCors) {\n this.logger.error(` → Possibly blocked by CORS policy (configure CORS on the server)`);\n }\n }\n\n // Dispatch network-error event with possibly_cors hint\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('network-error', {\n detail: {\n url: url,\n method: method,\n error: error instanceof Error ? error.message : String(error),\n possibly_cors: possiblyCors,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n }));\n } catch { /* silently ignore — event dispatch must never crash the app */ }\n }\n\n // Wrap other errors as NetworkError\n const networkError = error instanceof Error\n ? new NetworkError(error.message, url, error)\n : new NetworkError('Unknown error', url);\n\n // Detailed logging via logger.logError\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: networkError.message,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw networkError;\n }\n }\n}\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Storage adapters for cross-platform token storage.\n *\n * Supports:\n * - LocalStorage (browser)\n * - Cookies (SSR/browser)\n * - Memory (Node.js/Electron/testing)\n */\n\nimport type { APILogger } from './logger';\n\n/**\n * Storage adapter interface for cross-platform token storage.\n */\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/**\n * LocalStorage adapter with safe try-catch for browser environments.\n * Works in modern browsers with localStorage support.\n * \n * Note: This adapter uses window.localStorage and should only be used in browser/client environments.\n * For server-side usage, use MemoryStorageAdapter or CookieStorageAdapter instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n const value = localStorage.getItem(key);\n this.logger?.debug(`LocalStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n } catch (error) {\n this.logger?.error('LocalStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(key, value);\n this.logger?.debug(`LocalStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.removeItem(key);\n this.logger?.debug(`LocalStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * Cookie-based storage adapter for SSR and browser environments.\n * Useful for Next.js, Nuxt.js, and other SSR frameworks.\n */\nexport class CookieStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof document === 'undefined') {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n return null;\n }\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts.length === 2) {\n const result = parts.pop()?.split(';').shift() || null;\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): ${result ? 'found' : 'not found'}`);\n return result;\n }\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): not found`);\n } catch (error) {\n this.logger?.error('CookieStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=${value}; path=/; max-age=31536000`;\n this.logger?.debug(`CookieStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n this.logger?.debug(`CookieStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * In-memory storage adapter for Node.js, Electron, and testing environments.\n * Data is stored in RAM and cleared when process exits.\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private storage: Map<string, string> = new Map();\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n const value = this.storage.get(key) || null;\n this.logger?.debug(`MemoryStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n\n setItem(key: string, value: string): void {\n this.storage.set(key, value);\n this.logger?.debug(`MemoryStorage.setItem(\"${key}\"): success`);\n }\n\n removeItem(key: string): void {\n this.storage.delete(key);\n this.logger?.debug(`MemoryStorage.removeItem(\"${key}\"): success`);\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * OAuth provider to disconnect\n * * `github` - GitHub\n */\nexport enum OAuthConnectionProvider {\n GITHUB = \"github\",\n}\n\n","/**\n * Zod schema for AccountDeleteResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for account deletion.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for account deletion.\n */\nexport const AccountDeleteResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type AccountDeleteResponse = z.infer<typeof AccountDeleteResponseSchema>","/**\n * Zod schema for CentrifugoToken\n *\n * This schema provides runtime validation and type inference.\n * * Nested serializer for Centrifugo WebSocket connection token.\n * */\nimport { z } from 'zod'\n\n/**\n * Nested serializer for Centrifugo WebSocket connection token.\n */\nexport const CentrifugoTokenSchema = z.object({\n token: z.string(),\n centrifugo_url: z.string(),\n expires_at: z.string().datetime({ offset: true }),\n channels: z.array(z.string()),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type CentrifugoToken = z.infer<typeof CentrifugoTokenSchema>","/**\n * Zod schema for CfgAccountsProfileAvatarCreateRequest\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\n\nexport const CfgAccountsProfileAvatarCreateRequestSchema = z.object({\n avatar: z.union([z.instanceof(File), z.instanceof(Blob)]),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type CfgAccountsProfileAvatarCreateRequest = z.infer<typeof CfgAccountsProfileAvatarCreateRequestSchema>","/**\n * Zod schema for OAuthAuthorizeRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Request to start OAuth flow.\n * */\nimport { z } from 'zod'\n\n/**\n * Request to start OAuth flow.\n */\nexport const OAuthAuthorizeRequestRequestSchema = z.object({\n redirect_uri: z.string().optional(),\n source_url: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthAuthorizeRequestRequest = z.infer<typeof OAuthAuthorizeRequestRequestSchema>","/**\n * Zod schema for OAuthAuthorizeResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response with OAuth authorization URL.\n * */\nimport { z } from 'zod'\n\n/**\n * Response with OAuth authorization URL.\n */\nexport const OAuthAuthorizeResponseSchema = z.object({\n authorization_url: z.string(),\n state: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthAuthorizeResponse = z.infer<typeof OAuthAuthorizeResponseSchema>","/**\n * Zod schema for OAuthCallbackRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Request to complete OAuth flow (callback handler).\n * */\nimport { z } from 'zod'\n\n/**\n * Request to complete OAuth flow (callback handler).\n */\nexport const OAuthCallbackRequestRequestSchema = z.object({\n code: z.string().min(10).max(500),\n state: z.string().min(20).max(100),\n redirect_uri: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthCallbackRequestRequest = z.infer<typeof OAuthCallbackRequestRequestSchema>","/**\n * Zod schema for OAuthConnection\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for OAuth connection info (user-facing).\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Serializer for OAuth connection info (user-facing).\n */\nexport const OAuthConnectionSchema = z.object({\n id: z.number().int(),\n provider: z.nativeEnum(Enums.OAuthConnectionProvider),\n provider_display: z.string(),\n provider_username: z.string(),\n provider_email: z.email(),\n provider_avatar_url: z.string(),\n connected_at: z.string().datetime({ offset: true }),\n last_login_at: z.string().datetime({ offset: true }),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthConnection = z.infer<typeof OAuthConnectionSchema>","/**\n * Zod schema for OAuthDisconnectRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Request to disconnect OAuth provider.\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Request to disconnect OAuth provider.\n */\nexport const OAuthDisconnectRequestRequestSchema = z.object({\n provider: z.nativeEnum(Enums.OAuthConnectionProvider),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthDisconnectRequestRequest = z.infer<typeof OAuthDisconnectRequestRequestSchema>","/**\n * Zod schema for OAuthError\n *\n * This schema provides runtime validation and type inference.\n * * Error response for OAuth endpoints.\n * */\nimport { z } from 'zod'\n\n/**\n * Error response for OAuth endpoints.\n */\nexport const OAuthErrorSchema = z.object({\n error: z.string(),\n error_description: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthError = z.infer<typeof OAuthErrorSchema>","/**\n * Zod schema for OAuthProvidersResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response with available OAuth providers.\n * */\nimport { z } from 'zod'\n\n/**\n * Response with available OAuth providers.\n */\nexport const OAuthProvidersResponseSchema = z.object({\n providers: z.array(z.record(z.string(), z.any())),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthProvidersResponse = z.infer<typeof OAuthProvidersResponseSchema>","/**\n * Zod schema for OAuthTokenResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response with JWT tokens after OAuth authentication.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- access/refresh/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- access/refresh/user: populated\n * */\nimport { z } from 'zod'\n\n/**\n * Response with JWT tokens after OAuth authentication.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- access/refresh/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- access/refresh/user: populated\n */\nexport const OAuthTokenResponseSchema = z.object({\n requires_2fa: z.boolean().optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n access: z.string().nullable().optional(),\n refresh: z.string().nullable().optional(),\n user: z.record(z.string(), z.any()).nullable().optional(),\n is_new_user: z.boolean(),\n is_new_connection: z.boolean(),\n should_prompt_2fa: z.boolean().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthTokenResponse = z.infer<typeof OAuthTokenResponseSchema>","/**\n * Zod schema for OTPErrorResponse\n *\n * This schema provides runtime validation and type inference.\n * * Typed error response for OTP operations.\n\nerror_code values:\n - invalid_identifier — malformed email\n - cooldown — too soon after last request (retry_after = seconds)\n - hourly_limit — hourly quota exceeded (retry_after = seconds until reset)\n - daily_limit — daily quota exceeded (retry_after = seconds until reset)\n - rate_limited — IP-level rate limit hit (no retry_after)\n - user_creation_failed — internal error creating account\n - send_failed — transport error (email / SMS)\n - internal_error — unexpected server error\n * */\nimport { z } from 'zod'\n\n/**\n * Typed error response for OTP operations.\n\nerror_code values:\n - invalid_identifier — malformed email\n - cooldown — too soon after last request (retry_after = seconds)\n - hourly_limit — hourly quota exceeded (retry_after = seconds until reset)\n - daily_limit — daily quota exceeded (retry_after = seconds until reset)\n - rate_limited — IP-level rate limit hit (no retry_after)\n - user_creation_failed — internal error creating account\n - send_failed — transport error (email / SMS)\n - internal_error — unexpected server error\n */\nexport const OTPErrorResponseSchema = z.object({\n error: z.string(),\n error_code: z.string().nullable().optional(),\n retry_after: z.number().int().nullable().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPErrorResponse = z.infer<typeof OTPErrorResponseSchema>","/**\n * Zod schema for OTPRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for OTP request.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for OTP request.\n */\nexport const OTPRequestRequestSchema = z.object({\n identifier: z.string().min(1),\n source_url: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPRequestRequest = z.infer<typeof OTPRequestRequestSchema>","/**\n * Zod schema for OTPRequestResponse\n *\n * This schema provides runtime validation and type inference.\n * * OTP request response.\n * */\nimport { z } from 'zod'\n\n/**\n * OTP request response.\n */\nexport const OTPRequestResponseSchema = z.object({\n message: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPRequestResponse = z.infer<typeof OTPRequestResponseSchema>","/**\n * Zod schema for OTPVerifyRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for OTP verification.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for OTP verification.\n */\nexport const OTPVerifyRequestSchema = z.object({\n identifier: z.string().min(1),\n otp: z.string().min(6).max(6),\n source_url: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPVerifyRequest = z.infer<typeof OTPVerifyRequestSchema>","/**\n * Zod schema for OTPVerifyResponse\n *\n * This schema provides runtime validation and type inference.\n * * OTP verification response.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- refresh/access/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- refresh/access/user: populated\n * */\nimport { z } from 'zod'\nimport { UserSchema } from './User.schema'\n\n/**\n * OTP verification response.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- refresh/access/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- refresh/access/user: populated\n */\nexport const OTPVerifyResponseSchema = z.object({\n requires_2fa: z.boolean().optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n refresh: z.string().nullable().optional(),\n access: z.string().nullable().optional(),\n user: UserSchema.nullable().optional(),\n should_prompt_2fa: z.boolean().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPVerifyResponse = z.infer<typeof OTPVerifyResponseSchema>","/**\n * Zod schema for User\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for user details.\n * */\nimport { z } from 'zod'\nimport { CentrifugoTokenSchema } from './CentrifugoToken.schema'\n\n/**\n * Serializer for user details.\n */\nexport const UserSchema = z.object({\n id: z.number().int(),\n email: z.email(),\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n full_name: z.string(),\n initials: z.string(),\n display_username: z.string(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n avatar: z.string().nullable(),\n is_staff: z.boolean(),\n is_superuser: z.boolean(),\n date_joined: z.string().datetime({ offset: true }),\n last_login: z.string().datetime({ offset: true }).nullable(),\n unanswered_messages_count: z.number().int(),\n centrifugo: CentrifugoTokenSchema.nullable(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type User = z.infer<typeof UserSchema>","/**\n * Zod schema for PatchedUserProfileUpdateRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for updating user profile.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for updating user profile.\n */\nexport const PatchedUserProfileUpdateRequestSchema = z.object({\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type PatchedUserProfileUpdateRequest = z.infer<typeof PatchedUserProfileUpdateRequestSchema>","/**\n * Zod schema for TokenRefresh\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\n\nexport const TokenRefreshSchema = z.object({\n access: z.string(),\n refresh: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type TokenRefresh = z.infer<typeof TokenRefreshSchema>","/**\n * Zod schema for TokenRefreshRequest\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\n\nexport const TokenRefreshRequestSchema = z.object({\n refresh: z.string().min(1),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type TokenRefreshRequest = z.infer<typeof TokenRefreshRequestSchema>","/**\n * Zod schema for UserProfileUpdateRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for updating user profile.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for updating user profile.\n */\nexport const UserProfileUpdateRequestSchema = z.object({\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type UserProfileUpdateRequest = z.infer<typeof UserProfileUpdateRequestSchema>","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Accounts\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { OTPRequestRequestSchema, type OTPRequestRequest } from '../schemas/OTPRequestRequest.schema'\nimport { OTPRequestResponseSchema, type OTPRequestResponse } from '../schemas/OTPRequestResponse.schema'\nimport { OTPVerifyRequestSchema, type OTPVerifyRequest } from '../schemas/OTPVerifyRequest.schema'\nimport { OTPVerifyResponseSchema, type OTPVerifyResponse } from '../schemas/OTPVerifyResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/request/\n */\nexport async function createAccountsOtpRequestCreate( data: OTPRequestRequest, client?: any\n): Promise<OTPRequestResponse> {\n const api = client || getAPIInstance()\n const response = await api.accounts.otpRequestCreate(data)\n try {\n return OTPRequestResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOtpRequestCreate\\nPath: /cfg/accounts/otp/request/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOtpRequestCreate',\n path: '/cfg/accounts/otp/request/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/verify/\n */\nexport async function createAccountsOtpVerifyCreate( data: OTPVerifyRequest, client?: any\n): Promise<OTPVerifyResponse> {\n const api = client || getAPIInstance()\n const response = await api.accounts.otpVerifyCreate(data)\n try {\n return OTPVerifyResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOtpVerifyCreate\\nPath: /cfg/accounts/otp/verify/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOtpVerifyCreate',\n path: '/cfg/accounts/otp/verify/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Global API Instance - Singleton configuration with auto-configuration support\n *\n * This module provides a global API instance that auto-configures from\n * environment variables or can be configured manually.\n *\n * AUTO-CONFIGURATION (recommended):\n * Set one of these environment variables and the API will auto-configure:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n *\n * Then just use fetchers and hooks directly:\n * ```typescript\n * import { getUsers } from './_utils/fetchers'\n * const users = await getUsers({ page: 1 })\n * ```\n *\n * MANUAL CONFIGURATION:\n * ```typescript\n * import { configureAPI } from './api-instance'\n *\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'your-jwt-token'\n * })\n * ```\n *\n * For SSR or multiple instances:\n * ```typescript\n * import { API } from './index'\n * import { getUsers } from './_utils/fetchers'\n *\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\n\nimport { API, type APIOptions } from './index'\n\nlet globalAPI: API | null = null\nlet autoConfigAttempted = false\n\n/**\n * Auto-configure from environment variable if available (Next.js pattern)\n * This allows hooks and fetchers to work without explicit configureAPI() call\n *\n * Supported environment variables:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n */\nfunction tryAutoConfigureFromEnv(): void {\n // Only attempt once\n if (autoConfigAttempted) return\n autoConfigAttempted = true\n\n // Skip if already configured\n if (globalAPI) return\n\n // Skip if process is not available (pure browser without bundler)\n if (typeof process === 'undefined' || !process.env) return\n\n // Try different environment variable patterns\n const baseUrl =\n process.env.NEXT_PUBLIC_API_URL ||\n process.env.VITE_API_URL ||\n process.env.REACT_APP_API_URL ||\n process.env.API_URL\n\n if (baseUrl) {\n globalAPI = new API(baseUrl)\n }\n}\n\n/**\n * Get the global API instance\n * Auto-configures from environment variables on first call if not manually configured.\n * @throws Error if API is not configured and no env variable is set\n */\nexport function getAPIInstance(): API {\n // Try auto-configuration on first access (lazy initialization)\n tryAutoConfigureFromEnv()\n\n if (!globalAPI) {\n throw new Error(\n 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\\n\\n' +\n 'Example:\\n' +\n ' import { configureAPI } from \"./api-instance\"\\n' +\n ' configureAPI({ baseUrl: \"https://api.example.com\" })\\n\\n' +\n 'Or set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'\n )\n }\n return globalAPI\n}\n\n/**\n * Check if API is configured (or can be auto-configured)\n */\nexport function isAPIConfigured(): boolean {\n tryAutoConfigureFromEnv()\n return globalAPI !== null\n}\n\n/**\n * Configure the global API instance\n *\n * @param baseUrl - Base URL for the API\n * @param options - Optional configuration (storage, retry, logger)\n *\n * @example\n * ```typescript\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'jwt-token',\n * options: {\n * retryConfig: { maxRetries: 3 },\n * loggerConfig: { enabled: true }\n * }\n * })\n * ```\n */\nexport function configureAPI(config: {\n baseUrl: string\n token?: string\n refreshToken?: string\n options?: APIOptions\n}): API {\n globalAPI = new API(config.baseUrl, config.options)\n\n if (config.token) {\n globalAPI.setToken(config.token, config.refreshToken)\n }\n\n return globalAPI\n}\n\n/**\n * Reconfigure the global API instance with new settings\n * Useful for updating tokens or base URL\n */\nexport function reconfigureAPI(updates: {\n baseUrl?: string\n token?: string\n refreshToken?: string\n}): API {\n const instance = getAPIInstance()\n\n if (updates.baseUrl) {\n instance.setBaseUrl(updates.baseUrl)\n }\n\n if (updates.token) {\n instance.setToken(updates.token, updates.refreshToken)\n }\n\n return instance\n}\n\n/**\n * Clear tokens from the global API instance\n */\nexport function clearAPITokens(): void {\n const instance = getAPIInstance()\n instance.clearTokens()\n}\n\n/**\n * Reset the global API instance\n * Useful for testing or logout scenarios\n */\nexport function resetAPI(): void {\n if (globalAPI) {\n globalAPI.clearTokens()\n }\n globalAPI = null\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Auth\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { TokenRefreshSchema, type TokenRefresh } from '../schemas/TokenRefresh.schema'\nimport { TokenRefreshRequestSchema, type TokenRefreshRequest } from '../schemas/TokenRefreshRequest.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/token/refresh/\n */\nexport async function createAccountsTokenRefreshCreate( data: TokenRefreshRequest, client?: any\n): Promise<TokenRefresh> {\n const api = client || getAPIInstance()\n const response = await api.auth.accountsTokenRefreshCreate(data)\n try {\n return TokenRefreshSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsTokenRefreshCreate\\nPath: /cfg/accounts/token/refresh/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsTokenRefreshCreate',\n path: '/cfg/accounts/token/refresh/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Oauth\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { OAuthAuthorizeRequestRequestSchema, type OAuthAuthorizeRequestRequest } from '../schemas/OAuthAuthorizeRequestRequest.schema'\nimport { OAuthAuthorizeResponseSchema, type OAuthAuthorizeResponse } from '../schemas/OAuthAuthorizeResponse.schema'\nimport { OAuthCallbackRequestRequestSchema, type OAuthCallbackRequestRequest } from '../schemas/OAuthCallbackRequestRequest.schema'\nimport { OAuthDisconnectRequestRequestSchema, type OAuthDisconnectRequestRequest } from '../schemas/OAuthDisconnectRequestRequest.schema'\nimport { OAuthProvidersResponseSchema, type OAuthProvidersResponse } from '../schemas/OAuthProvidersResponse.schema'\nimport { OAuthTokenResponseSchema, type OAuthTokenResponse } from '../schemas/OAuthTokenResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * List OAuth connections\n *\n * @method GET\n * @path /cfg/accounts/oauth/connections/\n */\nexport async function getAccountsOauthConnectionsList( client?: any\n): Promise<any> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthConnectionsList()\n return response\n}\n\n\n/**\n * Disconnect OAuth provider\n *\n * @method POST\n * @path /cfg/accounts/oauth/disconnect/\n */\nexport async function createAccountsOauthDisconnectCreate( data: OAuthDisconnectRequestRequest, client?: any\n): Promise<any> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthDisconnectCreate(data)\n return response\n}\n\n\n/**\n * Start GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/authorize/\n */\nexport async function createAccountsOauthGithubAuthorizeCreate( data: OAuthAuthorizeRequestRequest, client?: any\n): Promise<OAuthAuthorizeResponse> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthGithubAuthorizeCreate(data)\n try {\n return OAuthAuthorizeResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOauthGithubAuthorizeCreate\\nPath: /cfg/accounts/oauth/github/authorize/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOauthGithubAuthorizeCreate',\n path: '/cfg/accounts/oauth/github/authorize/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Complete GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/callback/\n */\nexport async function createAccountsOauthGithubCallbackCreate( data: OAuthCallbackRequestRequest, client?: any\n): Promise<OAuthTokenResponse> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthGithubCallbackCreate(data)\n try {\n return OAuthTokenResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOauthGithubCallbackCreate\\nPath: /cfg/accounts/oauth/github/callback/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOauthGithubCallbackCreate',\n path: '/cfg/accounts/oauth/github/callback/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * List OAuth providers\n *\n * @method GET\n * @path /cfg/accounts/oauth/providers/\n */\nexport async function getAccountsOauthProvidersRetrieve( client?: any\n): Promise<OAuthProvidersResponse> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthProvidersRetrieve()\n try {\n return OAuthProvidersResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getAccountsOauthProvidersRetrieve\\nPath: /cfg/accounts/oauth/providers/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getAccountsOauthProvidersRetrieve',\n path: '/cfg/accounts/oauth/providers/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for User Profile\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { AccountDeleteResponseSchema, type AccountDeleteResponse } from '../schemas/AccountDeleteResponse.schema'\nimport { CfgAccountsProfileAvatarCreateRequestSchema, type CfgAccountsProfileAvatarCreateRequest } from '../schemas/CfgAccountsProfileAvatarCreateRequest.schema'\nimport { PatchedUserProfileUpdateRequestSchema, type PatchedUserProfileUpdateRequest } from '../schemas/PatchedUserProfileUpdateRequest.schema'\nimport { UserSchema, type User } from '../schemas/User.schema'\nimport { UserProfileUpdateRequestSchema, type UserProfileUpdateRequest } from '../schemas/UserProfileUpdateRequest.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * Get current user profile\n *\n * @method GET\n * @path /cfg/accounts/profile/\n */\nexport async function getAccountsProfileRetrieve( client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileRetrieve()\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getAccountsProfileRetrieve\\nPath: /cfg/accounts/profile/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getAccountsProfileRetrieve',\n path: '/cfg/accounts/profile/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Upload user avatar\n *\n * @method POST\n * @path /cfg/accounts/profile/avatar/\n */\nexport async function createAccountsProfileAvatarCreate( data: CfgAccountsProfileAvatarCreateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileAvatarCreate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsProfileAvatarCreate\\nPath: /cfg/accounts/profile/avatar/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsProfileAvatarCreate',\n path: '/cfg/accounts/profile/avatar/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Delete user account\n *\n * @method POST\n * @path /cfg/accounts/profile/delete/\n */\nexport async function createAccountsProfileDeleteCreate( client?: any\n): Promise<AccountDeleteResponse> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileDeleteCreate()\n try {\n return AccountDeleteResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsProfileDeleteCreate\\nPath: /cfg/accounts/profile/delete/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsProfileDeleteCreate',\n path: '/cfg/accounts/profile/delete/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/partial/\n */\nexport async function partialUpdateAccountsProfilePartialUpdate( data: UserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfilePartialUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`partialUpdateAccountsProfilePartialUpdate\\nPath: /cfg/accounts/profile/partial/\\nMethod: PUT`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'partialUpdateAccountsProfilePartialUpdate',\n path: '/cfg/accounts/profile/partial/',\n method: 'PUT',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/partial/\n */\nexport async function partialUpdateAccountsProfilePartialPartialUpdate( data?: PatchedUserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfilePartialPartialUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`partialUpdateAccountsProfilePartialPartialUpdate\\nPath: /cfg/accounts/profile/partial/\\nMethod: PATCH`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'partialUpdateAccountsProfilePartialPartialUpdate',\n path: '/cfg/accounts/profile/partial/',\n method: 'PATCH',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/update/\n */\nexport async function updateAccountsProfileUpdateUpdate( data: UserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileUpdateUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`updateAccountsProfileUpdateUpdate\\nPath: /cfg/accounts/profile/update/\\nMethod: PUT`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'updateAccountsProfileUpdateUpdate',\n path: '/cfg/accounts/profile/update/',\n method: 'PUT',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/update/\n */\nexport async function partialUpdateAccountsProfileUpdatePartialUpdate( data?: PatchedUserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileUpdatePartialUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`partialUpdateAccountsProfileUpdatePartialUpdate\\nPath: /cfg/accounts/profile/update/\\nMethod: PATCH`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'partialUpdateAccountsProfileUpdatePartialUpdate',\n path: '/cfg/accounts/profile/update/',\n method: 'PATCH',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Django CFG API - API Client with JWT Management\n *\n * Usage:\n * ```typescript\n * import { API } from './api';\n *\n * const api = new API('https://api.example.com');\n *\n * // Set JWT token\n * api.setToken('your-jwt-token', 'refresh-token');\n *\n * // Use API\n * const posts = await api.posts.list();\n * const user = await api.users.retrieve(1);\n *\n * // Check authentication\n * if (api.isAuthenticated()) {\n * // ...\n * }\n *\n * // Custom storage with logging (for Electron/Node.js)\n * import { MemoryStorageAdapter, APILogger } from './storage';\n * const logger = new APILogger({ enabled: true, logLevel: 'debug' });\n * const api = new API('https://api.example.com', {\n * storage: new MemoryStorageAdapter(logger),\n * loggerConfig: { enabled: true, logLevel: 'debug' }\n * });\n *\n * // Get OpenAPI schema\n * const schema = api.getSchema();\n * ```\n */\n\nimport { APIClient } from \"./client\";\nimport {\n StorageAdapter,\n LocalStorageAdapter,\n CookieStorageAdapter,\n MemoryStorageAdapter\n} from \"./storage\";\nimport type { RetryConfig } from \"./retry\";\nimport type { LoggerConfig } from \"./logger\";\nimport { APILogger } from \"./logger\";\nimport { Auth } from \"./accounts__auth/client\";\nimport { Oauth } from \"./accounts__oauth/client\";\nimport { UserProfile } from \"./accounts__user_profile/client\";\nimport { Accounts } from \"./accounts/client\";\nexport * as AuthTypes from \"./accounts__auth/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as OauthTypes from \"./accounts__oauth/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as UserProfileTypes from \"./accounts__user_profile/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as AccountsTypes from \"./accounts/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as Enums from \"./enums\";\n\n// Re-export Zod schemas for runtime validation\nexport * as Schemas from \"./_utils/schemas\";\n// Also export all schemas directly for convenience\nexport * from \"./_utils/schemas\";\n\n// Re-export Zod validation events for browser integration\nexport type { ValidationErrorDetail, ValidationErrorEvent } from \"./validation-events\";\nexport { dispatchValidationError, onValidationError, formatZodError } from \"./validation-events\";\n\n// Re-export typed fetchers for universal usage\nexport * as Fetchers from \"./_utils/fetchers\";\nexport * from \"./_utils/fetchers\";\n\n// Re-export API instance configuration functions\nexport {\n configureAPI,\n getAPIInstance,\n reconfigureAPI,\n clearAPITokens,\n resetAPI,\n isAPIConfigured\n} from \"./api-instance\";\n// NOTE: SWR hooks are generated in ./_utils/hooks/ but NOT exported here to keep\n// the main bundle server-safe. Import hooks directly from the hooks directory:\n// import { useUsers } from './_utils/hooks';\n// Or use a separate entry point like '@djangocfg/api/hooks' for client components.\n\n// Re-export core client\nexport { APIClient };\n\n// Re-export storage adapters for convenience\nexport type { StorageAdapter };\nexport { LocalStorageAdapter, CookieStorageAdapter, MemoryStorageAdapter };\n\n// Re-export error classes for convenience\nexport { APIError, NetworkError } from \"./errors\";\n\n// Re-export HTTP adapters for custom implementations\nexport type { HttpClientAdapter, HttpRequest, HttpResponse } from \"./http\";\nexport { FetchAdapter, KeepAliveFetchAdapter } from \"./http\";\n\n// Re-export logger types and classes\nexport type { LoggerConfig, RequestLog, ResponseLog, ErrorLog } from \"./logger\";\nexport { APILogger } from \"./logger\";\n\n// Re-export retry configuration and utilities\nexport type { RetryConfig, FailedAttemptInfo } from \"./retry\";\nexport { withRetry, shouldRetry, DEFAULT_RETRY_CONFIG } from \"./retry\";\n\nexport const TOKEN_KEY = \"auth_token\";\nexport const REFRESH_TOKEN_KEY = \"refresh_token\";\n\n/** Auto-detect locale from cookie NEXT_LOCALE or navigator.language */\nfunction detectLocale(): string | null {\n try {\n if (typeof document !== 'undefined') {\n const match = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (match) return match[1];\n }\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n } catch {}\n return null;\n}\n\nexport interface APIOptions {\n /** Custom storage adapter (defaults to LocalStorageAdapter) */\n storage?: StorageAdapter;\n /** Custom HTTP client adapter (defaults to FetchAdapter) */\n httpClient?: HttpClientAdapter;\n /** Retry configuration for failed requests */\n retryConfig?: RetryConfig;\n /** Logger configuration */\n loggerConfig?: Partial<LoggerConfig>;\n /** Locale for Accept-Language header (e.g. 'en', 'ko', 'ru') */\n locale?: string;\n}\n\nexport class API {\n private baseUrl: string;\n private _client: APIClient;\n private _token: string | null = null;\n private _refreshToken: string | null = null;\n private _locale: string | null = null;\n private storage: StorageAdapter;\n private options?: APIOptions;\n\n // Sub-clients\n public auth!: Auth;\n public oauth!: Oauth;\n public user_profile!: UserProfile;\n public accounts!: Accounts;\n\n constructor(baseUrl: string, options?: APIOptions) {\n this.baseUrl = baseUrl;\n this.options = options;\n\n // Create logger if config provided\n const logger = options?.loggerConfig ? new APILogger(options.loggerConfig) : undefined;\n\n // Initialize storage with logger\n this.storage = options?.storage || new LocalStorageAdapter(logger);\n\n this._locale = options?.locale || null;\n\n this._loadTokensFromStorage();\n\n // Initialize APIClient with token getter for URL authentication\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Initialize sub-clients from APIClient\n this.auth = this._client.auth;\n this.oauth = this._client.oauth;\n this.user_profile = this._client.user_profile;\n this.accounts = this._client.accounts;\n }\n\n private _loadTokensFromStorage(): void {\n this._token = this.storage.getItem(TOKEN_KEY);\n this._refreshToken = this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n private _reinitClients(): void {\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Reinitialize sub-clients\n this.auth = this._client.auth;\n this.oauth = this._client.oauth;\n this.user_profile = this._client.user_profile;\n this.accounts = this._client.accounts;\n }\n\n private _injectAuthHeader(): void {\n // Override request method to inject auth header\n const originalRequest = this._client.request.bind(this._client);\n this._client.request = async <T>(\n method: string,\n path: string,\n options?: { params?: Record<string, any>; body?: any; formData?: FormData; headers?: Record<string, string> }\n ): Promise<T> => {\n // Read token from storage dynamically (supports JWT injection after instantiation)\n const token = this.getToken();\n const locale = this._locale || detectLocale();\n const mergedOptions = {\n ...options,\n headers: {\n ...(options?.headers || {}),\n ...(token ? { 'Authorization': `Bearer ${token}` } : {}),\n ...(locale ? { 'Accept-Language': locale } : {}),\n },\n };\n\n return originalRequest(method, path, mergedOptions);\n };\n }\n\n /**\n * Get current JWT token\n */\n getToken(): string | null {\n return this.storage.getItem(TOKEN_KEY);\n }\n\n /**\n * Get current refresh token\n */\n getRefreshToken(): string | null {\n return this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n /**\n * Set JWT token and refresh token\n * @param token - JWT access token\n * @param refreshToken - JWT refresh token (optional)\n */\n setToken(token: string, refreshToken?: string): void {\n this._token = token;\n this.storage.setItem(TOKEN_KEY, token);\n\n if (refreshToken) {\n this._refreshToken = refreshToken;\n this.storage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n\n // Reinitialize clients with new token\n this._reinitClients();\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this._token = null;\n this._refreshToken = null;\n this.storage.removeItem(TOKEN_KEY);\n this.storage.removeItem(REFRESH_TOKEN_KEY);\n\n // Reinitialize clients without token\n this._reinitClients();\n }\n\n /**\n * Check if user is authenticated\n */\n isAuthenticated(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Update base URL and reinitialize clients\n * @param url - New base URL\n */\n setBaseUrl(url: string): void {\n this.baseUrl = url;\n this._reinitClients();\n }\n\n /**\n * Get current base URL\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Set locale for Accept-Language header\n * @param locale - Locale string (e.g. 'en', 'ko', 'ru') or null to clear\n */\n setLocale(locale: string | null): void {\n this._locale = locale;\n }\n\n /**\n * Get current locale\n */\n getLocale(): string | null {\n return this._locale;\n }\n\n /**\n * Get OpenAPI schema path\n * @returns Path to the OpenAPI schema JSON file\n *\n * Note: The OpenAPI schema is available in the schema.json file.\n * You can load it dynamically using:\n * ```typescript\n * const schema = await fetch('./schema.json').then(r => r.json());\n * // or using fs in Node.js:\n * // const schema = JSON.parse(fs.readFileSync('./schema.json', 'utf-8'));\n * ```\n */\n getSchemaPath(): string {\n return './schema.json';\n }\n}\n\nexport default API;","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Centrifugo Auth.\n */\nexport class CentrifugoAuth {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Get Centrifugo connection token\n * \n * Generate JWT token for WebSocket connection to Centrifugo. Token\n * includes user's allowed channels based on their permissions. Requires\n * authentication.\n */\n async tokenRetrieve(): Promise<Models.ConnectionTokenResponse> {\n const response = await this.client.request('GET', \"/cfg/centrifugo/auth/token/\");\n return response;\n }\n\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * HTTP Client Adapter Pattern\n *\n * Allows switching between fetch/axios/httpx without changing generated code.\n * Provides unified interface for making HTTP requests.\n */\n\nexport interface HttpRequest {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n params?: Record<string, any>;\n /** FormData for file uploads (multipart/form-data) */\n formData?: FormData;\n /** Binary data for octet-stream uploads */\n binaryBody?: Blob | ArrayBuffer;\n}\n\nexport interface HttpResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/**\n * HTTP Client Adapter Interface.\n * Implement this to use custom HTTP clients (axios, httpx, etc.)\n */\nexport interface HttpClientAdapter {\n request<T = any>(request: HttpRequest): Promise<HttpResponse<T>>;\n}\n\n/**\n * Default Fetch API adapter.\n * Uses native browser fetch() with proper error handling.\n */\nexport class FetchAdapter implements HttpClientAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const { method, url, headers, body, params, formData, binaryBody } = request;\n\n // Build URL with query params\n let finalUrl = url;\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n finalUrl = url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;\n }\n }\n\n // Build headers\n const finalHeaders: Record<string, string> = { ...headers };\n\n // Determine body and content-type\n let requestBody: string | FormData | Blob | ArrayBuffer | undefined;\n\n if (formData) {\n // For multipart/form-data, let browser set Content-Type with boundary\n requestBody = formData;\n // Don't set Content-Type - browser will set it with boundary\n } else if (binaryBody) {\n // Binary upload (application/octet-stream)\n finalHeaders['Content-Type'] = 'application/octet-stream';\n requestBody = binaryBody;\n } else if (body) {\n // JSON request\n finalHeaders['Content-Type'] = 'application/json';\n requestBody = JSON.stringify(body);\n }\n\n // Make request\n const response = await fetch(finalUrl, {\n method,\n headers: finalHeaders,\n body: requestBody,\n credentials: 'include', // Include Django session cookies\n });\n\n // Parse response\n let data: any = null;\n const contentType = response.headers.get('content-type');\n\n if (response.status !== 204 && contentType?.includes('application/json')) {\n data = await response.json();\n } else if (response.status !== 204) {\n data = await response.text();\n }\n\n // Convert Headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n };\n }\n}\n\n/**\n * FetchAdapter with keepalive:true.\n *\n * Use this adapter when you need requests to survive page unload\n * (visibilitychange / beforeunload) — the browser will complete the request\n * even after the page is navigated away. Typical use: monitor / analytics flush.\n *\n * @example\n * ```typescript\n * import { APIClient, KeepAliveFetchAdapter } from './client';\n * const client = new APIClient(baseUrl, { httpClient: new KeepAliveFetchAdapter() });\n * ```\n */\nexport class KeepAliveFetchAdapter extends FetchAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const origFetch = globalThis.fetch;\n globalThis.fetch = (input: RequestInfo | URL, init?: RequestInit) =>\n origFetch(input, { ...init, keepalive: true });\n try {\n return await super.request<T>(request);\n } finally {\n globalThis.fetch = origFetch;\n }\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Error Classes\n *\n * Typed error classes with Django REST Framework support.\n */\n\n/**\n * HTTP API Error with DRF field-specific validation errors.\n *\n * Usage:\n * ```typescript\n * try {\n * await api.users.create(userData);\n * } catch (error) {\n * if (error instanceof APIError) {\n * if (error.isValidationError) {\n * console.log('Field errors:', error.fieldErrors);\n * // { \"email\": [\"Email already exists\"], \"username\": [\"Required\"] }\n * }\n * }\n * }\n * ```\n */\nexport class APIError extends Error {\n constructor(\n public statusCode: number,\n public statusText: string,\n public response: any,\n public url: string,\n message?: string\n ) {\n super(message || `HTTP ${statusCode}: ${statusText}`);\n this.name = 'APIError';\n }\n\n /**\n * Get error details from response.\n * DRF typically returns: { \"detail\": \"Error message\" } or { \"field\": [\"error1\", \"error2\"] }\n */\n get details(): Record<string, any> | null {\n if (typeof this.response === 'object' && this.response !== null) {\n return this.response;\n }\n return null;\n }\n\n /**\n * Get field-specific validation errors from DRF.\n * Returns: { \"field_name\": [\"error1\", \"error2\"], ... }\n */\n get fieldErrors(): Record<string, string[]> | null {\n const details = this.details;\n if (!details) return null;\n\n // DRF typically returns: { \"field\": [\"error1\", \"error2\"] }\n const fieldErrors: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(details)) {\n if (Array.isArray(value)) {\n fieldErrors[key] = value;\n }\n }\n\n return Object.keys(fieldErrors).length > 0 ? fieldErrors : null;\n }\n\n /**\n * Get single error message from DRF.\n * Checks for \"detail\", \"message\", or first field error.\n */\n get errorMessage(): string {\n const details = this.details;\n if (!details) return this.message;\n\n // Check for \"detail\" field (common in DRF)\n if (details.detail) {\n return Array.isArray(details.detail) ? details.detail.join(', ') : String(details.detail);\n }\n\n // Check for \"message\" field\n if (details.message) {\n return String(details.message);\n }\n\n // Return first field error\n const fieldErrors = this.fieldErrors;\n if (fieldErrors) {\n const firstField = Object.keys(fieldErrors)[0];\n if (firstField) {\n return `${firstField}: ${fieldErrors[firstField]?.join(', ')}`;\n }\n }\n\n return this.message;\n }\n\n // Helper methods for common HTTP status codes\n get isValidationError(): boolean { return this.statusCode === 400; }\n get isAuthError(): boolean { return this.statusCode === 401; }\n get isPermissionError(): boolean { return this.statusCode === 403; }\n get isNotFoundError(): boolean { return this.statusCode === 404; }\n get isServerError(): boolean { return this.statusCode >= 500 && this.statusCode < 600; }\n}\n\n/**\n * Network Error (connection failed, timeout, etc.)\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public url: string,\n public originalError?: Error\n ) {\n super(message);\n this.name = 'NetworkError';\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Logger with Consola\n * Beautiful console logging for API requests and responses\n *\n * Installation:\n * npm install consola\n */\n\nimport { type ConsolaInstance, createConsola } from 'consola';\n\n/**\n * Request log data\n */\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\n/**\n * Response log data\n */\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Error log data\n */\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n /** Enable logging */\n enabled: boolean;\n /** Log requests */\n logRequests: boolean;\n /** Log responses */\n logResponses: boolean;\n /** Log errors */\n logErrors: boolean;\n /** Log request/response bodies */\n logBodies: boolean;\n /** Log headers (excluding sensitive ones) */\n logHeaders: boolean;\n /** Custom consola instance */\n consola?: ConsolaInstance;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: process.env.NODE_ENV !== 'production',\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\n/**\n * Sensitive header names to filter out\n */\nconst SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-csrf-token',\n];\n\n/**\n * API Logger class\n */\nexport class APILogger {\n private config: LoggerConfig;\n private consola: ConsolaInstance;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.consola = config.consola || createConsola({\n level: this.config.enabled ? 4 : 0,\n });\n }\n\n /**\n * Enable logging\n */\n enable(): void {\n this.config.enabled = true;\n }\n\n /**\n * Disable logging\n */\n disable(): void {\n this.config.enabled = false;\n }\n\n /**\n * Update configuration\n */\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Filter sensitive headers\n */\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_HEADERS.includes(lowerKey)) {\n filtered[key] = '***';\n } else {\n filtered[key] = headers[key] || '';\n }\n });\n\n return filtered;\n }\n\n /**\n * Log request\n */\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n\n const { method, url, headers, body } = request;\n\n this.consola.start(`${method} ${url}`);\n\n if (this.config.logHeaders && headers) {\n this.consola.debug('Headers:', this.filterHeaders(headers));\n }\n\n if (this.config.logBodies && body) {\n this.consola.debug('Body:', body);\n }\n }\n\n /**\n * Log response\n */\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n\n const statusColor = status >= 500 ? 'red'\n : status >= 400 ? 'yellow'\n : status >= 300 ? 'cyan'\n : 'green';\n\n this.consola.success(\n `${method} ${url} ${status} ${statusText} (${duration}ms)`\n );\n\n if (this.config.logBodies && data) {\n this.consola.debug('Response:', data);\n }\n }\n\n /**\n * Log error\n */\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n\n this.consola.error(\n `${method} ${url} ${statusCode || 'Network'} Error (${duration}ms)`\n );\n\n this.consola.error('Message:', message);\n\n if (fieldErrors && Object.keys(fieldErrors).length > 0) {\n this.consola.error('Field Errors:');\n Object.entries(fieldErrors).forEach(([field, errors]) => {\n errors.forEach((err) => {\n this.consola.error(` • ${field}: ${err}`);\n });\n });\n }\n }\n\n /**\n * Log general info\n */\n info(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.info(message, ...args);\n }\n\n /**\n * Log warning\n */\n warn(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.warn(message, ...args);\n }\n\n /**\n * Log error\n */\n error(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.error(message, ...args);\n }\n\n /**\n * Log debug\n */\n debug(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.debug(message, ...args);\n }\n\n /**\n * Log success\n */\n success(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.success(message, ...args);\n }\n\n /**\n * Create a sub-logger with prefix\n */\n withTag(tag: string): ConsolaInstance {\n return this.consola.withTag(tag);\n }\n}\n\n/**\n * Default logger instance\n */\nexport const defaultLogger = new APILogger();","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Retry Configuration and Utilities\n *\n * Provides automatic retry logic for failed HTTP requests using p-retry.\n * Retries only on network errors and server errors (5xx), not client errors (4xx).\n */\n\nimport pRetry, { AbortError } from 'p-retry';\nimport { APIError, NetworkError } from './errors';\n\n/**\n * Information about a failed retry attempt.\n */\nexport interface FailedAttemptInfo {\n /** The error that caused the failure */\n error: Error;\n /** The attempt number (1-indexed) */\n attemptNumber: number;\n /** Number of retries left */\n retriesLeft: number;\n}\n\n/**\n * Retry configuration options.\n *\n * Uses exponential backoff with jitter by default to avoid thundering herd.\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts.\n * @default 3\n */\n retries?: number;\n\n /**\n * Exponential backoff factor.\n * @default 2\n */\n factor?: number;\n\n /**\n * Minimum wait time between retries (ms).\n * @default 1000\n */\n minTimeout?: number;\n\n /**\n * Maximum wait time between retries (ms).\n * @default 60000\n */\n maxTimeout?: number;\n\n /**\n * Add randomness to wait times (jitter).\n * Helps avoid thundering herd problem.\n * @default true\n */\n randomize?: boolean;\n\n /**\n * Callback called on each failed attempt.\n */\n onFailedAttempt?: (info: FailedAttemptInfo) => void;\n}\n\n/**\n * Default retry configuration.\n */\nexport const DEFAULT_RETRY_CONFIG: Required<RetryConfig> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 60000,\n randomize: true,\n onFailedAttempt: () => {},\n};\n\n/**\n * Determine if an error should trigger a retry.\n *\n * Retries on:\n * - Network errors (connection refused, timeout, etc.)\n * - Server errors (5xx status codes)\n * - Rate limiting (429 status code)\n *\n * Does NOT retry on:\n * - Client errors (4xx except 429)\n * - Authentication errors (401, 403)\n * - Not found (404)\n *\n * @param error - The error to check\n * @returns true if should retry, false otherwise\n */\nexport function shouldRetry(error: any): boolean {\n // Always retry network errors\n if (error instanceof NetworkError) {\n return true;\n }\n\n // For API errors, check status code\n if (error instanceof APIError) {\n const status = error.statusCode;\n\n // Retry on 5xx server errors\n if (status >= 500 && status < 600) {\n return true;\n }\n\n // Retry on 429 (rate limit)\n if (status === 429) {\n return true;\n }\n\n // Do NOT retry on 4xx client errors\n return false;\n }\n\n // Retry on unknown errors (might be network issues)\n return true;\n}\n\n/**\n * Wrap a function with retry logic.\n *\n * @param fn - Async function to retry\n * @param config - Retry configuration\n * @returns Result of the function\n *\n * @example\n * ```typescript\n * const result = await withRetry(\n * async () => fetch('https://api.example.com/users'),\n * { retries: 5, minTimeout: 2000 }\n * );\n * ```\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const finalConfig = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n return pRetry(\n async () => {\n try {\n return await fn();\n } catch (error) {\n // Check if we should retry this error\n if (!shouldRetry(error)) {\n // Abort retry immediately for non-retryable errors\n throw new AbortError(error as Error);\n }\n\n // Re-throw error to trigger retry\n throw error;\n }\n },\n {\n retries: finalConfig.retries,\n factor: finalConfig.factor,\n minTimeout: finalConfig.minTimeout,\n maxTimeout: finalConfig.maxTimeout,\n randomize: finalConfig.randomize,\n onFailedAttempt: finalConfig.onFailedAttempt ? (error) => {\n // Adapt p-retry's FailedAttemptError to our FailedAttemptInfo\n const pRetryError = error as any; // p-retry's internal type\n finalConfig.onFailedAttempt!({\n error: pRetryError as Error,\n attemptNumber: pRetryError.attemptNumber,\n retriesLeft: pRetryError.retriesLeft,\n });\n } : undefined,\n }\n );\n}","import { CentrifugoAuth } from \"./centrifugo__centrifugo_auth\";\nimport { HttpClientAdapter, FetchAdapter } from \"./http\";\nimport { APIError, NetworkError } from \"./errors\";\nimport { APILogger, type LoggerConfig } from \"./logger\";\nimport { withRetry, type RetryConfig } from \"./retry\";\n\n\n/**\n * Async API client for Django CFG API.\n *\n * Usage:\n * ```typescript\n * const client = new APIClient('https://api.example.com');\n * const users = await client.users.list();\n * const post = await client.posts.create(newPost);\n *\n * // Custom HTTP adapter (e.g., Axios)\n * const client = new APIClient('https://api.example.com', {\n * httpClient: new AxiosAdapter()\n * });\n * ```\n */\nexport class APIClient {\n private baseUrl: string;\n private httpClient: HttpClientAdapter;\n private logger: APILogger | null = null;\n private retryConfig: RetryConfig | null = null;\n private tokenGetter: (() => string | null) | null = null;\n\n // Sub-clients\n public centrifugo_auth: CentrifugoAuth;\n\n constructor(\n baseUrl: string,\n options?: {\n httpClient?: HttpClientAdapter;\n loggerConfig?: Partial<LoggerConfig>;\n retryConfig?: RetryConfig;\n tokenGetter?: () => string | null;\n }\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.httpClient = options?.httpClient || new FetchAdapter();\n this.tokenGetter = options?.tokenGetter || null;\n\n // Initialize logger if config provided\n if (options?.loggerConfig !== undefined) {\n this.logger = new APILogger(options.loggerConfig);\n }\n\n // Store retry configuration\n if (options?.retryConfig !== undefined) {\n this.retryConfig = options.retryConfig;\n }\n\n // Initialize sub-clients\n this.centrifugo_auth = new CentrifugoAuth(this);\n }\n\n /**\n * Get CSRF token from cookies (for SessionAuthentication).\n *\n * Returns null if cookie doesn't exist (JWT-only auth).\n */\n getCsrfToken(): string | null {\n const name = 'csrftoken';\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n /**\n * Get the base URL for building streaming/download URLs.\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Get JWT token for URL authentication (used in streaming endpoints).\n * Returns null if no token getter is configured or no token is available.\n */\n getToken(): string | null {\n return this.tokenGetter ? this.tokenGetter() : null;\n }\n\n /**\n * Make HTTP request with Django CSRF and session handling.\n * Automatically retries on network errors and 5xx server errors.\n */\n async request<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Wrap request in retry logic if configured\n if (this.retryConfig) {\n return withRetry(() => this._makeRequest<T>(method, path, options), {\n ...this.retryConfig,\n onFailedAttempt: (info) => {\n // Log retry attempts\n if (this.logger) {\n this.logger.warn(\n `Retry attempt ${info.attemptNumber}/${info.retriesLeft + info.attemptNumber} ` +\n `for ${method} ${path}: ${info.error.message}`\n );\n }\n // Call user's onFailedAttempt if provided\n this.retryConfig?.onFailedAttempt?.(info);\n },\n });\n }\n\n // No retry configured, make request directly\n return this._makeRequest<T>(method, path, options);\n }\n\n /**\n * Internal request method (without retry wrapper).\n * Used by request() method with optional retry logic.\n */\n private async _makeRequest<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Build URL - handle both absolute and relative paths\n // When baseUrl is empty (static builds), path is used as-is (relative to current origin)\n const url = this.baseUrl ? `${this.baseUrl}${path}` : path;\n const startTime = Date.now();\n\n // Build headers - start with custom headers from options\n const headers: Record<string, string> = {\n ...(options?.headers || {})\n };\n\n // Don't set Content-Type for FormData/binaryBody (browser will set it with boundary)\n if (!options?.formData && !options?.binaryBody && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n // CSRF not needed - SessionAuthentication not enabled in DRF config\n // Your API uses JWT/Token authentication (no CSRF required)\n\n // Log request\n if (this.logger) {\n this.logger.logRequest({\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n });\n }\n\n try {\n // Make request via HTTP adapter\n const response = await this.httpClient.request<T>({\n method,\n url: url,\n headers,\n params: options?.params,\n body: options?.body,\n formData: options?.formData,\n binaryBody: options?.binaryBody,\n });\n\n const duration = Date.now() - startTime;\n\n // Check for HTTP errors\n if (response.status >= 400) {\n const error = new APIError(\n response.status,\n response.statusText,\n response.data,\n url\n );\n\n // Log error\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: error.message,\n statusCode: response.status,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw error;\n }\n\n // Log successful response\n if (this.logger) {\n this.logger.logResponse(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n return response.data as T;\n } catch (error) {\n const duration = Date.now() - startTime;\n\n // Re-throw APIError as-is\n if (error instanceof APIError) {\n throw error;\n }\n\n // Classify network error using PerformanceResourceTiming.\n // Browser intentionally makes CORS errors indistinguishable from network failures\n // (same TypeError: \"Failed to fetch\") for security reasons. We use PerformanceResourceTiming\n // as the best available heuristic:\n // - Entry exists with responseStatus === 0 → request reached server, JS blocked → likely CORS\n // - No entry / entry missing → connection never established → server unavailable / DNS / offline\n // All cases are dispatched as 'network-error' with a `possibly_cors` flag.\n let possiblyCors = false;\n if (error instanceof TypeError && typeof window !== 'undefined') {\n try {\n const isCrossOrigin = (() => {\n try { return new URL(url).origin !== window.location.origin; } catch { return false; }\n })();\n if (isCrossOrigin) {\n const entries = performance.getEntriesByName(url, 'resource');\n if (entries.length > 0) {\n const last = entries[entries.length - 1] as PerformanceResourceTiming;\n possiblyCors = 'responseStatus' in last && (last as any).responseStatus === 0;\n }\n }\n } catch { /* ignore — PerformanceResourceTiming not available */ }\n }\n\n if (this.logger) {\n this.logger.error(`⚠️ Network Error: ${method} ${url}`);\n this.logger.error(` → ${error instanceof Error ? error.message : String(error)}`);\n if (possiblyCors) {\n this.logger.error(` → Possibly blocked by CORS policy (configure CORS on the server)`);\n }\n }\n\n // Dispatch network-error event with possibly_cors hint\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('network-error', {\n detail: {\n url: url,\n method: method,\n error: error instanceof Error ? error.message : String(error),\n possibly_cors: possiblyCors,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n }));\n } catch { /* silently ignore — event dispatch must never crash the app */ }\n }\n\n // Wrap other errors as NetworkError\n const networkError = error instanceof Error\n ? new NetworkError(error.message, url, error)\n : new NetworkError('Unknown error', url);\n\n // Detailed logging via logger.logError\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: networkError.message,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw networkError;\n }\n }\n}\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Storage adapters for cross-platform token storage.\n *\n * Supports:\n * - LocalStorage (browser)\n * - Cookies (SSR/browser)\n * - Memory (Node.js/Electron/testing)\n */\n\nimport type { APILogger } from './logger';\n\n/**\n * Storage adapter interface for cross-platform token storage.\n */\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/**\n * LocalStorage adapter with safe try-catch for browser environments.\n * Works in modern browsers with localStorage support.\n * \n * Note: This adapter uses window.localStorage and should only be used in browser/client environments.\n * For server-side usage, use MemoryStorageAdapter or CookieStorageAdapter instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n const value = localStorage.getItem(key);\n this.logger?.debug(`LocalStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n } catch (error) {\n this.logger?.error('LocalStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(key, value);\n this.logger?.debug(`LocalStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.removeItem(key);\n this.logger?.debug(`LocalStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * Cookie-based storage adapter for SSR and browser environments.\n * Useful for Next.js, Nuxt.js, and other SSR frameworks.\n */\nexport class CookieStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof document === 'undefined') {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n return null;\n }\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts.length === 2) {\n const result = parts.pop()?.split(';').shift() || null;\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): ${result ? 'found' : 'not found'}`);\n return result;\n }\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): not found`);\n } catch (error) {\n this.logger?.error('CookieStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=${value}; path=/; max-age=31536000`;\n this.logger?.debug(`CookieStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n this.logger?.debug(`CookieStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * In-memory storage adapter for Node.js, Electron, and testing environments.\n * Data is stored in RAM and cleared when process exits.\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private storage: Map<string, string> = new Map();\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n const value = this.storage.get(key) || null;\n this.logger?.debug(`MemoryStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n\n setItem(key: string, value: string): void {\n this.storage.set(key, value);\n this.logger?.debug(`MemoryStorage.setItem(\"${key}\"): success`);\n }\n\n removeItem(key: string): void {\n this.storage.delete(key);\n this.logger?.debug(`MemoryStorage.removeItem(\"${key}\"): success`);\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Zod Schemas - Runtime validation and type inference\n *\n * Auto-generated from OpenAPI specification.\n * Provides runtime validation for API requests and responses.\n *\n * Usage:\n * ```typescript\n * import { UserSchema } from './schemas'\n *\n * // Validate data\n * const user = UserSchema.parse(data)\n *\n * // Type inference\n * type User = z.infer<typeof UserSchema>\n * ```\n */\n\nexport * from './ConnectionTokenResponse.schema'\n","/**\n * Zod schema for ConnectionTokenResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response model for Centrifugo connection token.\n * */\nimport { z } from 'zod'\n\n/**\n * Response model for Centrifugo connection token.\n */\nexport const ConnectionTokenResponseSchema = z.object({\n token: z.string(),\n centrifugo_url: z.string(),\n expires_at: z.string(),\n channels: z.array(z.string()),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type ConnectionTokenResponse = z.infer<typeof ConnectionTokenResponseSchema>","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed Fetchers - Universal API functions\n *\n * Auto-generated from OpenAPI specification.\n * These functions work in any JavaScript environment.\n *\n * Features:\n * - Runtime validation with Zod\n * - Type-safe parameters and responses\n * - Works with any data-fetching library (SWR, React Query, etc)\n * - Server Component compatible\n *\n * Usage:\n * ```typescript\n * import * as fetchers from './fetchers'\n *\n * // Direct usage\n * const user = await fetchers.getUser(1)\n *\n * // With SWR\n * const { data } = useSWR('user-1', () => fetchers.getUser(1))\n *\n * // With React Query\n * const { data } = useQuery(['user', 1], () => fetchers.getUser(1))\n * ```\n */\n\nexport * from './centrifugo__centrifugo_auth'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Centrifugo Auth\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { ConnectionTokenResponseSchema, type ConnectionTokenResponse } from '../schemas/ConnectionTokenResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * Get Centrifugo connection token\n *\n * @method GET\n * @path /cfg/centrifugo/auth/token/\n */\nexport async function getCentrifugoAuthTokenRetrieve( client?: any\n): Promise<ConnectionTokenResponse> {\n const api = client || getAPIInstance()\n const response = await api.centrifugo_auth.tokenRetrieve()\n try {\n return ConnectionTokenResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getCentrifugoAuthTokenRetrieve\\nPath: /cfg/centrifugo/auth/token/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getCentrifugoAuthTokenRetrieve',\n path: '/cfg/centrifugo/auth/token/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Global API Instance - Singleton configuration with auto-configuration support\n *\n * This module provides a global API instance that auto-configures from\n * environment variables or can be configured manually.\n *\n * AUTO-CONFIGURATION (recommended):\n * Set one of these environment variables and the API will auto-configure:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n *\n * Then just use fetchers and hooks directly:\n * ```typescript\n * import { getUsers } from './_utils/fetchers'\n * const users = await getUsers({ page: 1 })\n * ```\n *\n * MANUAL CONFIGURATION:\n * ```typescript\n * import { configureAPI } from './api-instance'\n *\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'your-jwt-token'\n * })\n * ```\n *\n * For SSR or multiple instances:\n * ```typescript\n * import { API } from './index'\n * import { getUsers } from './_utils/fetchers'\n *\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\n\nimport { API, type APIOptions } from './index'\n\nlet globalAPI: API | null = null\nlet autoConfigAttempted = false\n\n/**\n * Auto-configure from environment variable if available (Next.js pattern)\n * This allows hooks and fetchers to work without explicit configureAPI() call\n *\n * Supported environment variables:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n */\nfunction tryAutoConfigureFromEnv(): void {\n // Only attempt once\n if (autoConfigAttempted) return\n autoConfigAttempted = true\n\n // Skip if already configured\n if (globalAPI) return\n\n // Skip if process is not available (pure browser without bundler)\n if (typeof process === 'undefined' || !process.env) return\n\n // Try different environment variable patterns\n const baseUrl =\n process.env.NEXT_PUBLIC_API_URL ||\n process.env.VITE_API_URL ||\n process.env.REACT_APP_API_URL ||\n process.env.API_URL\n\n if (baseUrl) {\n globalAPI = new API(baseUrl)\n }\n}\n\n/**\n * Get the global API instance\n * Auto-configures from environment variables on first call if not manually configured.\n * @throws Error if API is not configured and no env variable is set\n */\nexport function getAPIInstance(): API {\n // Try auto-configuration on first access (lazy initialization)\n tryAutoConfigureFromEnv()\n\n if (!globalAPI) {\n throw new Error(\n 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\\n\\n' +\n 'Example:\\n' +\n ' import { configureAPI } from \"./api-instance\"\\n' +\n ' configureAPI({ baseUrl: \"https://api.example.com\" })\\n\\n' +\n 'Or set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'\n )\n }\n return globalAPI\n}\n\n/**\n * Check if API is configured (or can be auto-configured)\n */\nexport function isAPIConfigured(): boolean {\n tryAutoConfigureFromEnv()\n return globalAPI !== null\n}\n\n/**\n * Configure the global API instance\n *\n * @param baseUrl - Base URL for the API\n * @param options - Optional configuration (storage, retry, logger)\n *\n * @example\n * ```typescript\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'jwt-token',\n * options: {\n * retryConfig: { maxRetries: 3 },\n * loggerConfig: { enabled: true }\n * }\n * })\n * ```\n */\nexport function configureAPI(config: {\n baseUrl: string\n token?: string\n refreshToken?: string\n options?: APIOptions\n}): API {\n globalAPI = new API(config.baseUrl, config.options)\n\n if (config.token) {\n globalAPI.setToken(config.token, config.refreshToken)\n }\n\n return globalAPI\n}\n\n/**\n * Reconfigure the global API instance with new settings\n * Useful for updating tokens or base URL\n */\nexport function reconfigureAPI(updates: {\n baseUrl?: string\n token?: string\n refreshToken?: string\n}): API {\n const instance = getAPIInstance()\n\n if (updates.baseUrl) {\n instance.setBaseUrl(updates.baseUrl)\n }\n\n if (updates.token) {\n instance.setToken(updates.token, updates.refreshToken)\n }\n\n return instance\n}\n\n/**\n * Clear tokens from the global API instance\n */\nexport function clearAPITokens(): void {\n const instance = getAPIInstance()\n instance.clearTokens()\n}\n\n/**\n * Reset the global API instance\n * Useful for testing or logout scenarios\n */\nexport function resetAPI(): void {\n if (globalAPI) {\n globalAPI.clearTokens()\n }\n globalAPI = null\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Django CFG API - API Client with JWT Management\n *\n * Usage:\n * ```typescript\n * import { API } from './api';\n *\n * const api = new API('https://api.example.com');\n *\n * // Set JWT token\n * api.setToken('your-jwt-token', 'refresh-token');\n *\n * // Use API\n * const posts = await api.posts.list();\n * const user = await api.users.retrieve(1);\n *\n * // Check authentication\n * if (api.isAuthenticated()) {\n * // ...\n * }\n *\n * // Custom storage with logging (for Electron/Node.js)\n * import { MemoryStorageAdapter, APILogger } from './storage';\n * const logger = new APILogger({ enabled: true, logLevel: 'debug' });\n * const api = new API('https://api.example.com', {\n * storage: new MemoryStorageAdapter(logger),\n * loggerConfig: { enabled: true, logLevel: 'debug' }\n * });\n *\n * // Get OpenAPI schema\n * const schema = api.getSchema();\n * ```\n */\n\nimport { APIClient } from \"./client\";\nimport {\n StorageAdapter,\n LocalStorageAdapter,\n CookieStorageAdapter,\n MemoryStorageAdapter\n} from \"./storage\";\nimport type { RetryConfig } from \"./retry\";\nimport type { LoggerConfig } from \"./logger\";\nimport { APILogger } from \"./logger\";\nimport { CentrifugoAuth } from \"./centrifugo__centrifugo_auth/client\";\nexport * as CentrifugoAuthTypes from \"./centrifugo__centrifugo_auth/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\n\n// Re-export Zod schemas for runtime validation\nexport * as Schemas from \"./_utils/schemas\";\n// Also export all schemas directly for convenience\nexport * from \"./_utils/schemas\";\n\n// Re-export Zod validation events for browser integration\nexport type { ValidationErrorDetail, ValidationErrorEvent } from \"./validation-events\";\nexport { dispatchValidationError, onValidationError, formatZodError } from \"./validation-events\";\n\n// Re-export typed fetchers for universal usage\nexport * as Fetchers from \"./_utils/fetchers\";\nexport * from \"./_utils/fetchers\";\n\n// Re-export API instance configuration functions\nexport {\n configureAPI,\n getAPIInstance,\n reconfigureAPI,\n clearAPITokens,\n resetAPI,\n isAPIConfigured\n} from \"./api-instance\";\n// NOTE: SWR hooks are generated in ./_utils/hooks/ but NOT exported here to keep\n// the main bundle server-safe. Import hooks directly from the hooks directory:\n// import { useUsers } from './_utils/hooks';\n// Or use a separate entry point like '@djangocfg/api/hooks' for client components.\n\n// Re-export core client\nexport { APIClient };\n\n// Re-export storage adapters for convenience\nexport type { StorageAdapter };\nexport { LocalStorageAdapter, CookieStorageAdapter, MemoryStorageAdapter };\n\n// Re-export error classes for convenience\nexport { APIError, NetworkError } from \"./errors\";\n\n// Re-export HTTP adapters for custom implementations\nexport type { HttpClientAdapter, HttpRequest, HttpResponse } from \"./http\";\nexport { FetchAdapter, KeepAliveFetchAdapter } from \"./http\";\n\n// Re-export logger types and classes\nexport type { LoggerConfig, RequestLog, ResponseLog, ErrorLog } from \"./logger\";\nexport { APILogger } from \"./logger\";\n\n// Re-export retry configuration and utilities\nexport type { RetryConfig, FailedAttemptInfo } from \"./retry\";\nexport { withRetry, shouldRetry, DEFAULT_RETRY_CONFIG } from \"./retry\";\n\nexport const TOKEN_KEY = \"auth_token\";\nexport const REFRESH_TOKEN_KEY = \"refresh_token\";\n\n/** Auto-detect locale from cookie NEXT_LOCALE or navigator.language */\nfunction detectLocale(): string | null {\n try {\n if (typeof document !== 'undefined') {\n const match = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (match) return match[1];\n }\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n } catch {}\n return null;\n}\n\nexport interface APIOptions {\n /** Custom storage adapter (defaults to LocalStorageAdapter) */\n storage?: StorageAdapter;\n /** Custom HTTP client adapter (defaults to FetchAdapter) */\n httpClient?: HttpClientAdapter;\n /** Retry configuration for failed requests */\n retryConfig?: RetryConfig;\n /** Logger configuration */\n loggerConfig?: Partial<LoggerConfig>;\n /** Locale for Accept-Language header (e.g. 'en', 'ko', 'ru') */\n locale?: string;\n}\n\nexport class API {\n private baseUrl: string;\n private _client: APIClient;\n private _token: string | null = null;\n private _refreshToken: string | null = null;\n private _locale: string | null = null;\n private storage: StorageAdapter;\n private options?: APIOptions;\n\n // Sub-clients\n public centrifugo_auth!: CentrifugoAuth;\n\n constructor(baseUrl: string, options?: APIOptions) {\n this.baseUrl = baseUrl;\n this.options = options;\n\n // Create logger if config provided\n const logger = options?.loggerConfig ? new APILogger(options.loggerConfig) : undefined;\n\n // Initialize storage with logger\n this.storage = options?.storage || new LocalStorageAdapter(logger);\n\n this._locale = options?.locale || null;\n\n this._loadTokensFromStorage();\n\n // Initialize APIClient with token getter for URL authentication\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Initialize sub-clients from APIClient\n this.centrifugo_auth = this._client.centrifugo_auth;\n }\n\n private _loadTokensFromStorage(): void {\n this._token = this.storage.getItem(TOKEN_KEY);\n this._refreshToken = this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n private _reinitClients(): void {\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Reinitialize sub-clients\n this.centrifugo_auth = this._client.centrifugo_auth;\n }\n\n private _injectAuthHeader(): void {\n // Override request method to inject auth header\n const originalRequest = this._client.request.bind(this._client);\n this._client.request = async <T>(\n method: string,\n path: string,\n options?: { params?: Record<string, any>; body?: any; formData?: FormData; headers?: Record<string, string> }\n ): Promise<T> => {\n // Read token from storage dynamically (supports JWT injection after instantiation)\n const token = this.getToken();\n const locale = this._locale || detectLocale();\n const mergedOptions = {\n ...options,\n headers: {\n ...(options?.headers || {}),\n ...(token ? { 'Authorization': `Bearer ${token}` } : {}),\n ...(locale ? { 'Accept-Language': locale } : {}),\n },\n };\n\n return originalRequest(method, path, mergedOptions);\n };\n }\n\n /**\n * Get current JWT token\n */\n getToken(): string | null {\n return this.storage.getItem(TOKEN_KEY);\n }\n\n /**\n * Get current refresh token\n */\n getRefreshToken(): string | null {\n return this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n /**\n * Set JWT token and refresh token\n * @param token - JWT access token\n * @param refreshToken - JWT refresh token (optional)\n */\n setToken(token: string, refreshToken?: string): void {\n this._token = token;\n this.storage.setItem(TOKEN_KEY, token);\n\n if (refreshToken) {\n this._refreshToken = refreshToken;\n this.storage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n\n // Reinitialize clients with new token\n this._reinitClients();\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this._token = null;\n this._refreshToken = null;\n this.storage.removeItem(TOKEN_KEY);\n this.storage.removeItem(REFRESH_TOKEN_KEY);\n\n // Reinitialize clients without token\n this._reinitClients();\n }\n\n /**\n * Check if user is authenticated\n */\n isAuthenticated(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Update base URL and reinitialize clients\n * @param url - New base URL\n */\n setBaseUrl(url: string): void {\n this.baseUrl = url;\n this._reinitClients();\n }\n\n /**\n * Get current base URL\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Set locale for Accept-Language header\n * @param locale - Locale string (e.g. 'en', 'ko', 'ru') or null to clear\n */\n setLocale(locale: string | null): void {\n this._locale = locale;\n }\n\n /**\n * Get current locale\n */\n getLocale(): string | null {\n return this._locale;\n }\n\n /**\n * Get OpenAPI schema path\n * @returns Path to the OpenAPI schema JSON file\n *\n * Note: The OpenAPI schema is available in the schema.json file.\n * You can load it dynamically using:\n * ```typescript\n * const schema = await fetch('./schema.json').then(r => r.json());\n * // or using fs in Node.js:\n * // const schema = JSON.parse(fs.readFileSync('./schema.json', 'utf-8'));\n * ```\n */\n getSchemaPath(): string {\n return './schema.json';\n }\n}\n\nexport default API;","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Backup Codes.\n */\nexport class BackupCodes {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Get backup codes status for user.\n */\n async totpBackupCodesRetrieve(): Promise<Models.BackupCodesStatus> {\n const response = await this.client.request('GET', \"/cfg/totp/backup-codes/\");\n return response;\n }\n\n /**\n * Regenerate backup codes. Requires TOTP code for verification.\n * Invalidates all existing codes.\n */\n async totpBackupCodesRegenerateCreate(data: Models.BackupCodesRegenerateRequest): Promise<Models.BackupCodesRegenerateResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/backup-codes/regenerate/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for TOTP Management.\n */\nexport class TotpManagement {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n async totpDevicesList(ordering?: string, page?: number, page_size?: number, search?: string): Promise<Models.PaginatedDeviceListResponseList>;\n async totpDevicesList(params?: { ordering?: string; page?: number; page_size?: number; search?: string }): Promise<Models.PaginatedDeviceListResponseList>;\n\n /**\n * List all TOTP devices for user.\n */\n async totpDevicesList(...args: any[]): Promise<Models.PaginatedDeviceListResponseList> {\n const isParamsObject = args.length === 1 && typeof args[0] === 'object' && args[0] !== null && !Array.isArray(args[0]);\n \n let params;\n if (isParamsObject) {\n params = args[0];\n } else {\n params = { ordering: args[0], page: args[1], page_size: args[2], search: args[3] };\n }\n const response = await this.client.request('GET', \"/cfg/totp/devices/\", { params });\n return response;\n }\n\n /**\n * Completely disable 2FA for account. Requires verification code.\n */\n async totpDisableCreate(data: Models.DisableRequest): Promise<any> {\n const response = await this.client.request('POST', \"/cfg/totp/disable/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for TOTP Setup.\n */\nexport class TotpSetup {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Start 2FA setup process. Creates a new TOTP device and returns QR code\n * for scanning.\n */\n async create(data: Models.SetupRequest): Promise<Models.SetupResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/setup/\", { body: data });\n return response;\n }\n\n /**\n * Confirm 2FA setup with first valid code. Activates the device and\n * generates backup codes.\n */\n async confirmCreate(data: Models.ConfirmSetupRequest): Promise<Models.ConfirmSetupResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/setup/confirm/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for TOTP Verification.\n */\nexport class TotpVerification {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Verify TOTP code for 2FA session. Completes authentication and returns\n * JWT tokens on success.\n */\n async totpVerifyCreate(data: Models.VerifyRequest): Promise<Models.VerifyResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/verify/\", { body: data });\n return response;\n }\n\n /**\n * Verify backup recovery code for 2FA session. Alternative verification\n * method when TOTP device unavailable.\n */\n async totpVerifyBackupCreate(data: Models.VerifyBackupRequest): Promise<Models.VerifyResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/verify/backup/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Totp.\n */\nexport class Totp {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Delete a TOTP device. Requires verification code if removing the\n * last/primary device.\n */\n async devicesDestroy(id: string): Promise<void> {\n const response = await this.client.request('DELETE', `/cfg/totp/devices/${id}/`);\n return;\n }\n\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * HTTP Client Adapter Pattern\n *\n * Allows switching between fetch/axios/httpx without changing generated code.\n * Provides unified interface for making HTTP requests.\n */\n\nexport interface HttpRequest {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n params?: Record<string, any>;\n /** FormData for file uploads (multipart/form-data) */\n formData?: FormData;\n /** Binary data for octet-stream uploads */\n binaryBody?: Blob | ArrayBuffer;\n}\n\nexport interface HttpResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/**\n * HTTP Client Adapter Interface.\n * Implement this to use custom HTTP clients (axios, httpx, etc.)\n */\nexport interface HttpClientAdapter {\n request<T = any>(request: HttpRequest): Promise<HttpResponse<T>>;\n}\n\n/**\n * Default Fetch API adapter.\n * Uses native browser fetch() with proper error handling.\n */\nexport class FetchAdapter implements HttpClientAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const { method, url, headers, body, params, formData, binaryBody } = request;\n\n // Build URL with query params\n let finalUrl = url;\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n finalUrl = url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;\n }\n }\n\n // Build headers\n const finalHeaders: Record<string, string> = { ...headers };\n\n // Determine body and content-type\n let requestBody: string | FormData | Blob | ArrayBuffer | undefined;\n\n if (formData) {\n // For multipart/form-data, let browser set Content-Type with boundary\n requestBody = formData;\n // Don't set Content-Type - browser will set it with boundary\n } else if (binaryBody) {\n // Binary upload (application/octet-stream)\n finalHeaders['Content-Type'] = 'application/octet-stream';\n requestBody = binaryBody;\n } else if (body) {\n // JSON request\n finalHeaders['Content-Type'] = 'application/json';\n requestBody = JSON.stringify(body);\n }\n\n // Make request\n const response = await fetch(finalUrl, {\n method,\n headers: finalHeaders,\n body: requestBody,\n credentials: 'include', // Include Django session cookies\n });\n\n // Parse response\n let data: any = null;\n const contentType = response.headers.get('content-type');\n\n if (response.status !== 204 && contentType?.includes('application/json')) {\n data = await response.json();\n } else if (response.status !== 204) {\n data = await response.text();\n }\n\n // Convert Headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n };\n }\n}\n\n/**\n * FetchAdapter with keepalive:true.\n *\n * Use this adapter when you need requests to survive page unload\n * (visibilitychange / beforeunload) — the browser will complete the request\n * even after the page is navigated away. Typical use: monitor / analytics flush.\n *\n * @example\n * ```typescript\n * import { APIClient, KeepAliveFetchAdapter } from './client';\n * const client = new APIClient(baseUrl, { httpClient: new KeepAliveFetchAdapter() });\n * ```\n */\nexport class KeepAliveFetchAdapter extends FetchAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const origFetch = globalThis.fetch;\n globalThis.fetch = (input: RequestInfo | URL, init?: RequestInit) =>\n origFetch(input, { ...init, keepalive: true });\n try {\n return await super.request<T>(request);\n } finally {\n globalThis.fetch = origFetch;\n }\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Error Classes\n *\n * Typed error classes with Django REST Framework support.\n */\n\n/**\n * HTTP API Error with DRF field-specific validation errors.\n *\n * Usage:\n * ```typescript\n * try {\n * await api.users.create(userData);\n * } catch (error) {\n * if (error instanceof APIError) {\n * if (error.isValidationError) {\n * console.log('Field errors:', error.fieldErrors);\n * // { \"email\": [\"Email already exists\"], \"username\": [\"Required\"] }\n * }\n * }\n * }\n * ```\n */\nexport class APIError extends Error {\n constructor(\n public statusCode: number,\n public statusText: string,\n public response: any,\n public url: string,\n message?: string\n ) {\n super(message || `HTTP ${statusCode}: ${statusText}`);\n this.name = 'APIError';\n }\n\n /**\n * Get error details from response.\n * DRF typically returns: { \"detail\": \"Error message\" } or { \"field\": [\"error1\", \"error2\"] }\n */\n get details(): Record<string, any> | null {\n if (typeof this.response === 'object' && this.response !== null) {\n return this.response;\n }\n return null;\n }\n\n /**\n * Get field-specific validation errors from DRF.\n * Returns: { \"field_name\": [\"error1\", \"error2\"], ... }\n */\n get fieldErrors(): Record<string, string[]> | null {\n const details = this.details;\n if (!details) return null;\n\n // DRF typically returns: { \"field\": [\"error1\", \"error2\"] }\n const fieldErrors: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(details)) {\n if (Array.isArray(value)) {\n fieldErrors[key] = value;\n }\n }\n\n return Object.keys(fieldErrors).length > 0 ? fieldErrors : null;\n }\n\n /**\n * Get single error message from DRF.\n * Checks for \"detail\", \"message\", or first field error.\n */\n get errorMessage(): string {\n const details = this.details;\n if (!details) return this.message;\n\n // Check for \"detail\" field (common in DRF)\n if (details.detail) {\n return Array.isArray(details.detail) ? details.detail.join(', ') : String(details.detail);\n }\n\n // Check for \"message\" field\n if (details.message) {\n return String(details.message);\n }\n\n // Return first field error\n const fieldErrors = this.fieldErrors;\n if (fieldErrors) {\n const firstField = Object.keys(fieldErrors)[0];\n if (firstField) {\n return `${firstField}: ${fieldErrors[firstField]?.join(', ')}`;\n }\n }\n\n return this.message;\n }\n\n // Helper methods for common HTTP status codes\n get isValidationError(): boolean { return this.statusCode === 400; }\n get isAuthError(): boolean { return this.statusCode === 401; }\n get isPermissionError(): boolean { return this.statusCode === 403; }\n get isNotFoundError(): boolean { return this.statusCode === 404; }\n get isServerError(): boolean { return this.statusCode >= 500 && this.statusCode < 600; }\n}\n\n/**\n * Network Error (connection failed, timeout, etc.)\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public url: string,\n public originalError?: Error\n ) {\n super(message);\n this.name = 'NetworkError';\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Logger with Consola\n * Beautiful console logging for API requests and responses\n *\n * Installation:\n * npm install consola\n */\n\nimport { type ConsolaInstance, createConsola } from 'consola';\n\n/**\n * Request log data\n */\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\n/**\n * Response log data\n */\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Error log data\n */\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n /** Enable logging */\n enabled: boolean;\n /** Log requests */\n logRequests: boolean;\n /** Log responses */\n logResponses: boolean;\n /** Log errors */\n logErrors: boolean;\n /** Log request/response bodies */\n logBodies: boolean;\n /** Log headers (excluding sensitive ones) */\n logHeaders: boolean;\n /** Custom consola instance */\n consola?: ConsolaInstance;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: process.env.NODE_ENV !== 'production',\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\n/**\n * Sensitive header names to filter out\n */\nconst SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-csrf-token',\n];\n\n/**\n * API Logger class\n */\nexport class APILogger {\n private config: LoggerConfig;\n private consola: ConsolaInstance;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.consola = config.consola || createConsola({\n level: this.config.enabled ? 4 : 0,\n });\n }\n\n /**\n * Enable logging\n */\n enable(): void {\n this.config.enabled = true;\n }\n\n /**\n * Disable logging\n */\n disable(): void {\n this.config.enabled = false;\n }\n\n /**\n * Update configuration\n */\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Filter sensitive headers\n */\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_HEADERS.includes(lowerKey)) {\n filtered[key] = '***';\n } else {\n filtered[key] = headers[key] || '';\n }\n });\n\n return filtered;\n }\n\n /**\n * Log request\n */\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n\n const { method, url, headers, body } = request;\n\n this.consola.start(`${method} ${url}`);\n\n if (this.config.logHeaders && headers) {\n this.consola.debug('Headers:', this.filterHeaders(headers));\n }\n\n if (this.config.logBodies && body) {\n this.consola.debug('Body:', body);\n }\n }\n\n /**\n * Log response\n */\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n\n const statusColor = status >= 500 ? 'red'\n : status >= 400 ? 'yellow'\n : status >= 300 ? 'cyan'\n : 'green';\n\n this.consola.success(\n `${method} ${url} ${status} ${statusText} (${duration}ms)`\n );\n\n if (this.config.logBodies && data) {\n this.consola.debug('Response:', data);\n }\n }\n\n /**\n * Log error\n */\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n\n this.consola.error(\n `${method} ${url} ${statusCode || 'Network'} Error (${duration}ms)`\n );\n\n this.consola.error('Message:', message);\n\n if (fieldErrors && Object.keys(fieldErrors).length > 0) {\n this.consola.error('Field Errors:');\n Object.entries(fieldErrors).forEach(([field, errors]) => {\n errors.forEach((err) => {\n this.consola.error(` • ${field}: ${err}`);\n });\n });\n }\n }\n\n /**\n * Log general info\n */\n info(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.info(message, ...args);\n }\n\n /**\n * Log warning\n */\n warn(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.warn(message, ...args);\n }\n\n /**\n * Log error\n */\n error(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.error(message, ...args);\n }\n\n /**\n * Log debug\n */\n debug(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.debug(message, ...args);\n }\n\n /**\n * Log success\n */\n success(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.success(message, ...args);\n }\n\n /**\n * Create a sub-logger with prefix\n */\n withTag(tag: string): ConsolaInstance {\n return this.consola.withTag(tag);\n }\n}\n\n/**\n * Default logger instance\n */\nexport const defaultLogger = new APILogger();","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Retry Configuration and Utilities\n *\n * Provides automatic retry logic for failed HTTP requests using p-retry.\n * Retries only on network errors and server errors (5xx), not client errors (4xx).\n */\n\nimport pRetry, { AbortError } from 'p-retry';\nimport { APIError, NetworkError } from './errors';\n\n/**\n * Information about a failed retry attempt.\n */\nexport interface FailedAttemptInfo {\n /** The error that caused the failure */\n error: Error;\n /** The attempt number (1-indexed) */\n attemptNumber: number;\n /** Number of retries left */\n retriesLeft: number;\n}\n\n/**\n * Retry configuration options.\n *\n * Uses exponential backoff with jitter by default to avoid thundering herd.\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts.\n * @default 3\n */\n retries?: number;\n\n /**\n * Exponential backoff factor.\n * @default 2\n */\n factor?: number;\n\n /**\n * Minimum wait time between retries (ms).\n * @default 1000\n */\n minTimeout?: number;\n\n /**\n * Maximum wait time between retries (ms).\n * @default 60000\n */\n maxTimeout?: number;\n\n /**\n * Add randomness to wait times (jitter).\n * Helps avoid thundering herd problem.\n * @default true\n */\n randomize?: boolean;\n\n /**\n * Callback called on each failed attempt.\n */\n onFailedAttempt?: (info: FailedAttemptInfo) => void;\n}\n\n/**\n * Default retry configuration.\n */\nexport const DEFAULT_RETRY_CONFIG: Required<RetryConfig> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 60000,\n randomize: true,\n onFailedAttempt: () => {},\n};\n\n/**\n * Determine if an error should trigger a retry.\n *\n * Retries on:\n * - Network errors (connection refused, timeout, etc.)\n * - Server errors (5xx status codes)\n * - Rate limiting (429 status code)\n *\n * Does NOT retry on:\n * - Client errors (4xx except 429)\n * - Authentication errors (401, 403)\n * - Not found (404)\n *\n * @param error - The error to check\n * @returns true if should retry, false otherwise\n */\nexport function shouldRetry(error: any): boolean {\n // Always retry network errors\n if (error instanceof NetworkError) {\n return true;\n }\n\n // For API errors, check status code\n if (error instanceof APIError) {\n const status = error.statusCode;\n\n // Retry on 5xx server errors\n if (status >= 500 && status < 600) {\n return true;\n }\n\n // Retry on 429 (rate limit)\n if (status === 429) {\n return true;\n }\n\n // Do NOT retry on 4xx client errors\n return false;\n }\n\n // Retry on unknown errors (might be network issues)\n return true;\n}\n\n/**\n * Wrap a function with retry logic.\n *\n * @param fn - Async function to retry\n * @param config - Retry configuration\n * @returns Result of the function\n *\n * @example\n * ```typescript\n * const result = await withRetry(\n * async () => fetch('https://api.example.com/users'),\n * { retries: 5, minTimeout: 2000 }\n * );\n * ```\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const finalConfig = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n return pRetry(\n async () => {\n try {\n return await fn();\n } catch (error) {\n // Check if we should retry this error\n if (!shouldRetry(error)) {\n // Abort retry immediately for non-retryable errors\n throw new AbortError(error as Error);\n }\n\n // Re-throw error to trigger retry\n throw error;\n }\n },\n {\n retries: finalConfig.retries,\n factor: finalConfig.factor,\n minTimeout: finalConfig.minTimeout,\n maxTimeout: finalConfig.maxTimeout,\n randomize: finalConfig.randomize,\n onFailedAttempt: finalConfig.onFailedAttempt ? (error) => {\n // Adapt p-retry's FailedAttemptError to our FailedAttemptInfo\n const pRetryError = error as any; // p-retry's internal type\n finalConfig.onFailedAttempt!({\n error: pRetryError as Error,\n attemptNumber: pRetryError.attemptNumber,\n retriesLeft: pRetryError.retriesLeft,\n });\n } : undefined,\n }\n );\n}","import { BackupCodes } from \"./totp__backup_codes\";\nimport { TotpManagement } from \"./totp__totp_management\";\nimport { TotpSetup } from \"./totp__totp_setup\";\nimport { TotpVerification } from \"./totp__totp_verification\";\nimport { Totp } from \"./totp\";\nimport { HttpClientAdapter, FetchAdapter } from \"./http\";\nimport { APIError, NetworkError } from \"./errors\";\nimport { APILogger, type LoggerConfig } from \"./logger\";\nimport { withRetry, type RetryConfig } from \"./retry\";\n\n\n/**\n * Async API client for Django CFG API.\n *\n * Usage:\n * ```typescript\n * const client = new APIClient('https://api.example.com');\n * const users = await client.users.list();\n * const post = await client.posts.create(newPost);\n *\n * // Custom HTTP adapter (e.g., Axios)\n * const client = new APIClient('https://api.example.com', {\n * httpClient: new AxiosAdapter()\n * });\n * ```\n */\nexport class APIClient {\n private baseUrl: string;\n private httpClient: HttpClientAdapter;\n private logger: APILogger | null = null;\n private retryConfig: RetryConfig | null = null;\n private tokenGetter: (() => string | null) | null = null;\n\n // Sub-clients\n public backup_codes: BackupCodes;\n public totp_management: TotpManagement;\n public totp_setup: TotpSetup;\n public totp_verification: TotpVerification;\n public totp: Totp;\n\n constructor(\n baseUrl: string,\n options?: {\n httpClient?: HttpClientAdapter;\n loggerConfig?: Partial<LoggerConfig>;\n retryConfig?: RetryConfig;\n tokenGetter?: () => string | null;\n }\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.httpClient = options?.httpClient || new FetchAdapter();\n this.tokenGetter = options?.tokenGetter || null;\n\n // Initialize logger if config provided\n if (options?.loggerConfig !== undefined) {\n this.logger = new APILogger(options.loggerConfig);\n }\n\n // Store retry configuration\n if (options?.retryConfig !== undefined) {\n this.retryConfig = options.retryConfig;\n }\n\n // Initialize sub-clients\n this.backup_codes = new BackupCodes(this);\n this.totp_management = new TotpManagement(this);\n this.totp_setup = new TotpSetup(this);\n this.totp_verification = new TotpVerification(this);\n this.totp = new Totp(this);\n }\n\n /**\n * Get CSRF token from cookies (for SessionAuthentication).\n *\n * Returns null if cookie doesn't exist (JWT-only auth).\n */\n getCsrfToken(): string | null {\n const name = 'csrftoken';\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n /**\n * Get the base URL for building streaming/download URLs.\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Get JWT token for URL authentication (used in streaming endpoints).\n * Returns null if no token getter is configured or no token is available.\n */\n getToken(): string | null {\n return this.tokenGetter ? this.tokenGetter() : null;\n }\n\n /**\n * Make HTTP request with Django CSRF and session handling.\n * Automatically retries on network errors and 5xx server errors.\n */\n async request<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Wrap request in retry logic if configured\n if (this.retryConfig) {\n return withRetry(() => this._makeRequest<T>(method, path, options), {\n ...this.retryConfig,\n onFailedAttempt: (info) => {\n // Log retry attempts\n if (this.logger) {\n this.logger.warn(\n `Retry attempt ${info.attemptNumber}/${info.retriesLeft + info.attemptNumber} ` +\n `for ${method} ${path}: ${info.error.message}`\n );\n }\n // Call user's onFailedAttempt if provided\n this.retryConfig?.onFailedAttempt?.(info);\n },\n });\n }\n\n // No retry configured, make request directly\n return this._makeRequest<T>(method, path, options);\n }\n\n /**\n * Internal request method (without retry wrapper).\n * Used by request() method with optional retry logic.\n */\n private async _makeRequest<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Build URL - handle both absolute and relative paths\n // When baseUrl is empty (static builds), path is used as-is (relative to current origin)\n const url = this.baseUrl ? `${this.baseUrl}${path}` : path;\n const startTime = Date.now();\n\n // Build headers - start with custom headers from options\n const headers: Record<string, string> = {\n ...(options?.headers || {})\n };\n\n // Don't set Content-Type for FormData/binaryBody (browser will set it with boundary)\n if (!options?.formData && !options?.binaryBody && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n // CSRF not needed - SessionAuthentication not enabled in DRF config\n // Your API uses JWT/Token authentication (no CSRF required)\n\n // Log request\n if (this.logger) {\n this.logger.logRequest({\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n });\n }\n\n try {\n // Make request via HTTP adapter\n const response = await this.httpClient.request<T>({\n method,\n url: url,\n headers,\n params: options?.params,\n body: options?.body,\n formData: options?.formData,\n binaryBody: options?.binaryBody,\n });\n\n const duration = Date.now() - startTime;\n\n // Check for HTTP errors\n if (response.status >= 400) {\n const error = new APIError(\n response.status,\n response.statusText,\n response.data,\n url\n );\n\n // Log error\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: error.message,\n statusCode: response.status,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw error;\n }\n\n // Log successful response\n if (this.logger) {\n this.logger.logResponse(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n return response.data as T;\n } catch (error) {\n const duration = Date.now() - startTime;\n\n // Re-throw APIError as-is\n if (error instanceof APIError) {\n throw error;\n }\n\n // Classify network error using PerformanceResourceTiming.\n // Browser intentionally makes CORS errors indistinguishable from network failures\n // (same TypeError: \"Failed to fetch\") for security reasons. We use PerformanceResourceTiming\n // as the best available heuristic:\n // - Entry exists with responseStatus === 0 → request reached server, JS blocked → likely CORS\n // - No entry / entry missing → connection never established → server unavailable / DNS / offline\n // All cases are dispatched as 'network-error' with a `possibly_cors` flag.\n let possiblyCors = false;\n if (error instanceof TypeError && typeof window !== 'undefined') {\n try {\n const isCrossOrigin = (() => {\n try { return new URL(url).origin !== window.location.origin; } catch { return false; }\n })();\n if (isCrossOrigin) {\n const entries = performance.getEntriesByName(url, 'resource');\n if (entries.length > 0) {\n const last = entries[entries.length - 1] as PerformanceResourceTiming;\n possiblyCors = 'responseStatus' in last && (last as any).responseStatus === 0;\n }\n }\n } catch { /* ignore — PerformanceResourceTiming not available */ }\n }\n\n if (this.logger) {\n this.logger.error(`⚠️ Network Error: ${method} ${url}`);\n this.logger.error(` → ${error instanceof Error ? error.message : String(error)}`);\n if (possiblyCors) {\n this.logger.error(` → Possibly blocked by CORS policy (configure CORS on the server)`);\n }\n }\n\n // Dispatch network-error event with possibly_cors hint\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('network-error', {\n detail: {\n url: url,\n method: method,\n error: error instanceof Error ? error.message : String(error),\n possibly_cors: possiblyCors,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n }));\n } catch { /* silently ignore — event dispatch must never crash the app */ }\n }\n\n // Wrap other errors as NetworkError\n const networkError = error instanceof Error\n ? new NetworkError(error.message, url, error)\n : new NetworkError('Unknown error', url);\n\n // Detailed logging via logger.logError\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: networkError.message,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw networkError;\n }\n }\n}\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Storage adapters for cross-platform token storage.\n *\n * Supports:\n * - LocalStorage (browser)\n * - Cookies (SSR/browser)\n * - Memory (Node.js/Electron/testing)\n */\n\nimport type { APILogger } from './logger';\n\n/**\n * Storage adapter interface for cross-platform token storage.\n */\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/**\n * LocalStorage adapter with safe try-catch for browser environments.\n * Works in modern browsers with localStorage support.\n * \n * Note: This adapter uses window.localStorage and should only be used in browser/client environments.\n * For server-side usage, use MemoryStorageAdapter or CookieStorageAdapter instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n const value = localStorage.getItem(key);\n this.logger?.debug(`LocalStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n } catch (error) {\n this.logger?.error('LocalStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(key, value);\n this.logger?.debug(`LocalStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.removeItem(key);\n this.logger?.debug(`LocalStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * Cookie-based storage adapter for SSR and browser environments.\n * Useful for Next.js, Nuxt.js, and other SSR frameworks.\n */\nexport class CookieStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof document === 'undefined') {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n return null;\n }\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts.length === 2) {\n const result = parts.pop()?.split(';').shift() || null;\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): ${result ? 'found' : 'not found'}`);\n return result;\n }\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): not found`);\n } catch (error) {\n this.logger?.error('CookieStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=${value}; path=/; max-age=31536000`;\n this.logger?.debug(`CookieStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n this.logger?.debug(`CookieStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * In-memory storage adapter for Node.js, Electron, and testing environments.\n * Data is stored in RAM and cleared when process exits.\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private storage: Map<string, string> = new Map();\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n const value = this.storage.get(key) || null;\n this.logger?.debug(`MemoryStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n\n setItem(key: string, value: string): void {\n this.storage.set(key, value);\n this.logger?.debug(`MemoryStorage.setItem(\"${key}\"): success`);\n }\n\n removeItem(key: string): void {\n this.storage.delete(key);\n this.logger?.debug(`MemoryStorage.removeItem(\"${key}\"): success`);\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * * `pending` - Pending Confirmation\n * * `active` - Active\n * * `disabled` - Disabled\n */\nexport enum DeviceListStatus {\n PENDING = \"pending\",\n ACTIVE = \"active\",\n DISABLED = \"disabled\",\n}\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Zod Schemas - Runtime validation and type inference\n *\n * Auto-generated from OpenAPI specification.\n * Provides runtime validation for API requests and responses.\n *\n * Usage:\n * ```typescript\n * import { UserSchema } from './schemas'\n *\n * // Validate data\n * const user = UserSchema.parse(data)\n *\n * // Type inference\n * type User = z.infer<typeof UserSchema>\n * ```\n */\n\nexport * from './BackupCodesRegenerateRequest.schema'\nexport * from './BackupCodesRegenerateResponse.schema'\nexport * from './BackupCodesStatus.schema'\nexport * from './ConfirmSetupRequest.schema'\nexport * from './ConfirmSetupResponse.schema'\nexport * from './DeviceList.schema'\nexport * from './DeviceListResponse.schema'\nexport * from './DisableRequest.schema'\nexport * from './PaginatedDeviceListResponseList.schema'\nexport * from './SetupRequest.schema'\nexport * from './SetupResponse.schema'\nexport * from './TotpVerifyUser.schema'\nexport * from './VerifyBackupRequest.schema'\nexport * from './VerifyRequest.schema'\nexport * from './VerifyResponse.schema'\n","/**\n * Zod schema for BackupCodesRegenerateRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for regenerating backup codes.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for regenerating backup codes.\n */\nexport const BackupCodesRegenerateRequestSchema = z.object({\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type BackupCodesRegenerateRequest = z.infer<typeof BackupCodesRegenerateRequestSchema>","/**\n * Zod schema for BackupCodesRegenerateResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for backup codes regeneration.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for backup codes regeneration.\n */\nexport const BackupCodesRegenerateResponseSchema = z.object({\n backup_codes: z.array(z.string()),\n warning: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type BackupCodesRegenerateResponse = z.infer<typeof BackupCodesRegenerateResponseSchema>","/**\n * Zod schema for BackupCodesStatus\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for backup codes status.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for backup codes status.\n */\nexport const BackupCodesStatusSchema = z.object({\n remaining_count: z.number().int(),\n total_generated: z.number().int(),\n warning: z.string().nullable().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type BackupCodesStatus = z.infer<typeof BackupCodesStatusSchema>","/**\n * Zod schema for ConfirmSetupRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for confirming 2FA setup with first code.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for confirming 2FA setup with first code.\n */\nexport const ConfirmSetupRequestSchema = z.object({\n device_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type ConfirmSetupRequest = z.infer<typeof ConfirmSetupRequestSchema>","/**\n * Zod schema for ConfirmSetupResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for setup confirmation.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for setup confirmation.\n */\nexport const ConfirmSetupResponseSchema = z.object({\n message: z.string(),\n backup_codes: z.array(z.string()),\n backup_codes_warning: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type ConfirmSetupResponse = z.infer<typeof ConfirmSetupResponseSchema>","/**\n * Zod schema for DeviceList\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for listing TOTP devices.\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Serializer for listing TOTP devices.\n */\nexport const DeviceListSchema = z.object({\n id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n name: z.string(),\n is_primary: z.boolean(),\n status: z.nativeEnum(Enums.DeviceListStatus),\n created_at: z.string().datetime({ offset: true }),\n confirmed_at: z.string().datetime({ offset: true }).nullable(),\n last_used_at: z.string().datetime({ offset: true }).nullable(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type DeviceList = z.infer<typeof DeviceListSchema>","/**\n * Zod schema for DeviceListResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for device list endpoint.\n * */\nimport { z } from 'zod'\nimport { DeviceListSchema } from './DeviceList.schema'\n\n/**\n * Response serializer for device list endpoint.\n */\nexport const DeviceListResponseSchema = z.object({\n devices: z.array(DeviceListSchema),\n has_2fa_enabled: z.boolean(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type DeviceListResponse = z.infer<typeof DeviceListResponseSchema>","/**\n * Zod schema for DisableRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for completely disabling 2FA.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for completely disabling 2FA.\n */\nexport const DisableRequestSchema = z.object({\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type DisableRequest = z.infer<typeof DisableRequestSchema>","/**\n * Zod schema for PaginatedDeviceListResponseList\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\nimport { DeviceListResponseSchema } from './DeviceListResponse.schema'\n\nexport const PaginatedDeviceListResponseListSchema = z.object({\n count: z.number().int(),\n page: z.number().int(),\n pages: z.number().int(),\n page_size: z.number().int(),\n has_next: z.boolean(),\n has_previous: z.boolean(),\n next_page: z.number().int().nullable().optional(),\n previous_page: z.number().int().nullable().optional(),\n results: z.array(DeviceListResponseSchema),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type PaginatedDeviceListResponseList = z.infer<typeof PaginatedDeviceListResponseListSchema>","/**\n * Zod schema for SetupRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for starting 2FA setup.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for starting 2FA setup.\n */\nexport const SetupRequestSchema = z.object({\n device_name: z.string().min(1).max(100).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type SetupRequest = z.infer<typeof SetupRequestSchema>","/**\n * Zod schema for SetupResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for setup initiation.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for setup initiation.\n */\nexport const SetupResponseSchema = z.object({\n device_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n secret: z.string(),\n provisioning_uri: z.string(),\n qr_code_base64: z.string(),\n expires_in: z.number().int(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type SetupResponse = z.infer<typeof SetupResponseSchema>","/**\n * Zod schema for TotpVerifyUser\n *\n * This schema provides runtime validation and type inference.\n * * User data returned after 2FA verification.\n * */\nimport { z } from 'zod'\n\n/**\n * User data returned after 2FA verification.\n */\nexport const TotpVerifyUserSchema = z.object({\n id: z.number().int(),\n email: z.email(),\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n full_name: z.string(),\n initials: z.string(),\n display_username: z.string(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n avatar: z.string().nullable(),\n is_staff: z.boolean(),\n is_superuser: z.boolean(),\n date_joined: z.string().datetime({ offset: true }),\n last_login: z.string().datetime({ offset: true }).nullable(),\n unanswered_messages_count: z.number().int(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type TotpVerifyUser = z.infer<typeof TotpVerifyUserSchema>","/**\n * Zod schema for VerifyBackupRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for backup code verification during login.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for backup code verification during login.\n */\nexport const VerifyBackupRequestSchema = z.object({\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n backup_code: z.string().min(8).max(8),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type VerifyBackupRequest = z.infer<typeof VerifyBackupRequestSchema>","/**\n * Zod schema for VerifyRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for TOTP code verification during login.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for TOTP code verification during login.\n */\nexport const VerifyRequestSchema = z.object({\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type VerifyRequest = z.infer<typeof VerifyRequestSchema>","/**\n * Zod schema for VerifyResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for successful 2FA verification.\n * */\nimport { z } from 'zod'\nimport { TotpVerifyUserSchema } from './TotpVerifyUser.schema'\n\n/**\n * Response serializer for successful 2FA verification.\n */\nexport const VerifyResponseSchema = z.object({\n message: z.string(),\n access_token: z.string(),\n refresh_token: z.string(),\n user: TotpVerifyUserSchema,\n remaining_backup_codes: z.number().int().optional(),\n warning: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type VerifyResponse = z.infer<typeof VerifyResponseSchema>","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed Fetchers - Universal API functions\n *\n * Auto-generated from OpenAPI specification.\n * These functions work in any JavaScript environment.\n *\n * Features:\n * - Runtime validation with Zod\n * - Type-safe parameters and responses\n * - Works with any data-fetching library (SWR, React Query, etc)\n * - Server Component compatible\n *\n * Usage:\n * ```typescript\n * import * as fetchers from './fetchers'\n *\n * // Direct usage\n * const user = await fetchers.getUser(1)\n *\n * // With SWR\n * const { data } = useSWR('user-1', () => fetchers.getUser(1))\n *\n * // With React Query\n * const { data } = useQuery(['user', 1], () => fetchers.getUser(1))\n * ```\n */\n\nexport * from './totp'\nexport * from './totp__backup_codes'\nexport * from './totp__totp_management'\nexport * from './totp__totp_setup'\nexport * from './totp__totp_verification'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Global API Instance - Singleton configuration with auto-configuration support\n *\n * This module provides a global API instance that auto-configures from\n * environment variables or can be configured manually.\n *\n * AUTO-CONFIGURATION (recommended):\n * Set one of these environment variables and the API will auto-configure:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n *\n * Then just use fetchers and hooks directly:\n * ```typescript\n * import { getUsers } from './_utils/fetchers'\n * const users = await getUsers({ page: 1 })\n * ```\n *\n * MANUAL CONFIGURATION:\n * ```typescript\n * import { configureAPI } from './api-instance'\n *\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'your-jwt-token'\n * })\n * ```\n *\n * For SSR or multiple instances:\n * ```typescript\n * import { API } from './index'\n * import { getUsers } from './_utils/fetchers'\n *\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\n\nimport { API, type APIOptions } from './index'\n\nlet globalAPI: API | null = null\nlet autoConfigAttempted = false\n\n/**\n * Auto-configure from environment variable if available (Next.js pattern)\n * This allows hooks and fetchers to work without explicit configureAPI() call\n *\n * Supported environment variables:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n */\nfunction tryAutoConfigureFromEnv(): void {\n // Only attempt once\n if (autoConfigAttempted) return\n autoConfigAttempted = true\n\n // Skip if already configured\n if (globalAPI) return\n\n // Skip if process is not available (pure browser without bundler)\n if (typeof process === 'undefined' || !process.env) return\n\n // Try different environment variable patterns\n const baseUrl =\n process.env.NEXT_PUBLIC_API_URL ||\n process.env.VITE_API_URL ||\n process.env.REACT_APP_API_URL ||\n process.env.API_URL\n\n if (baseUrl) {\n globalAPI = new API(baseUrl)\n }\n}\n\n/**\n * Get the global API instance\n * Auto-configures from environment variables on first call if not manually configured.\n * @throws Error if API is not configured and no env variable is set\n */\nexport function getAPIInstance(): API {\n // Try auto-configuration on first access (lazy initialization)\n tryAutoConfigureFromEnv()\n\n if (!globalAPI) {\n throw new Error(\n 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\\n\\n' +\n 'Example:\\n' +\n ' import { configureAPI } from \"./api-instance\"\\n' +\n ' configureAPI({ baseUrl: \"https://api.example.com\" })\\n\\n' +\n 'Or set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'\n )\n }\n return globalAPI\n}\n\n/**\n * Check if API is configured (or can be auto-configured)\n */\nexport function isAPIConfigured(): boolean {\n tryAutoConfigureFromEnv()\n return globalAPI !== null\n}\n\n/**\n * Configure the global API instance\n *\n * @param baseUrl - Base URL for the API\n * @param options - Optional configuration (storage, retry, logger)\n *\n * @example\n * ```typescript\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'jwt-token',\n * options: {\n * retryConfig: { maxRetries: 3 },\n * loggerConfig: { enabled: true }\n * }\n * })\n * ```\n */\nexport function configureAPI(config: {\n baseUrl: string\n token?: string\n refreshToken?: string\n options?: APIOptions\n}): API {\n globalAPI = new API(config.baseUrl, config.options)\n\n if (config.token) {\n globalAPI.setToken(config.token, config.refreshToken)\n }\n\n return globalAPI\n}\n\n/**\n * Reconfigure the global API instance with new settings\n * Useful for updating tokens or base URL\n */\nexport function reconfigureAPI(updates: {\n baseUrl?: string\n token?: string\n refreshToken?: string\n}): API {\n const instance = getAPIInstance()\n\n if (updates.baseUrl) {\n instance.setBaseUrl(updates.baseUrl)\n }\n\n if (updates.token) {\n instance.setToken(updates.token, updates.refreshToken)\n }\n\n return instance\n}\n\n/**\n * Clear tokens from the global API instance\n */\nexport function clearAPITokens(): void {\n const instance = getAPIInstance()\n instance.clearTokens()\n}\n\n/**\n * Reset the global API instance\n * Useful for testing or logout scenarios\n */\nexport function resetAPI(): void {\n if (globalAPI) {\n globalAPI.clearTokens()\n }\n globalAPI = null\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Totp\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method DELETE\n * @path /cfg/totp/devices/{id}/\n */\nexport async function deleteTotpDevicesDestroy( id: string, client?: any\n): Promise<void> {\n const api = client || getAPIInstance()\n const response = await api.totp.devicesDestroy(id)\n return response\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Backup Codes\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { BackupCodesRegenerateRequestSchema, type BackupCodesRegenerateRequest } from '../schemas/BackupCodesRegenerateRequest.schema'\nimport { BackupCodesRegenerateResponseSchema, type BackupCodesRegenerateResponse } from '../schemas/BackupCodesRegenerateResponse.schema'\nimport { BackupCodesStatusSchema, type BackupCodesStatus } from '../schemas/BackupCodesStatus.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/backup-codes/\n */\nexport async function getTotpBackupCodesRetrieve( client?: any\n): Promise<BackupCodesStatus> {\n const api = client || getAPIInstance()\n const response = await api.backup_codes.totpBackupCodesRetrieve()\n try {\n return BackupCodesStatusSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getTotpBackupCodesRetrieve\\nPath: /cfg/totp/backup-codes/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getTotpBackupCodesRetrieve',\n path: '/cfg/totp/backup-codes/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/backup-codes/regenerate/\n */\nexport async function createTotpBackupCodesRegenerateCreate( data: BackupCodesRegenerateRequest, client?: any\n): Promise<BackupCodesRegenerateResponse> {\n const api = client || getAPIInstance()\n const response = await api.backup_codes.totpBackupCodesRegenerateCreate(data)\n try {\n return BackupCodesRegenerateResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpBackupCodesRegenerateCreate\\nPath: /cfg/totp/backup-codes/regenerate/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpBackupCodesRegenerateCreate',\n path: '/cfg/totp/backup-codes/regenerate/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for TOTP Management\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { DisableRequestSchema, type DisableRequest } from '../schemas/DisableRequest.schema'\nimport { PaginatedDeviceListResponseListSchema, type PaginatedDeviceListResponseList } from '../schemas/PaginatedDeviceListResponseList.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/devices/\n */\nexport async function getTotpDevicesList( params?: { ordering?: string; page?: number; page_size?: number; search?: string }, client?: any\n): Promise<PaginatedDeviceListResponseList> {\n const api = client || getAPIInstance()\n const response = await api.totp_management.totpDevicesList(params?.ordering, params?.page, params?.page_size, params?.search)\n try {\n return PaginatedDeviceListResponseListSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getTotpDevicesList\\nPath: /cfg/totp/devices/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getTotpDevicesList',\n path: '/cfg/totp/devices/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/disable/\n */\nexport async function createTotpDisableCreate( data: DisableRequest, client?: any\n): Promise<any> {\n const api = client || getAPIInstance()\n const response = await api.totp_management.totpDisableCreate(data)\n return response\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for TOTP Setup\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { ConfirmSetupRequestSchema, type ConfirmSetupRequest } from '../schemas/ConfirmSetupRequest.schema'\nimport { ConfirmSetupResponseSchema, type ConfirmSetupResponse } from '../schemas/ConfirmSetupResponse.schema'\nimport { SetupRequestSchema, type SetupRequest } from '../schemas/SetupRequest.schema'\nimport { SetupResponseSchema, type SetupResponse } from '../schemas/SetupResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/\n */\nexport async function createTotpSetupCreate( data: SetupRequest, client?: any\n): Promise<SetupResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_setup.create(data)\n try {\n return SetupResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpSetupCreate\\nPath: /cfg/totp/setup/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpSetupCreate',\n path: '/cfg/totp/setup/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/confirm/\n */\nexport async function createTotpSetupConfirmCreate( data: ConfirmSetupRequest, client?: any\n): Promise<ConfirmSetupResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_setup.confirmCreate(data)\n try {\n return ConfirmSetupResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpSetupConfirmCreate\\nPath: /cfg/totp/setup/confirm/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpSetupConfirmCreate',\n path: '/cfg/totp/setup/confirm/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for TOTP Verification\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { VerifyBackupRequestSchema, type VerifyBackupRequest } from '../schemas/VerifyBackupRequest.schema'\nimport { VerifyRequestSchema, type VerifyRequest } from '../schemas/VerifyRequest.schema'\nimport { VerifyResponseSchema, type VerifyResponse } from '../schemas/VerifyResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/\n */\nexport async function createTotpVerifyCreate( data: VerifyRequest, client?: any\n): Promise<VerifyResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_verification.totpVerifyCreate(data)\n try {\n return VerifyResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpVerifyCreate\\nPath: /cfg/totp/verify/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpVerifyCreate',\n path: '/cfg/totp/verify/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/backup/\n */\nexport async function createTotpVerifyBackupCreate( data: VerifyBackupRequest, client?: any\n): Promise<VerifyResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_verification.totpVerifyBackupCreate(data)\n try {\n return VerifyResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpVerifyBackupCreate\\nPath: /cfg/totp/verify/backup/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpVerifyBackupCreate',\n path: '/cfg/totp/verify/backup/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Django CFG API - API Client with JWT Management\n *\n * Usage:\n * ```typescript\n * import { API } from './api';\n *\n * const api = new API('https://api.example.com');\n *\n * // Set JWT token\n * api.setToken('your-jwt-token', 'refresh-token');\n *\n * // Use API\n * const posts = await api.posts.list();\n * const user = await api.users.retrieve(1);\n *\n * // Check authentication\n * if (api.isAuthenticated()) {\n * // ...\n * }\n *\n * // Custom storage with logging (for Electron/Node.js)\n * import { MemoryStorageAdapter, APILogger } from './storage';\n * const logger = new APILogger({ enabled: true, logLevel: 'debug' });\n * const api = new API('https://api.example.com', {\n * storage: new MemoryStorageAdapter(logger),\n * loggerConfig: { enabled: true, logLevel: 'debug' }\n * });\n *\n * // Get OpenAPI schema\n * const schema = api.getSchema();\n * ```\n */\n\nimport { APIClient } from \"./client\";\nimport {\n StorageAdapter,\n LocalStorageAdapter,\n CookieStorageAdapter,\n MemoryStorageAdapter\n} from \"./storage\";\nimport type { RetryConfig } from \"./retry\";\nimport type { LoggerConfig } from \"./logger\";\nimport { APILogger } from \"./logger\";\nimport { BackupCodes } from \"./totp__backup_codes/client\";\nimport { TotpManagement } from \"./totp__totp_management/client\";\nimport { TotpSetup } from \"./totp__totp_setup/client\";\nimport { TotpVerification } from \"./totp__totp_verification/client\";\nimport { Totp } from \"./totp/client\";\nexport * as BackupCodesTypes from \"./totp__backup_codes/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpManagementTypes from \"./totp__totp_management/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpSetupTypes from \"./totp__totp_setup/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpVerificationTypes from \"./totp__totp_verification/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpTypes from \"./totp/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as Enums from \"./enums\";\n\n// Re-export Zod schemas for runtime validation\nexport * as Schemas from \"./_utils/schemas\";\n// Also export all schemas directly for convenience\nexport * from \"./_utils/schemas\";\n\n// Re-export Zod validation events for browser integration\nexport type { ValidationErrorDetail, ValidationErrorEvent } from \"./validation-events\";\nexport { dispatchValidationError, onValidationError, formatZodError } from \"./validation-events\";\n\n// Re-export typed fetchers for universal usage\nexport * as Fetchers from \"./_utils/fetchers\";\nexport * from \"./_utils/fetchers\";\n\n// Re-export API instance configuration functions\nexport {\n configureAPI,\n getAPIInstance,\n reconfigureAPI,\n clearAPITokens,\n resetAPI,\n isAPIConfigured\n} from \"./api-instance\";\n// NOTE: SWR hooks are generated in ./_utils/hooks/ but NOT exported here to keep\n// the main bundle server-safe. Import hooks directly from the hooks directory:\n// import { useUsers } from './_utils/hooks';\n// Or use a separate entry point like '@djangocfg/api/hooks' for client components.\n\n// Re-export core client\nexport { APIClient };\n\n// Re-export storage adapters for convenience\nexport type { StorageAdapter };\nexport { LocalStorageAdapter, CookieStorageAdapter, MemoryStorageAdapter };\n\n// Re-export error classes for convenience\nexport { APIError, NetworkError } from \"./errors\";\n\n// Re-export HTTP adapters for custom implementations\nexport type { HttpClientAdapter, HttpRequest, HttpResponse } from \"./http\";\nexport { FetchAdapter, KeepAliveFetchAdapter } from \"./http\";\n\n// Re-export logger types and classes\nexport type { LoggerConfig, RequestLog, ResponseLog, ErrorLog } from \"./logger\";\nexport { APILogger } from \"./logger\";\n\n// Re-export retry configuration and utilities\nexport type { RetryConfig, FailedAttemptInfo } from \"./retry\";\nexport { withRetry, shouldRetry, DEFAULT_RETRY_CONFIG } from \"./retry\";\n\nexport const TOKEN_KEY = \"auth_token\";\nexport const REFRESH_TOKEN_KEY = \"refresh_token\";\n\n/** Auto-detect locale from cookie NEXT_LOCALE or navigator.language */\nfunction detectLocale(): string | null {\n try {\n if (typeof document !== 'undefined') {\n const match = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (match) return match[1];\n }\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n } catch {}\n return null;\n}\n\nexport interface APIOptions {\n /** Custom storage adapter (defaults to LocalStorageAdapter) */\n storage?: StorageAdapter;\n /** Custom HTTP client adapter (defaults to FetchAdapter) */\n httpClient?: HttpClientAdapter;\n /** Retry configuration for failed requests */\n retryConfig?: RetryConfig;\n /** Logger configuration */\n loggerConfig?: Partial<LoggerConfig>;\n /** Locale for Accept-Language header (e.g. 'en', 'ko', 'ru') */\n locale?: string;\n}\n\nexport class API {\n private baseUrl: string;\n private _client: APIClient;\n private _token: string | null = null;\n private _refreshToken: string | null = null;\n private _locale: string | null = null;\n private storage: StorageAdapter;\n private options?: APIOptions;\n\n // Sub-clients\n public backup_codes!: BackupCodes;\n public totp_management!: TotpManagement;\n public totp_setup!: TotpSetup;\n public totp_verification!: TotpVerification;\n public totp!: Totp;\n\n constructor(baseUrl: string, options?: APIOptions) {\n this.baseUrl = baseUrl;\n this.options = options;\n\n // Create logger if config provided\n const logger = options?.loggerConfig ? new APILogger(options.loggerConfig) : undefined;\n\n // Initialize storage with logger\n this.storage = options?.storage || new LocalStorageAdapter(logger);\n\n this._locale = options?.locale || null;\n\n this._loadTokensFromStorage();\n\n // Initialize APIClient with token getter for URL authentication\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Initialize sub-clients from APIClient\n this.backup_codes = this._client.backup_codes;\n this.totp_management = this._client.totp_management;\n this.totp_setup = this._client.totp_setup;\n this.totp_verification = this._client.totp_verification;\n this.totp = this._client.totp;\n }\n\n private _loadTokensFromStorage(): void {\n this._token = this.storage.getItem(TOKEN_KEY);\n this._refreshToken = this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n private _reinitClients(): void {\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Reinitialize sub-clients\n this.backup_codes = this._client.backup_codes;\n this.totp_management = this._client.totp_management;\n this.totp_setup = this._client.totp_setup;\n this.totp_verification = this._client.totp_verification;\n this.totp = this._client.totp;\n }\n\n private _injectAuthHeader(): void {\n // Override request method to inject auth header\n const originalRequest = this._client.request.bind(this._client);\n this._client.request = async <T>(\n method: string,\n path: string,\n options?: { params?: Record<string, any>; body?: any; formData?: FormData; headers?: Record<string, string> }\n ): Promise<T> => {\n // Read token from storage dynamically (supports JWT injection after instantiation)\n const token = this.getToken();\n const locale = this._locale || detectLocale();\n const mergedOptions = {\n ...options,\n headers: {\n ...(options?.headers || {}),\n ...(token ? { 'Authorization': `Bearer ${token}` } : {}),\n ...(locale ? { 'Accept-Language': locale } : {}),\n },\n };\n\n return originalRequest(method, path, mergedOptions);\n };\n }\n\n /**\n * Get current JWT token\n */\n getToken(): string | null {\n return this.storage.getItem(TOKEN_KEY);\n }\n\n /**\n * Get current refresh token\n */\n getRefreshToken(): string | null {\n return this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n /**\n * Set JWT token and refresh token\n * @param token - JWT access token\n * @param refreshToken - JWT refresh token (optional)\n */\n setToken(token: string, refreshToken?: string): void {\n this._token = token;\n this.storage.setItem(TOKEN_KEY, token);\n\n if (refreshToken) {\n this._refreshToken = refreshToken;\n this.storage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n\n // Reinitialize clients with new token\n this._reinitClients();\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this._token = null;\n this._refreshToken = null;\n this.storage.removeItem(TOKEN_KEY);\n this.storage.removeItem(REFRESH_TOKEN_KEY);\n\n // Reinitialize clients without token\n this._reinitClients();\n }\n\n /**\n * Check if user is authenticated\n */\n isAuthenticated(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Update base URL and reinitialize clients\n * @param url - New base URL\n */\n setBaseUrl(url: string): void {\n this.baseUrl = url;\n this._reinitClients();\n }\n\n /**\n * Get current base URL\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Set locale for Accept-Language header\n * @param locale - Locale string (e.g. 'en', 'ko', 'ru') or null to clear\n */\n setLocale(locale: string | null): void {\n this._locale = locale;\n }\n\n /**\n * Get current locale\n */\n getLocale(): string | null {\n return this._locale;\n }\n\n /**\n * Get OpenAPI schema path\n * @returns Path to the OpenAPI schema JSON file\n *\n * Note: The OpenAPI schema is available in the schema.json file.\n * You can load it dynamically using:\n * ```typescript\n * const schema = await fetch('./schema.json').then(r => r.json());\n * // or using fs in Node.js:\n * // const schema = JSON.parse(fs.readFileSync('./schema.json', 'utf-8'));\n * ```\n */\n getSchemaPath(): string {\n return './schema.json';\n }\n}\n\nexport default API;","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Auth\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts__auth'\nimport type { API } from '../../index'\nimport type { TokenRefresh } from '../schemas/TokenRefresh.schema'\nimport type { TokenRefreshRequest } from '../schemas/TokenRefreshRequest.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/token/refresh/\n */\nexport function useCreateAccountsTokenRefreshCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: TokenRefreshRequest, client?: API): Promise<TokenRefresh> => {\n const result = await Fetchers.createAccountsTokenRefreshCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-token-refresh')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Oauth\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts__oauth'\nimport type { API } from '../../index'\nimport type { OAuthAuthorizeRequestRequest } from '../schemas/OAuthAuthorizeRequestRequest.schema'\nimport type { OAuthAuthorizeResponse } from '../schemas/OAuthAuthorizeResponse.schema'\nimport type { OAuthCallbackRequestRequest } from '../schemas/OAuthCallbackRequestRequest.schema'\nimport type { OAuthDisconnectRequestRequest } from '../schemas/OAuthDisconnectRequestRequest.schema'\nimport type { OAuthProvidersResponse } from '../schemas/OAuthProvidersResponse.schema'\nimport type { OAuthTokenResponse } from '../schemas/OAuthTokenResponse.schema'\n\n/**\n * List OAuth connections\n *\n * @method GET\n * @path /cfg/accounts/oauth/connections/\n */\nexport function useAccountsOauthConnectionsList(client?: API): ReturnType<typeof useSWR<any>> {\n return useSWR<any>(\n 'cfg-accounts-oauth-connections',\n () => Fetchers.getAccountsOauthConnectionsList(client)\n )\n}\n\n\n/**\n * Disconnect OAuth provider\n *\n * @method POST\n * @path /cfg/accounts/oauth/disconnect/\n */\nexport function useCreateAccountsOauthDisconnectCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OAuthDisconnectRequestRequest, client?: API): Promise<any> => {\n const result = await Fetchers.createAccountsOauthDisconnectCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-oauth-disconnect')\n return result\n }\n}\n\n\n/**\n * Start GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/authorize/\n */\nexport function useCreateAccountsOauthGithubAuthorizeCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OAuthAuthorizeRequestRequest, client?: API): Promise<OAuthAuthorizeResponse> => {\n const result = await Fetchers.createAccountsOauthGithubAuthorizeCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-oauth-github-authorize')\n return result\n }\n}\n\n\n/**\n * Complete GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/callback/\n */\nexport function useCreateAccountsOauthGithubCallbackCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OAuthCallbackRequestRequest, client?: API): Promise<OAuthTokenResponse> => {\n const result = await Fetchers.createAccountsOauthGithubCallbackCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-oauth-github-callback')\n return result\n }\n}\n\n\n/**\n * List OAuth providers\n *\n * @method GET\n * @path /cfg/accounts/oauth/providers/\n */\nexport function useAccountsOauthProvidersRetrieve(client?: API): ReturnType<typeof useSWR<OAuthProvidersResponse>> {\n return useSWR<OAuthProvidersResponse>(\n 'cfg-accounts-oauth-provider',\n () => Fetchers.getAccountsOauthProvidersRetrieve(client)\n )\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for User Profile\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts__user_profile'\nimport type { API } from '../../index'\nimport type { AccountDeleteResponse } from '../schemas/AccountDeleteResponse.schema'\nimport type { CfgAccountsProfileAvatarCreateRequest } from '../schemas/CfgAccountsProfileAvatarCreateRequest.schema'\nimport type { PatchedUserProfileUpdateRequest } from '../schemas/PatchedUserProfileUpdateRequest.schema'\nimport type { User } from '../schemas/User.schema'\nimport type { UserProfileUpdateRequest } from '../schemas/UserProfileUpdateRequest.schema'\n\n/**\n * Get current user profile\n *\n * @method GET\n * @path /cfg/accounts/profile/\n */\nexport function useAccountsProfileRetrieve(client?: API): ReturnType<typeof useSWR<User>> {\n return useSWR<User>(\n 'cfg-accounts-profile',\n () => Fetchers.getAccountsProfileRetrieve(client)\n )\n}\n\n\n/**\n * Upload user avatar\n *\n * @method POST\n * @path /cfg/accounts/profile/avatar/\n */\nexport function useCreateAccountsProfileAvatarCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: CfgAccountsProfileAvatarCreateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.createAccountsProfileAvatarCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile-avatar')\n return result\n }\n}\n\n\n/**\n * Delete user account\n *\n * @method POST\n * @path /cfg/accounts/profile/delete/\n */\nexport function useCreateAccountsProfileDeleteCreate() {\n const { mutate } = useSWRConfig()\n\n return async (client?: API): Promise<AccountDeleteResponse> => {\n const result = await Fetchers.createAccountsProfileDeleteCreate(client)\n // Revalidate related queries\n mutate('cfg-accounts-profile-delete')\n return result\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/partial/\n */\nexport function usePartialUpdateAccountsProfilePartialUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data: UserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.partialUpdateAccountsProfilePartialUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile')\n return result\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/partial/\n */\nexport function usePartialUpdateAccountsProfilePartialPartialUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data?: PatchedUserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.partialUpdateAccountsProfilePartialPartialUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile-partial')\n return result\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/update/\n */\nexport function useUpdateAccountsProfileUpdateUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data: UserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.updateAccountsProfileUpdateUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile')\n return result\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/update/\n */\nexport function usePartialUpdateAccountsProfileUpdatePartialUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data?: PatchedUserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.partialUpdateAccountsProfileUpdatePartialUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Accounts\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts'\nimport type { API } from '../../index'\nimport type { OTPRequestRequest } from '../schemas/OTPRequestRequest.schema'\nimport type { OTPRequestResponse } from '../schemas/OTPRequestResponse.schema'\nimport type { OTPVerifyRequest } from '../schemas/OTPVerifyRequest.schema'\nimport type { OTPVerifyResponse } from '../schemas/OTPVerifyResponse.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/request/\n */\nexport function useCreateAccountsOtpRequestCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OTPRequestRequest, client?: API): Promise<OTPRequestResponse> => {\n const result = await Fetchers.createAccountsOtpRequestCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-otp-request')\n return result\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/verify/\n */\nexport function useCreateAccountsOtpVerifyCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OTPVerifyRequest, client?: API): Promise<OTPVerifyResponse> => {\n const result = await Fetchers.createAccountsOtpVerifyCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-otp-verify')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks - React data fetching hooks\n *\n * Auto-generated from OpenAPI specification.\n * Powered by SWR for automatic caching and revalidation.\n *\n * Features:\n * - Automatic caching and deduplication\n * - Revalidation on focus/reconnect\n * - Optimistic updates\n * - Type-safe parameters and responses\n *\n * Usage:\n * ```typescript\n * import * as hooks from './hooks'\n *\n * // Query hooks (GET)\n * const { data, error, isLoading } = hooks.useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = hooks.useCreateUser()\n * await createUser({ name: 'John' })\n * ```\n */\n\nexport * from './centrifugo__centrifugo_auth'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Centrifugo Auth\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport * as Fetchers from '../fetchers/centrifugo__centrifugo_auth'\nimport type { API } from '../../index'\nimport type { ConnectionTokenResponse } from '../schemas/ConnectionTokenResponse.schema'\n\n/**\n * Get Centrifugo connection token\n *\n * @method GET\n * @path /cfg/centrifugo/auth/token/\n */\nexport function useCentrifugoAuthTokenRetrieve(client?: API): ReturnType<typeof useSWR<ConnectionTokenResponse>> {\n return useSWR<ConnectionTokenResponse>(\n 'cfg-centrifugo-auth-token',\n () => Fetchers.getCentrifugoAuthTokenRetrieve(client)\n )\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks - React data fetching hooks\n *\n * Auto-generated from OpenAPI specification.\n * Powered by SWR for automatic caching and revalidation.\n *\n * Features:\n * - Automatic caching and deduplication\n * - Revalidation on focus/reconnect\n * - Optimistic updates\n * - Type-safe parameters and responses\n *\n * Usage:\n * ```typescript\n * import * as hooks from './hooks'\n *\n * // Query hooks (GET)\n * const { data, error, isLoading } = hooks.useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = hooks.useCreateUser()\n * await createUser({ name: 'John' })\n * ```\n */\n\nexport * from './totp__backup_codes'\nexport * from './totp__totp_management'\nexport * from './totp__totp_setup'\nexport * from './totp__totp_verification'\nexport * from './totp'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Backup Codes\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__backup_codes'\nimport type { API } from '../../index'\nimport type { BackupCodesRegenerateRequest } from '../schemas/BackupCodesRegenerateRequest.schema'\nimport type { BackupCodesRegenerateResponse } from '../schemas/BackupCodesRegenerateResponse.schema'\nimport type { BackupCodesStatus } from '../schemas/BackupCodesStatus.schema'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/backup-codes/\n */\nexport function useTotpBackupCodesRetrieve(client?: API): ReturnType<typeof useSWR<BackupCodesStatus>> {\n return useSWR<BackupCodesStatus>(\n 'cfg-totp-backup-code',\n () => Fetchers.getTotpBackupCodesRetrieve(client)\n )\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/backup-codes/regenerate/\n */\nexport function useCreateTotpBackupCodesRegenerateCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: BackupCodesRegenerateRequest, client?: API): Promise<BackupCodesRegenerateResponse> => {\n const result = await Fetchers.createTotpBackupCodesRegenerateCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-backup-codes-regenerate')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for TOTP Management\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__totp_management'\nimport type { API } from '../../index'\nimport type { DisableRequest } from '../schemas/DisableRequest.schema'\nimport type { PaginatedDeviceListResponseList } from '../schemas/PaginatedDeviceListResponseList.schema'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/devices/\n */\nexport function useTotpDevicesList(params?: { ordering?: string; page?: number; page_size?: number; search?: string }, client?: API): ReturnType<typeof useSWR<PaginatedDeviceListResponseList>> {\n return useSWR<PaginatedDeviceListResponseList>(\n ['cfg-totp-devices', params],\n () => Fetchers.getTotpDevicesList(params, client)\n )\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/disable/\n */\nexport function useCreateTotpDisableCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: DisableRequest, client?: API): Promise<any> => {\n const result = await Fetchers.createTotpDisableCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-disable')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for TOTP Setup\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__totp_setup'\nimport type { API } from '../../index'\nimport type { ConfirmSetupRequest } from '../schemas/ConfirmSetupRequest.schema'\nimport type { ConfirmSetupResponse } from '../schemas/ConfirmSetupResponse.schema'\nimport type { SetupRequest } from '../schemas/SetupRequest.schema'\nimport type { SetupResponse } from '../schemas/SetupResponse.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/\n */\nexport function useCreateTotpSetupCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: SetupRequest, client?: API): Promise<SetupResponse> => {\n const result = await Fetchers.createTotpSetupCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-setup')\n return result\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/confirm/\n */\nexport function useCreateTotpSetupConfirmCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: ConfirmSetupRequest, client?: API): Promise<ConfirmSetupResponse> => {\n const result = await Fetchers.createTotpSetupConfirmCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-setup-confirm')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for TOTP Verification\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__totp_verification'\nimport type { API } from '../../index'\nimport type { VerifyBackupRequest } from '../schemas/VerifyBackupRequest.schema'\nimport type { VerifyRequest } from '../schemas/VerifyRequest.schema'\nimport type { VerifyResponse } from '../schemas/VerifyResponse.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/\n */\nexport function useCreateTotpVerifyCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: VerifyRequest, client?: API): Promise<VerifyResponse> => {\n const result = await Fetchers.createTotpVerifyCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-verify')\n return result\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/backup/\n */\nexport function useCreateTotpVerifyBackupCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: VerifyBackupRequest, client?: API): Promise<VerifyResponse> => {\n const result = await Fetchers.createTotpVerifyBackupCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-verify-backup')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Totp\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp'\nimport type { API } from '../../index'\n\n/**\n * API operation\n *\n * @method DELETE\n * @path /cfg/totp/devices/{id}/\n */\nexport function useDeleteTotpDevicesDestroy() {\n const { mutate } = useSWRConfig()\n\n return async (id: string, client?: API): Promise<void> => {\n const result = await Fetchers.deleteTotpDevicesDestroy(id, client)\n // Revalidate related queries\n mutate('cfg-totp-devices')\n mutate('cfg-totp-device')\n return result\n }\n}\n\n\n"],"mappings":"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","names":["API","fetchers_exports","schemas_exports","hooks_exports","pRetry","OAuthConnectionProvider","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_consola","import_consola","import_consola","import_consola","FetchAdapter","APIError","NetworkError","import_consola","DEFAULT_CONFIG","SENSITIVE_HEADERS","APILogger","defaultLogger","import_p_retry","DEFAULT_RETRY_CONFIG","shouldRetry","NetworkError","APIError","withRetry","pRetry","APIClient","FetchAdapter","APILogger","withRetry","APIError","NetworkError","LocalStorageAdapter","schemas_exports","import_zod","fetchers_exports","import_consola","globalAPI","autoConfigAttempted","tryAutoConfigureFromEnv","API","getAPIInstance","getAPIInstance","TOKEN_KEY","REFRESH_TOKEN_KEY","detectLocale","API","APILogger","LocalStorageAdapter","APIClient","FetchAdapter","APIError","NetworkError","import_consola","DEFAULT_CONFIG","SENSITIVE_HEADERS","APILogger","defaultLogger","import_p_retry","DEFAULT_RETRY_CONFIG","shouldRetry","NetworkError","APIError","withRetry","pRetry","APIClient","FetchAdapter","APILogger","withRetry","APIError","NetworkError","LocalStorageAdapter","DeviceListStatus","schemas_exports","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","fetchers_exports","globalAPI","autoConfigAttempted","tryAutoConfigureFromEnv","API","getAPIInstance","getAPIInstance","import_consola","getAPIInstance","import_consola","getAPIInstance","import_consola","getAPIInstance","import_consola","getAPIInstance","TOKEN_KEY","REFRESH_TOKEN_KEY","detectLocale","API","APILogger","LocalStorageAdapter","APIClient","import_swr","useSWR","import_swr","useSWR","import_swr","import_swr","useSWR","hooks_exports","import_swr","useSWR","import_swr","useSWR","import_swr","import_swr","import_swr","API"]}
|
|
1
|
+
{"version":3,"sources":["../src/clients.ts","../src/_api/generated/cfg_accounts/accounts__auth/client.ts","../src/_api/generated/cfg_accounts/accounts__oauth/client.ts","../src/_api/generated/cfg_accounts/accounts__user_profile/client.ts","../src/_api/generated/cfg_accounts/accounts/client.ts","../src/_api/generated/cfg_accounts/http.ts","../src/_api/generated/cfg_accounts/errors.ts","../src/_api/generated/cfg_accounts/logger.ts","../src/_api/generated/cfg_accounts/retry.ts","../src/_api/generated/cfg_accounts/client.ts","../src/_api/generated/cfg_accounts/storage.ts","../src/_api/generated/cfg_accounts/enums.ts","../src/_api/generated/cfg_accounts/_utils/schemas/AccountDeleteResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/CentrifugoToken.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/CfgAccountsProfileAvatarCreateRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthAuthorizeRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthAuthorizeResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthCallbackRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthConnection.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthDisconnectRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthError.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthProvidersResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OAuthTokenResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPErrorResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPRequestRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPRequestResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPVerifyRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/OTPVerifyResponse.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/User.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/PatchedUserProfileUpdateRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/TokenRefresh.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/TokenRefreshRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/schemas/UserProfileUpdateRequest.schema.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts.ts","../src/_api/generated/cfg_accounts/api-instance.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts__auth.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts__oauth.ts","../src/_api/generated/cfg_accounts/_utils/fetchers/accounts__user_profile.ts","../src/_api/generated/cfg_accounts/index.ts","../src/_api/generated/cfg_centrifugo/centrifugo__centrifugo_auth/client.ts","../src/_api/generated/cfg_centrifugo/http.ts","../src/_api/generated/cfg_centrifugo/errors.ts","../src/_api/generated/cfg_centrifugo/logger.ts","../src/_api/generated/cfg_centrifugo/retry.ts","../src/_api/generated/cfg_centrifugo/client.ts","../src/_api/generated/cfg_centrifugo/storage.ts","../src/_api/generated/cfg_centrifugo/_utils/schemas/index.ts","../src/_api/generated/cfg_centrifugo/_utils/schemas/ConnectionTokenResponse.schema.ts","../src/_api/generated/cfg_centrifugo/_utils/fetchers/index.ts","../src/_api/generated/cfg_centrifugo/_utils/fetchers/centrifugo__centrifugo_auth.ts","../src/_api/generated/cfg_centrifugo/api-instance.ts","../src/_api/generated/cfg_centrifugo/index.ts","../src/_api/generated/cfg_totp/totp__backup_codes/client.ts","../src/_api/generated/cfg_totp/totp__totp_management/client.ts","../src/_api/generated/cfg_totp/totp__totp_setup/client.ts","../src/_api/generated/cfg_totp/totp__totp_verification/client.ts","../src/_api/generated/cfg_totp/totp/client.ts","../src/_api/generated/cfg_totp/http.ts","../src/_api/generated/cfg_totp/errors.ts","../src/_api/generated/cfg_totp/logger.ts","../src/_api/generated/cfg_totp/retry.ts","../src/_api/generated/cfg_totp/client.ts","../src/_api/generated/cfg_totp/storage.ts","../src/_api/generated/cfg_totp/enums.ts","../src/_api/generated/cfg_totp/_utils/schemas/index.ts","../src/_api/generated/cfg_totp/_utils/schemas/BackupCodesRegenerateRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/BackupCodesRegenerateResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/BackupCodesStatus.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/ConfirmSetupRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/ConfirmSetupResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/DeviceList.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/DeviceListResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/DisableRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/PaginatedDeviceListResponseList.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/SetupRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/SetupResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/TotpVerifyUser.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/VerifyBackupRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/VerifyRequest.schema.ts","../src/_api/generated/cfg_totp/_utils/schemas/VerifyResponse.schema.ts","../src/_api/generated/cfg_totp/_utils/fetchers/index.ts","../src/_api/generated/cfg_totp/api-instance.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__backup_codes.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__totp_management.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__totp_setup.ts","../src/_api/generated/cfg_totp/_utils/fetchers/totp__totp_verification.ts","../src/_api/generated/cfg_totp/index.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts__auth.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts__oauth.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts__user_profile.ts","../src/_api/generated/cfg_accounts/_utils/hooks/accounts.ts","../src/_api/generated/cfg_centrifugo/_utils/hooks/index.ts","../src/_api/generated/cfg_centrifugo/_utils/hooks/centrifugo__centrifugo_auth.ts","../src/_api/generated/cfg_totp/_utils/hooks/index.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__backup_codes.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__totp_management.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__totp_setup.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp__totp_verification.ts","../src/_api/generated/cfg_totp/_utils/hooks/totp.ts"],"sourcesContent":["/**\n * @djangocfg/api - Pre-configured API Clients\n *\n * Ready-to-use API instances for accounts and centrifugo.\n *\n * Usage:\n * import { apiAccounts, apiCentrifugo } from '@djangocfg/api/clients';\n * import { useAccountsOauthGithubCallbackCreate } from '@djangocfg/api/clients';\n */\n\nimport { API as AccountsAPIClass, LocalStorageAdapter } from './_api/generated/cfg_accounts';\nimport { API as CentrifugoAPIClass } from './_api/generated/cfg_centrifugo';\nimport { API as TotpAPIClass } from './_api/generated/cfg_totp';\n\n// ============================================================================\n// Pre-configured API instances (for hooks and direct usage)\n// ============================================================================\nconst isStaticBuild = process.env.NEXT_PUBLIC_STATIC_BUILD === 'true';\nconst apiUrl = isStaticBuild ? '' : process.env.NEXT_PUBLIC_API_URL || '';\nconst storage = new LocalStorageAdapter();\n\nexport const apiAccounts = new AccountsAPIClass(apiUrl, { storage });\nexport const apiTotp = new TotpAPIClass(apiUrl, { storage });\nexport const apiCentrifugo = new CentrifugoAPIClass(apiUrl, { storage });\n\n// ============================================================================\n// Enums (re-export from accounts)\n// ============================================================================\nexport * as Enums from './_api/generated/cfg_accounts/enums';\n\n// ============================================================================\n// CFG Accounts (primary exports - includes shared types)\n// ============================================================================\nexport * from './_api/generated/cfg_accounts/_utils/hooks';\nexport * from './_api/generated/cfg_accounts/_utils/fetchers';\nexport * from './_api/generated/cfg_accounts/_utils/schemas';\n\n// ============================================================================\n// CFG Centrifugo (namespaced to avoid conflicts)\n// ============================================================================\nexport * as CentrifugoHooks from './_api/generated/cfg_centrifugo/_utils/hooks';\nexport * as CentrifugoFetchers from './_api/generated/cfg_centrifugo/_utils/fetchers';\nexport * as CentrifugoTypes from './_api/generated/cfg_centrifugo/_utils/schemas';\n\n// ============================================================================\n// CFG TOTP (namespaced to avoid conflicts)\n// ============================================================================\nexport * as TotpHooks from './_api/generated/cfg_totp/_utils/hooks';\nexport * as TotpFetchers from './_api/generated/cfg_totp/_utils/fetchers';\nexport * as TotpTypes from './_api/generated/cfg_totp/_utils/schemas';\n\n// ============================================================================\n// API Classes (for creating custom instances)\n// ============================================================================\nexport { API as AccountsAPI } from './_api/generated/cfg_accounts';\nexport { API as TotpAPI } from './_api/generated/cfg_totp';\nexport { API as CentrifugoAPI } from './_api/generated/cfg_centrifugo';\n","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Auth.\n */\nexport class Auth {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Refresh JWT token.\n */\n async accountsTokenRefreshCreate(data: Models.TokenRefreshRequest): Promise<Models.TokenRefresh> {\n const response = await this.client.request('POST', \"/cfg/accounts/token/refresh/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Oauth.\n */\nexport class Oauth {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * List OAuth connections\n * \n * Get all OAuth connections for the current user.\n */\n async accountsOauthConnectionsList(): Promise<any> {\n const response = await this.client.request('GET', \"/cfg/accounts/oauth/connections/\");\n return (response as any).results || response;\n }\n\n /**\n * Disconnect OAuth provider\n * \n * Remove OAuth connection for the specified provider.\n */\n async accountsOauthDisconnectCreate(data: Models.OAuthDisconnectRequestRequest): Promise<any> {\n const response = await this.client.request('POST', \"/cfg/accounts/oauth/disconnect/\", { body: data });\n return response;\n }\n\n /**\n * Start GitHub OAuth\n * \n * Generate GitHub OAuth authorization URL. Redirect user to this URL to\n * start authentication.\n */\n async accountsOauthGithubAuthorizeCreate(data: Models.OAuthAuthorizeRequestRequest): Promise<Models.OAuthAuthorizeResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/oauth/github/authorize/\", { body: data });\n return response;\n }\n\n /**\n * Complete GitHub OAuth\n * \n * Exchange authorization code for JWT tokens. Call this after GitHub\n * redirects back with code.\n */\n async accountsOauthGithubCallbackCreate(data: Models.OAuthCallbackRequestRequest): Promise<Models.OAuthTokenResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/oauth/github/callback/\", { body: data });\n return response;\n }\n\n /**\n * List OAuth providers\n * \n * Get list of available OAuth providers for authentication.\n */\n async accountsOauthProvidersRetrieve(): Promise<Models.OAuthProvidersResponse> {\n const response = await this.client.request('GET', \"/cfg/accounts/oauth/providers/\");\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for User Profile.\n */\nexport class UserProfile {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Get current user profile\n * \n * Retrieve the current authenticated user's profile information.\n */\n async accountsProfileRetrieve(): Promise<Models.User> {\n const response = await this.client.request('GET', \"/cfg/accounts/profile/\");\n return response;\n }\n\n /**\n * Upload user avatar\n * \n * Upload avatar image for the current authenticated user. Accepts\n * multipart/form-data with 'avatar' field.\n */\n async accountsProfileAvatarCreate(data: Models.CfgAccountsProfileAvatarCreateRequest): Promise<Models.User> {\n const formData = new FormData();\n formData.append('avatar', data.avatar);\n const response = await this.client.request('POST', \"/cfg/accounts/profile/avatar/\", { formData });\n return response;\n }\n\n /**\n * Delete user account\n * \n * Permanently delete the current user's account. This operation: -\n * Deactivates the account (user cannot log in) - Anonymizes personal data\n * (GDPR compliance) - Frees up the email address for re-registration -\n * Preserves audit trail The account can be restored by an administrator if\n * needed.\n */\n async accountsProfileDeleteCreate(): Promise<Models.AccountDeleteResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/profile/delete/\");\n return response;\n }\n\n /**\n * Partial update user profile\n * \n * Partially update the current authenticated user's profile information.\n * Supports avatar upload.\n */\n async accountsProfilePartialUpdate(data: Models.UserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PUT', \"/cfg/accounts/profile/partial/\", { body: data });\n return response;\n }\n\n /**\n * Partial update user profile\n * \n * Partially update the current authenticated user's profile information.\n * Supports avatar upload.\n */\n async accountsProfilePartialPartialUpdate(data?: Models.PatchedUserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PATCH', \"/cfg/accounts/profile/partial/\", { body: data });\n return response;\n }\n\n /**\n * Update user profile\n * \n * Update the current authenticated user's profile information.\n */\n async accountsProfileUpdateUpdate(data: Models.UserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PUT', \"/cfg/accounts/profile/update/\", { body: data });\n return response;\n }\n\n /**\n * Update user profile\n * \n * Update the current authenticated user's profile information.\n */\n async accountsProfileUpdatePartialUpdate(data?: Models.PatchedUserProfileUpdateRequest): Promise<Models.User> {\n const response = await this.client.request('PATCH', \"/cfg/accounts/profile/update/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Accounts.\n */\nexport class Accounts {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Request OTP code to email.\n */\n async otpRequestCreate(data: Models.OTPRequestRequest): Promise<Models.OTPRequestResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/otp/request/\", { body: data });\n return response;\n }\n\n /**\n * Verify OTP code and return JWT tokens or 2FA session. If user has 2FA\n * enabled: - Returns requires_2fa=True with session_id - Client must\n * complete 2FA verification at /cfg/totp/verify/ If user has no 2FA: -\n * Returns JWT tokens and user data directly\n */\n async otpVerifyCreate(data: Models.OTPVerifyRequest): Promise<Models.OTPVerifyResponse> {\n const response = await this.client.request('POST', \"/cfg/accounts/otp/verify/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * HTTP Client Adapter Pattern\n *\n * Allows switching between fetch/axios/httpx without changing generated code.\n * Provides unified interface for making HTTP requests.\n */\n\nexport interface HttpRequest {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n params?: Record<string, any>;\n /** FormData for file uploads (multipart/form-data) */\n formData?: FormData;\n /** Binary data for octet-stream uploads */\n binaryBody?: Blob | ArrayBuffer;\n}\n\nexport interface HttpResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/**\n * HTTP Client Adapter Interface.\n * Implement this to use custom HTTP clients (axios, httpx, etc.)\n */\nexport interface HttpClientAdapter {\n request<T = any>(request: HttpRequest): Promise<HttpResponse<T>>;\n}\n\n/**\n * Default Fetch API adapter.\n * Uses native browser fetch() with proper error handling.\n */\nexport class FetchAdapter implements HttpClientAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const { method, url, headers, body, params, formData, binaryBody } = request;\n\n // Build URL with query params\n let finalUrl = url;\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n finalUrl = url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;\n }\n }\n\n // Build headers\n const finalHeaders: Record<string, string> = { ...headers };\n\n // Determine body and content-type\n let requestBody: string | FormData | Blob | ArrayBuffer | undefined;\n\n if (formData) {\n // For multipart/form-data, let browser set Content-Type with boundary\n requestBody = formData;\n // Don't set Content-Type - browser will set it with boundary\n } else if (binaryBody) {\n // Binary upload (application/octet-stream)\n finalHeaders['Content-Type'] = 'application/octet-stream';\n requestBody = binaryBody;\n } else if (body) {\n // JSON request\n finalHeaders['Content-Type'] = 'application/json';\n requestBody = JSON.stringify(body);\n }\n\n // Make request\n const response = await fetch(finalUrl, {\n method,\n headers: finalHeaders,\n body: requestBody,\n credentials: 'include', // Include Django session cookies\n });\n\n // Parse response\n let data: any = null;\n const contentType = response.headers.get('content-type');\n\n if (response.status !== 204 && contentType?.includes('application/json')) {\n data = await response.json();\n } else if (response.status !== 204) {\n data = await response.text();\n }\n\n // Convert Headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n };\n }\n}\n\n/**\n * FetchAdapter with keepalive:true.\n *\n * Use this adapter when you need requests to survive page unload\n * (visibilitychange / beforeunload) — the browser will complete the request\n * even after the page is navigated away. Typical use: monitor / analytics flush.\n *\n * @example\n * ```typescript\n * import { APIClient, KeepAliveFetchAdapter } from './client';\n * const client = new APIClient(baseUrl, { httpClient: new KeepAliveFetchAdapter() });\n * ```\n */\nexport class KeepAliveFetchAdapter extends FetchAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const origFetch = globalThis.fetch;\n globalThis.fetch = (input: RequestInfo | URL, init?: RequestInit) =>\n origFetch(input, { ...init, keepalive: true });\n try {\n return await super.request<T>(request);\n } finally {\n globalThis.fetch = origFetch;\n }\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Error Classes\n *\n * Typed error classes with Django REST Framework support.\n */\n\n/**\n * HTTP API Error with DRF field-specific validation errors.\n *\n * Usage:\n * ```typescript\n * try {\n * await api.users.create(userData);\n * } catch (error) {\n * if (error instanceof APIError) {\n * if (error.isValidationError) {\n * console.log('Field errors:', error.fieldErrors);\n * // { \"email\": [\"Email already exists\"], \"username\": [\"Required\"] }\n * }\n * }\n * }\n * ```\n */\nexport class APIError extends Error {\n constructor(\n public statusCode: number,\n public statusText: string,\n public response: any,\n public url: string,\n message?: string\n ) {\n super(message || `HTTP ${statusCode}: ${statusText}`);\n this.name = 'APIError';\n }\n\n /**\n * Get error details from response.\n * DRF typically returns: { \"detail\": \"Error message\" } or { \"field\": [\"error1\", \"error2\"] }\n */\n get details(): Record<string, any> | null {\n if (typeof this.response === 'object' && this.response !== null) {\n return this.response;\n }\n return null;\n }\n\n /**\n * Get field-specific validation errors from DRF.\n * Returns: { \"field_name\": [\"error1\", \"error2\"], ... }\n */\n get fieldErrors(): Record<string, string[]> | null {\n const details = this.details;\n if (!details) return null;\n\n // DRF typically returns: { \"field\": [\"error1\", \"error2\"] }\n const fieldErrors: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(details)) {\n if (Array.isArray(value)) {\n fieldErrors[key] = value;\n }\n }\n\n return Object.keys(fieldErrors).length > 0 ? fieldErrors : null;\n }\n\n /**\n * Get single error message from DRF.\n * Checks for \"detail\", \"message\", or first field error.\n */\n get errorMessage(): string {\n const details = this.details;\n if (!details) return this.message;\n\n // Check for \"detail\" field (common in DRF)\n if (details.detail) {\n return Array.isArray(details.detail) ? details.detail.join(', ') : String(details.detail);\n }\n\n // Check for \"message\" field\n if (details.message) {\n return String(details.message);\n }\n\n // Return first field error\n const fieldErrors = this.fieldErrors;\n if (fieldErrors) {\n const firstField = Object.keys(fieldErrors)[0];\n if (firstField) {\n return `${firstField}: ${fieldErrors[firstField]?.join(', ')}`;\n }\n }\n\n return this.message;\n }\n\n // Helper methods for common HTTP status codes\n get isValidationError(): boolean { return this.statusCode === 400; }\n get isAuthError(): boolean { return this.statusCode === 401; }\n get isPermissionError(): boolean { return this.statusCode === 403; }\n get isNotFoundError(): boolean { return this.statusCode === 404; }\n get isServerError(): boolean { return this.statusCode >= 500 && this.statusCode < 600; }\n}\n\n/**\n * Network Error (connection failed, timeout, etc.)\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public url: string,\n public originalError?: Error\n ) {\n super(message);\n this.name = 'NetworkError';\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Logger with Consola\n * Beautiful console logging for API requests and responses\n *\n * Installation:\n * npm install consola\n */\n\nimport { type ConsolaInstance, createConsola } from 'consola';\n\n/**\n * Request log data\n */\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\n/**\n * Response log data\n */\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Error log data\n */\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n /** Enable logging */\n enabled: boolean;\n /** Log requests */\n logRequests: boolean;\n /** Log responses */\n logResponses: boolean;\n /** Log errors */\n logErrors: boolean;\n /** Log request/response bodies */\n logBodies: boolean;\n /** Log headers (excluding sensitive ones) */\n logHeaders: boolean;\n /** Custom consola instance */\n consola?: ConsolaInstance;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: process.env.NODE_ENV !== 'production',\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\n/**\n * Sensitive header names to filter out\n */\nconst SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-csrf-token',\n];\n\n/**\n * API Logger class\n */\nexport class APILogger {\n private config: LoggerConfig;\n private consola: ConsolaInstance;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.consola = config.consola || createConsola({\n level: this.config.enabled ? 4 : 0,\n });\n }\n\n /**\n * Enable logging\n */\n enable(): void {\n this.config.enabled = true;\n }\n\n /**\n * Disable logging\n */\n disable(): void {\n this.config.enabled = false;\n }\n\n /**\n * Update configuration\n */\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Filter sensitive headers\n */\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_HEADERS.includes(lowerKey)) {\n filtered[key] = '***';\n } else {\n filtered[key] = headers[key] || '';\n }\n });\n\n return filtered;\n }\n\n /**\n * Log request\n */\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n\n const { method, url, headers, body } = request;\n\n this.consola.start(`${method} ${url}`);\n\n if (this.config.logHeaders && headers) {\n this.consola.debug('Headers:', this.filterHeaders(headers));\n }\n\n if (this.config.logBodies && body) {\n this.consola.debug('Body:', body);\n }\n }\n\n /**\n * Log response\n */\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n\n const statusColor = status >= 500 ? 'red'\n : status >= 400 ? 'yellow'\n : status >= 300 ? 'cyan'\n : 'green';\n\n this.consola.success(\n `${method} ${url} ${status} ${statusText} (${duration}ms)`\n );\n\n if (this.config.logBodies && data) {\n this.consola.debug('Response:', data);\n }\n }\n\n /**\n * Log error\n */\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n\n this.consola.error(\n `${method} ${url} ${statusCode || 'Network'} Error (${duration}ms)`\n );\n\n this.consola.error('Message:', message);\n\n if (fieldErrors && Object.keys(fieldErrors).length > 0) {\n this.consola.error('Field Errors:');\n Object.entries(fieldErrors).forEach(([field, errors]) => {\n errors.forEach((err) => {\n this.consola.error(` • ${field}: ${err}`);\n });\n });\n }\n }\n\n /**\n * Log general info\n */\n info(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.info(message, ...args);\n }\n\n /**\n * Log warning\n */\n warn(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.warn(message, ...args);\n }\n\n /**\n * Log error\n */\n error(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.error(message, ...args);\n }\n\n /**\n * Log debug\n */\n debug(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.debug(message, ...args);\n }\n\n /**\n * Log success\n */\n success(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.success(message, ...args);\n }\n\n /**\n * Create a sub-logger with prefix\n */\n withTag(tag: string): ConsolaInstance {\n return this.consola.withTag(tag);\n }\n}\n\n/**\n * Default logger instance\n */\nexport const defaultLogger = new APILogger();","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Retry Configuration and Utilities\n *\n * Provides automatic retry logic for failed HTTP requests using p-retry.\n * Retries only on network errors and server errors (5xx), not client errors (4xx).\n */\n\nimport pRetry, { AbortError } from 'p-retry';\nimport { APIError, NetworkError } from './errors';\n\n/**\n * Information about a failed retry attempt.\n */\nexport interface FailedAttemptInfo {\n /** The error that caused the failure */\n error: Error;\n /** The attempt number (1-indexed) */\n attemptNumber: number;\n /** Number of retries left */\n retriesLeft: number;\n}\n\n/**\n * Retry configuration options.\n *\n * Uses exponential backoff with jitter by default to avoid thundering herd.\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts.\n * @default 3\n */\n retries?: number;\n\n /**\n * Exponential backoff factor.\n * @default 2\n */\n factor?: number;\n\n /**\n * Minimum wait time between retries (ms).\n * @default 1000\n */\n minTimeout?: number;\n\n /**\n * Maximum wait time between retries (ms).\n * @default 60000\n */\n maxTimeout?: number;\n\n /**\n * Add randomness to wait times (jitter).\n * Helps avoid thundering herd problem.\n * @default true\n */\n randomize?: boolean;\n\n /**\n * Callback called on each failed attempt.\n */\n onFailedAttempt?: (info: FailedAttemptInfo) => void;\n}\n\n/**\n * Default retry configuration.\n */\nexport const DEFAULT_RETRY_CONFIG: Required<RetryConfig> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 60000,\n randomize: true,\n onFailedAttempt: () => {},\n};\n\n/**\n * Determine if an error should trigger a retry.\n *\n * Retries on:\n * - Network errors (connection refused, timeout, etc.)\n * - Server errors (5xx status codes)\n * - Rate limiting (429 status code)\n *\n * Does NOT retry on:\n * - Client errors (4xx except 429)\n * - Authentication errors (401, 403)\n * - Not found (404)\n *\n * @param error - The error to check\n * @returns true if should retry, false otherwise\n */\nexport function shouldRetry(error: any): boolean {\n // Always retry network errors\n if (error instanceof NetworkError) {\n return true;\n }\n\n // For API errors, check status code\n if (error instanceof APIError) {\n const status = error.statusCode;\n\n // Retry on 5xx server errors\n if (status >= 500 && status < 600) {\n return true;\n }\n\n // Retry on 429 (rate limit)\n if (status === 429) {\n return true;\n }\n\n // Do NOT retry on 4xx client errors\n return false;\n }\n\n // Retry on unknown errors (might be network issues)\n return true;\n}\n\n/**\n * Wrap a function with retry logic.\n *\n * @param fn - Async function to retry\n * @param config - Retry configuration\n * @returns Result of the function\n *\n * @example\n * ```typescript\n * const result = await withRetry(\n * async () => fetch('https://api.example.com/users'),\n * { retries: 5, minTimeout: 2000 }\n * );\n * ```\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const finalConfig = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n return pRetry(\n async () => {\n try {\n return await fn();\n } catch (error) {\n // Check if we should retry this error\n if (!shouldRetry(error)) {\n // Abort retry immediately for non-retryable errors\n throw new AbortError(error as Error);\n }\n\n // Re-throw error to trigger retry\n throw error;\n }\n },\n {\n retries: finalConfig.retries,\n factor: finalConfig.factor,\n minTimeout: finalConfig.minTimeout,\n maxTimeout: finalConfig.maxTimeout,\n randomize: finalConfig.randomize,\n onFailedAttempt: finalConfig.onFailedAttempt ? (error) => {\n // Adapt p-retry's FailedAttemptError to our FailedAttemptInfo\n const pRetryError = error as any; // p-retry's internal type\n finalConfig.onFailedAttempt!({\n error: pRetryError as Error,\n attemptNumber: pRetryError.attemptNumber,\n retriesLeft: pRetryError.retriesLeft,\n });\n } : undefined,\n }\n );\n}","import { Auth } from \"./accounts__auth\";\nimport { Oauth } from \"./accounts__oauth\";\nimport { UserProfile } from \"./accounts__user_profile\";\nimport { Accounts } from \"./accounts\";\nimport { HttpClientAdapter, FetchAdapter } from \"./http\";\nimport { APIError, NetworkError } from \"./errors\";\nimport { APILogger, type LoggerConfig } from \"./logger\";\nimport { withRetry, type RetryConfig } from \"./retry\";\n\n\n/**\n * Async API client for Django CFG API.\n *\n * Usage:\n * ```typescript\n * const client = new APIClient('https://api.example.com');\n * const users = await client.users.list();\n * const post = await client.posts.create(newPost);\n *\n * // Custom HTTP adapter (e.g., Axios)\n * const client = new APIClient('https://api.example.com', {\n * httpClient: new AxiosAdapter()\n * });\n * ```\n */\nexport class APIClient {\n private baseUrl: string;\n private httpClient: HttpClientAdapter;\n private logger: APILogger | null = null;\n private retryConfig: RetryConfig | null = null;\n private tokenGetter: (() => string | null) | null = null;\n\n // Sub-clients\n public auth: Auth;\n public oauth: Oauth;\n public user_profile: UserProfile;\n public accounts: Accounts;\n\n constructor(\n baseUrl: string,\n options?: {\n httpClient?: HttpClientAdapter;\n loggerConfig?: Partial<LoggerConfig>;\n retryConfig?: RetryConfig;\n tokenGetter?: () => string | null;\n }\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.httpClient = options?.httpClient || new FetchAdapter();\n this.tokenGetter = options?.tokenGetter || null;\n\n // Initialize logger if config provided\n if (options?.loggerConfig !== undefined) {\n this.logger = new APILogger(options.loggerConfig);\n }\n\n // Store retry configuration\n if (options?.retryConfig !== undefined) {\n this.retryConfig = options.retryConfig;\n }\n\n // Initialize sub-clients\n this.auth = new Auth(this);\n this.oauth = new Oauth(this);\n this.user_profile = new UserProfile(this);\n this.accounts = new Accounts(this);\n }\n\n /**\n * Get CSRF token from cookies (for SessionAuthentication).\n *\n * Returns null if cookie doesn't exist (JWT-only auth).\n */\n getCsrfToken(): string | null {\n const name = 'csrftoken';\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n /**\n * Get the base URL for building streaming/download URLs.\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Get JWT token for URL authentication (used in streaming endpoints).\n * Returns null if no token getter is configured or no token is available.\n */\n getToken(): string | null {\n return this.tokenGetter ? this.tokenGetter() : null;\n }\n\n /**\n * Make HTTP request with Django CSRF and session handling.\n * Automatically retries on network errors and 5xx server errors.\n */\n async request<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Wrap request in retry logic if configured\n if (this.retryConfig) {\n return withRetry(() => this._makeRequest<T>(method, path, options), {\n ...this.retryConfig,\n onFailedAttempt: (info) => {\n // Log retry attempts\n if (this.logger) {\n this.logger.warn(\n `Retry attempt ${info.attemptNumber}/${info.retriesLeft + info.attemptNumber} ` +\n `for ${method} ${path}: ${info.error.message}`\n );\n }\n // Call user's onFailedAttempt if provided\n this.retryConfig?.onFailedAttempt?.(info);\n },\n });\n }\n\n // No retry configured, make request directly\n return this._makeRequest<T>(method, path, options);\n }\n\n /**\n * Internal request method (without retry wrapper).\n * Used by request() method with optional retry logic.\n */\n private async _makeRequest<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Build URL - handle both absolute and relative paths\n // When baseUrl is empty (static builds), path is used as-is (relative to current origin)\n const url = this.baseUrl ? `${this.baseUrl}${path}` : path;\n const startTime = Date.now();\n\n // Build headers - start with custom headers from options\n const headers: Record<string, string> = {\n ...(options?.headers || {})\n };\n\n // Don't set Content-Type for FormData/binaryBody (browser will set it with boundary)\n if (!options?.formData && !options?.binaryBody && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n // CSRF not needed - SessionAuthentication not enabled in DRF config\n // Your API uses JWT/Token authentication (no CSRF required)\n\n // Log request\n if (this.logger) {\n this.logger.logRequest({\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n });\n }\n\n try {\n // Make request via HTTP adapter\n const response = await this.httpClient.request<T>({\n method,\n url: url,\n headers,\n params: options?.params,\n body: options?.body,\n formData: options?.formData,\n binaryBody: options?.binaryBody,\n });\n\n const duration = Date.now() - startTime;\n\n // Check for HTTP errors\n if (response.status >= 400) {\n const error = new APIError(\n response.status,\n response.statusText,\n response.data,\n url\n );\n\n // Log error\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: error.message,\n statusCode: response.status,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw error;\n }\n\n // Log successful response\n if (this.logger) {\n this.logger.logResponse(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n return response.data as T;\n } catch (error) {\n const duration = Date.now() - startTime;\n\n // Re-throw APIError as-is\n if (error instanceof APIError) {\n throw error;\n }\n\n // Classify network error using PerformanceResourceTiming.\n // Browser intentionally makes CORS errors indistinguishable from network failures\n // (same TypeError: \"Failed to fetch\") for security reasons. We use PerformanceResourceTiming\n // as the best available heuristic:\n // - Entry exists with responseStatus === 0 → request reached server, JS blocked → likely CORS\n // - No entry / entry missing → connection never established → server unavailable / DNS / offline\n // All cases are dispatched as 'network-error' with a `possibly_cors` flag.\n let possiblyCors = false;\n if (error instanceof TypeError && typeof window !== 'undefined') {\n try {\n const isCrossOrigin = (() => {\n try { return new URL(url).origin !== window.location.origin; } catch { return false; }\n })();\n if (isCrossOrigin) {\n const entries = performance.getEntriesByName(url, 'resource');\n if (entries.length > 0) {\n const last = entries[entries.length - 1] as PerformanceResourceTiming;\n possiblyCors = 'responseStatus' in last && (last as any).responseStatus === 0;\n }\n }\n } catch { /* ignore — PerformanceResourceTiming not available */ }\n }\n\n if (this.logger) {\n this.logger.error(`⚠️ Network Error: ${method} ${url}`);\n this.logger.error(` → ${error instanceof Error ? error.message : String(error)}`);\n if (possiblyCors) {\n this.logger.error(` → Possibly blocked by CORS policy (configure CORS on the server)`);\n }\n }\n\n // Dispatch network-error event with possibly_cors hint\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('network-error', {\n detail: {\n url: url,\n method: method,\n error: error instanceof Error ? error.message : String(error),\n possibly_cors: possiblyCors,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n }));\n } catch { /* silently ignore — event dispatch must never crash the app */ }\n }\n\n // Wrap other errors as NetworkError\n const networkError = error instanceof Error\n ? new NetworkError(error.message, url, error)\n : new NetworkError('Unknown error', url);\n\n // Detailed logging via logger.logError\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: networkError.message,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw networkError;\n }\n }\n}\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Storage adapters for cross-platform token storage.\n *\n * Supports:\n * - LocalStorage (browser)\n * - Cookies (SSR/browser)\n * - Memory (Node.js/Electron/testing)\n */\n\nimport type { APILogger } from './logger';\n\n/**\n * Storage adapter interface for cross-platform token storage.\n */\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/**\n * LocalStorage adapter with safe try-catch for browser environments.\n * Works in modern browsers with localStorage support.\n * \n * Note: This adapter uses window.localStorage and should only be used in browser/client environments.\n * For server-side usage, use MemoryStorageAdapter or CookieStorageAdapter instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n const value = localStorage.getItem(key);\n this.logger?.debug(`LocalStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n } catch (error) {\n this.logger?.error('LocalStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(key, value);\n this.logger?.debug(`LocalStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.removeItem(key);\n this.logger?.debug(`LocalStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * Cookie-based storage adapter for SSR and browser environments.\n * Useful for Next.js, Nuxt.js, and other SSR frameworks.\n */\nexport class CookieStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof document === 'undefined') {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n return null;\n }\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts.length === 2) {\n const result = parts.pop()?.split(';').shift() || null;\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): ${result ? 'found' : 'not found'}`);\n return result;\n }\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): not found`);\n } catch (error) {\n this.logger?.error('CookieStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=${value}; path=/; max-age=31536000`;\n this.logger?.debug(`CookieStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n this.logger?.debug(`CookieStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * In-memory storage adapter for Node.js, Electron, and testing environments.\n * Data is stored in RAM and cleared when process exits.\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private storage: Map<string, string> = new Map();\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n const value = this.storage.get(key) || null;\n this.logger?.debug(`MemoryStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n\n setItem(key: string, value: string): void {\n this.storage.set(key, value);\n this.logger?.debug(`MemoryStorage.setItem(\"${key}\"): success`);\n }\n\n removeItem(key: string): void {\n this.storage.delete(key);\n this.logger?.debug(`MemoryStorage.removeItem(\"${key}\"): success`);\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * OAuth provider to disconnect\n * * `github` - GitHub\n */\nexport enum OAuthConnectionProvider {\n GITHUB = \"github\",\n}\n\n","/**\n * Zod schema for AccountDeleteResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for account deletion.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for account deletion.\n */\nexport const AccountDeleteResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type AccountDeleteResponse = z.infer<typeof AccountDeleteResponseSchema>","/**\n * Zod schema for CentrifugoToken\n *\n * This schema provides runtime validation and type inference.\n * * Nested serializer for Centrifugo WebSocket connection token.\n * */\nimport { z } from 'zod'\n\n/**\n * Nested serializer for Centrifugo WebSocket connection token.\n */\nexport const CentrifugoTokenSchema = z.object({\n token: z.string(),\n centrifugo_url: z.string(),\n expires_at: z.string().datetime({ offset: true }),\n channels: z.array(z.string()),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type CentrifugoToken = z.infer<typeof CentrifugoTokenSchema>","/**\n * Zod schema for CfgAccountsProfileAvatarCreateRequest\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\n\nexport const CfgAccountsProfileAvatarCreateRequestSchema = z.object({\n avatar: z.union([z.instanceof(File), z.instanceof(Blob)]),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type CfgAccountsProfileAvatarCreateRequest = z.infer<typeof CfgAccountsProfileAvatarCreateRequestSchema>","/**\n * Zod schema for OAuthAuthorizeRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Request to start OAuth flow.\n * */\nimport { z } from 'zod'\n\n/**\n * Request to start OAuth flow.\n */\nexport const OAuthAuthorizeRequestRequestSchema = z.object({\n redirect_uri: z.string().optional(),\n source_url: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthAuthorizeRequestRequest = z.infer<typeof OAuthAuthorizeRequestRequestSchema>","/**\n * Zod schema for OAuthAuthorizeResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response with OAuth authorization URL.\n * */\nimport { z } from 'zod'\n\n/**\n * Response with OAuth authorization URL.\n */\nexport const OAuthAuthorizeResponseSchema = z.object({\n authorization_url: z.string(),\n state: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthAuthorizeResponse = z.infer<typeof OAuthAuthorizeResponseSchema>","/**\n * Zod schema for OAuthCallbackRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Request to complete OAuth flow (callback handler).\n * */\nimport { z } from 'zod'\n\n/**\n * Request to complete OAuth flow (callback handler).\n */\nexport const OAuthCallbackRequestRequestSchema = z.object({\n code: z.string().min(10).max(500),\n state: z.string().min(20).max(100),\n redirect_uri: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthCallbackRequestRequest = z.infer<typeof OAuthCallbackRequestRequestSchema>","/**\n * Zod schema for OAuthConnection\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for OAuth connection info (user-facing).\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Serializer for OAuth connection info (user-facing).\n */\nexport const OAuthConnectionSchema = z.object({\n id: z.number().int(),\n provider: z.nativeEnum(Enums.OAuthConnectionProvider),\n provider_display: z.string(),\n provider_username: z.string(),\n provider_email: z.email(),\n provider_avatar_url: z.string(),\n connected_at: z.string().datetime({ offset: true }),\n last_login_at: z.string().datetime({ offset: true }),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthConnection = z.infer<typeof OAuthConnectionSchema>","/**\n * Zod schema for OAuthDisconnectRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Request to disconnect OAuth provider.\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Request to disconnect OAuth provider.\n */\nexport const OAuthDisconnectRequestRequestSchema = z.object({\n provider: z.nativeEnum(Enums.OAuthConnectionProvider),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthDisconnectRequestRequest = z.infer<typeof OAuthDisconnectRequestRequestSchema>","/**\n * Zod schema for OAuthError\n *\n * This schema provides runtime validation and type inference.\n * * Error response for OAuth endpoints.\n * */\nimport { z } from 'zod'\n\n/**\n * Error response for OAuth endpoints.\n */\nexport const OAuthErrorSchema = z.object({\n error: z.string(),\n error_description: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthError = z.infer<typeof OAuthErrorSchema>","/**\n * Zod schema for OAuthProvidersResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response with available OAuth providers.\n * */\nimport { z } from 'zod'\n\n/**\n * Response with available OAuth providers.\n */\nexport const OAuthProvidersResponseSchema = z.object({\n providers: z.array(z.record(z.string(), z.any())),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthProvidersResponse = z.infer<typeof OAuthProvidersResponseSchema>","/**\n * Zod schema for OAuthTokenResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response with JWT tokens after OAuth authentication.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- access/refresh/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- access/refresh/user: populated\n * */\nimport { z } from 'zod'\n\n/**\n * Response with JWT tokens after OAuth authentication.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- access/refresh/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- access/refresh/user: populated\n */\nexport const OAuthTokenResponseSchema = z.object({\n requires_2fa: z.boolean().optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n access: z.string().nullable().optional(),\n refresh: z.string().nullable().optional(),\n user: z.record(z.string(), z.any()).nullable().optional(),\n is_new_user: z.boolean(),\n is_new_connection: z.boolean(),\n should_prompt_2fa: z.boolean().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OAuthTokenResponse = z.infer<typeof OAuthTokenResponseSchema>","/**\n * Zod schema for OTPErrorResponse\n *\n * This schema provides runtime validation and type inference.\n * * Typed error response for OTP operations.\n\nerror_code values:\n - invalid_identifier — malformed email\n - cooldown — too soon after last request (retry_after = seconds)\n - hourly_limit — hourly quota exceeded (retry_after = seconds until reset)\n - daily_limit — daily quota exceeded (retry_after = seconds until reset)\n - rate_limited — IP-level rate limit hit (no retry_after)\n - user_creation_failed — internal error creating account\n - send_failed — transport error (email / SMS)\n - internal_error — unexpected server error\n * */\nimport { z } from 'zod'\n\n/**\n * Typed error response for OTP operations.\n\nerror_code values:\n - invalid_identifier — malformed email\n - cooldown — too soon after last request (retry_after = seconds)\n - hourly_limit — hourly quota exceeded (retry_after = seconds until reset)\n - daily_limit — daily quota exceeded (retry_after = seconds until reset)\n - rate_limited — IP-level rate limit hit (no retry_after)\n - user_creation_failed — internal error creating account\n - send_failed — transport error (email / SMS)\n - internal_error — unexpected server error\n */\nexport const OTPErrorResponseSchema = z.object({\n error: z.string(),\n error_code: z.string().nullable().optional(),\n retry_after: z.number().int().nullable().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPErrorResponse = z.infer<typeof OTPErrorResponseSchema>","/**\n * Zod schema for OTPRequestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for OTP request.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for OTP request.\n */\nexport const OTPRequestRequestSchema = z.object({\n identifier: z.string().min(1),\n source_url: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPRequestRequest = z.infer<typeof OTPRequestRequestSchema>","/**\n * Zod schema for OTPRequestResponse\n *\n * This schema provides runtime validation and type inference.\n * * OTP request response.\n * */\nimport { z } from 'zod'\n\n/**\n * OTP request response.\n */\nexport const OTPRequestResponseSchema = z.object({\n message: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPRequestResponse = z.infer<typeof OTPRequestResponseSchema>","/**\n * Zod schema for OTPVerifyRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for OTP verification.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for OTP verification.\n */\nexport const OTPVerifyRequestSchema = z.object({\n identifier: z.string().min(1),\n otp: z.string().min(6).max(6),\n source_url: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPVerifyRequest = z.infer<typeof OTPVerifyRequestSchema>","/**\n * Zod schema for OTPVerifyResponse\n *\n * This schema provides runtime validation and type inference.\n * * OTP verification response.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- refresh/access/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- refresh/access/user: populated\n * */\nimport { z } from 'zod'\nimport { UserSchema } from './User.schema'\n\n/**\n * OTP verification response.\n\nWhen 2FA is required:\n- requires_2fa: True\n- session_id: UUID of 2FA verification session\n- refresh/access/user: null\n\nWhen 2FA is not required:\n- requires_2fa: False\n- session_id: null\n- refresh/access/user: populated\n */\nexport const OTPVerifyResponseSchema = z.object({\n requires_2fa: z.boolean().optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n refresh: z.string().nullable().optional(),\n access: z.string().nullable().optional(),\n user: UserSchema.nullable().optional(),\n should_prompt_2fa: z.boolean().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type OTPVerifyResponse = z.infer<typeof OTPVerifyResponseSchema>","/**\n * Zod schema for User\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for user details.\n * */\nimport { z } from 'zod'\nimport { CentrifugoTokenSchema } from './CentrifugoToken.schema'\n\n/**\n * Serializer for user details.\n */\nexport const UserSchema = z.object({\n id: z.number().int(),\n email: z.email(),\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n full_name: z.string(),\n initials: z.string(),\n display_username: z.string(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n avatar: z.string().nullable(),\n is_staff: z.boolean(),\n is_superuser: z.boolean(),\n date_joined: z.string().datetime({ offset: true }),\n last_login: z.string().datetime({ offset: true }).nullable(),\n unanswered_messages_count: z.number().int(),\n centrifugo: CentrifugoTokenSchema.nullable(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type User = z.infer<typeof UserSchema>","/**\n * Zod schema for PatchedUserProfileUpdateRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for updating user profile.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for updating user profile.\n */\nexport const PatchedUserProfileUpdateRequestSchema = z.object({\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type PatchedUserProfileUpdateRequest = z.infer<typeof PatchedUserProfileUpdateRequestSchema>","/**\n * Zod schema for TokenRefresh\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\n\nexport const TokenRefreshSchema = z.object({\n access: z.string(),\n refresh: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type TokenRefresh = z.infer<typeof TokenRefreshSchema>","/**\n * Zod schema for TokenRefreshRequest\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\n\nexport const TokenRefreshRequestSchema = z.object({\n refresh: z.string().min(1),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type TokenRefreshRequest = z.infer<typeof TokenRefreshRequestSchema>","/**\n * Zod schema for UserProfileUpdateRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for updating user profile.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for updating user profile.\n */\nexport const UserProfileUpdateRequestSchema = z.object({\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type UserProfileUpdateRequest = z.infer<typeof UserProfileUpdateRequestSchema>","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Accounts\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { OTPRequestRequestSchema, type OTPRequestRequest } from '../schemas/OTPRequestRequest.schema'\nimport { OTPRequestResponseSchema, type OTPRequestResponse } from '../schemas/OTPRequestResponse.schema'\nimport { OTPVerifyRequestSchema, type OTPVerifyRequest } from '../schemas/OTPVerifyRequest.schema'\nimport { OTPVerifyResponseSchema, type OTPVerifyResponse } from '../schemas/OTPVerifyResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/request/\n */\nexport async function createAccountsOtpRequestCreate( data: OTPRequestRequest, client?: any\n): Promise<OTPRequestResponse> {\n const api = client || getAPIInstance()\n const response = await api.accounts.otpRequestCreate(data)\n try {\n return OTPRequestResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOtpRequestCreate\\nPath: /cfg/accounts/otp/request/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOtpRequestCreate',\n path: '/cfg/accounts/otp/request/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/verify/\n */\nexport async function createAccountsOtpVerifyCreate( data: OTPVerifyRequest, client?: any\n): Promise<OTPVerifyResponse> {\n const api = client || getAPIInstance()\n const response = await api.accounts.otpVerifyCreate(data)\n try {\n return OTPVerifyResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOtpVerifyCreate\\nPath: /cfg/accounts/otp/verify/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOtpVerifyCreate',\n path: '/cfg/accounts/otp/verify/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Global API Instance - Singleton configuration with auto-configuration support\n *\n * This module provides a global API instance that auto-configures from\n * environment variables or can be configured manually.\n *\n * AUTO-CONFIGURATION (recommended):\n * Set one of these environment variables and the API will auto-configure:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n *\n * Then just use fetchers and hooks directly:\n * ```typescript\n * import { getUsers } from './_utils/fetchers'\n * const users = await getUsers({ page: 1 })\n * ```\n *\n * MANUAL CONFIGURATION:\n * ```typescript\n * import { configureAPI } from './api-instance'\n *\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'your-jwt-token'\n * })\n * ```\n *\n * For SSR or multiple instances:\n * ```typescript\n * import { API } from './index'\n * import { getUsers } from './_utils/fetchers'\n *\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\n\nimport { API, type APIOptions } from './index'\n\nlet globalAPI: API | null = null\nlet autoConfigAttempted = false\n\n/**\n * Auto-configure from environment variable if available (Next.js pattern)\n * This allows hooks and fetchers to work without explicit configureAPI() call\n *\n * Supported environment variables:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n */\nfunction tryAutoConfigureFromEnv(): void {\n // Only attempt once\n if (autoConfigAttempted) return\n autoConfigAttempted = true\n\n // Skip if already configured\n if (globalAPI) return\n\n // Skip if process is not available (pure browser without bundler)\n if (typeof process === 'undefined' || !process.env) return\n\n // Try different environment variable patterns\n const baseUrl =\n process.env.NEXT_PUBLIC_API_URL ||\n process.env.VITE_API_URL ||\n process.env.REACT_APP_API_URL ||\n process.env.API_URL\n\n if (baseUrl) {\n globalAPI = new API(baseUrl)\n }\n}\n\n/**\n * Get the global API instance\n * Auto-configures from environment variables on first call if not manually configured.\n * @throws Error if API is not configured and no env variable is set\n */\nexport function getAPIInstance(): API {\n // Try auto-configuration on first access (lazy initialization)\n tryAutoConfigureFromEnv()\n\n if (!globalAPI) {\n throw new Error(\n 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\\n\\n' +\n 'Example:\\n' +\n ' import { configureAPI } from \"./api-instance\"\\n' +\n ' configureAPI({ baseUrl: \"https://api.example.com\" })\\n\\n' +\n 'Or set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'\n )\n }\n return globalAPI\n}\n\n/**\n * Check if API is configured (or can be auto-configured)\n */\nexport function isAPIConfigured(): boolean {\n tryAutoConfigureFromEnv()\n return globalAPI !== null\n}\n\n/**\n * Configure the global API instance\n *\n * @param baseUrl - Base URL for the API\n * @param options - Optional configuration (storage, retry, logger)\n *\n * @example\n * ```typescript\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'jwt-token',\n * options: {\n * retryConfig: { maxRetries: 3 },\n * loggerConfig: { enabled: true }\n * }\n * })\n * ```\n */\nexport function configureAPI(config: {\n baseUrl: string\n token?: string\n refreshToken?: string\n options?: APIOptions\n}): API {\n globalAPI = new API(config.baseUrl, config.options)\n\n if (config.token) {\n globalAPI.setToken(config.token, config.refreshToken)\n }\n\n return globalAPI\n}\n\n/**\n * Reconfigure the global API instance with new settings\n * Useful for updating tokens or base URL\n */\nexport function reconfigureAPI(updates: {\n baseUrl?: string\n token?: string\n refreshToken?: string\n}): API {\n const instance = getAPIInstance()\n\n if (updates.baseUrl) {\n instance.setBaseUrl(updates.baseUrl)\n }\n\n if (updates.token) {\n instance.setToken(updates.token, updates.refreshToken)\n }\n\n return instance\n}\n\n/**\n * Clear tokens from the global API instance\n */\nexport function clearAPITokens(): void {\n const instance = getAPIInstance()\n instance.clearTokens()\n}\n\n/**\n * Reset the global API instance\n * Useful for testing or logout scenarios\n */\nexport function resetAPI(): void {\n if (globalAPI) {\n globalAPI.clearTokens()\n }\n globalAPI = null\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Auth\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { TokenRefreshSchema, type TokenRefresh } from '../schemas/TokenRefresh.schema'\nimport { TokenRefreshRequestSchema, type TokenRefreshRequest } from '../schemas/TokenRefreshRequest.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/token/refresh/\n */\nexport async function createAccountsTokenRefreshCreate( data: TokenRefreshRequest, client?: any\n): Promise<TokenRefresh> {\n const api = client || getAPIInstance()\n const response = await api.auth.accountsTokenRefreshCreate(data)\n try {\n return TokenRefreshSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsTokenRefreshCreate\\nPath: /cfg/accounts/token/refresh/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsTokenRefreshCreate',\n path: '/cfg/accounts/token/refresh/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Oauth\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { OAuthAuthorizeRequestRequestSchema, type OAuthAuthorizeRequestRequest } from '../schemas/OAuthAuthorizeRequestRequest.schema'\nimport { OAuthAuthorizeResponseSchema, type OAuthAuthorizeResponse } from '../schemas/OAuthAuthorizeResponse.schema'\nimport { OAuthCallbackRequestRequestSchema, type OAuthCallbackRequestRequest } from '../schemas/OAuthCallbackRequestRequest.schema'\nimport { OAuthDisconnectRequestRequestSchema, type OAuthDisconnectRequestRequest } from '../schemas/OAuthDisconnectRequestRequest.schema'\nimport { OAuthProvidersResponseSchema, type OAuthProvidersResponse } from '../schemas/OAuthProvidersResponse.schema'\nimport { OAuthTokenResponseSchema, type OAuthTokenResponse } from '../schemas/OAuthTokenResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * List OAuth connections\n *\n * @method GET\n * @path /cfg/accounts/oauth/connections/\n */\nexport async function getAccountsOauthConnectionsList( client?: any\n): Promise<any> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthConnectionsList()\n return response\n}\n\n\n/**\n * Disconnect OAuth provider\n *\n * @method POST\n * @path /cfg/accounts/oauth/disconnect/\n */\nexport async function createAccountsOauthDisconnectCreate( data: OAuthDisconnectRequestRequest, client?: any\n): Promise<any> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthDisconnectCreate(data)\n return response\n}\n\n\n/**\n * Start GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/authorize/\n */\nexport async function createAccountsOauthGithubAuthorizeCreate( data: OAuthAuthorizeRequestRequest, client?: any\n): Promise<OAuthAuthorizeResponse> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthGithubAuthorizeCreate(data)\n try {\n return OAuthAuthorizeResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOauthGithubAuthorizeCreate\\nPath: /cfg/accounts/oauth/github/authorize/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOauthGithubAuthorizeCreate',\n path: '/cfg/accounts/oauth/github/authorize/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Complete GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/callback/\n */\nexport async function createAccountsOauthGithubCallbackCreate( data: OAuthCallbackRequestRequest, client?: any\n): Promise<OAuthTokenResponse> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthGithubCallbackCreate(data)\n try {\n return OAuthTokenResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsOauthGithubCallbackCreate\\nPath: /cfg/accounts/oauth/github/callback/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsOauthGithubCallbackCreate',\n path: '/cfg/accounts/oauth/github/callback/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * List OAuth providers\n *\n * @method GET\n * @path /cfg/accounts/oauth/providers/\n */\nexport async function getAccountsOauthProvidersRetrieve( client?: any\n): Promise<OAuthProvidersResponse> {\n const api = client || getAPIInstance()\n const response = await api.oauth.accountsOauthProvidersRetrieve()\n try {\n return OAuthProvidersResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getAccountsOauthProvidersRetrieve\\nPath: /cfg/accounts/oauth/providers/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getAccountsOauthProvidersRetrieve',\n path: '/cfg/accounts/oauth/providers/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for User Profile\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { AccountDeleteResponseSchema, type AccountDeleteResponse } from '../schemas/AccountDeleteResponse.schema'\nimport { CfgAccountsProfileAvatarCreateRequestSchema, type CfgAccountsProfileAvatarCreateRequest } from '../schemas/CfgAccountsProfileAvatarCreateRequest.schema'\nimport { PatchedUserProfileUpdateRequestSchema, type PatchedUserProfileUpdateRequest } from '../schemas/PatchedUserProfileUpdateRequest.schema'\nimport { UserSchema, type User } from '../schemas/User.schema'\nimport { UserProfileUpdateRequestSchema, type UserProfileUpdateRequest } from '../schemas/UserProfileUpdateRequest.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * Get current user profile\n *\n * @method GET\n * @path /cfg/accounts/profile/\n */\nexport async function getAccountsProfileRetrieve( client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileRetrieve()\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getAccountsProfileRetrieve\\nPath: /cfg/accounts/profile/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getAccountsProfileRetrieve',\n path: '/cfg/accounts/profile/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Upload user avatar\n *\n * @method POST\n * @path /cfg/accounts/profile/avatar/\n */\nexport async function createAccountsProfileAvatarCreate( data: CfgAccountsProfileAvatarCreateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileAvatarCreate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsProfileAvatarCreate\\nPath: /cfg/accounts/profile/avatar/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsProfileAvatarCreate',\n path: '/cfg/accounts/profile/avatar/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Delete user account\n *\n * @method POST\n * @path /cfg/accounts/profile/delete/\n */\nexport async function createAccountsProfileDeleteCreate( client?: any\n): Promise<AccountDeleteResponse> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileDeleteCreate()\n try {\n return AccountDeleteResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createAccountsProfileDeleteCreate\\nPath: /cfg/accounts/profile/delete/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createAccountsProfileDeleteCreate',\n path: '/cfg/accounts/profile/delete/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/partial/\n */\nexport async function partialUpdateAccountsProfilePartialUpdate( data: UserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfilePartialUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`partialUpdateAccountsProfilePartialUpdate\\nPath: /cfg/accounts/profile/partial/\\nMethod: PUT`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'partialUpdateAccountsProfilePartialUpdate',\n path: '/cfg/accounts/profile/partial/',\n method: 'PUT',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/partial/\n */\nexport async function partialUpdateAccountsProfilePartialPartialUpdate( data?: PatchedUserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfilePartialPartialUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`partialUpdateAccountsProfilePartialPartialUpdate\\nPath: /cfg/accounts/profile/partial/\\nMethod: PATCH`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'partialUpdateAccountsProfilePartialPartialUpdate',\n path: '/cfg/accounts/profile/partial/',\n method: 'PATCH',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/update/\n */\nexport async function updateAccountsProfileUpdateUpdate( data: UserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileUpdateUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`updateAccountsProfileUpdateUpdate\\nPath: /cfg/accounts/profile/update/\\nMethod: PUT`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'updateAccountsProfileUpdateUpdate',\n path: '/cfg/accounts/profile/update/',\n method: 'PUT',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/update/\n */\nexport async function partialUpdateAccountsProfileUpdatePartialUpdate( data?: PatchedUserProfileUpdateRequest, client?: any\n): Promise<User> {\n const api = client || getAPIInstance()\n const response = await api.user_profile.accountsProfileUpdatePartialUpdate(data)\n try {\n return UserSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`partialUpdateAccountsProfileUpdatePartialUpdate\\nPath: /cfg/accounts/profile/update/\\nMethod: PATCH`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'partialUpdateAccountsProfileUpdatePartialUpdate',\n path: '/cfg/accounts/profile/update/',\n method: 'PATCH',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Django CFG API - API Client with JWT Management\n *\n * Usage:\n * ```typescript\n * import { API } from './api';\n *\n * const api = new API('https://api.example.com');\n *\n * // Set JWT token\n * api.setToken('your-jwt-token', 'refresh-token');\n *\n * // Use API\n * const posts = await api.posts.list();\n * const user = await api.users.retrieve(1);\n *\n * // Check authentication\n * if (api.isAuthenticated()) {\n * // ...\n * }\n *\n * // Custom storage with logging (for Electron/Node.js)\n * import { MemoryStorageAdapter, APILogger } from './storage';\n * const logger = new APILogger({ enabled: true, logLevel: 'debug' });\n * const api = new API('https://api.example.com', {\n * storage: new MemoryStorageAdapter(logger),\n * loggerConfig: { enabled: true, logLevel: 'debug' }\n * });\n *\n * // Get OpenAPI schema\n * const schema = api.getSchema();\n * ```\n */\n\nimport { APIClient } from \"./client\";\nimport {\n StorageAdapter,\n LocalStorageAdapter,\n CookieStorageAdapter,\n MemoryStorageAdapter\n} from \"./storage\";\nimport type { RetryConfig } from \"./retry\";\nimport type { LoggerConfig } from \"./logger\";\nimport { APILogger } from \"./logger\";\nimport { Auth } from \"./accounts__auth/client\";\nimport { Oauth } from \"./accounts__oauth/client\";\nimport { UserProfile } from \"./accounts__user_profile/client\";\nimport { Accounts } from \"./accounts/client\";\nexport * as AuthTypes from \"./accounts__auth/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as OauthTypes from \"./accounts__oauth/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as UserProfileTypes from \"./accounts__user_profile/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as AccountsTypes from \"./accounts/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as Enums from \"./enums\";\n\n// Re-export Zod schemas for runtime validation\nexport * as Schemas from \"./_utils/schemas\";\n// Also export all schemas directly for convenience\nexport * from \"./_utils/schemas\";\n\n// Re-export Zod validation events for browser integration\nexport type { ValidationErrorDetail, ValidationErrorEvent } from \"./validation-events\";\nexport { dispatchValidationError, onValidationError, formatZodError } from \"./validation-events\";\n\n// Re-export typed fetchers for universal usage\nexport * as Fetchers from \"./_utils/fetchers\";\nexport * from \"./_utils/fetchers\";\n\n// Re-export API instance configuration functions\nexport {\n configureAPI,\n getAPIInstance,\n reconfigureAPI,\n clearAPITokens,\n resetAPI,\n isAPIConfigured\n} from \"./api-instance\";\n// NOTE: SWR hooks are generated in ./_utils/hooks/ but NOT exported here to keep\n// the main bundle server-safe. Import hooks directly from the hooks directory:\n// import { useUsers } from './_utils/hooks';\n// Or use a separate entry point like '@djangocfg/api/hooks' for client components.\n\n// Re-export core client\nexport { APIClient };\n\n// Re-export storage adapters for convenience\nexport type { StorageAdapter };\nexport { LocalStorageAdapter, CookieStorageAdapter, MemoryStorageAdapter };\n\n// Re-export error classes for convenience\nexport { APIError, NetworkError } from \"./errors\";\n\n// Re-export HTTP adapters for custom implementations\nexport type { HttpClientAdapter, HttpRequest, HttpResponse } from \"./http\";\nexport { FetchAdapter, KeepAliveFetchAdapter } from \"./http\";\n\n// Re-export logger types and classes\nexport type { LoggerConfig, RequestLog, ResponseLog, ErrorLog } from \"./logger\";\nexport { APILogger } from \"./logger\";\n\n// Re-export retry configuration and utilities\nexport type { RetryConfig, FailedAttemptInfo } from \"./retry\";\nexport { withRetry, shouldRetry, DEFAULT_RETRY_CONFIG } from \"./retry\";\n\nexport const TOKEN_KEY = \"auth_token\";\nexport const REFRESH_TOKEN_KEY = \"refresh_token\";\n\n/** Auto-detect locale from cookie NEXT_LOCALE or navigator.language */\nfunction detectLocale(): string | null {\n try {\n if (typeof document !== 'undefined') {\n const match = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (match) return match[1];\n }\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n } catch {}\n return null;\n}\n\nexport interface APIOptions {\n /** Custom storage adapter (defaults to LocalStorageAdapter) */\n storage?: StorageAdapter;\n /** Custom HTTP client adapter (defaults to FetchAdapter) */\n httpClient?: HttpClientAdapter;\n /** Retry configuration for failed requests */\n retryConfig?: RetryConfig;\n /** Logger configuration */\n loggerConfig?: Partial<LoggerConfig>;\n /** Locale for Accept-Language header (e.g. 'en', 'ko', 'ru') */\n locale?: string;\n}\n\nexport class API {\n private baseUrl: string;\n private _client: APIClient;\n private _token: string | null = null;\n private _refreshToken: string | null = null;\n private _locale: string | null = null;\n private storage: StorageAdapter;\n private options?: APIOptions;\n\n // Sub-clients\n public auth!: Auth;\n public oauth!: Oauth;\n public user_profile!: UserProfile;\n public accounts!: Accounts;\n\n constructor(baseUrl: string, options?: APIOptions) {\n this.baseUrl = baseUrl;\n this.options = options;\n\n // Create logger if config provided\n const logger = options?.loggerConfig ? new APILogger(options.loggerConfig) : undefined;\n\n // Initialize storage with logger\n this.storage = options?.storage || new LocalStorageAdapter(logger);\n\n this._locale = options?.locale || null;\n\n this._loadTokensFromStorage();\n\n // Initialize APIClient with token getter for URL authentication\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Initialize sub-clients from APIClient\n this.auth = this._client.auth;\n this.oauth = this._client.oauth;\n this.user_profile = this._client.user_profile;\n this.accounts = this._client.accounts;\n }\n\n private _loadTokensFromStorage(): void {\n this._token = this.storage.getItem(TOKEN_KEY);\n this._refreshToken = this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n private _reinitClients(): void {\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Reinitialize sub-clients\n this.auth = this._client.auth;\n this.oauth = this._client.oauth;\n this.user_profile = this._client.user_profile;\n this.accounts = this._client.accounts;\n }\n\n private _injectAuthHeader(): void {\n // Override request method to inject auth header\n const originalRequest = this._client.request.bind(this._client);\n this._client.request = async <T>(\n method: string,\n path: string,\n options?: { params?: Record<string, any>; body?: any; formData?: FormData; headers?: Record<string, string> }\n ): Promise<T> => {\n // Read token from storage dynamically (supports JWT injection after instantiation)\n const token = this.getToken();\n const locale = this._locale || detectLocale();\n const mergedOptions = {\n ...options,\n headers: {\n ...(options?.headers || {}),\n ...(token ? { 'Authorization': `Bearer ${token}` } : {}),\n ...(locale ? { 'Accept-Language': locale } : {}),\n },\n };\n\n return originalRequest(method, path, mergedOptions);\n };\n }\n\n /**\n * Get current JWT token\n */\n getToken(): string | null {\n return this.storage.getItem(TOKEN_KEY);\n }\n\n /**\n * Get current refresh token\n */\n getRefreshToken(): string | null {\n return this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n /**\n * Set JWT token and refresh token\n * @param token - JWT access token\n * @param refreshToken - JWT refresh token (optional)\n */\n setToken(token: string, refreshToken?: string): void {\n this._token = token;\n this.storage.setItem(TOKEN_KEY, token);\n\n if (refreshToken) {\n this._refreshToken = refreshToken;\n this.storage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n\n // Reinitialize clients with new token\n this._reinitClients();\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this._token = null;\n this._refreshToken = null;\n this.storage.removeItem(TOKEN_KEY);\n this.storage.removeItem(REFRESH_TOKEN_KEY);\n\n // Reinitialize clients without token\n this._reinitClients();\n }\n\n /**\n * Check if user is authenticated\n */\n isAuthenticated(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Update base URL and reinitialize clients\n * @param url - New base URL\n */\n setBaseUrl(url: string): void {\n this.baseUrl = url;\n this._reinitClients();\n }\n\n /**\n * Get current base URL\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Set locale for Accept-Language header\n * @param locale - Locale string (e.g. 'en', 'ko', 'ru') or null to clear\n */\n setLocale(locale: string | null): void {\n this._locale = locale;\n }\n\n /**\n * Get current locale\n */\n getLocale(): string | null {\n return this._locale;\n }\n\n /**\n * Get OpenAPI schema path\n * @returns Path to the OpenAPI schema JSON file\n *\n * Note: The OpenAPI schema is available in the schema.json file.\n * You can load it dynamically using:\n * ```typescript\n * const schema = await fetch('./schema.json').then(r => r.json());\n * // or using fs in Node.js:\n * // const schema = JSON.parse(fs.readFileSync('./schema.json', 'utf-8'));\n * ```\n */\n getSchemaPath(): string {\n return './schema.json';\n }\n}\n\nexport default API;","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Centrifugo Auth.\n */\nexport class CentrifugoAuth {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Get Centrifugo connection token\n * \n * Generate JWT token for WebSocket connection to Centrifugo. Token\n * includes user's allowed channels based on their permissions. Requires\n * authentication.\n */\n async tokenRetrieve(): Promise<Models.ConnectionTokenResponse> {\n const response = await this.client.request('GET', \"/cfg/centrifugo/auth/token/\");\n return response;\n }\n\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * HTTP Client Adapter Pattern\n *\n * Allows switching between fetch/axios/httpx without changing generated code.\n * Provides unified interface for making HTTP requests.\n */\n\nexport interface HttpRequest {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n params?: Record<string, any>;\n /** FormData for file uploads (multipart/form-data) */\n formData?: FormData;\n /** Binary data for octet-stream uploads */\n binaryBody?: Blob | ArrayBuffer;\n}\n\nexport interface HttpResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/**\n * HTTP Client Adapter Interface.\n * Implement this to use custom HTTP clients (axios, httpx, etc.)\n */\nexport interface HttpClientAdapter {\n request<T = any>(request: HttpRequest): Promise<HttpResponse<T>>;\n}\n\n/**\n * Default Fetch API adapter.\n * Uses native browser fetch() with proper error handling.\n */\nexport class FetchAdapter implements HttpClientAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const { method, url, headers, body, params, formData, binaryBody } = request;\n\n // Build URL with query params\n let finalUrl = url;\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n finalUrl = url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;\n }\n }\n\n // Build headers\n const finalHeaders: Record<string, string> = { ...headers };\n\n // Determine body and content-type\n let requestBody: string | FormData | Blob | ArrayBuffer | undefined;\n\n if (formData) {\n // For multipart/form-data, let browser set Content-Type with boundary\n requestBody = formData;\n // Don't set Content-Type - browser will set it with boundary\n } else if (binaryBody) {\n // Binary upload (application/octet-stream)\n finalHeaders['Content-Type'] = 'application/octet-stream';\n requestBody = binaryBody;\n } else if (body) {\n // JSON request\n finalHeaders['Content-Type'] = 'application/json';\n requestBody = JSON.stringify(body);\n }\n\n // Make request\n const response = await fetch(finalUrl, {\n method,\n headers: finalHeaders,\n body: requestBody,\n credentials: 'include', // Include Django session cookies\n });\n\n // Parse response\n let data: any = null;\n const contentType = response.headers.get('content-type');\n\n if (response.status !== 204 && contentType?.includes('application/json')) {\n data = await response.json();\n } else if (response.status !== 204) {\n data = await response.text();\n }\n\n // Convert Headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n };\n }\n}\n\n/**\n * FetchAdapter with keepalive:true.\n *\n * Use this adapter when you need requests to survive page unload\n * (visibilitychange / beforeunload) — the browser will complete the request\n * even after the page is navigated away. Typical use: monitor / analytics flush.\n *\n * @example\n * ```typescript\n * import { APIClient, KeepAliveFetchAdapter } from './client';\n * const client = new APIClient(baseUrl, { httpClient: new KeepAliveFetchAdapter() });\n * ```\n */\nexport class KeepAliveFetchAdapter extends FetchAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const origFetch = globalThis.fetch;\n globalThis.fetch = (input: RequestInfo | URL, init?: RequestInit) =>\n origFetch(input, { ...init, keepalive: true });\n try {\n return await super.request<T>(request);\n } finally {\n globalThis.fetch = origFetch;\n }\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Error Classes\n *\n * Typed error classes with Django REST Framework support.\n */\n\n/**\n * HTTP API Error with DRF field-specific validation errors.\n *\n * Usage:\n * ```typescript\n * try {\n * await api.users.create(userData);\n * } catch (error) {\n * if (error instanceof APIError) {\n * if (error.isValidationError) {\n * console.log('Field errors:', error.fieldErrors);\n * // { \"email\": [\"Email already exists\"], \"username\": [\"Required\"] }\n * }\n * }\n * }\n * ```\n */\nexport class APIError extends Error {\n constructor(\n public statusCode: number,\n public statusText: string,\n public response: any,\n public url: string,\n message?: string\n ) {\n super(message || `HTTP ${statusCode}: ${statusText}`);\n this.name = 'APIError';\n }\n\n /**\n * Get error details from response.\n * DRF typically returns: { \"detail\": \"Error message\" } or { \"field\": [\"error1\", \"error2\"] }\n */\n get details(): Record<string, any> | null {\n if (typeof this.response === 'object' && this.response !== null) {\n return this.response;\n }\n return null;\n }\n\n /**\n * Get field-specific validation errors from DRF.\n * Returns: { \"field_name\": [\"error1\", \"error2\"], ... }\n */\n get fieldErrors(): Record<string, string[]> | null {\n const details = this.details;\n if (!details) return null;\n\n // DRF typically returns: { \"field\": [\"error1\", \"error2\"] }\n const fieldErrors: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(details)) {\n if (Array.isArray(value)) {\n fieldErrors[key] = value;\n }\n }\n\n return Object.keys(fieldErrors).length > 0 ? fieldErrors : null;\n }\n\n /**\n * Get single error message from DRF.\n * Checks for \"detail\", \"message\", or first field error.\n */\n get errorMessage(): string {\n const details = this.details;\n if (!details) return this.message;\n\n // Check for \"detail\" field (common in DRF)\n if (details.detail) {\n return Array.isArray(details.detail) ? details.detail.join(', ') : String(details.detail);\n }\n\n // Check for \"message\" field\n if (details.message) {\n return String(details.message);\n }\n\n // Return first field error\n const fieldErrors = this.fieldErrors;\n if (fieldErrors) {\n const firstField = Object.keys(fieldErrors)[0];\n if (firstField) {\n return `${firstField}: ${fieldErrors[firstField]?.join(', ')}`;\n }\n }\n\n return this.message;\n }\n\n // Helper methods for common HTTP status codes\n get isValidationError(): boolean { return this.statusCode === 400; }\n get isAuthError(): boolean { return this.statusCode === 401; }\n get isPermissionError(): boolean { return this.statusCode === 403; }\n get isNotFoundError(): boolean { return this.statusCode === 404; }\n get isServerError(): boolean { return this.statusCode >= 500 && this.statusCode < 600; }\n}\n\n/**\n * Network Error (connection failed, timeout, etc.)\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public url: string,\n public originalError?: Error\n ) {\n super(message);\n this.name = 'NetworkError';\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Logger with Consola\n * Beautiful console logging for API requests and responses\n *\n * Installation:\n * npm install consola\n */\n\nimport { type ConsolaInstance, createConsola } from 'consola';\n\n/**\n * Request log data\n */\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\n/**\n * Response log data\n */\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Error log data\n */\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n /** Enable logging */\n enabled: boolean;\n /** Log requests */\n logRequests: boolean;\n /** Log responses */\n logResponses: boolean;\n /** Log errors */\n logErrors: boolean;\n /** Log request/response bodies */\n logBodies: boolean;\n /** Log headers (excluding sensitive ones) */\n logHeaders: boolean;\n /** Custom consola instance */\n consola?: ConsolaInstance;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: process.env.NODE_ENV !== 'production',\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\n/**\n * Sensitive header names to filter out\n */\nconst SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-csrf-token',\n];\n\n/**\n * API Logger class\n */\nexport class APILogger {\n private config: LoggerConfig;\n private consola: ConsolaInstance;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.consola = config.consola || createConsola({\n level: this.config.enabled ? 4 : 0,\n });\n }\n\n /**\n * Enable logging\n */\n enable(): void {\n this.config.enabled = true;\n }\n\n /**\n * Disable logging\n */\n disable(): void {\n this.config.enabled = false;\n }\n\n /**\n * Update configuration\n */\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Filter sensitive headers\n */\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_HEADERS.includes(lowerKey)) {\n filtered[key] = '***';\n } else {\n filtered[key] = headers[key] || '';\n }\n });\n\n return filtered;\n }\n\n /**\n * Log request\n */\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n\n const { method, url, headers, body } = request;\n\n this.consola.start(`${method} ${url}`);\n\n if (this.config.logHeaders && headers) {\n this.consola.debug('Headers:', this.filterHeaders(headers));\n }\n\n if (this.config.logBodies && body) {\n this.consola.debug('Body:', body);\n }\n }\n\n /**\n * Log response\n */\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n\n const statusColor = status >= 500 ? 'red'\n : status >= 400 ? 'yellow'\n : status >= 300 ? 'cyan'\n : 'green';\n\n this.consola.success(\n `${method} ${url} ${status} ${statusText} (${duration}ms)`\n );\n\n if (this.config.logBodies && data) {\n this.consola.debug('Response:', data);\n }\n }\n\n /**\n * Log error\n */\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n\n this.consola.error(\n `${method} ${url} ${statusCode || 'Network'} Error (${duration}ms)`\n );\n\n this.consola.error('Message:', message);\n\n if (fieldErrors && Object.keys(fieldErrors).length > 0) {\n this.consola.error('Field Errors:');\n Object.entries(fieldErrors).forEach(([field, errors]) => {\n errors.forEach((err) => {\n this.consola.error(` • ${field}: ${err}`);\n });\n });\n }\n }\n\n /**\n * Log general info\n */\n info(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.info(message, ...args);\n }\n\n /**\n * Log warning\n */\n warn(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.warn(message, ...args);\n }\n\n /**\n * Log error\n */\n error(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.error(message, ...args);\n }\n\n /**\n * Log debug\n */\n debug(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.debug(message, ...args);\n }\n\n /**\n * Log success\n */\n success(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.success(message, ...args);\n }\n\n /**\n * Create a sub-logger with prefix\n */\n withTag(tag: string): ConsolaInstance {\n return this.consola.withTag(tag);\n }\n}\n\n/**\n * Default logger instance\n */\nexport const defaultLogger = new APILogger();","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Retry Configuration and Utilities\n *\n * Provides automatic retry logic for failed HTTP requests using p-retry.\n * Retries only on network errors and server errors (5xx), not client errors (4xx).\n */\n\nimport pRetry, { AbortError } from 'p-retry';\nimport { APIError, NetworkError } from './errors';\n\n/**\n * Information about a failed retry attempt.\n */\nexport interface FailedAttemptInfo {\n /** The error that caused the failure */\n error: Error;\n /** The attempt number (1-indexed) */\n attemptNumber: number;\n /** Number of retries left */\n retriesLeft: number;\n}\n\n/**\n * Retry configuration options.\n *\n * Uses exponential backoff with jitter by default to avoid thundering herd.\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts.\n * @default 3\n */\n retries?: number;\n\n /**\n * Exponential backoff factor.\n * @default 2\n */\n factor?: number;\n\n /**\n * Minimum wait time between retries (ms).\n * @default 1000\n */\n minTimeout?: number;\n\n /**\n * Maximum wait time between retries (ms).\n * @default 60000\n */\n maxTimeout?: number;\n\n /**\n * Add randomness to wait times (jitter).\n * Helps avoid thundering herd problem.\n * @default true\n */\n randomize?: boolean;\n\n /**\n * Callback called on each failed attempt.\n */\n onFailedAttempt?: (info: FailedAttemptInfo) => void;\n}\n\n/**\n * Default retry configuration.\n */\nexport const DEFAULT_RETRY_CONFIG: Required<RetryConfig> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 60000,\n randomize: true,\n onFailedAttempt: () => {},\n};\n\n/**\n * Determine if an error should trigger a retry.\n *\n * Retries on:\n * - Network errors (connection refused, timeout, etc.)\n * - Server errors (5xx status codes)\n * - Rate limiting (429 status code)\n *\n * Does NOT retry on:\n * - Client errors (4xx except 429)\n * - Authentication errors (401, 403)\n * - Not found (404)\n *\n * @param error - The error to check\n * @returns true if should retry, false otherwise\n */\nexport function shouldRetry(error: any): boolean {\n // Always retry network errors\n if (error instanceof NetworkError) {\n return true;\n }\n\n // For API errors, check status code\n if (error instanceof APIError) {\n const status = error.statusCode;\n\n // Retry on 5xx server errors\n if (status >= 500 && status < 600) {\n return true;\n }\n\n // Retry on 429 (rate limit)\n if (status === 429) {\n return true;\n }\n\n // Do NOT retry on 4xx client errors\n return false;\n }\n\n // Retry on unknown errors (might be network issues)\n return true;\n}\n\n/**\n * Wrap a function with retry logic.\n *\n * @param fn - Async function to retry\n * @param config - Retry configuration\n * @returns Result of the function\n *\n * @example\n * ```typescript\n * const result = await withRetry(\n * async () => fetch('https://api.example.com/users'),\n * { retries: 5, minTimeout: 2000 }\n * );\n * ```\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const finalConfig = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n return pRetry(\n async () => {\n try {\n return await fn();\n } catch (error) {\n // Check if we should retry this error\n if (!shouldRetry(error)) {\n // Abort retry immediately for non-retryable errors\n throw new AbortError(error as Error);\n }\n\n // Re-throw error to trigger retry\n throw error;\n }\n },\n {\n retries: finalConfig.retries,\n factor: finalConfig.factor,\n minTimeout: finalConfig.minTimeout,\n maxTimeout: finalConfig.maxTimeout,\n randomize: finalConfig.randomize,\n onFailedAttempt: finalConfig.onFailedAttempt ? (error) => {\n // Adapt p-retry's FailedAttemptError to our FailedAttemptInfo\n const pRetryError = error as any; // p-retry's internal type\n finalConfig.onFailedAttempt!({\n error: pRetryError as Error,\n attemptNumber: pRetryError.attemptNumber,\n retriesLeft: pRetryError.retriesLeft,\n });\n } : undefined,\n }\n );\n}","import { CentrifugoAuth } from \"./centrifugo__centrifugo_auth\";\nimport { HttpClientAdapter, FetchAdapter } from \"./http\";\nimport { APIError, NetworkError } from \"./errors\";\nimport { APILogger, type LoggerConfig } from \"./logger\";\nimport { withRetry, type RetryConfig } from \"./retry\";\n\n\n/**\n * Async API client for Django CFG API.\n *\n * Usage:\n * ```typescript\n * const client = new APIClient('https://api.example.com');\n * const users = await client.users.list();\n * const post = await client.posts.create(newPost);\n *\n * // Custom HTTP adapter (e.g., Axios)\n * const client = new APIClient('https://api.example.com', {\n * httpClient: new AxiosAdapter()\n * });\n * ```\n */\nexport class APIClient {\n private baseUrl: string;\n private httpClient: HttpClientAdapter;\n private logger: APILogger | null = null;\n private retryConfig: RetryConfig | null = null;\n private tokenGetter: (() => string | null) | null = null;\n\n // Sub-clients\n public centrifugo_auth: CentrifugoAuth;\n\n constructor(\n baseUrl: string,\n options?: {\n httpClient?: HttpClientAdapter;\n loggerConfig?: Partial<LoggerConfig>;\n retryConfig?: RetryConfig;\n tokenGetter?: () => string | null;\n }\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.httpClient = options?.httpClient || new FetchAdapter();\n this.tokenGetter = options?.tokenGetter || null;\n\n // Initialize logger if config provided\n if (options?.loggerConfig !== undefined) {\n this.logger = new APILogger(options.loggerConfig);\n }\n\n // Store retry configuration\n if (options?.retryConfig !== undefined) {\n this.retryConfig = options.retryConfig;\n }\n\n // Initialize sub-clients\n this.centrifugo_auth = new CentrifugoAuth(this);\n }\n\n /**\n * Get CSRF token from cookies (for SessionAuthentication).\n *\n * Returns null if cookie doesn't exist (JWT-only auth).\n */\n getCsrfToken(): string | null {\n const name = 'csrftoken';\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n /**\n * Get the base URL for building streaming/download URLs.\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Get JWT token for URL authentication (used in streaming endpoints).\n * Returns null if no token getter is configured or no token is available.\n */\n getToken(): string | null {\n return this.tokenGetter ? this.tokenGetter() : null;\n }\n\n /**\n * Make HTTP request with Django CSRF and session handling.\n * Automatically retries on network errors and 5xx server errors.\n */\n async request<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Wrap request in retry logic if configured\n if (this.retryConfig) {\n return withRetry(() => this._makeRequest<T>(method, path, options), {\n ...this.retryConfig,\n onFailedAttempt: (info) => {\n // Log retry attempts\n if (this.logger) {\n this.logger.warn(\n `Retry attempt ${info.attemptNumber}/${info.retriesLeft + info.attemptNumber} ` +\n `for ${method} ${path}: ${info.error.message}`\n );\n }\n // Call user's onFailedAttempt if provided\n this.retryConfig?.onFailedAttempt?.(info);\n },\n });\n }\n\n // No retry configured, make request directly\n return this._makeRequest<T>(method, path, options);\n }\n\n /**\n * Internal request method (without retry wrapper).\n * Used by request() method with optional retry logic.\n */\n private async _makeRequest<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Build URL - handle both absolute and relative paths\n // When baseUrl is empty (static builds), path is used as-is (relative to current origin)\n const url = this.baseUrl ? `${this.baseUrl}${path}` : path;\n const startTime = Date.now();\n\n // Build headers - start with custom headers from options\n const headers: Record<string, string> = {\n ...(options?.headers || {})\n };\n\n // Don't set Content-Type for FormData/binaryBody (browser will set it with boundary)\n if (!options?.formData && !options?.binaryBody && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n // CSRF not needed - SessionAuthentication not enabled in DRF config\n // Your API uses JWT/Token authentication (no CSRF required)\n\n // Log request\n if (this.logger) {\n this.logger.logRequest({\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n });\n }\n\n try {\n // Make request via HTTP adapter\n const response = await this.httpClient.request<T>({\n method,\n url: url,\n headers,\n params: options?.params,\n body: options?.body,\n formData: options?.formData,\n binaryBody: options?.binaryBody,\n });\n\n const duration = Date.now() - startTime;\n\n // Check for HTTP errors\n if (response.status >= 400) {\n const error = new APIError(\n response.status,\n response.statusText,\n response.data,\n url\n );\n\n // Log error\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: error.message,\n statusCode: response.status,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw error;\n }\n\n // Log successful response\n if (this.logger) {\n this.logger.logResponse(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n return response.data as T;\n } catch (error) {\n const duration = Date.now() - startTime;\n\n // Re-throw APIError as-is\n if (error instanceof APIError) {\n throw error;\n }\n\n // Classify network error using PerformanceResourceTiming.\n // Browser intentionally makes CORS errors indistinguishable from network failures\n // (same TypeError: \"Failed to fetch\") for security reasons. We use PerformanceResourceTiming\n // as the best available heuristic:\n // - Entry exists with responseStatus === 0 → request reached server, JS blocked → likely CORS\n // - No entry / entry missing → connection never established → server unavailable / DNS / offline\n // All cases are dispatched as 'network-error' with a `possibly_cors` flag.\n let possiblyCors = false;\n if (error instanceof TypeError && typeof window !== 'undefined') {\n try {\n const isCrossOrigin = (() => {\n try { return new URL(url).origin !== window.location.origin; } catch { return false; }\n })();\n if (isCrossOrigin) {\n const entries = performance.getEntriesByName(url, 'resource');\n if (entries.length > 0) {\n const last = entries[entries.length - 1] as PerformanceResourceTiming;\n possiblyCors = 'responseStatus' in last && (last as any).responseStatus === 0;\n }\n }\n } catch { /* ignore — PerformanceResourceTiming not available */ }\n }\n\n if (this.logger) {\n this.logger.error(`⚠️ Network Error: ${method} ${url}`);\n this.logger.error(` → ${error instanceof Error ? error.message : String(error)}`);\n if (possiblyCors) {\n this.logger.error(` → Possibly blocked by CORS policy (configure CORS on the server)`);\n }\n }\n\n // Dispatch network-error event with possibly_cors hint\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('network-error', {\n detail: {\n url: url,\n method: method,\n error: error instanceof Error ? error.message : String(error),\n possibly_cors: possiblyCors,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n }));\n } catch { /* silently ignore — event dispatch must never crash the app */ }\n }\n\n // Wrap other errors as NetworkError\n const networkError = error instanceof Error\n ? new NetworkError(error.message, url, error)\n : new NetworkError('Unknown error', url);\n\n // Detailed logging via logger.logError\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: networkError.message,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw networkError;\n }\n }\n}\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Storage adapters for cross-platform token storage.\n *\n * Supports:\n * - LocalStorage (browser)\n * - Cookies (SSR/browser)\n * - Memory (Node.js/Electron/testing)\n */\n\nimport type { APILogger } from './logger';\n\n/**\n * Storage adapter interface for cross-platform token storage.\n */\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/**\n * LocalStorage adapter with safe try-catch for browser environments.\n * Works in modern browsers with localStorage support.\n * \n * Note: This adapter uses window.localStorage and should only be used in browser/client environments.\n * For server-side usage, use MemoryStorageAdapter or CookieStorageAdapter instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n const value = localStorage.getItem(key);\n this.logger?.debug(`LocalStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n } catch (error) {\n this.logger?.error('LocalStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(key, value);\n this.logger?.debug(`LocalStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.removeItem(key);\n this.logger?.debug(`LocalStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * Cookie-based storage adapter for SSR and browser environments.\n * Useful for Next.js, Nuxt.js, and other SSR frameworks.\n */\nexport class CookieStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof document === 'undefined') {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n return null;\n }\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts.length === 2) {\n const result = parts.pop()?.split(';').shift() || null;\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): ${result ? 'found' : 'not found'}`);\n return result;\n }\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): not found`);\n } catch (error) {\n this.logger?.error('CookieStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=${value}; path=/; max-age=31536000`;\n this.logger?.debug(`CookieStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n this.logger?.debug(`CookieStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * In-memory storage adapter for Node.js, Electron, and testing environments.\n * Data is stored in RAM and cleared when process exits.\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private storage: Map<string, string> = new Map();\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n const value = this.storage.get(key) || null;\n this.logger?.debug(`MemoryStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n\n setItem(key: string, value: string): void {\n this.storage.set(key, value);\n this.logger?.debug(`MemoryStorage.setItem(\"${key}\"): success`);\n }\n\n removeItem(key: string): void {\n this.storage.delete(key);\n this.logger?.debug(`MemoryStorage.removeItem(\"${key}\"): success`);\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Zod Schemas - Runtime validation and type inference\n *\n * Auto-generated from OpenAPI specification.\n * Provides runtime validation for API requests and responses.\n *\n * Usage:\n * ```typescript\n * import { UserSchema } from './schemas'\n *\n * // Validate data\n * const user = UserSchema.parse(data)\n *\n * // Type inference\n * type User = z.infer<typeof UserSchema>\n * ```\n */\n\nexport * from './ConnectionTokenResponse.schema'\n","/**\n * Zod schema for ConnectionTokenResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response model for Centrifugo connection token.\n * */\nimport { z } from 'zod'\n\n/**\n * Response model for Centrifugo connection token.\n */\nexport const ConnectionTokenResponseSchema = z.object({\n token: z.string(),\n centrifugo_url: z.string(),\n expires_at: z.string(),\n channels: z.array(z.string()),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type ConnectionTokenResponse = z.infer<typeof ConnectionTokenResponseSchema>","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed Fetchers - Universal API functions\n *\n * Auto-generated from OpenAPI specification.\n * These functions work in any JavaScript environment.\n *\n * Features:\n * - Runtime validation with Zod\n * - Type-safe parameters and responses\n * - Works with any data-fetching library (SWR, React Query, etc)\n * - Server Component compatible\n *\n * Usage:\n * ```typescript\n * import * as fetchers from './fetchers'\n *\n * // Direct usage\n * const user = await fetchers.getUser(1)\n *\n * // With SWR\n * const { data } = useSWR('user-1', () => fetchers.getUser(1))\n *\n * // With React Query\n * const { data } = useQuery(['user', 1], () => fetchers.getUser(1))\n * ```\n */\n\nexport * from './centrifugo__centrifugo_auth'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Centrifugo Auth\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { ConnectionTokenResponseSchema, type ConnectionTokenResponse } from '../schemas/ConnectionTokenResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * Get Centrifugo connection token\n *\n * @method GET\n * @path /cfg/centrifugo/auth/token/\n */\nexport async function getCentrifugoAuthTokenRetrieve( client?: any\n): Promise<ConnectionTokenResponse> {\n const api = client || getAPIInstance()\n const response = await api.centrifugo_auth.tokenRetrieve()\n try {\n return ConnectionTokenResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getCentrifugoAuthTokenRetrieve\\nPath: /cfg/centrifugo/auth/token/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getCentrifugoAuthTokenRetrieve',\n path: '/cfg/centrifugo/auth/token/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Global API Instance - Singleton configuration with auto-configuration support\n *\n * This module provides a global API instance that auto-configures from\n * environment variables or can be configured manually.\n *\n * AUTO-CONFIGURATION (recommended):\n * Set one of these environment variables and the API will auto-configure:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n *\n * Then just use fetchers and hooks directly:\n * ```typescript\n * import { getUsers } from './_utils/fetchers'\n * const users = await getUsers({ page: 1 })\n * ```\n *\n * MANUAL CONFIGURATION:\n * ```typescript\n * import { configureAPI } from './api-instance'\n *\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'your-jwt-token'\n * })\n * ```\n *\n * For SSR or multiple instances:\n * ```typescript\n * import { API } from './index'\n * import { getUsers } from './_utils/fetchers'\n *\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\n\nimport { API, type APIOptions } from './index'\n\nlet globalAPI: API | null = null\nlet autoConfigAttempted = false\n\n/**\n * Auto-configure from environment variable if available (Next.js pattern)\n * This allows hooks and fetchers to work without explicit configureAPI() call\n *\n * Supported environment variables:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n */\nfunction tryAutoConfigureFromEnv(): void {\n // Only attempt once\n if (autoConfigAttempted) return\n autoConfigAttempted = true\n\n // Skip if already configured\n if (globalAPI) return\n\n // Skip if process is not available (pure browser without bundler)\n if (typeof process === 'undefined' || !process.env) return\n\n // Try different environment variable patterns\n const baseUrl =\n process.env.NEXT_PUBLIC_API_URL ||\n process.env.VITE_API_URL ||\n process.env.REACT_APP_API_URL ||\n process.env.API_URL\n\n if (baseUrl) {\n globalAPI = new API(baseUrl)\n }\n}\n\n/**\n * Get the global API instance\n * Auto-configures from environment variables on first call if not manually configured.\n * @throws Error if API is not configured and no env variable is set\n */\nexport function getAPIInstance(): API {\n // Try auto-configuration on first access (lazy initialization)\n tryAutoConfigureFromEnv()\n\n if (!globalAPI) {\n throw new Error(\n 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\\n\\n' +\n 'Example:\\n' +\n ' import { configureAPI } from \"./api-instance\"\\n' +\n ' configureAPI({ baseUrl: \"https://api.example.com\" })\\n\\n' +\n 'Or set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'\n )\n }\n return globalAPI\n}\n\n/**\n * Check if API is configured (or can be auto-configured)\n */\nexport function isAPIConfigured(): boolean {\n tryAutoConfigureFromEnv()\n return globalAPI !== null\n}\n\n/**\n * Configure the global API instance\n *\n * @param baseUrl - Base URL for the API\n * @param options - Optional configuration (storage, retry, logger)\n *\n * @example\n * ```typescript\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'jwt-token',\n * options: {\n * retryConfig: { maxRetries: 3 },\n * loggerConfig: { enabled: true }\n * }\n * })\n * ```\n */\nexport function configureAPI(config: {\n baseUrl: string\n token?: string\n refreshToken?: string\n options?: APIOptions\n}): API {\n globalAPI = new API(config.baseUrl, config.options)\n\n if (config.token) {\n globalAPI.setToken(config.token, config.refreshToken)\n }\n\n return globalAPI\n}\n\n/**\n * Reconfigure the global API instance with new settings\n * Useful for updating tokens or base URL\n */\nexport function reconfigureAPI(updates: {\n baseUrl?: string\n token?: string\n refreshToken?: string\n}): API {\n const instance = getAPIInstance()\n\n if (updates.baseUrl) {\n instance.setBaseUrl(updates.baseUrl)\n }\n\n if (updates.token) {\n instance.setToken(updates.token, updates.refreshToken)\n }\n\n return instance\n}\n\n/**\n * Clear tokens from the global API instance\n */\nexport function clearAPITokens(): void {\n const instance = getAPIInstance()\n instance.clearTokens()\n}\n\n/**\n * Reset the global API instance\n * Useful for testing or logout scenarios\n */\nexport function resetAPI(): void {\n if (globalAPI) {\n globalAPI.clearTokens()\n }\n globalAPI = null\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Django CFG API - API Client with JWT Management\n *\n * Usage:\n * ```typescript\n * import { API } from './api';\n *\n * const api = new API('https://api.example.com');\n *\n * // Set JWT token\n * api.setToken('your-jwt-token', 'refresh-token');\n *\n * // Use API\n * const posts = await api.posts.list();\n * const user = await api.users.retrieve(1);\n *\n * // Check authentication\n * if (api.isAuthenticated()) {\n * // ...\n * }\n *\n * // Custom storage with logging (for Electron/Node.js)\n * import { MemoryStorageAdapter, APILogger } from './storage';\n * const logger = new APILogger({ enabled: true, logLevel: 'debug' });\n * const api = new API('https://api.example.com', {\n * storage: new MemoryStorageAdapter(logger),\n * loggerConfig: { enabled: true, logLevel: 'debug' }\n * });\n *\n * // Get OpenAPI schema\n * const schema = api.getSchema();\n * ```\n */\n\nimport { APIClient } from \"./client\";\nimport {\n StorageAdapter,\n LocalStorageAdapter,\n CookieStorageAdapter,\n MemoryStorageAdapter\n} from \"./storage\";\nimport type { RetryConfig } from \"./retry\";\nimport type { LoggerConfig } from \"./logger\";\nimport { APILogger } from \"./logger\";\nimport { CentrifugoAuth } from \"./centrifugo__centrifugo_auth/client\";\nexport * as CentrifugoAuthTypes from \"./centrifugo__centrifugo_auth/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\n\n// Re-export Zod schemas for runtime validation\nexport * as Schemas from \"./_utils/schemas\";\n// Also export all schemas directly for convenience\nexport * from \"./_utils/schemas\";\n\n// Re-export Zod validation events for browser integration\nexport type { ValidationErrorDetail, ValidationErrorEvent } from \"./validation-events\";\nexport { dispatchValidationError, onValidationError, formatZodError } from \"./validation-events\";\n\n// Re-export typed fetchers for universal usage\nexport * as Fetchers from \"./_utils/fetchers\";\nexport * from \"./_utils/fetchers\";\n\n// Re-export API instance configuration functions\nexport {\n configureAPI,\n getAPIInstance,\n reconfigureAPI,\n clearAPITokens,\n resetAPI,\n isAPIConfigured\n} from \"./api-instance\";\n// NOTE: SWR hooks are generated in ./_utils/hooks/ but NOT exported here to keep\n// the main bundle server-safe. Import hooks directly from the hooks directory:\n// import { useUsers } from './_utils/hooks';\n// Or use a separate entry point like '@djangocfg/api/hooks' for client components.\n\n// Re-export core client\nexport { APIClient };\n\n// Re-export storage adapters for convenience\nexport type { StorageAdapter };\nexport { LocalStorageAdapter, CookieStorageAdapter, MemoryStorageAdapter };\n\n// Re-export error classes for convenience\nexport { APIError, NetworkError } from \"./errors\";\n\n// Re-export HTTP adapters for custom implementations\nexport type { HttpClientAdapter, HttpRequest, HttpResponse } from \"./http\";\nexport { FetchAdapter, KeepAliveFetchAdapter } from \"./http\";\n\n// Re-export logger types and classes\nexport type { LoggerConfig, RequestLog, ResponseLog, ErrorLog } from \"./logger\";\nexport { APILogger } from \"./logger\";\n\n// Re-export retry configuration and utilities\nexport type { RetryConfig, FailedAttemptInfo } from \"./retry\";\nexport { withRetry, shouldRetry, DEFAULT_RETRY_CONFIG } from \"./retry\";\n\nexport const TOKEN_KEY = \"auth_token\";\nexport const REFRESH_TOKEN_KEY = \"refresh_token\";\n\n/** Auto-detect locale from cookie NEXT_LOCALE or navigator.language */\nfunction detectLocale(): string | null {\n try {\n if (typeof document !== 'undefined') {\n const match = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (match) return match[1];\n }\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n } catch {}\n return null;\n}\n\nexport interface APIOptions {\n /** Custom storage adapter (defaults to LocalStorageAdapter) */\n storage?: StorageAdapter;\n /** Custom HTTP client adapter (defaults to FetchAdapter) */\n httpClient?: HttpClientAdapter;\n /** Retry configuration for failed requests */\n retryConfig?: RetryConfig;\n /** Logger configuration */\n loggerConfig?: Partial<LoggerConfig>;\n /** Locale for Accept-Language header (e.g. 'en', 'ko', 'ru') */\n locale?: string;\n}\n\nexport class API {\n private baseUrl: string;\n private _client: APIClient;\n private _token: string | null = null;\n private _refreshToken: string | null = null;\n private _locale: string | null = null;\n private storage: StorageAdapter;\n private options?: APIOptions;\n\n // Sub-clients\n public centrifugo_auth!: CentrifugoAuth;\n\n constructor(baseUrl: string, options?: APIOptions) {\n this.baseUrl = baseUrl;\n this.options = options;\n\n // Create logger if config provided\n const logger = options?.loggerConfig ? new APILogger(options.loggerConfig) : undefined;\n\n // Initialize storage with logger\n this.storage = options?.storage || new LocalStorageAdapter(logger);\n\n this._locale = options?.locale || null;\n\n this._loadTokensFromStorage();\n\n // Initialize APIClient with token getter for URL authentication\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Initialize sub-clients from APIClient\n this.centrifugo_auth = this._client.centrifugo_auth;\n }\n\n private _loadTokensFromStorage(): void {\n this._token = this.storage.getItem(TOKEN_KEY);\n this._refreshToken = this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n private _reinitClients(): void {\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Reinitialize sub-clients\n this.centrifugo_auth = this._client.centrifugo_auth;\n }\n\n private _injectAuthHeader(): void {\n // Override request method to inject auth header\n const originalRequest = this._client.request.bind(this._client);\n this._client.request = async <T>(\n method: string,\n path: string,\n options?: { params?: Record<string, any>; body?: any; formData?: FormData; headers?: Record<string, string> }\n ): Promise<T> => {\n // Read token from storage dynamically (supports JWT injection after instantiation)\n const token = this.getToken();\n const locale = this._locale || detectLocale();\n const mergedOptions = {\n ...options,\n headers: {\n ...(options?.headers || {}),\n ...(token ? { 'Authorization': `Bearer ${token}` } : {}),\n ...(locale ? { 'Accept-Language': locale } : {}),\n },\n };\n\n return originalRequest(method, path, mergedOptions);\n };\n }\n\n /**\n * Get current JWT token\n */\n getToken(): string | null {\n return this.storage.getItem(TOKEN_KEY);\n }\n\n /**\n * Get current refresh token\n */\n getRefreshToken(): string | null {\n return this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n /**\n * Set JWT token and refresh token\n * @param token - JWT access token\n * @param refreshToken - JWT refresh token (optional)\n */\n setToken(token: string, refreshToken?: string): void {\n this._token = token;\n this.storage.setItem(TOKEN_KEY, token);\n\n if (refreshToken) {\n this._refreshToken = refreshToken;\n this.storage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n\n // Reinitialize clients with new token\n this._reinitClients();\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this._token = null;\n this._refreshToken = null;\n this.storage.removeItem(TOKEN_KEY);\n this.storage.removeItem(REFRESH_TOKEN_KEY);\n\n // Reinitialize clients without token\n this._reinitClients();\n }\n\n /**\n * Check if user is authenticated\n */\n isAuthenticated(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Update base URL and reinitialize clients\n * @param url - New base URL\n */\n setBaseUrl(url: string): void {\n this.baseUrl = url;\n this._reinitClients();\n }\n\n /**\n * Get current base URL\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Set locale for Accept-Language header\n * @param locale - Locale string (e.g. 'en', 'ko', 'ru') or null to clear\n */\n setLocale(locale: string | null): void {\n this._locale = locale;\n }\n\n /**\n * Get current locale\n */\n getLocale(): string | null {\n return this._locale;\n }\n\n /**\n * Get OpenAPI schema path\n * @returns Path to the OpenAPI schema JSON file\n *\n * Note: The OpenAPI schema is available in the schema.json file.\n * You can load it dynamically using:\n * ```typescript\n * const schema = await fetch('./schema.json').then(r => r.json());\n * // or using fs in Node.js:\n * // const schema = JSON.parse(fs.readFileSync('./schema.json', 'utf-8'));\n * ```\n */\n getSchemaPath(): string {\n return './schema.json';\n }\n}\n\nexport default API;","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Backup Codes.\n */\nexport class BackupCodes {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Get backup codes status for user.\n */\n async totpBackupCodesRetrieve(): Promise<Models.BackupCodesStatus> {\n const response = await this.client.request('GET', \"/cfg/totp/backup-codes/\");\n return response;\n }\n\n /**\n * Regenerate backup codes. Requires TOTP code for verification.\n * Invalidates all existing codes.\n */\n async totpBackupCodesRegenerateCreate(data: Models.BackupCodesRegenerateRequest): Promise<Models.BackupCodesRegenerateResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/backup-codes/regenerate/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for TOTP Management.\n */\nexport class TotpManagement {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n async totpDevicesList(ordering?: string, page?: number, page_size?: number, search?: string): Promise<Models.PaginatedDeviceListResponseList>;\n async totpDevicesList(params?: { ordering?: string; page?: number; page_size?: number; search?: string }): Promise<Models.PaginatedDeviceListResponseList>;\n\n /**\n * List all TOTP devices for user.\n */\n async totpDevicesList(...args: any[]): Promise<Models.PaginatedDeviceListResponseList> {\n const isParamsObject = args.length === 1 && typeof args[0] === 'object' && args[0] !== null && !Array.isArray(args[0]);\n \n let params;\n if (isParamsObject) {\n params = args[0];\n } else {\n params = { ordering: args[0], page: args[1], page_size: args[2], search: args[3] };\n }\n const response = await this.client.request('GET', \"/cfg/totp/devices/\", { params });\n return response;\n }\n\n /**\n * Completely disable 2FA for account. Requires verification code.\n */\n async totpDisableCreate(data: Models.DisableRequest): Promise<any> {\n const response = await this.client.request('POST', \"/cfg/totp/disable/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for TOTP Setup.\n */\nexport class TotpSetup {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Start 2FA setup process. Creates a new TOTP device and returns QR code\n * for scanning.\n */\n async create(data: Models.SetupRequest): Promise<Models.SetupResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/setup/\", { body: data });\n return response;\n }\n\n /**\n * Confirm 2FA setup with first valid code. Activates the device and\n * generates backup codes.\n */\n async confirmCreate(data: Models.ConfirmSetupRequest): Promise<Models.ConfirmSetupResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/setup/confirm/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for TOTP Verification.\n */\nexport class TotpVerification {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Verify TOTP code for 2FA session. Completes authentication and returns\n * JWT tokens on success.\n */\n async totpVerifyCreate(data: Models.VerifyRequest): Promise<Models.VerifyResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/verify/\", { body: data });\n return response;\n }\n\n /**\n * Verify backup recovery code for 2FA session. Alternative verification\n * method when TOTP device unavailable.\n */\n async totpVerifyBackupCreate(data: Models.VerifyBackupRequest): Promise<Models.VerifyResponse> {\n const response = await this.client.request('POST', \"/cfg/totp/verify/backup/\", { body: data });\n return response;\n }\n\n}","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Totp.\n */\nexport class Totp {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Delete a TOTP device. Requires verification code if removing the\n * last/primary device.\n */\n async devicesDestroy(id: string): Promise<void> {\n const response = await this.client.request('DELETE', `/cfg/totp/devices/${id}/`);\n return;\n }\n\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * HTTP Client Adapter Pattern\n *\n * Allows switching between fetch/axios/httpx without changing generated code.\n * Provides unified interface for making HTTP requests.\n */\n\nexport interface HttpRequest {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n params?: Record<string, any>;\n /** FormData for file uploads (multipart/form-data) */\n formData?: FormData;\n /** Binary data for octet-stream uploads */\n binaryBody?: Blob | ArrayBuffer;\n}\n\nexport interface HttpResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/**\n * HTTP Client Adapter Interface.\n * Implement this to use custom HTTP clients (axios, httpx, etc.)\n */\nexport interface HttpClientAdapter {\n request<T = any>(request: HttpRequest): Promise<HttpResponse<T>>;\n}\n\n/**\n * Default Fetch API adapter.\n * Uses native browser fetch() with proper error handling.\n */\nexport class FetchAdapter implements HttpClientAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const { method, url, headers, body, params, formData, binaryBody } = request;\n\n // Build URL with query params\n let finalUrl = url;\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n finalUrl = url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;\n }\n }\n\n // Build headers\n const finalHeaders: Record<string, string> = { ...headers };\n\n // Determine body and content-type\n let requestBody: string | FormData | Blob | ArrayBuffer | undefined;\n\n if (formData) {\n // For multipart/form-data, let browser set Content-Type with boundary\n requestBody = formData;\n // Don't set Content-Type - browser will set it with boundary\n } else if (binaryBody) {\n // Binary upload (application/octet-stream)\n finalHeaders['Content-Type'] = 'application/octet-stream';\n requestBody = binaryBody;\n } else if (body) {\n // JSON request\n finalHeaders['Content-Type'] = 'application/json';\n requestBody = JSON.stringify(body);\n }\n\n // Make request\n const response = await fetch(finalUrl, {\n method,\n headers: finalHeaders,\n body: requestBody,\n credentials: 'include', // Include Django session cookies\n });\n\n // Parse response\n let data: any = null;\n const contentType = response.headers.get('content-type');\n\n if (response.status !== 204 && contentType?.includes('application/json')) {\n data = await response.json();\n } else if (response.status !== 204) {\n data = await response.text();\n }\n\n // Convert Headers to plain object\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n };\n }\n}\n\n/**\n * FetchAdapter with keepalive:true.\n *\n * Use this adapter when you need requests to survive page unload\n * (visibilitychange / beforeunload) — the browser will complete the request\n * even after the page is navigated away. Typical use: monitor / analytics flush.\n *\n * @example\n * ```typescript\n * import { APIClient, KeepAliveFetchAdapter } from './client';\n * const client = new APIClient(baseUrl, { httpClient: new KeepAliveFetchAdapter() });\n * ```\n */\nexport class KeepAliveFetchAdapter extends FetchAdapter {\n async request<T = any>(request: HttpRequest): Promise<HttpResponse<T>> {\n const origFetch = globalThis.fetch;\n globalThis.fetch = (input: RequestInfo | URL, init?: RequestInit) =>\n origFetch(input, { ...init, keepalive: true });\n try {\n return await super.request<T>(request);\n } finally {\n globalThis.fetch = origFetch;\n }\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Error Classes\n *\n * Typed error classes with Django REST Framework support.\n */\n\n/**\n * HTTP API Error with DRF field-specific validation errors.\n *\n * Usage:\n * ```typescript\n * try {\n * await api.users.create(userData);\n * } catch (error) {\n * if (error instanceof APIError) {\n * if (error.isValidationError) {\n * console.log('Field errors:', error.fieldErrors);\n * // { \"email\": [\"Email already exists\"], \"username\": [\"Required\"] }\n * }\n * }\n * }\n * ```\n */\nexport class APIError extends Error {\n constructor(\n public statusCode: number,\n public statusText: string,\n public response: any,\n public url: string,\n message?: string\n ) {\n super(message || `HTTP ${statusCode}: ${statusText}`);\n this.name = 'APIError';\n }\n\n /**\n * Get error details from response.\n * DRF typically returns: { \"detail\": \"Error message\" } or { \"field\": [\"error1\", \"error2\"] }\n */\n get details(): Record<string, any> | null {\n if (typeof this.response === 'object' && this.response !== null) {\n return this.response;\n }\n return null;\n }\n\n /**\n * Get field-specific validation errors from DRF.\n * Returns: { \"field_name\": [\"error1\", \"error2\"], ... }\n */\n get fieldErrors(): Record<string, string[]> | null {\n const details = this.details;\n if (!details) return null;\n\n // DRF typically returns: { \"field\": [\"error1\", \"error2\"] }\n const fieldErrors: Record<string, string[]> = {};\n for (const [key, value] of Object.entries(details)) {\n if (Array.isArray(value)) {\n fieldErrors[key] = value;\n }\n }\n\n return Object.keys(fieldErrors).length > 0 ? fieldErrors : null;\n }\n\n /**\n * Get single error message from DRF.\n * Checks for \"detail\", \"message\", or first field error.\n */\n get errorMessage(): string {\n const details = this.details;\n if (!details) return this.message;\n\n // Check for \"detail\" field (common in DRF)\n if (details.detail) {\n return Array.isArray(details.detail) ? details.detail.join(', ') : String(details.detail);\n }\n\n // Check for \"message\" field\n if (details.message) {\n return String(details.message);\n }\n\n // Return first field error\n const fieldErrors = this.fieldErrors;\n if (fieldErrors) {\n const firstField = Object.keys(fieldErrors)[0];\n if (firstField) {\n return `${firstField}: ${fieldErrors[firstField]?.join(', ')}`;\n }\n }\n\n return this.message;\n }\n\n // Helper methods for common HTTP status codes\n get isValidationError(): boolean { return this.statusCode === 400; }\n get isAuthError(): boolean { return this.statusCode === 401; }\n get isPermissionError(): boolean { return this.statusCode === 403; }\n get isNotFoundError(): boolean { return this.statusCode === 404; }\n get isServerError(): boolean { return this.statusCode >= 500 && this.statusCode < 600; }\n}\n\n/**\n * Network Error (connection failed, timeout, etc.)\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public url: string,\n public originalError?: Error\n ) {\n super(message);\n this.name = 'NetworkError';\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * API Logger with Consola\n * Beautiful console logging for API requests and responses\n *\n * Installation:\n * npm install consola\n */\n\nimport { type ConsolaInstance, createConsola } from 'consola';\n\n/**\n * Request log data\n */\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\n/**\n * Response log data\n */\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Error log data\n */\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n /** Enable logging */\n enabled: boolean;\n /** Log requests */\n logRequests: boolean;\n /** Log responses */\n logResponses: boolean;\n /** Log errors */\n logErrors: boolean;\n /** Log request/response bodies */\n logBodies: boolean;\n /** Log headers (excluding sensitive ones) */\n logHeaders: boolean;\n /** Custom consola instance */\n consola?: ConsolaInstance;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: process.env.NODE_ENV !== 'production',\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\n/**\n * Sensitive header names to filter out\n */\nconst SENSITIVE_HEADERS = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-csrf-token',\n];\n\n/**\n * API Logger class\n */\nexport class APILogger {\n private config: LoggerConfig;\n private consola: ConsolaInstance;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.consola = config.consola || createConsola({\n level: this.config.enabled ? 4 : 0,\n });\n }\n\n /**\n * Enable logging\n */\n enable(): void {\n this.config.enabled = true;\n }\n\n /**\n * Disable logging\n */\n disable(): void {\n this.config.enabled = false;\n }\n\n /**\n * Update configuration\n */\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Filter sensitive headers\n */\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_HEADERS.includes(lowerKey)) {\n filtered[key] = '***';\n } else {\n filtered[key] = headers[key] || '';\n }\n });\n\n return filtered;\n }\n\n /**\n * Log request\n */\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n\n const { method, url, headers, body } = request;\n\n this.consola.start(`${method} ${url}`);\n\n if (this.config.logHeaders && headers) {\n this.consola.debug('Headers:', this.filterHeaders(headers));\n }\n\n if (this.config.logBodies && body) {\n this.consola.debug('Body:', body);\n }\n }\n\n /**\n * Log response\n */\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n\n const statusColor = status >= 500 ? 'red'\n : status >= 400 ? 'yellow'\n : status >= 300 ? 'cyan'\n : 'green';\n\n this.consola.success(\n `${method} ${url} ${status} ${statusText} (${duration}ms)`\n );\n\n if (this.config.logBodies && data) {\n this.consola.debug('Response:', data);\n }\n }\n\n /**\n * Log error\n */\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n\n this.consola.error(\n `${method} ${url} ${statusCode || 'Network'} Error (${duration}ms)`\n );\n\n this.consola.error('Message:', message);\n\n if (fieldErrors && Object.keys(fieldErrors).length > 0) {\n this.consola.error('Field Errors:');\n Object.entries(fieldErrors).forEach(([field, errors]) => {\n errors.forEach((err) => {\n this.consola.error(` • ${field}: ${err}`);\n });\n });\n }\n }\n\n /**\n * Log general info\n */\n info(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.info(message, ...args);\n }\n\n /**\n * Log warning\n */\n warn(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.warn(message, ...args);\n }\n\n /**\n * Log error\n */\n error(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.error(message, ...args);\n }\n\n /**\n * Log debug\n */\n debug(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.debug(message, ...args);\n }\n\n /**\n * Log success\n */\n success(message: string, ...args: any[]): void {\n if (!this.config.enabled) return;\n this.consola.success(message, ...args);\n }\n\n /**\n * Create a sub-logger with prefix\n */\n withTag(tag: string): ConsolaInstance {\n return this.consola.withTag(tag);\n }\n}\n\n/**\n * Default logger instance\n */\nexport const defaultLogger = new APILogger();","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Retry Configuration and Utilities\n *\n * Provides automatic retry logic for failed HTTP requests using p-retry.\n * Retries only on network errors and server errors (5xx), not client errors (4xx).\n */\n\nimport pRetry, { AbortError } from 'p-retry';\nimport { APIError, NetworkError } from './errors';\n\n/**\n * Information about a failed retry attempt.\n */\nexport interface FailedAttemptInfo {\n /** The error that caused the failure */\n error: Error;\n /** The attempt number (1-indexed) */\n attemptNumber: number;\n /** Number of retries left */\n retriesLeft: number;\n}\n\n/**\n * Retry configuration options.\n *\n * Uses exponential backoff with jitter by default to avoid thundering herd.\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts.\n * @default 3\n */\n retries?: number;\n\n /**\n * Exponential backoff factor.\n * @default 2\n */\n factor?: number;\n\n /**\n * Minimum wait time between retries (ms).\n * @default 1000\n */\n minTimeout?: number;\n\n /**\n * Maximum wait time between retries (ms).\n * @default 60000\n */\n maxTimeout?: number;\n\n /**\n * Add randomness to wait times (jitter).\n * Helps avoid thundering herd problem.\n * @default true\n */\n randomize?: boolean;\n\n /**\n * Callback called on each failed attempt.\n */\n onFailedAttempt?: (info: FailedAttemptInfo) => void;\n}\n\n/**\n * Default retry configuration.\n */\nexport const DEFAULT_RETRY_CONFIG: Required<RetryConfig> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 60000,\n randomize: true,\n onFailedAttempt: () => {},\n};\n\n/**\n * Determine if an error should trigger a retry.\n *\n * Retries on:\n * - Network errors (connection refused, timeout, etc.)\n * - Server errors (5xx status codes)\n * - Rate limiting (429 status code)\n *\n * Does NOT retry on:\n * - Client errors (4xx except 429)\n * - Authentication errors (401, 403)\n * - Not found (404)\n *\n * @param error - The error to check\n * @returns true if should retry, false otherwise\n */\nexport function shouldRetry(error: any): boolean {\n // Always retry network errors\n if (error instanceof NetworkError) {\n return true;\n }\n\n // For API errors, check status code\n if (error instanceof APIError) {\n const status = error.statusCode;\n\n // Retry on 5xx server errors\n if (status >= 500 && status < 600) {\n return true;\n }\n\n // Retry on 429 (rate limit)\n if (status === 429) {\n return true;\n }\n\n // Do NOT retry on 4xx client errors\n return false;\n }\n\n // Retry on unknown errors (might be network issues)\n return true;\n}\n\n/**\n * Wrap a function with retry logic.\n *\n * @param fn - Async function to retry\n * @param config - Retry configuration\n * @returns Result of the function\n *\n * @example\n * ```typescript\n * const result = await withRetry(\n * async () => fetch('https://api.example.com/users'),\n * { retries: 5, minTimeout: 2000 }\n * );\n * ```\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const finalConfig = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n return pRetry(\n async () => {\n try {\n return await fn();\n } catch (error) {\n // Check if we should retry this error\n if (!shouldRetry(error)) {\n // Abort retry immediately for non-retryable errors\n throw new AbortError(error as Error);\n }\n\n // Re-throw error to trigger retry\n throw error;\n }\n },\n {\n retries: finalConfig.retries,\n factor: finalConfig.factor,\n minTimeout: finalConfig.minTimeout,\n maxTimeout: finalConfig.maxTimeout,\n randomize: finalConfig.randomize,\n onFailedAttempt: finalConfig.onFailedAttempt ? (error) => {\n // Adapt p-retry's FailedAttemptError to our FailedAttemptInfo\n const pRetryError = error as any; // p-retry's internal type\n finalConfig.onFailedAttempt!({\n error: pRetryError as Error,\n attemptNumber: pRetryError.attemptNumber,\n retriesLeft: pRetryError.retriesLeft,\n });\n } : undefined,\n }\n );\n}","import { BackupCodes } from \"./totp__backup_codes\";\nimport { TotpManagement } from \"./totp__totp_management\";\nimport { TotpSetup } from \"./totp__totp_setup\";\nimport { TotpVerification } from \"./totp__totp_verification\";\nimport { Totp } from \"./totp\";\nimport { HttpClientAdapter, FetchAdapter } from \"./http\";\nimport { APIError, NetworkError } from \"./errors\";\nimport { APILogger, type LoggerConfig } from \"./logger\";\nimport { withRetry, type RetryConfig } from \"./retry\";\n\n\n/**\n * Async API client for Django CFG API.\n *\n * Usage:\n * ```typescript\n * const client = new APIClient('https://api.example.com');\n * const users = await client.users.list();\n * const post = await client.posts.create(newPost);\n *\n * // Custom HTTP adapter (e.g., Axios)\n * const client = new APIClient('https://api.example.com', {\n * httpClient: new AxiosAdapter()\n * });\n * ```\n */\nexport class APIClient {\n private baseUrl: string;\n private httpClient: HttpClientAdapter;\n private logger: APILogger | null = null;\n private retryConfig: RetryConfig | null = null;\n private tokenGetter: (() => string | null) | null = null;\n\n // Sub-clients\n public backup_codes: BackupCodes;\n public totp_management: TotpManagement;\n public totp_setup: TotpSetup;\n public totp_verification: TotpVerification;\n public totp: Totp;\n\n constructor(\n baseUrl: string,\n options?: {\n httpClient?: HttpClientAdapter;\n loggerConfig?: Partial<LoggerConfig>;\n retryConfig?: RetryConfig;\n tokenGetter?: () => string | null;\n }\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.httpClient = options?.httpClient || new FetchAdapter();\n this.tokenGetter = options?.tokenGetter || null;\n\n // Initialize logger if config provided\n if (options?.loggerConfig !== undefined) {\n this.logger = new APILogger(options.loggerConfig);\n }\n\n // Store retry configuration\n if (options?.retryConfig !== undefined) {\n this.retryConfig = options.retryConfig;\n }\n\n // Initialize sub-clients\n this.backup_codes = new BackupCodes(this);\n this.totp_management = new TotpManagement(this);\n this.totp_setup = new TotpSetup(this);\n this.totp_verification = new TotpVerification(this);\n this.totp = new Totp(this);\n }\n\n /**\n * Get CSRF token from cookies (for SessionAuthentication).\n *\n * Returns null if cookie doesn't exist (JWT-only auth).\n */\n getCsrfToken(): string | null {\n const name = 'csrftoken';\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n /**\n * Get the base URL for building streaming/download URLs.\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Get JWT token for URL authentication (used in streaming endpoints).\n * Returns null if no token getter is configured or no token is available.\n */\n getToken(): string | null {\n return this.tokenGetter ? this.tokenGetter() : null;\n }\n\n /**\n * Make HTTP request with Django CSRF and session handling.\n * Automatically retries on network errors and 5xx server errors.\n */\n async request<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Wrap request in retry logic if configured\n if (this.retryConfig) {\n return withRetry(() => this._makeRequest<T>(method, path, options), {\n ...this.retryConfig,\n onFailedAttempt: (info) => {\n // Log retry attempts\n if (this.logger) {\n this.logger.warn(\n `Retry attempt ${info.attemptNumber}/${info.retriesLeft + info.attemptNumber} ` +\n `for ${method} ${path}: ${info.error.message}`\n );\n }\n // Call user's onFailedAttempt if provided\n this.retryConfig?.onFailedAttempt?.(info);\n },\n });\n }\n\n // No retry configured, make request directly\n return this._makeRequest<T>(method, path, options);\n }\n\n /**\n * Internal request method (without retry wrapper).\n * Used by request() method with optional retry logic.\n */\n private async _makeRequest<T>(\n method: string,\n path: string,\n options?: {\n params?: Record<string, any>;\n body?: any;\n formData?: FormData;\n binaryBody?: Blob | ArrayBuffer;\n headers?: Record<string, string>;\n }\n ): Promise<T> {\n // Build URL - handle both absolute and relative paths\n // When baseUrl is empty (static builds), path is used as-is (relative to current origin)\n const url = this.baseUrl ? `${this.baseUrl}${path}` : path;\n const startTime = Date.now();\n\n // Build headers - start with custom headers from options\n const headers: Record<string, string> = {\n ...(options?.headers || {})\n };\n\n // Don't set Content-Type for FormData/binaryBody (browser will set it with boundary)\n if (!options?.formData && !options?.binaryBody && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n // CSRF not needed - SessionAuthentication not enabled in DRF config\n // Your API uses JWT/Token authentication (no CSRF required)\n\n // Log request\n if (this.logger) {\n this.logger.logRequest({\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n });\n }\n\n try {\n // Make request via HTTP adapter\n const response = await this.httpClient.request<T>({\n method,\n url: url,\n headers,\n params: options?.params,\n body: options?.body,\n formData: options?.formData,\n binaryBody: options?.binaryBody,\n });\n\n const duration = Date.now() - startTime;\n\n // Check for HTTP errors\n if (response.status >= 400) {\n const error = new APIError(\n response.status,\n response.statusText,\n response.data,\n url\n );\n\n // Log error\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: error.message,\n statusCode: response.status,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw error;\n }\n\n // Log successful response\n if (this.logger) {\n this.logger.logResponse(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n return response.data as T;\n } catch (error) {\n const duration = Date.now() - startTime;\n\n // Re-throw APIError as-is\n if (error instanceof APIError) {\n throw error;\n }\n\n // Classify network error using PerformanceResourceTiming.\n // Browser intentionally makes CORS errors indistinguishable from network failures\n // (same TypeError: \"Failed to fetch\") for security reasons. We use PerformanceResourceTiming\n // as the best available heuristic:\n // - Entry exists with responseStatus === 0 → request reached server, JS blocked → likely CORS\n // - No entry / entry missing → connection never established → server unavailable / DNS / offline\n // All cases are dispatched as 'network-error' with a `possibly_cors` flag.\n let possiblyCors = false;\n if (error instanceof TypeError && typeof window !== 'undefined') {\n try {\n const isCrossOrigin = (() => {\n try { return new URL(url).origin !== window.location.origin; } catch { return false; }\n })();\n if (isCrossOrigin) {\n const entries = performance.getEntriesByName(url, 'resource');\n if (entries.length > 0) {\n const last = entries[entries.length - 1] as PerformanceResourceTiming;\n possiblyCors = 'responseStatus' in last && (last as any).responseStatus === 0;\n }\n }\n } catch { /* ignore — PerformanceResourceTiming not available */ }\n }\n\n if (this.logger) {\n this.logger.error(`⚠️ Network Error: ${method} ${url}`);\n this.logger.error(` → ${error instanceof Error ? error.message : String(error)}`);\n if (possiblyCors) {\n this.logger.error(` → Possibly blocked by CORS policy (configure CORS on the server)`);\n }\n }\n\n // Dispatch network-error event with possibly_cors hint\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('network-error', {\n detail: {\n url: url,\n method: method,\n error: error instanceof Error ? error.message : String(error),\n possibly_cors: possiblyCors,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n }));\n } catch { /* silently ignore — event dispatch must never crash the app */ }\n }\n\n // Wrap other errors as NetworkError\n const networkError = error instanceof Error\n ? new NetworkError(error.message, url, error)\n : new NetworkError('Unknown error', url);\n\n // Detailed logging via logger.logError\n if (this.logger) {\n this.logger.logError(\n {\n method,\n url: url,\n headers,\n body: options?.formData || options?.body,\n timestamp: startTime,\n },\n {\n message: networkError.message,\n duration,\n timestamp: Date.now(),\n }\n );\n }\n\n throw networkError;\n }\n }\n}\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Storage adapters for cross-platform token storage.\n *\n * Supports:\n * - LocalStorage (browser)\n * - Cookies (SSR/browser)\n * - Memory (Node.js/Electron/testing)\n */\n\nimport type { APILogger } from './logger';\n\n/**\n * Storage adapter interface for cross-platform token storage.\n */\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/**\n * LocalStorage adapter with safe try-catch for browser environments.\n * Works in modern browsers with localStorage support.\n * \n * Note: This adapter uses window.localStorage and should only be used in browser/client environments.\n * For server-side usage, use MemoryStorageAdapter or CookieStorageAdapter instead.\n */\nexport class LocalStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n const value = localStorage.getItem(key);\n this.logger?.debug(`LocalStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n } catch (error) {\n this.logger?.error('LocalStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(key, value);\n this.logger?.debug(`LocalStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.removeItem(key);\n this.logger?.debug(`LocalStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('LocalStorage not available: window.localStorage is undefined');\n }\n } catch (error) {\n this.logger?.error('LocalStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * Cookie-based storage adapter for SSR and browser environments.\n * Useful for Next.js, Nuxt.js, and other SSR frameworks.\n */\nexport class CookieStorageAdapter implements StorageAdapter {\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n try {\n if (typeof document === 'undefined') {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n return null;\n }\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts.length === 2) {\n const result = parts.pop()?.split(';').shift() || null;\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): ${result ? 'found' : 'not found'}`);\n return result;\n }\n this.logger?.debug(`CookieStorage.getItem(\"${key}\"): not found`);\n } catch (error) {\n this.logger?.error('CookieStorage.getItem failed:', error);\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=${value}; path=/; max-age=31536000`;\n this.logger?.debug(`CookieStorage.setItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.setItem failed:', error);\n }\n }\n\n removeItem(key: string): void {\n try {\n if (typeof document !== 'undefined') {\n document.cookie = `${key}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n this.logger?.debug(`CookieStorage.removeItem(\"${key}\"): success`);\n } else {\n this.logger?.warn('Cookies not available: document is undefined (SSR context?)');\n }\n } catch (error) {\n this.logger?.error('CookieStorage.removeItem failed:', error);\n }\n }\n}\n\n/**\n * In-memory storage adapter for Node.js, Electron, and testing environments.\n * Data is stored in RAM and cleared when process exits.\n */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private storage: Map<string, string> = new Map();\n private logger?: APILogger;\n\n constructor(logger?: APILogger) {\n this.logger = logger;\n }\n\n getItem(key: string): string | null {\n const value = this.storage.get(key) || null;\n this.logger?.debug(`MemoryStorage.getItem(\"${key}\"): ${value ? 'found' : 'not found'}`);\n return value;\n }\n\n setItem(key: string, value: string): void {\n this.storage.set(key, value);\n this.logger?.debug(`MemoryStorage.setItem(\"${key}\"): success`);\n }\n\n removeItem(key: string): void {\n this.storage.delete(key);\n this.logger?.debug(`MemoryStorage.removeItem(\"${key}\"): success`);\n }\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * * `pending` - Pending Confirmation\n * * `active` - Active\n * * `disabled` - Disabled\n */\nexport enum DeviceListStatus {\n PENDING = \"pending\",\n ACTIVE = \"active\",\n DISABLED = \"disabled\",\n}\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Zod Schemas - Runtime validation and type inference\n *\n * Auto-generated from OpenAPI specification.\n * Provides runtime validation for API requests and responses.\n *\n * Usage:\n * ```typescript\n * import { UserSchema } from './schemas'\n *\n * // Validate data\n * const user = UserSchema.parse(data)\n *\n * // Type inference\n * type User = z.infer<typeof UserSchema>\n * ```\n */\n\nexport * from './BackupCodesRegenerateRequest.schema'\nexport * from './BackupCodesRegenerateResponse.schema'\nexport * from './BackupCodesStatus.schema'\nexport * from './ConfirmSetupRequest.schema'\nexport * from './ConfirmSetupResponse.schema'\nexport * from './DeviceList.schema'\nexport * from './DeviceListResponse.schema'\nexport * from './DisableRequest.schema'\nexport * from './PaginatedDeviceListResponseList.schema'\nexport * from './SetupRequest.schema'\nexport * from './SetupResponse.schema'\nexport * from './TotpVerifyUser.schema'\nexport * from './VerifyBackupRequest.schema'\nexport * from './VerifyRequest.schema'\nexport * from './VerifyResponse.schema'\n","/**\n * Zod schema for BackupCodesRegenerateRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for regenerating backup codes.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for regenerating backup codes.\n */\nexport const BackupCodesRegenerateRequestSchema = z.object({\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type BackupCodesRegenerateRequest = z.infer<typeof BackupCodesRegenerateRequestSchema>","/**\n * Zod schema for BackupCodesRegenerateResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for backup codes regeneration.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for backup codes regeneration.\n */\nexport const BackupCodesRegenerateResponseSchema = z.object({\n backup_codes: z.array(z.string()),\n warning: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type BackupCodesRegenerateResponse = z.infer<typeof BackupCodesRegenerateResponseSchema>","/**\n * Zod schema for BackupCodesStatus\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for backup codes status.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for backup codes status.\n */\nexport const BackupCodesStatusSchema = z.object({\n remaining_count: z.number().int(),\n total_generated: z.number().int(),\n warning: z.string().nullable().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type BackupCodesStatus = z.infer<typeof BackupCodesStatusSchema>","/**\n * Zod schema for ConfirmSetupRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for confirming 2FA setup with first code.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for confirming 2FA setup with first code.\n */\nexport const ConfirmSetupRequestSchema = z.object({\n device_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type ConfirmSetupRequest = z.infer<typeof ConfirmSetupRequestSchema>","/**\n * Zod schema for ConfirmSetupResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for setup confirmation.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for setup confirmation.\n */\nexport const ConfirmSetupResponseSchema = z.object({\n message: z.string(),\n backup_codes: z.array(z.string()),\n backup_codes_warning: z.string(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type ConfirmSetupResponse = z.infer<typeof ConfirmSetupResponseSchema>","/**\n * Zod schema for DeviceList\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for listing TOTP devices.\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Serializer for listing TOTP devices.\n */\nexport const DeviceListSchema = z.object({\n id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n name: z.string(),\n is_primary: z.boolean(),\n status: z.nativeEnum(Enums.DeviceListStatus),\n created_at: z.string().datetime({ offset: true }),\n confirmed_at: z.string().datetime({ offset: true }).nullable(),\n last_used_at: z.string().datetime({ offset: true }).nullable(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type DeviceList = z.infer<typeof DeviceListSchema>","/**\n * Zod schema for DeviceListResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for device list endpoint.\n * */\nimport { z } from 'zod'\nimport { DeviceListSchema } from './DeviceList.schema'\n\n/**\n * Response serializer for device list endpoint.\n */\nexport const DeviceListResponseSchema = z.object({\n devices: z.array(DeviceListSchema),\n has_2fa_enabled: z.boolean(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type DeviceListResponse = z.infer<typeof DeviceListResponseSchema>","/**\n * Zod schema for DisableRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for completely disabling 2FA.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for completely disabling 2FA.\n */\nexport const DisableRequestSchema = z.object({\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type DisableRequest = z.infer<typeof DisableRequestSchema>","/**\n * Zod schema for PaginatedDeviceListResponseList\n *\n * This schema provides runtime validation and type inference.\n * */\nimport { z } from 'zod'\nimport { DeviceListResponseSchema } from './DeviceListResponse.schema'\n\nexport const PaginatedDeviceListResponseListSchema = z.object({\n count: z.number().int(),\n page: z.number().int(),\n pages: z.number().int(),\n page_size: z.number().int(),\n has_next: z.boolean(),\n has_previous: z.boolean(),\n next_page: z.number().int().nullable().optional(),\n previous_page: z.number().int().nullable().optional(),\n results: z.array(DeviceListResponseSchema),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type PaginatedDeviceListResponseList = z.infer<typeof PaginatedDeviceListResponseListSchema>","/**\n * Zod schema for SetupRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for starting 2FA setup.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for starting 2FA setup.\n */\nexport const SetupRequestSchema = z.object({\n device_name: z.string().min(1).max(100).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type SetupRequest = z.infer<typeof SetupRequestSchema>","/**\n * Zod schema for SetupResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for setup initiation.\n * */\nimport { z } from 'zod'\n\n/**\n * Response serializer for setup initiation.\n */\nexport const SetupResponseSchema = z.object({\n device_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n secret: z.string(),\n provisioning_uri: z.string(),\n qr_code_base64: z.string(),\n expires_in: z.number().int(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type SetupResponse = z.infer<typeof SetupResponseSchema>","/**\n * Zod schema for TotpVerifyUser\n *\n * This schema provides runtime validation and type inference.\n * * User data returned after 2FA verification.\n * */\nimport { z } from 'zod'\n\n/**\n * User data returned after 2FA verification.\n */\nexport const TotpVerifyUserSchema = z.object({\n id: z.number().int(),\n email: z.email(),\n first_name: z.string().max(50).optional(),\n last_name: z.string().max(50).optional(),\n full_name: z.string(),\n initials: z.string(),\n display_username: z.string(),\n company: z.string().max(100).optional(),\n phone: z.string().max(20).optional(),\n position: z.string().max(100).optional(),\n language: z.string().max(10).optional(),\n avatar: z.string().nullable(),\n is_staff: z.boolean(),\n is_superuser: z.boolean(),\n date_joined: z.string().datetime({ offset: true }),\n last_login: z.string().datetime({ offset: true }).nullable(),\n unanswered_messages_count: z.number().int(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type TotpVerifyUser = z.infer<typeof TotpVerifyUserSchema>","/**\n * Zod schema for VerifyBackupRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for backup code verification during login.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for backup code verification during login.\n */\nexport const VerifyBackupRequestSchema = z.object({\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n backup_code: z.string().min(8).max(8),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type VerifyBackupRequest = z.infer<typeof VerifyBackupRequestSchema>","/**\n * Zod schema for VerifyRequest\n *\n * This schema provides runtime validation and type inference.\n * * Serializer for TOTP code verification during login.\n * */\nimport { z } from 'zod'\n\n/**\n * Serializer for TOTP code verification during login.\n */\nexport const VerifyRequestSchema = z.object({\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),\n code: z.string().min(6).max(6),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type VerifyRequest = z.infer<typeof VerifyRequestSchema>","/**\n * Zod schema for VerifyResponse\n *\n * This schema provides runtime validation and type inference.\n * * Response serializer for successful 2FA verification.\n * */\nimport { z } from 'zod'\nimport { TotpVerifyUserSchema } from './TotpVerifyUser.schema'\n\n/**\n * Response serializer for successful 2FA verification.\n */\nexport const VerifyResponseSchema = z.object({\n message: z.string(),\n access_token: z.string(),\n refresh_token: z.string(),\n user: TotpVerifyUserSchema,\n remaining_backup_codes: z.number().int().optional(),\n warning: z.string().optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type VerifyResponse = z.infer<typeof VerifyResponseSchema>","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed Fetchers - Universal API functions\n *\n * Auto-generated from OpenAPI specification.\n * These functions work in any JavaScript environment.\n *\n * Features:\n * - Runtime validation with Zod\n * - Type-safe parameters and responses\n * - Works with any data-fetching library (SWR, React Query, etc)\n * - Server Component compatible\n *\n * Usage:\n * ```typescript\n * import * as fetchers from './fetchers'\n *\n * // Direct usage\n * const user = await fetchers.getUser(1)\n *\n * // With SWR\n * const { data } = useSWR('user-1', () => fetchers.getUser(1))\n *\n * // With React Query\n * const { data } = useQuery(['user', 1], () => fetchers.getUser(1))\n * ```\n */\n\nexport * from './totp'\nexport * from './totp__backup_codes'\nexport * from './totp__totp_management'\nexport * from './totp__totp_setup'\nexport * from './totp__totp_verification'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Global API Instance - Singleton configuration with auto-configuration support\n *\n * This module provides a global API instance that auto-configures from\n * environment variables or can be configured manually.\n *\n * AUTO-CONFIGURATION (recommended):\n * Set one of these environment variables and the API will auto-configure:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n *\n * Then just use fetchers and hooks directly:\n * ```typescript\n * import { getUsers } from './_utils/fetchers'\n * const users = await getUsers({ page: 1 })\n * ```\n *\n * MANUAL CONFIGURATION:\n * ```typescript\n * import { configureAPI } from './api-instance'\n *\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'your-jwt-token'\n * })\n * ```\n *\n * For SSR or multiple instances:\n * ```typescript\n * import { API } from './index'\n * import { getUsers } from './_utils/fetchers'\n *\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\n\nimport { API, type APIOptions } from './index'\n\nlet globalAPI: API | null = null\nlet autoConfigAttempted = false\n\n/**\n * Auto-configure from environment variable if available (Next.js pattern)\n * This allows hooks and fetchers to work without explicit configureAPI() call\n *\n * Supported environment variables:\n * - NEXT_PUBLIC_API_URL (Next.js)\n * - VITE_API_URL (Vite)\n * - REACT_APP_API_URL (Create React App)\n * - API_URL (generic)\n */\nfunction tryAutoConfigureFromEnv(): void {\n // Only attempt once\n if (autoConfigAttempted) return\n autoConfigAttempted = true\n\n // Skip if already configured\n if (globalAPI) return\n\n // Skip if process is not available (pure browser without bundler)\n if (typeof process === 'undefined' || !process.env) return\n\n // Try different environment variable patterns\n const baseUrl =\n process.env.NEXT_PUBLIC_API_URL ||\n process.env.VITE_API_URL ||\n process.env.REACT_APP_API_URL ||\n process.env.API_URL\n\n if (baseUrl) {\n globalAPI = new API(baseUrl)\n }\n}\n\n/**\n * Get the global API instance\n * Auto-configures from environment variables on first call if not manually configured.\n * @throws Error if API is not configured and no env variable is set\n */\nexport function getAPIInstance(): API {\n // Try auto-configuration on first access (lazy initialization)\n tryAutoConfigureFromEnv()\n\n if (!globalAPI) {\n throw new Error(\n 'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\\n\\n' +\n 'Example:\\n' +\n ' import { configureAPI } from \"./api-instance\"\\n' +\n ' configureAPI({ baseUrl: \"https://api.example.com\" })\\n\\n' +\n 'Or set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'\n )\n }\n return globalAPI\n}\n\n/**\n * Check if API is configured (or can be auto-configured)\n */\nexport function isAPIConfigured(): boolean {\n tryAutoConfigureFromEnv()\n return globalAPI !== null\n}\n\n/**\n * Configure the global API instance\n *\n * @param baseUrl - Base URL for the API\n * @param options - Optional configuration (storage, retry, logger)\n *\n * @example\n * ```typescript\n * configureAPI({\n * baseUrl: 'https://api.example.com',\n * token: 'jwt-token',\n * options: {\n * retryConfig: { maxRetries: 3 },\n * loggerConfig: { enabled: true }\n * }\n * })\n * ```\n */\nexport function configureAPI(config: {\n baseUrl: string\n token?: string\n refreshToken?: string\n options?: APIOptions\n}): API {\n globalAPI = new API(config.baseUrl, config.options)\n\n if (config.token) {\n globalAPI.setToken(config.token, config.refreshToken)\n }\n\n return globalAPI\n}\n\n/**\n * Reconfigure the global API instance with new settings\n * Useful for updating tokens or base URL\n */\nexport function reconfigureAPI(updates: {\n baseUrl?: string\n token?: string\n refreshToken?: string\n}): API {\n const instance = getAPIInstance()\n\n if (updates.baseUrl) {\n instance.setBaseUrl(updates.baseUrl)\n }\n\n if (updates.token) {\n instance.setToken(updates.token, updates.refreshToken)\n }\n\n return instance\n}\n\n/**\n * Clear tokens from the global API instance\n */\nexport function clearAPITokens(): void {\n const instance = getAPIInstance()\n instance.clearTokens()\n}\n\n/**\n * Reset the global API instance\n * Useful for testing or logout scenarios\n */\nexport function resetAPI(): void {\n if (globalAPI) {\n globalAPI.clearTokens()\n }\n globalAPI = null\n}","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Totp\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method DELETE\n * @path /cfg/totp/devices/{id}/\n */\nexport async function deleteTotpDevicesDestroy( id: string, client?: any\n): Promise<void> {\n const api = client || getAPIInstance()\n const response = await api.totp.devicesDestroy(id)\n return response\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for Backup Codes\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { BackupCodesRegenerateRequestSchema, type BackupCodesRegenerateRequest } from '../schemas/BackupCodesRegenerateRequest.schema'\nimport { BackupCodesRegenerateResponseSchema, type BackupCodesRegenerateResponse } from '../schemas/BackupCodesRegenerateResponse.schema'\nimport { BackupCodesStatusSchema, type BackupCodesStatus } from '../schemas/BackupCodesStatus.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/backup-codes/\n */\nexport async function getTotpBackupCodesRetrieve( client?: any\n): Promise<BackupCodesStatus> {\n const api = client || getAPIInstance()\n const response = await api.backup_codes.totpBackupCodesRetrieve()\n try {\n return BackupCodesStatusSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getTotpBackupCodesRetrieve\\nPath: /cfg/totp/backup-codes/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getTotpBackupCodesRetrieve',\n path: '/cfg/totp/backup-codes/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/backup-codes/regenerate/\n */\nexport async function createTotpBackupCodesRegenerateCreate( data: BackupCodesRegenerateRequest, client?: any\n): Promise<BackupCodesRegenerateResponse> {\n const api = client || getAPIInstance()\n const response = await api.backup_codes.totpBackupCodesRegenerateCreate(data)\n try {\n return BackupCodesRegenerateResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpBackupCodesRegenerateCreate\\nPath: /cfg/totp/backup-codes/regenerate/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpBackupCodesRegenerateCreate',\n path: '/cfg/totp/backup-codes/regenerate/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for TOTP Management\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { DisableRequestSchema, type DisableRequest } from '../schemas/DisableRequest.schema'\nimport { PaginatedDeviceListResponseListSchema, type PaginatedDeviceListResponseList } from '../schemas/PaginatedDeviceListResponseList.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/devices/\n */\nexport async function getTotpDevicesList( params?: { ordering?: string; page?: number; page_size?: number; search?: string }, client?: any\n): Promise<PaginatedDeviceListResponseList> {\n const api = client || getAPIInstance()\n const response = await api.totp_management.totpDevicesList(params?.ordering, params?.page, params?.page_size, params?.search)\n try {\n return PaginatedDeviceListResponseListSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`getTotpDevicesList\\nPath: /cfg/totp/devices/\\nMethod: GET`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'getTotpDevicesList',\n path: '/cfg/totp/devices/',\n method: 'GET',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/disable/\n */\nexport async function createTotpDisableCreate( data: DisableRequest, client?: any\n): Promise<any> {\n const api = client || getAPIInstance()\n const response = await api.totp_management.totpDisableCreate(data)\n return response\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for TOTP Setup\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { ConfirmSetupRequestSchema, type ConfirmSetupRequest } from '../schemas/ConfirmSetupRequest.schema'\nimport { ConfirmSetupResponseSchema, type ConfirmSetupResponse } from '../schemas/ConfirmSetupResponse.schema'\nimport { SetupRequestSchema, type SetupRequest } from '../schemas/SetupRequest.schema'\nimport { SetupResponseSchema, type SetupResponse } from '../schemas/SetupResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/\n */\nexport async function createTotpSetupCreate( data: SetupRequest, client?: any\n): Promise<SetupResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_setup.create(data)\n try {\n return SetupResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpSetupCreate\\nPath: /cfg/totp/setup/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpSetupCreate',\n path: '/cfg/totp/setup/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/confirm/\n */\nexport async function createTotpSetupConfirmCreate( data: ConfirmSetupRequest, client?: any\n): Promise<ConfirmSetupResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_setup.confirmCreate(data)\n try {\n return ConfirmSetupResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpSetupConfirmCreate\\nPath: /cfg/totp/setup/confirm/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpSetupConfirmCreate',\n path: '/cfg/totp/setup/confirm/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Typed fetchers for TOTP Verification\n *\n * Universal functions that work in any environment:\n * - Next.js (App Router / Pages Router / Server Components)\n * - React Native\n * - Node.js backend\n *\n * These fetchers use Zod schemas for runtime validation.\n *\n * Usage:\n * ```typescript\n * // Configure API once (in your app entry point)\n * import { configureAPI } from '../../api-instance'\n * configureAPI({ baseUrl: 'https://api.example.com' })\n *\n * // Then use fetchers anywhere\n * const users = await getUsers({ page: 1 })\n *\n * // With SWR\n * const { data } = useSWR(['users', params], () => getUsers(params))\n *\n * // With React Query\n * const { data } = useQuery(['users', params], () => getUsers(params))\n *\n * // In Server Component or SSR (pass custom client)\n * import { API } from '../../index'\n * const api = new API('https://api.example.com')\n * const users = await getUsers({ page: 1 }, api)\n * ```\n */\nimport { consola } from 'consola'\nimport { VerifyBackupRequestSchema, type VerifyBackupRequest } from '../schemas/VerifyBackupRequest.schema'\nimport { VerifyRequestSchema, type VerifyRequest } from '../schemas/VerifyRequest.schema'\nimport { VerifyResponseSchema, type VerifyResponse } from '../schemas/VerifyResponse.schema'\nimport { getAPIInstance } from '../../api-instance'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/\n */\nexport async function createTotpVerifyCreate( data: VerifyRequest, client?: any\n): Promise<VerifyResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_verification.totpVerifyCreate(data)\n try {\n return VerifyResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpVerifyCreate\\nPath: /cfg/totp/verify/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpVerifyCreate',\n path: '/cfg/totp/verify/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/backup/\n */\nexport async function createTotpVerifyBackupCreate( data: VerifyBackupRequest, client?: any\n): Promise<VerifyResponse> {\n const api = client || getAPIInstance()\n const response = await api.totp_verification.totpVerifyBackupCreate(data)\n try {\n return VerifyResponseSchema.parse(response)\n } catch (error) {\n // Zod validation error - log detailed information\n consola.error('❌ Zod Validation Failed');\n consola.box(`createTotpVerifyBackupCreate\\nPath: /cfg/totp/verify/backup/\\nMethod: POST`);\n\n if (error instanceof Error && 'issues' in error && Array.isArray((error as any).issues)) {\n consola.error('Validation Issues:');\n (error as any).issues.forEach((issue: any, index: number) => {\n consola.error(` ${index + 1}. ${issue.path.join('.') || 'root'}`);\n consola.error(` ├─ Message: ${issue.message}`);\n if (issue.expected) consola.error(` ├─ Expected: ${issue.expected}`);\n if (issue.received) consola.error(` └─ Received: ${issue.received}`);\n });\n }\n\n consola.error('Response data:', response);\n\n // Dispatch browser CustomEvent (only if window is defined)\n if (typeof window !== 'undefined' && error instanceof Error && 'issues' in error) {\n try {\n const event = new CustomEvent('zod-validation-error', {\n detail: {\n operation: 'createTotpVerifyBackupCreate',\n path: '/cfg/totp/verify/backup/',\n method: 'POST',\n error: error,\n response: response,\n timestamp: new Date(),\n },\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(event);\n } catch (eventError) {\n // Silently fail - event dispatch should never crash the app\n consola.warn('Failed to dispatch validation error event:', eventError);\n }\n }\n\n // Re-throw the error\n throw error;\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n/**\n * Django CFG API - API Client with JWT Management\n *\n * Usage:\n * ```typescript\n * import { API } from './api';\n *\n * const api = new API('https://api.example.com');\n *\n * // Set JWT token\n * api.setToken('your-jwt-token', 'refresh-token');\n *\n * // Use API\n * const posts = await api.posts.list();\n * const user = await api.users.retrieve(1);\n *\n * // Check authentication\n * if (api.isAuthenticated()) {\n * // ...\n * }\n *\n * // Custom storage with logging (for Electron/Node.js)\n * import { MemoryStorageAdapter, APILogger } from './storage';\n * const logger = new APILogger({ enabled: true, logLevel: 'debug' });\n * const api = new API('https://api.example.com', {\n * storage: new MemoryStorageAdapter(logger),\n * loggerConfig: { enabled: true, logLevel: 'debug' }\n * });\n *\n * // Get OpenAPI schema\n * const schema = api.getSchema();\n * ```\n */\n\nimport { APIClient } from \"./client\";\nimport {\n StorageAdapter,\n LocalStorageAdapter,\n CookieStorageAdapter,\n MemoryStorageAdapter\n} from \"./storage\";\nimport type { RetryConfig } from \"./retry\";\nimport type { LoggerConfig } from \"./logger\";\nimport { APILogger } from \"./logger\";\nimport { BackupCodes } from \"./totp__backup_codes/client\";\nimport { TotpManagement } from \"./totp__totp_management/client\";\nimport { TotpSetup } from \"./totp__totp_setup/client\";\nimport { TotpVerification } from \"./totp__totp_verification/client\";\nimport { Totp } from \"./totp/client\";\nexport * as BackupCodesTypes from \"./totp__backup_codes/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpManagementTypes from \"./totp__totp_management/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpSetupTypes from \"./totp__totp_setup/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpVerificationTypes from \"./totp__totp_verification/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as TotpTypes from \"./totp/models\";\n// Note: Direct exports (export * from) are removed to avoid duplicate type conflicts\n// Use namespace exports like CfgAccountsTypes.User or import from specific modules\nexport * as Enums from \"./enums\";\n\n// Re-export Zod schemas for runtime validation\nexport * as Schemas from \"./_utils/schemas\";\n// Also export all schemas directly for convenience\nexport * from \"./_utils/schemas\";\n\n// Re-export Zod validation events for browser integration\nexport type { ValidationErrorDetail, ValidationErrorEvent } from \"./validation-events\";\nexport { dispatchValidationError, onValidationError, formatZodError } from \"./validation-events\";\n\n// Re-export typed fetchers for universal usage\nexport * as Fetchers from \"./_utils/fetchers\";\nexport * from \"./_utils/fetchers\";\n\n// Re-export API instance configuration functions\nexport {\n configureAPI,\n getAPIInstance,\n reconfigureAPI,\n clearAPITokens,\n resetAPI,\n isAPIConfigured\n} from \"./api-instance\";\n// NOTE: SWR hooks are generated in ./_utils/hooks/ but NOT exported here to keep\n// the main bundle server-safe. Import hooks directly from the hooks directory:\n// import { useUsers } from './_utils/hooks';\n// Or use a separate entry point like '@djangocfg/api/hooks' for client components.\n\n// Re-export core client\nexport { APIClient };\n\n// Re-export storage adapters for convenience\nexport type { StorageAdapter };\nexport { LocalStorageAdapter, CookieStorageAdapter, MemoryStorageAdapter };\n\n// Re-export error classes for convenience\nexport { APIError, NetworkError } from \"./errors\";\n\n// Re-export HTTP adapters for custom implementations\nexport type { HttpClientAdapter, HttpRequest, HttpResponse } from \"./http\";\nexport { FetchAdapter, KeepAliveFetchAdapter } from \"./http\";\n\n// Re-export logger types and classes\nexport type { LoggerConfig, RequestLog, ResponseLog, ErrorLog } from \"./logger\";\nexport { APILogger } from \"./logger\";\n\n// Re-export retry configuration and utilities\nexport type { RetryConfig, FailedAttemptInfo } from \"./retry\";\nexport { withRetry, shouldRetry, DEFAULT_RETRY_CONFIG } from \"./retry\";\n\nexport const TOKEN_KEY = \"auth_token\";\nexport const REFRESH_TOKEN_KEY = \"refresh_token\";\n\n/** Auto-detect locale from cookie NEXT_LOCALE or navigator.language */\nfunction detectLocale(): string | null {\n try {\n if (typeof document !== 'undefined') {\n const match = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (match) return match[1];\n }\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n } catch {}\n return null;\n}\n\nexport interface APIOptions {\n /** Custom storage adapter (defaults to LocalStorageAdapter) */\n storage?: StorageAdapter;\n /** Custom HTTP client adapter (defaults to FetchAdapter) */\n httpClient?: HttpClientAdapter;\n /** Retry configuration for failed requests */\n retryConfig?: RetryConfig;\n /** Logger configuration */\n loggerConfig?: Partial<LoggerConfig>;\n /** Locale for Accept-Language header (e.g. 'en', 'ko', 'ru') */\n locale?: string;\n}\n\nexport class API {\n private baseUrl: string;\n private _client: APIClient;\n private _token: string | null = null;\n private _refreshToken: string | null = null;\n private _locale: string | null = null;\n private storage: StorageAdapter;\n private options?: APIOptions;\n\n // Sub-clients\n public backup_codes!: BackupCodes;\n public totp_management!: TotpManagement;\n public totp_setup!: TotpSetup;\n public totp_verification!: TotpVerification;\n public totp!: Totp;\n\n constructor(baseUrl: string, options?: APIOptions) {\n this.baseUrl = baseUrl;\n this.options = options;\n\n // Create logger if config provided\n const logger = options?.loggerConfig ? new APILogger(options.loggerConfig) : undefined;\n\n // Initialize storage with logger\n this.storage = options?.storage || new LocalStorageAdapter(logger);\n\n this._locale = options?.locale || null;\n\n this._loadTokensFromStorage();\n\n // Initialize APIClient with token getter for URL authentication\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Initialize sub-clients from APIClient\n this.backup_codes = this._client.backup_codes;\n this.totp_management = this._client.totp_management;\n this.totp_setup = this._client.totp_setup;\n this.totp_verification = this._client.totp_verification;\n this.totp = this._client.totp;\n }\n\n private _loadTokensFromStorage(): void {\n this._token = this.storage.getItem(TOKEN_KEY);\n this._refreshToken = this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n private _reinitClients(): void {\n this._client = new APIClient(this.baseUrl, {\n httpClient: this.options?.httpClient,\n retryConfig: this.options?.retryConfig,\n loggerConfig: this.options?.loggerConfig,\n tokenGetter: () => this.getToken(),\n });\n\n // Always inject auth header wrapper (reads token dynamically from storage)\n this._injectAuthHeader();\n\n // Reinitialize sub-clients\n this.backup_codes = this._client.backup_codes;\n this.totp_management = this._client.totp_management;\n this.totp_setup = this._client.totp_setup;\n this.totp_verification = this._client.totp_verification;\n this.totp = this._client.totp;\n }\n\n private _injectAuthHeader(): void {\n // Override request method to inject auth header\n const originalRequest = this._client.request.bind(this._client);\n this._client.request = async <T>(\n method: string,\n path: string,\n options?: { params?: Record<string, any>; body?: any; formData?: FormData; headers?: Record<string, string> }\n ): Promise<T> => {\n // Read token from storage dynamically (supports JWT injection after instantiation)\n const token = this.getToken();\n const locale = this._locale || detectLocale();\n const mergedOptions = {\n ...options,\n headers: {\n ...(options?.headers || {}),\n ...(token ? { 'Authorization': `Bearer ${token}` } : {}),\n ...(locale ? { 'Accept-Language': locale } : {}),\n },\n };\n\n return originalRequest(method, path, mergedOptions);\n };\n }\n\n /**\n * Get current JWT token\n */\n getToken(): string | null {\n return this.storage.getItem(TOKEN_KEY);\n }\n\n /**\n * Get current refresh token\n */\n getRefreshToken(): string | null {\n return this.storage.getItem(REFRESH_TOKEN_KEY);\n }\n\n /**\n * Set JWT token and refresh token\n * @param token - JWT access token\n * @param refreshToken - JWT refresh token (optional)\n */\n setToken(token: string, refreshToken?: string): void {\n this._token = token;\n this.storage.setItem(TOKEN_KEY, token);\n\n if (refreshToken) {\n this._refreshToken = refreshToken;\n this.storage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n\n // Reinitialize clients with new token\n this._reinitClients();\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this._token = null;\n this._refreshToken = null;\n this.storage.removeItem(TOKEN_KEY);\n this.storage.removeItem(REFRESH_TOKEN_KEY);\n\n // Reinitialize clients without token\n this._reinitClients();\n }\n\n /**\n * Check if user is authenticated\n */\n isAuthenticated(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Update base URL and reinitialize clients\n * @param url - New base URL\n */\n setBaseUrl(url: string): void {\n this.baseUrl = url;\n this._reinitClients();\n }\n\n /**\n * Get current base URL\n */\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n /**\n * Set locale for Accept-Language header\n * @param locale - Locale string (e.g. 'en', 'ko', 'ru') or null to clear\n */\n setLocale(locale: string | null): void {\n this._locale = locale;\n }\n\n /**\n * Get current locale\n */\n getLocale(): string | null {\n return this._locale;\n }\n\n /**\n * Get OpenAPI schema path\n * @returns Path to the OpenAPI schema JSON file\n *\n * Note: The OpenAPI schema is available in the schema.json file.\n * You can load it dynamically using:\n * ```typescript\n * const schema = await fetch('./schema.json').then(r => r.json());\n * // or using fs in Node.js:\n * // const schema = JSON.parse(fs.readFileSync('./schema.json', 'utf-8'));\n * ```\n */\n getSchemaPath(): string {\n return './schema.json';\n }\n}\n\nexport default API;","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Auth\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts__auth'\nimport type { API } from '../../index'\nimport type { TokenRefresh } from '../schemas/TokenRefresh.schema'\nimport type { TokenRefreshRequest } from '../schemas/TokenRefreshRequest.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/token/refresh/\n */\nexport function useCreateAccountsTokenRefreshCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: TokenRefreshRequest, client?: API): Promise<TokenRefresh> => {\n const result = await Fetchers.createAccountsTokenRefreshCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-token-refresh')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Oauth\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts__oauth'\nimport type { API } from '../../index'\nimport type { OAuthAuthorizeRequestRequest } from '../schemas/OAuthAuthorizeRequestRequest.schema'\nimport type { OAuthAuthorizeResponse } from '../schemas/OAuthAuthorizeResponse.schema'\nimport type { OAuthCallbackRequestRequest } from '../schemas/OAuthCallbackRequestRequest.schema'\nimport type { OAuthDisconnectRequestRequest } from '../schemas/OAuthDisconnectRequestRequest.schema'\nimport type { OAuthProvidersResponse } from '../schemas/OAuthProvidersResponse.schema'\nimport type { OAuthTokenResponse } from '../schemas/OAuthTokenResponse.schema'\n\n/**\n * List OAuth connections\n *\n * @method GET\n * @path /cfg/accounts/oauth/connections/\n */\nexport function useAccountsOauthConnectionsList(client?: API): ReturnType<typeof useSWR<any>> {\n return useSWR<any>(\n 'cfg-accounts-oauth-connections',\n () => Fetchers.getAccountsOauthConnectionsList(client)\n )\n}\n\n\n/**\n * Disconnect OAuth provider\n *\n * @method POST\n * @path /cfg/accounts/oauth/disconnect/\n */\nexport function useCreateAccountsOauthDisconnectCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OAuthDisconnectRequestRequest, client?: API): Promise<any> => {\n const result = await Fetchers.createAccountsOauthDisconnectCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-oauth-disconnect')\n return result\n }\n}\n\n\n/**\n * Start GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/authorize/\n */\nexport function useCreateAccountsOauthGithubAuthorizeCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OAuthAuthorizeRequestRequest, client?: API): Promise<OAuthAuthorizeResponse> => {\n const result = await Fetchers.createAccountsOauthGithubAuthorizeCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-oauth-github-authorize')\n return result\n }\n}\n\n\n/**\n * Complete GitHub OAuth\n *\n * @method POST\n * @path /cfg/accounts/oauth/github/callback/\n */\nexport function useCreateAccountsOauthGithubCallbackCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OAuthCallbackRequestRequest, client?: API): Promise<OAuthTokenResponse> => {\n const result = await Fetchers.createAccountsOauthGithubCallbackCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-oauth-github-callback')\n return result\n }\n}\n\n\n/**\n * List OAuth providers\n *\n * @method GET\n * @path /cfg/accounts/oauth/providers/\n */\nexport function useAccountsOauthProvidersRetrieve(client?: API): ReturnType<typeof useSWR<OAuthProvidersResponse>> {\n return useSWR<OAuthProvidersResponse>(\n 'cfg-accounts-oauth-provider',\n () => Fetchers.getAccountsOauthProvidersRetrieve(client)\n )\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for User Profile\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts__user_profile'\nimport type { API } from '../../index'\nimport type { AccountDeleteResponse } from '../schemas/AccountDeleteResponse.schema'\nimport type { CfgAccountsProfileAvatarCreateRequest } from '../schemas/CfgAccountsProfileAvatarCreateRequest.schema'\nimport type { PatchedUserProfileUpdateRequest } from '../schemas/PatchedUserProfileUpdateRequest.schema'\nimport type { User } from '../schemas/User.schema'\nimport type { UserProfileUpdateRequest } from '../schemas/UserProfileUpdateRequest.schema'\n\n/**\n * Get current user profile\n *\n * @method GET\n * @path /cfg/accounts/profile/\n */\nexport function useAccountsProfileRetrieve(client?: API): ReturnType<typeof useSWR<User>> {\n return useSWR<User>(\n 'cfg-accounts-profile',\n () => Fetchers.getAccountsProfileRetrieve(client)\n )\n}\n\n\n/**\n * Upload user avatar\n *\n * @method POST\n * @path /cfg/accounts/profile/avatar/\n */\nexport function useCreateAccountsProfileAvatarCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: CfgAccountsProfileAvatarCreateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.createAccountsProfileAvatarCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile-avatar')\n return result\n }\n}\n\n\n/**\n * Delete user account\n *\n * @method POST\n * @path /cfg/accounts/profile/delete/\n */\nexport function useCreateAccountsProfileDeleteCreate() {\n const { mutate } = useSWRConfig()\n\n return async (client?: API): Promise<AccountDeleteResponse> => {\n const result = await Fetchers.createAccountsProfileDeleteCreate(client)\n // Revalidate related queries\n mutate('cfg-accounts-profile-delete')\n return result\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/partial/\n */\nexport function usePartialUpdateAccountsProfilePartialUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data: UserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.partialUpdateAccountsProfilePartialUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile')\n return result\n }\n}\n\n\n/**\n * Partial update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/partial/\n */\nexport function usePartialUpdateAccountsProfilePartialPartialUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data?: PatchedUserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.partialUpdateAccountsProfilePartialPartialUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile-partial')\n return result\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PUT\n * @path /cfg/accounts/profile/update/\n */\nexport function useUpdateAccountsProfileUpdateUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data: UserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.updateAccountsProfileUpdateUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile')\n return result\n }\n}\n\n\n/**\n * Update user profile\n *\n * @method PATCH\n * @path /cfg/accounts/profile/update/\n */\nexport function usePartialUpdateAccountsProfileUpdatePartialUpdate() {\n const { mutate } = useSWRConfig()\n\n return async (data?: PatchedUserProfileUpdateRequest, client?: API): Promise<User> => {\n const result = await Fetchers.partialUpdateAccountsProfileUpdatePartialUpdate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-profile')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Accounts\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/accounts'\nimport type { API } from '../../index'\nimport type { OTPRequestRequest } from '../schemas/OTPRequestRequest.schema'\nimport type { OTPRequestResponse } from '../schemas/OTPRequestResponse.schema'\nimport type { OTPVerifyRequest } from '../schemas/OTPVerifyRequest.schema'\nimport type { OTPVerifyResponse } from '../schemas/OTPVerifyResponse.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/request/\n */\nexport function useCreateAccountsOtpRequestCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OTPRequestRequest, client?: API): Promise<OTPRequestResponse> => {\n const result = await Fetchers.createAccountsOtpRequestCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-otp-request')\n return result\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/accounts/otp/verify/\n */\nexport function useCreateAccountsOtpVerifyCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: OTPVerifyRequest, client?: API): Promise<OTPVerifyResponse> => {\n const result = await Fetchers.createAccountsOtpVerifyCreate(data, client)\n // Revalidate related queries\n mutate('cfg-accounts-otp-verify')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks - React data fetching hooks\n *\n * Auto-generated from OpenAPI specification.\n * Powered by SWR for automatic caching and revalidation.\n *\n * Features:\n * - Automatic caching and deduplication\n * - Revalidation on focus/reconnect\n * - Optimistic updates\n * - Type-safe parameters and responses\n *\n * Usage:\n * ```typescript\n * import * as hooks from './hooks'\n *\n * // Query hooks (GET)\n * const { data, error, isLoading } = hooks.useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = hooks.useCreateUser()\n * await createUser({ name: 'John' })\n * ```\n */\n\nexport * from './centrifugo__centrifugo_auth'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Centrifugo Auth\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport * as Fetchers from '../fetchers/centrifugo__centrifugo_auth'\nimport type { API } from '../../index'\nimport type { ConnectionTokenResponse } from '../schemas/ConnectionTokenResponse.schema'\n\n/**\n * Get Centrifugo connection token\n *\n * @method GET\n * @path /cfg/centrifugo/auth/token/\n */\nexport function useCentrifugoAuthTokenRetrieve(client?: API): ReturnType<typeof useSWR<ConnectionTokenResponse>> {\n return useSWR<ConnectionTokenResponse>(\n 'cfg-centrifugo-auth-token',\n () => Fetchers.getCentrifugoAuthTokenRetrieve(client)\n )\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks - React data fetching hooks\n *\n * Auto-generated from OpenAPI specification.\n * Powered by SWR for automatic caching and revalidation.\n *\n * Features:\n * - Automatic caching and deduplication\n * - Revalidation on focus/reconnect\n * - Optimistic updates\n * - Type-safe parameters and responses\n *\n * Usage:\n * ```typescript\n * import * as hooks from './hooks'\n *\n * // Query hooks (GET)\n * const { data, error, isLoading } = hooks.useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = hooks.useCreateUser()\n * await createUser({ name: 'John' })\n * ```\n */\n\nexport * from './totp__backup_codes'\nexport * from './totp__totp_management'\nexport * from './totp__totp_setup'\nexport * from './totp__totp_verification'\nexport * from './totp'\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Backup Codes\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__backup_codes'\nimport type { API } from '../../index'\nimport type { BackupCodesRegenerateRequest } from '../schemas/BackupCodesRegenerateRequest.schema'\nimport type { BackupCodesRegenerateResponse } from '../schemas/BackupCodesRegenerateResponse.schema'\nimport type { BackupCodesStatus } from '../schemas/BackupCodesStatus.schema'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/backup-codes/\n */\nexport function useTotpBackupCodesRetrieve(client?: API): ReturnType<typeof useSWR<BackupCodesStatus>> {\n return useSWR<BackupCodesStatus>(\n 'cfg-totp-backup-code',\n () => Fetchers.getTotpBackupCodesRetrieve(client)\n )\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/backup-codes/regenerate/\n */\nexport function useCreateTotpBackupCodesRegenerateCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: BackupCodesRegenerateRequest, client?: API): Promise<BackupCodesRegenerateResponse> => {\n const result = await Fetchers.createTotpBackupCodesRegenerateCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-backup-codes-regenerate')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for TOTP Management\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__totp_management'\nimport type { API } from '../../index'\nimport type { DisableRequest } from '../schemas/DisableRequest.schema'\nimport type { PaginatedDeviceListResponseList } from '../schemas/PaginatedDeviceListResponseList.schema'\n\n/**\n * API operation\n *\n * @method GET\n * @path /cfg/totp/devices/\n */\nexport function useTotpDevicesList(params?: { ordering?: string; page?: number; page_size?: number; search?: string }, client?: API): ReturnType<typeof useSWR<PaginatedDeviceListResponseList>> {\n return useSWR<PaginatedDeviceListResponseList>(\n ['cfg-totp-devices', params],\n () => Fetchers.getTotpDevicesList(params, client)\n )\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/disable/\n */\nexport function useCreateTotpDisableCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: DisableRequest, client?: API): Promise<any> => {\n const result = await Fetchers.createTotpDisableCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-disable')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for TOTP Setup\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__totp_setup'\nimport type { API } from '../../index'\nimport type { ConfirmSetupRequest } from '../schemas/ConfirmSetupRequest.schema'\nimport type { ConfirmSetupResponse } from '../schemas/ConfirmSetupResponse.schema'\nimport type { SetupRequest } from '../schemas/SetupRequest.schema'\nimport type { SetupResponse } from '../schemas/SetupResponse.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/\n */\nexport function useCreateTotpSetupCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: SetupRequest, client?: API): Promise<SetupResponse> => {\n const result = await Fetchers.createTotpSetupCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-setup')\n return result\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/setup/confirm/\n */\nexport function useCreateTotpSetupConfirmCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: ConfirmSetupRequest, client?: API): Promise<ConfirmSetupResponse> => {\n const result = await Fetchers.createTotpSetupConfirmCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-setup-confirm')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for TOTP Verification\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp__totp_verification'\nimport type { API } from '../../index'\nimport type { VerifyBackupRequest } from '../schemas/VerifyBackupRequest.schema'\nimport type { VerifyRequest } from '../schemas/VerifyRequest.schema'\nimport type { VerifyResponse } from '../schemas/VerifyResponse.schema'\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/\n */\nexport function useCreateTotpVerifyCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: VerifyRequest, client?: API): Promise<VerifyResponse> => {\n const result = await Fetchers.createTotpVerifyCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-verify')\n return result\n }\n}\n\n\n/**\n * API operation\n *\n * @method POST\n * @path /cfg/totp/verify/backup/\n */\nexport function useCreateTotpVerifyBackupCreate() {\n const { mutate } = useSWRConfig()\n\n return async (data: VerifyBackupRequest, client?: API): Promise<VerifyResponse> => {\n const result = await Fetchers.createTotpVerifyBackupCreate(data, client)\n // Revalidate related queries\n mutate('cfg-totp-verify-backup')\n return result\n }\n}\n\n\n","// @ts-nocheck\n// Auto-generated by DjangoCFG - see CLAUDE.md\n'use client';\n\n/**\n * SWR Hooks for Totp\n *\n * React hooks powered by SWR for data fetching with automatic caching,\n * revalidation, and optimistic updates.\n *\n * Usage:\n * ```typescript\n * // Query hooks (GET)\n * const { data, error, isLoading } = useUsers({ page: 1 })\n *\n * // Mutation hooks (POST/PUT/PATCH/DELETE)\n * const createUser = useCreateUser()\n * await createUser({ name: 'John', email: 'john@example.com' })\n * ```\n */\nimport { useSWRConfig } from 'swr'\nimport * as Fetchers from '../fetchers/totp'\nimport type { API } from '../../index'\n\n/**\n * API operation\n *\n * @method DELETE\n * @path /cfg/totp/devices/{id}/\n */\nexport function useDeleteTotpDevicesDestroy() {\n const { mutate } = useSWRConfig()\n\n return async (id: string, client?: API): Promise<void> => {\n const result = await Fetchers.deleteTotpDevicesDestroy(id, client)\n // Revalidate related queries\n mutate('cfg-totp-devices')\n mutate('cfg-totp-device')\n return result\n }\n}\n\n\n"],"mappings":"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","names":["API","fetchers_exports","schemas_exports","hooks_exports","pRetry","OAuthConnectionProvider","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_consola","import_consola","import_consola","import_consola","FetchAdapter","APIError","NetworkError","import_consola","DEFAULT_CONFIG","SENSITIVE_HEADERS","APILogger","defaultLogger","import_p_retry","DEFAULT_RETRY_CONFIG","shouldRetry","NetworkError","APIError","withRetry","pRetry","APIClient","FetchAdapter","APILogger","withRetry","APIError","NetworkError","LocalStorageAdapter","schemas_exports","import_zod","fetchers_exports","import_consola","globalAPI","autoConfigAttempted","tryAutoConfigureFromEnv","API","getAPIInstance","getAPIInstance","TOKEN_KEY","REFRESH_TOKEN_KEY","detectLocale","API","APILogger","LocalStorageAdapter","APIClient","FetchAdapter","APIError","NetworkError","import_consola","DEFAULT_CONFIG","SENSITIVE_HEADERS","APILogger","defaultLogger","import_p_retry","DEFAULT_RETRY_CONFIG","shouldRetry","NetworkError","APIError","withRetry","pRetry","APIClient","FetchAdapter","APILogger","withRetry","APIError","NetworkError","LocalStorageAdapter","DeviceListStatus","schemas_exports","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","fetchers_exports","globalAPI","autoConfigAttempted","tryAutoConfigureFromEnv","API","getAPIInstance","getAPIInstance","import_consola","getAPIInstance","import_consola","getAPIInstance","import_consola","getAPIInstance","import_consola","getAPIInstance","TOKEN_KEY","REFRESH_TOKEN_KEY","detectLocale","API","APILogger","LocalStorageAdapter","APIClient","import_swr","useSWR","import_swr","useSWR","import_swr","import_swr","useSWR","hooks_exports","import_swr","useSWR","import_swr","useSWR","import_swr","import_swr","import_swr","API"]}
|