@djangocfg/monitor 2.1.322 → 2.1.327

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.
Files changed (74) hide show
  1. package/dist/client.cjs +956 -1126
  2. package/dist/client.cjs.map +1 -1
  3. package/dist/client.d.cts +25 -39
  4. package/dist/client.d.ts +25 -39
  5. package/dist/client.mjs +956 -1137
  6. package/dist/client.mjs.map +1 -1
  7. package/dist/index.cjs +934 -1092
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +25 -39
  10. package/dist/index.d.ts +25 -39
  11. package/dist/index.mjs +927 -1096
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/server.cjs +915 -1092
  14. package/dist/server.cjs.map +1 -1
  15. package/dist/server.d.cts +25 -39
  16. package/dist/server.d.ts +25 -39
  17. package/dist/server.mjs +907 -1095
  18. package/dist/server.mjs.map +1 -1
  19. package/package.json +7 -2
  20. package/src/_api/generated/_shared/errors.ts +70 -0
  21. package/src/_api/generated/_shared/index.ts +25 -0
  22. package/src/_api/generated/_shared/logger.ts +123 -0
  23. package/src/_api/generated/_shared/storage.ts +83 -0
  24. package/src/_api/generated/_shared/validation-events.ts +52 -0
  25. package/src/_api/generated/cfg_monitor/api.ts +122 -0
  26. package/src/_api/generated/cfg_monitor/client/client.gen.ts +280 -0
  27. package/src/_api/generated/cfg_monitor/client/index.ts +25 -0
  28. package/src/_api/generated/cfg_monitor/client/types.gen.ts +217 -0
  29. package/src/_api/generated/cfg_monitor/client/utils.gen.ts +318 -0
  30. package/src/_api/generated/cfg_monitor/client.gen.ts +16 -0
  31. package/src/_api/generated/cfg_monitor/core/auth.gen.ts +41 -0
  32. package/src/_api/generated/cfg_monitor/core/bodySerializer.gen.ts +82 -0
  33. package/src/_api/generated/cfg_monitor/core/params.gen.ts +169 -0
  34. package/src/_api/generated/cfg_monitor/core/pathSerializer.gen.ts +171 -0
  35. package/src/_api/generated/cfg_monitor/core/queryKeySerializer.gen.ts +117 -0
  36. package/src/_api/generated/cfg_monitor/core/serverSentEvents.gen.ts +242 -0
  37. package/src/_api/generated/cfg_monitor/core/types.gen.ts +104 -0
  38. package/src/_api/generated/cfg_monitor/core/utils.gen.ts +140 -0
  39. package/src/_api/generated/cfg_monitor/events.ts +198 -0
  40. package/src/_api/generated/cfg_monitor/hooks/index.ts +4 -0
  41. package/src/_api/generated/cfg_monitor/hooks/useCfgMonitorIngestCreate.ts +24 -0
  42. package/src/_api/generated/cfg_monitor/index.ts +26 -314
  43. package/src/_api/generated/cfg_monitor/schemas/EventTypeEnum.ts +9 -0
  44. package/src/_api/generated/cfg_monitor/{_utils/schemas/FrontendEventIngestRequest.schema.ts → schemas/FrontendEventIngestRequest.ts} +12 -19
  45. package/src/_api/generated/cfg_monitor/schemas/IngestBatchRequest.ts +12 -0
  46. package/src/_api/generated/cfg_monitor/schemas/LevelEnum.ts +9 -0
  47. package/src/_api/generated/cfg_monitor/schemas/index.ts +7 -0
  48. package/src/_api/generated/cfg_monitor/sdk.gen.ts +55 -0
  49. package/src/_api/generated/cfg_monitor/types.gen.ts +79 -0
  50. package/src/_api/generated/index.ts +22 -0
  51. package/src/_api/index.ts +2 -2
  52. package/src/client/capture/console.ts +2 -3
  53. package/src/client/transport/ingest.ts +21 -17
  54. package/src/server/index.ts +3 -2
  55. package/src/_api/generated/cfg_monitor/CLAUDE.md +0 -60
  56. package/src/_api/generated/cfg_monitor/_utils/fetchers/index.ts +0 -30
  57. package/src/_api/generated/cfg_monitor/_utils/fetchers/monitor.ts +0 -51
  58. package/src/_api/generated/cfg_monitor/_utils/hooks/index.ts +0 -30
  59. package/src/_api/generated/cfg_monitor/_utils/hooks/monitor.ts +0 -43
  60. package/src/_api/generated/cfg_monitor/_utils/schemas/IngestBatchRequest.schema.ts +0 -20
  61. package/src/_api/generated/cfg_monitor/_utils/schemas/index.ts +0 -22
  62. package/src/_api/generated/cfg_monitor/api-instance.ts +0 -181
  63. package/src/_api/generated/cfg_monitor/client.ts +0 -330
  64. package/src/_api/generated/cfg_monitor/enums.ts +0 -34
  65. package/src/_api/generated/cfg_monitor/errors.ts +0 -123
  66. package/src/_api/generated/cfg_monitor/http.ts +0 -160
  67. package/src/_api/generated/cfg_monitor/logger.ts +0 -261
  68. package/src/_api/generated/cfg_monitor/monitor/client.ts +0 -26
  69. package/src/_api/generated/cfg_monitor/monitor/index.ts +0 -4
  70. package/src/_api/generated/cfg_monitor/monitor/models.ts +0 -47
  71. package/src/_api/generated/cfg_monitor/retry.ts +0 -177
  72. package/src/_api/generated/cfg_monitor/schema.json +0 -181
  73. package/src/_api/generated/cfg_monitor/storage.ts +0 -163
  74. package/src/_api/generated/cfg_monitor/validation-events.ts +0 -135
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js","../src/_api/generated/cfg_monitor/monitor/client.ts","../src/_api/generated/cfg_monitor/http.ts","../src/_api/generated/cfg_monitor/errors.ts","../src/_api/generated/cfg_monitor/logger.ts","../../../node_modules/.pnpm/p-retry@6.2.1/node_modules/p-retry/index.js","../../../node_modules/.pnpm/is-network-error@1.3.0/node_modules/is-network-error/index.js","../src/_api/generated/cfg_monitor/retry.ts","../src/_api/generated/cfg_monitor/client.ts","../src/_api/generated/cfg_monitor/storage.ts","../src/_api/generated/cfg_monitor/enums.ts","../src/_api/generated/cfg_monitor/_utils/schemas/FrontendEventIngestRequest.schema.ts","../src/_api/generated/cfg_monitor/_utils/schemas/IngestBatchRequest.schema.ts","../src/_api/generated/cfg_monitor/index.ts","../src/_api/BaseClient.ts"],"sourcesContent":["function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","// @ts-nocheck\nimport * as Models from \"./models\";\n\n\n/**\n * API endpoints for Monitor.\n */\nexport class Monitor {\n private client: any;\n\n constructor(client: any) {\n this.client = client;\n }\n\n /**\n * Ingest browser events\n * \n * Accepts a batch of up to 50 frontend events. No authentication required\n * — anonymous visitors can send events.\n */\n async ingestCreate(data: Models.IngestBatchRequest): Promise<any> {\n const response = await this.client.request('POST', \"/cfg/monitor/ingest/\", { 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 * Force a specific response parser. When set, overrides Content-Type sniffing.\n * Generated for endpoints whose primary response is binary (file downloads).\n */\n responseType?: 'json' | 'text' | 'blob';\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, responseType } = 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. Explicit `responseType` (set by the generator for binary\n // endpoints) wins over Content-Type sniffing — backends often serve CSV/JSON\n // file downloads with `text/csv` or `application/json`, which would otherwise\n // be parsed as string/object instead of the Blob the caller expects.\n //\n // responseType set → use it directly\n // application/json → JSON\n // text/* → string\n // anything else → Blob (file downloads, octet-stream, …)\n let data: any = null;\n const contentType = response.headers.get('content-type') ?? '';\n\n if (response.status !== 204) {\n if (responseType === 'blob') {\n data = await response.blob();\n } else if (responseType === 'text') {\n data = await response.text();\n } else if (responseType === 'json') {\n data = await response.json();\n } else if (contentType.includes('application/json')) {\n data = await response.json();\n } else if (contentType.startsWith('text/')) {\n data = await response.text();\n } else {\n data = await response.blob();\n }\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 \"error\" field (common in custom DRF views)\n if (details.error) {\n return String(details.error);\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();","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {...options};\n\t\toptions.onFailedAttempt ??= () => {};\n\t\toptions.shouldRetry ??= () => true;\n\t\toptions.retries ??= 10;\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n\t' A network error occurred.', // Bun (WebKit)\n\t'Network connection lost', // Cloudflare Workers (fetch)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\tconst {message, stack} = error;\n\n\t// Safari 17+ has generic message but no stack for network errors\n\tif (message === 'Load failed') {\n\t\treturn stack === undefined\n\t\t\t// Sentry adds its own stack trace to the fetch error, so also check for that\n\t\t\t|| '__sentry_captured__' in error;\n\t}\n\n\t// Deno network errors start with specific text\n\tif (message.startsWith('error sending request for url')) {\n\t\treturn true;\n\t}\n\n\t// Standard network error messages\n\treturn errorMessages.has(message);\n}\n","// @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 { Monitor } from \"./monitor\";\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 monitor: Monitor;\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.monitor = new Monitor(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 responseType?: 'json' | 'text' | 'blob';\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 responseType?: 'json' | 'text' | 'blob';\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 // Add Authorization header from tokenGetter (Bearer token / API key)\n if (!headers['Authorization']) {\n const token = this.getToken();\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n }\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 responseType: options?.responseType,\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 * * `JS_ERROR` - JS_ERROR\n * * `NETWORK_ERROR` - NETWORK_ERROR\n * * `ERROR` - ERROR\n * * `WARNING` - WARNING\n * * `PAGE_VIEW` - PAGE_VIEW\n * * `PERFORMANCE` - PERFORMANCE\n * * `CONSOLE` - CONSOLE\n */\nexport enum FrontendEventIngestRequestEventType {\n JS_ERROR = \"JS_ERROR\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n ERROR = \"ERROR\",\n WARNING = \"WARNING\",\n PAGE_VIEW = \"PAGE_VIEW\",\n PERFORMANCE = \"PERFORMANCE\",\n CONSOLE = \"CONSOLE\",\n}\n\n/**\n * * `error` - error\n * * `warning` - warning\n * * `info` - info\n * * `debug` - debug\n */\nexport enum FrontendEventIngestRequestLevel {\n ERROR = \"error\",\n WARNING = \"warning\",\n INFO = \"info\",\n DEBUG = \"debug\",\n}\n\n","/**\n * Zod schema for FrontendEventIngestRequest\n *\n * This schema provides runtime validation and type inference.\n * * Single browser event payload.\n * */\nimport { z } from 'zod'\nimport * as Enums from '../../enums'\n\n/**\n * Single browser event payload.\n */\nexport const FrontendEventIngestRequestSchema = z.object({\n event_type: z.nativeEnum(Enums.FrontendEventIngestRequestEventType),\n message: z.string().min(1).max(5000),\n level: z.nativeEnum(Enums.FrontendEventIngestRequestLevel).optional(),\n stack_trace: z.string().max(10000).optional(),\n url: z.string().max(2000).optional(),\n fingerprint: z.string().max(64).optional(),\n http_status: z.number().int().nullable().optional(),\n http_method: z.string().max(10).optional(),\n http_url: z.string().max(2000).optional(),\n session_id: z.string().max(64).optional(),\n user_agent: z.string().max(500).optional(),\n build_id: z.string().max(100).optional(),\n environment: z.string().max(20).optional(),\n extra: z.record(z.string(), z.any()).optional(),\n project_name: z.string().max(100).optional(),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type FrontendEventIngestRequest = z.infer<typeof FrontendEventIngestRequestSchema>","/**\n * Zod schema for IngestBatchRequest\n *\n * This schema provides runtime validation and type inference.\n * * Batch of up to 50 browser events.\n * */\nimport { z } from 'zod'\nimport { FrontendEventIngestRequestSchema } from './FrontendEventIngestRequest.schema'\n\n/**\n * Batch of up to 50 browser events.\n */\nexport const IngestBatchRequestSchema = z.object({\n events: z.array(FrontendEventIngestRequestSchema),\n})\n\n/**\n * Infer TypeScript type from Zod schema\n */\nexport type IngestBatchRequest = z.infer<typeof IngestBatchRequestSchema>","// @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 { Monitor } from \"./monitor/client\";\nexport * as MonitorTypes from \"./monitor/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 monitor!: Monitor;\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.monitor = this._client.monitor;\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.monitor = this._client.monitor;\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;","/**\n * BaseClient for @djangocfg/monitor\n *\n * Singleton monitorApi instance for the frontend monitor ingest endpoint.\n * Uses MemoryStorageAdapter — ingest is public (no auth tokens needed).\n */\n\nimport { API, MemoryStorageAdapter } from './generated/cfg_monitor'\n\nexport const monitorApi = new API('', { storage: new MemoryStorageAdapter() })\n\nexport function configureMonitorApi(baseUrl: string): void {\n monitorApi.setBaseUrl(baseUrl)\n}\n\nexport class BaseClient {\n protected static monitorApi = monitorApi\n}\n"],"mappings":"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","names":["original","require_retry","retry","FrontendEventIngestRequestEventType","FrontendEventIngestRequestLevel","z","z"]}
1
+ {"version":3,"sources":["../src/_api/generated/cfg_monitor/core/bodySerializer.gen.ts","../src/_api/generated/cfg_monitor/core/params.gen.ts","../src/_api/generated/cfg_monitor/core/serverSentEvents.gen.ts","../src/_api/generated/cfg_monitor/core/pathSerializer.gen.ts","../src/_api/generated/cfg_monitor/core/utils.gen.ts","../src/_api/generated/cfg_monitor/core/auth.gen.ts","../src/_api/generated/cfg_monitor/client/utils.gen.ts","../src/_api/generated/cfg_monitor/client/client.gen.ts","../src/_api/generated/cfg_monitor/client.gen.ts","../src/_api/generated/_shared/storage.ts","../src/_api/generated/_shared/logger.ts","../src/_api/generated/cfg_monitor/sdk.gen.ts","../src/_api/generated/cfg_monitor/api.ts","../src/_api/BaseClient.ts","../src/_api/generated/cfg_monitor/types.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ntype Slot = 'body' | 'headers' | 'path' | 'query';\n\nexport type Field =\n | {\n in: Exclude<Slot, 'body'>;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, 'body'>;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nconst buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n};\n\ninterface Params {\n body: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n (params[field.in] as Record<string, unknown>)[name] = arg;\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value;\n } else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'http://localhost:8000' }));\n","// AUTO-GENERATED by django_generator / ts_extras.wrapper\n// Storage adapters for token persistence.\n// DO NOT EDIT — re-run `make gen`.\n\nexport interface StorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n clear?(): void;\n}\n\n/** Browser localStorage. Falls back to no-op on SSR / private mode. */\nexport class LocalStorageAdapter implements StorageAdapter {\n getItem(key: string): string | null {\n if (typeof window === \"undefined\") return null;\n try { return window.localStorage.getItem(key); } catch { return null; }\n }\n setItem(key: string, value: string): void {\n if (typeof window === \"undefined\") return;\n try { window.localStorage.setItem(key, value); } catch { /* quota / private */ }\n }\n removeItem(key: string): void {\n if (typeof window === \"undefined\") return;\n try { window.localStorage.removeItem(key); } catch { /* ignore */ }\n }\n clear(): void {\n if (typeof window === \"undefined\") return;\n try { window.localStorage.clear(); } catch { /* ignore */ }\n }\n}\n\n/** In-memory store. Use for SSR, Electron main process, or tests. */\nexport class MemoryStorageAdapter implements StorageAdapter {\n private store = new Map<string, string>();\n getItem(key: string): string | null { return this.store.get(key) ?? null; }\n setItem(key: string, value: string): void { this.store.set(key, value); }\n removeItem(key: string): void { this.store.delete(key); }\n clear(): void { this.store.clear(); }\n}\n\n/** Cookie-backed storage (browser only). */\nexport class CookieStorageAdapter implements StorageAdapter {\n constructor(\n private opts: {\n domain?: string;\n path?: string;\n secure?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n maxAgeSeconds?: number;\n } = {},\n ) {}\n\n getItem(key: string): string | null {\n if (typeof document === \"undefined\") return null;\n const prefix = `${encodeURIComponent(key)}=`;\n for (const part of document.cookie.split(\"; \")) {\n if (part.startsWith(prefix)) {\n return decodeURIComponent(part.slice(prefix.length));\n }\n }\n return null;\n }\n\n setItem(key: string, value: string): void {\n if (typeof document === \"undefined\") return;\n const parts = [\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}`,\n `Path=${this.opts.path ?? \"/\"}`,\n ];\n if (this.opts.domain) parts.push(`Domain=${this.opts.domain}`);\n if (this.opts.secure) parts.push(\"Secure\");\n if (this.opts.sameSite) parts.push(`SameSite=${this.opts.sameSite}`);\n if (this.opts.maxAgeSeconds != null) {\n parts.push(`Max-Age=${this.opts.maxAgeSeconds}`);\n }\n document.cookie = parts.join(\"; \");\n }\n\n removeItem(key: string): void {\n if (typeof document === \"undefined\") return;\n document.cookie = `${encodeURIComponent(key)}=; Max-Age=0; Path=${this.opts.path ?? \"/\"}`;\n }\n}\n","// AUTO-GENERATED by django_generator / ts_extras.wrapper\n// API logger built on consola. Optional dependency — install if you enable logging:\n// npm install consola\n// DO NOT EDIT — re-run `make gen`.\n\nimport { type ConsolaInstance, createConsola } from \"consola\";\n\nexport interface RequestLog {\n method: string;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timestamp: number;\n}\n\nexport interface ResponseLog {\n status: number;\n statusText: string;\n data?: any;\n duration: number;\n timestamp: number;\n}\n\nexport interface ErrorLog {\n message: string;\n statusCode?: number;\n fieldErrors?: Record<string, string[]>;\n duration: number;\n timestamp: number;\n}\n\nexport interface LoggerConfig {\n enabled: boolean;\n logRequests: boolean;\n logResponses: boolean;\n logErrors: boolean;\n logBodies: boolean;\n logHeaders: boolean;\n consola?: ConsolaInstance;\n}\n\nconst DEFAULT_CONFIG: LoggerConfig = {\n enabled: typeof process !== \"undefined\" && process.env?.NODE_ENV !== \"production\",\n logRequests: true,\n logResponses: true,\n logErrors: true,\n logBodies: true,\n logHeaders: false,\n};\n\nconst SENSITIVE_HEADERS = [\n \"authorization\",\n \"cookie\",\n \"set-cookie\",\n \"x-api-key\",\n \"x-csrf-token\",\n];\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 enable(): void { this.config.enabled = true; }\n disable(): void { this.config.enabled = false; }\n setConfig(config: Partial<LoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n private filterHeaders(headers?: Record<string, string>): Record<string, string> {\n if (!headers) return {};\n const filtered: Record<string, string> = {};\n Object.keys(headers).forEach((key) => {\n filtered[key] = SENSITIVE_HEADERS.includes(key.toLowerCase()) ? \"***\" : (headers[key] || \"\");\n });\n return filtered;\n }\n\n logRequest(request: RequestLog): void {\n if (!this.config.enabled || !this.config.logRequests) return;\n const { method, url, headers, body } = request;\n this.consola.start(`${method} ${url}`);\n if (this.config.logHeaders && headers) this.consola.debug(\"Headers:\", this.filterHeaders(headers));\n if (this.config.logBodies && body) this.consola.debug(\"Body:\", body);\n }\n\n logResponse(request: RequestLog, response: ResponseLog): void {\n if (!this.config.enabled || !this.config.logResponses) return;\n const { method, url } = request;\n const { status, statusText, data, duration } = response;\n this.consola.success(`${method} ${url} ${status} ${statusText} (${duration}ms)`);\n if (this.config.logBodies && data) this.consola.debug(\"Response:\", data);\n }\n\n logError(request: RequestLog, error: ErrorLog): void {\n if (!this.config.enabled || !this.config.logErrors) return;\n const { method, url } = request;\n const { message, statusCode, fieldErrors, duration } = error;\n this.consola.error(`${method} ${url} ${statusCode || \"Network\"} Error (${duration}ms)`);\n this.consola.error(\"Message:\", message);\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) => this.consola.error(` • ${field}: ${err}`));\n });\n }\n }\n\n info(message: string, ...args: any[]): void { if (this.config.enabled) this.consola.info(message, ...args); }\n warn(message: string, ...args: any[]): void { if (this.config.enabled) this.consola.warn(message, ...args); }\n error(message: string, ...args: any[]): void { if (this.config.enabled) this.consola.error(message, ...args); }\n debug(message: string, ...args: any[]): void { if (this.config.enabled) this.consola.debug(message, ...args); }\n success(message: string, ...args: any[]): void { if (this.config.enabled) this.consola.success(message, ...args); }\n withTag(tag: string): ConsolaInstance { return this.consola.withTag(tag); }\n}\n\nexport const defaultLogger = new APILogger();\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { CfgMonitorIngestCreateData, CfgMonitorIngestCreateResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\nexport class Cfg {\n /**\n * Ingest browser events\n *\n * Accepts a batch of up to 50 frontend events. No authentication required — anonymous visitors can send events.\n */\n public static cfgMonitorIngestCreate<ThrowOnError extends boolean = false>(options: Options<CfgMonitorIngestCreateData, ThrowOnError>) {\n return (options.client ?? client).post<CfgMonitorIngestCreateResponses, unknown, ThrowOnError>({\n url: '/cfg/monitor/ingest/',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n });\n }\n}\n\nexport class Monitor {\n /**\n * Ingest browser events\n *\n * Accepts a batch of up to 50 frontend events. No authentication required — anonymous visitors can send events.\n */\n public static cfgMonitorIngestCreate<ThrowOnError extends boolean = false>(options: Options<CfgMonitorIngestCreateData, ThrowOnError>) {\n return (options.client ?? client).post<CfgMonitorIngestCreateResponses, unknown, ThrowOnError>({\n url: '/cfg/monitor/ingest/',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n });\n }\n}\n","// AUTO-GENERATED by django_generator / ts_extras.wrapper\n// Self-contained API wrapper for this group. DO NOT EDIT — re-run `make gen`.\n\nimport { client } from './client.gen';\nimport type { StorageAdapter } from '../_shared/storage';\nimport { LocalStorageAdapter } from '../_shared/storage';\nimport { APILogger, type LoggerConfig } from '../_shared/logger';\n\nimport { Cfg } from './sdk.gen';\nimport { Monitor } from './sdk.gen';\n\n\nconst ACCESS_KEY = 'cfg.access_token';\nconst REFRESH_KEY = 'cfg.refresh_token';\n\n\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 m = document.cookie.match(/(?:^|;\\s*)NEXT_LOCALE=([^;]*)/);\n if (m) return decodeURIComponent(m[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 /** Override storage backend (LocalStorage by default; Memory for SSR/tests). */\n storage?: StorageAdapter;\n /** Logger config (defaults to dev-only). */\n logger?: Partial<LoggerConfig>;\n /** Locale for `Accept-Language`. If omitted, auto-detected from cookie/navigator. */\n locale?: string;\n /** API key sent as `X-API-Key`. Falls back to NEXT_PUBLIC_API_KEY. */\n apiKey?: string;\n /** Send Django session/CSRF cookies cross-origin. Defaults to true. */\n withCredentials?: boolean;\n}\n\n/**\n * Self-contained API wrapper for this group.\n *\n * Each group has its own client + interceptor + token store. The interceptor\n * automatically attaches:\n * - `Authorization: Bearer <jwt>` from storage\n * - `Accept-Language` from `opts.locale` or `NEXT_LOCALE` cookie\n * - `X-API-Key` from `opts.apiKey` or `NEXT_PUBLIC_API_KEY`\n * - `credentials: 'include'` for Django session/CSRF cookies (toggle via opts)\n */\nexport class API {\n private baseUrl: string;\n private storage: StorageAdapter;\n private locale: string | null;\n private apiKey: string | null;\n readonly logger: APILogger;\n\n readonly cfg = Cfg;\n readonly monitor = Monitor;\n\n constructor(baseUrl: string, opts: APIOptions = {}) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n this.storage = opts.storage ?? new LocalStorageAdapter();\n this.logger = new APILogger(opts.logger);\n this.locale = opts.locale ?? null;\n this.apiKey = opts.apiKey ?? (typeof process !== 'undefined' ? (process.env?.NEXT_PUBLIC_API_KEY ?? null) : null);\n\n const credentials: RequestCredentials = (opts.withCredentials ?? true) ? 'include' : 'same-origin';\n client.setConfig({ baseUrl: this.baseUrl, credentials });\n\n client.interceptors.request.use((request) => {\n const access = this.getToken();\n if (access) request.headers.set('Authorization', `Bearer ${access}`);\n\n const locale = this.locale ?? detectLocale();\n if (locale) request.headers.set('Accept-Language', locale);\n\n if (this.apiKey) request.headers.set('X-API-Key', this.apiKey);\n\n return request;\n });\n\n\n }\n\n // ── Base URL ────────────────────────────────────────────────────────────\n getBaseUrl(): string { return this.baseUrl; }\n setBaseUrl(url: string): void {\n this.baseUrl = url.replace(/\\/$/, '');\n client.setConfig({ baseUrl: this.baseUrl });\n }\n\n // ── Tokens ──────────────────────────────────────────────────────────────\n getToken(): string | null { return this.storage.getItem(ACCESS_KEY); }\n setToken(token: string | null): void {\n if (token) this.storage.setItem(ACCESS_KEY, token);\n else this.storage.removeItem(ACCESS_KEY);\n }\n getRefreshToken(): string | null { return this.storage.getItem(REFRESH_KEY); }\n setRefreshToken(token: string | null): void {\n if (token) this.storage.setItem(REFRESH_KEY, token);\n else this.storage.removeItem(REFRESH_KEY);\n }\n clearToken(): void {\n this.storage.removeItem(ACCESS_KEY);\n this.storage.removeItem(REFRESH_KEY);\n }\n isAuthenticated(): boolean { return this.getToken() !== null; }\n\n // ── Locale / API key ────────────────────────────────────────────────────\n getLocale(): string | null { return this.locale ?? detectLocale(); }\n setLocale(locale: string | null): void { this.locale = locale; }\n getApiKey(): string | null { return this.apiKey; }\n setApiKey(key: string | null): void { this.apiKey = key; }\n}\n\nexport { Cfg, Monitor };\nexport { client };\n","/**\n * BaseClient for @djangocfg/monitor\n *\n * Singleton monitorApi instance for the frontend monitor ingest endpoint.\n * Uses MemoryStorageAdapter — ingest is public (no auth tokens needed).\n */\n\nimport { API, MemoryStorageAdapter } from './generated/cfg_monitor'\n\nexport const monitorApi = new API('', { storage: new MemoryStorageAdapter() })\n\nexport function configureMonitorApi(baseUrl: string): void {\n monitorApi.setBaseUrl(baseUrl)\n}\n\nexport class BaseClient {\n protected static monitorApi = monitorApi\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type ClientOptions = {\n baseUrl: 'http://localhost:8000' | (string & {});\n};\n\n/**\n * * `JS_ERROR` - Js Error\n * * `NETWORK_ERROR` - Network Error\n * * `ERROR` - Error\n * * `WARNING` - Warning\n * * `PAGE_VIEW` - Page View\n * * `PERFORMANCE` - Performance\n * * `CONSOLE` - Console\n */\nexport enum EventTypeEnum {\n JS_ERROR = 'JS_ERROR',\n NETWORK_ERROR = 'NETWORK_ERROR',\n ERROR = 'ERROR',\n WARNING = 'WARNING',\n PAGE_VIEW = 'PAGE_VIEW',\n PERFORMANCE = 'PERFORMANCE',\n CONSOLE = 'CONSOLE'\n}\n\n/**\n * Single browser event payload.\n */\nexport type FrontendEventIngestRequest = {\n event_type: EventTypeEnum;\n message: string;\n level?: LevelEnum;\n stack_trace?: string;\n url?: string;\n fingerprint?: string;\n http_status?: number | null;\n http_method?: string;\n http_url?: string;\n session_id?: string;\n user_agent?: string;\n build_id?: string;\n environment?: string;\n extra?: unknown;\n project_name?: string;\n};\n\n/**\n * Batch of up to 50 browser events.\n */\nexport type IngestBatchRequest = {\n events: Array<FrontendEventIngestRequest>;\n};\n\n/**\n * * `error` - Error\n * * `warning` - Warning\n * * `info` - Info\n * * `debug` - Debug\n */\nexport enum LevelEnum {\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info',\n DEBUG = 'debug'\n}\n\nexport type CfgMonitorIngestCreateData = {\n body: IngestBatchRequest;\n path?: never;\n query?: never;\n url: '/cfg/monitor/ingest/';\n};\n\nexport type CfgMonitorIngestCreateResponses = {\n /**\n * Accepted\n */\n 202: unknown;\n};\n"],"mappings":"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","names":["joinedValues","config","request","url","EventTypeEnum","LevelEnum"]}