@xylex-group/athena 1.4.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -18
- package/dist/{errors-DQerAaXC.d.cts → errors-C4GJaFI_.d.cts} +1 -1
- package/dist/{errors-DQerAaXC.d.ts → errors-C4GJaFI_.d.ts} +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/react.cjs +965 -0
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +234 -3
- package/dist/react.d.ts +234 -3
- package/dist/react.js +960 -2
- package/dist/react.js.map +1 -1
- package/package.json +11 -7
package/dist/react.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gateway/errors.ts","../src/gateway/client.ts","../src/gateway/use-athena-gateway.ts"],"names":["useState","useMemo","useCallback"],"mappings":"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","file":"react.cjs","sourcesContent":["import type {\n AthenaGatewayEndpointPath,\n AthenaGatewayErrorCode,\n AthenaGatewayErrorDetails,\n AthenaGatewayMethod,\n AthenaGatewayResponse,\n} from './types.js'\n\nexport interface AthenaGatewayErrorInput {\n code: AthenaGatewayErrorCode\n message: string\n status?: number\n endpoint?: AthenaGatewayEndpointPath\n method?: AthenaGatewayMethod\n requestId?: string\n hint?: string\n cause?: string\n}\n\n/**\n * Canonical error for gateway failures.\n * Holds request context and machine-readable classification.\n */\nexport class AthenaGatewayError extends Error {\n readonly code: AthenaGatewayErrorCode\n readonly status: number\n readonly endpoint?: AthenaGatewayEndpointPath\n readonly method?: AthenaGatewayMethod\n readonly requestId?: string\n readonly hint?: string\n readonly causeDetail?: string\n\n constructor(input: AthenaGatewayErrorInput) {\n super(input.message)\n this.name = 'AthenaGatewayError'\n this.code = input.code\n this.status = input.status ?? 0\n this.endpoint = input.endpoint\n this.method = input.method\n this.requestId = input.requestId\n this.hint = input.hint\n this.causeDetail = input.cause\n }\n\n toDetails(): AthenaGatewayErrorDetails {\n return {\n code: this.code,\n message: this.message,\n status: this.status,\n endpoint: this.endpoint,\n method: this.method,\n requestId: this.requestId,\n hint: this.hint,\n cause: this.causeDetail,\n }\n }\n\n static fromResponse<T>(\n response: AthenaGatewayResponse<T>,\n fallback: Omit<AthenaGatewayErrorInput, 'code' | 'message' | 'status'>,\n ) {\n const details = response.errorDetails\n if (details) {\n return new AthenaGatewayError({\n code: details.code,\n message: details.message,\n status: details.status,\n endpoint: details.endpoint ?? fallback.endpoint,\n method: details.method ?? fallback.method,\n requestId: details.requestId ?? fallback.requestId,\n hint: details.hint,\n cause: details.cause,\n })\n }\n\n return new AthenaGatewayError({\n code: 'HTTP_ERROR',\n message: response.error ?? 'Gateway request failed',\n status: response.status,\n endpoint: fallback.endpoint,\n method: fallback.method,\n requestId: fallback.requestId,\n })\n }\n}\n\nexport function isAthenaGatewayError(error: unknown): error is AthenaGatewayError {\n return error instanceof AthenaGatewayError\n}\n","import type {\r\n AthenaGatewayBaseOptions,\r\n AthenaGatewayCallOptions,\r\n AthenaGatewayEndpointPath,\r\n AthenaGatewayErrorDetails,\r\n AthenaGatewayMethod,\r\n AthenaRpcCallOptions,\r\n AthenaRpcPayload,\r\n AthenaGatewayResponse,\r\n} from \"./types.js\";\r\nimport type {\r\n AthenaDeletePayload,\r\n AthenaFetchPayload,\r\n AthenaInsertPayload,\r\n AthenaRpcFilter,\r\n AthenaUpdatePayload,\r\n AthenaQueryPayload,\r\n} from \"./types.js\";\r\nimport { AthenaGatewayError } from \"./errors.ts\";\r\n\r\nconst DEFAULT_BASE_URL = \"https://athena-db.com\";\r\nconst DEFAULT_CLIENT = \"railway_direct\";\r\nconst FALLBACK_SDK_VERSION = \"1.3.0\";\r\nconst SDK_NAME = \"xylex-group/athena\";\r\n\r\nconst SDK_VERSION =\r\n typeof process !== \"undefined\" && process?.env?.npm_package_version\r\n ? process.env.npm_package_version\r\n : FALLBACK_SDK_VERSION;\r\nconst SDK_HEADER_VALUE = `${SDK_NAME} ${SDK_VERSION}`;\r\n\r\nfunction parseResponseBody(rawText: string, contentType: string | null) {\r\n if (!rawText) {\r\n return { parsed: null as unknown, parseFailed: false };\r\n }\r\n\r\n const contentTypeSuggestsJson =\r\n contentType?.toLowerCase().includes(\"application/json\") ?? false;\r\n const looksJson =\r\n contentTypeSuggestsJson || rawText.startsWith(\"{\") || rawText.startsWith(\"[\");\r\n\r\n if (!looksJson) {\r\n return { parsed: rawText as unknown, parseFailed: false };\r\n }\r\n\r\n try {\r\n return { parsed: JSON.parse(rawText) as unknown, parseFailed: false };\r\n } catch {\r\n return { parsed: rawText as unknown, parseFailed: true };\r\n }\r\n}\r\n\r\nfunction normalizeHeaderValue(value?: string | null) {\r\n return value ? value : undefined;\r\n}\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\r\n}\r\n\r\nfunction resolveRequestId(headers: Headers): string | undefined {\r\n return (\r\n headers.get(\"x-request-id\") ??\r\n headers.get(\"x-correlation-id\") ??\r\n headers.get(\"x-athena-request-id\") ??\r\n undefined\r\n );\r\n}\r\n\r\nfunction resolveErrorMessage(payload: unknown, fallback: string) {\r\n if (isRecord(payload)) {\r\n const messageCandidates = [payload.error, payload.message, payload.details];\r\n for (const candidate of messageCandidates) {\r\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\r\n return candidate.trim();\r\n }\r\n }\r\n }\r\n\r\n if (typeof payload === \"string\" && payload.trim().length > 0) {\r\n return payload.trim();\r\n }\r\n\r\n return fallback;\r\n}\r\n\r\nfunction detailsFromError(error: AthenaGatewayError): AthenaGatewayErrorDetails {\r\n return error.toDetails();\r\n}\r\n\r\nfunction toQueryScalar(value: unknown): string {\r\n if (value === null || value === undefined) return \"null\";\r\n if (typeof value === \"boolean\") return value ? \"true\" : \"false\";\r\n if (typeof value === \"number\") return Number.isFinite(value) ? String(value) : \"null\";\r\n return String(value);\r\n}\r\n\r\nfunction toQueryArray(values: unknown[]): string {\r\n return `{${values.map(toQueryScalar).join(\",\")}}`;\r\n}\r\n\r\nfunction toRpcArgumentQueryValue(value: unknown): string {\r\n if (Array.isArray(value)) return toQueryArray(value);\r\n if (value && typeof value === \"object\") return JSON.stringify(value);\r\n return toQueryScalar(value);\r\n}\r\n\r\nfunction toRpcFilterQueryValue(filter: AthenaRpcFilter): string {\r\n const value = filter.value;\r\n switch (filter.operator) {\r\n case \"in\": {\r\n if (!Array.isArray(value)) {\r\n throw new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message: `RPC filter \"${filter.column}\" with operator \"in\" requires an array value`,\r\n status: 0,\r\n });\r\n }\r\n return `in.${toQueryArray(value)}`;\r\n }\r\n case \"is\":\r\n return `is.${toQueryScalar(value)}`;\r\n case \"eq\":\r\n case \"neq\":\r\n case \"gt\":\r\n case \"gte\":\r\n case \"lt\":\r\n case \"lte\":\r\n case \"like\":\r\n case \"ilike\":\r\n return `${filter.operator}.${toQueryScalar(value)}`;\r\n }\r\n}\r\n\r\nfunction buildRpcGetEndpoint(payload: AthenaRpcPayload): AthenaGatewayEndpointPath {\r\n const functionName = (payload.function_name ?? payload.function).trim();\r\n if (!functionName) {\r\n throw new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message: \"rpc requires a function name\",\r\n status: 0,\r\n endpoint: \"/gateway/rpc\",\r\n method: \"GET\",\r\n });\r\n }\r\n\r\n const query = new URLSearchParams();\r\n if (payload.schema) query.set(\"schema\", payload.schema);\r\n if (payload.select) query.set(\"select\", payload.select);\r\n if (payload.count) query.set(\"count\", payload.count);\r\n if (payload.head) query.set(\"head\", \"true\");\r\n if (typeof payload.limit === \"number\") query.set(\"limit\", String(payload.limit));\r\n if (typeof payload.offset === \"number\") query.set(\"offset\", String(payload.offset));\r\n if (payload.order?.column) {\r\n query.set(\r\n \"order\",\r\n payload.order.ascending === false\r\n ? `${payload.order.column}.desc`\r\n : payload.order.column,\r\n );\r\n }\r\n\r\n if (payload.args) {\r\n for (const [key, value] of Object.entries(payload.args)) {\r\n query.set(key, toRpcArgumentQueryValue(value));\r\n }\r\n }\r\n\r\n if (payload.filters?.length) {\r\n for (const filter of payload.filters) {\r\n if (payload.args && Object.prototype.hasOwnProperty.call(payload.args, filter.column)) {\r\n throw new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message: `RPC filter \"${filter.column}\" conflicts with RPC argument \"${filter.column}\" in GET mode`,\r\n status: 0,\r\n });\r\n }\r\n query.set(filter.column, toRpcFilterQueryValue(filter));\r\n }\r\n }\r\n\r\n const endpoint = `/rpc/${encodeURIComponent(functionName)}`;\r\n const queryText = query.toString();\r\n const withQuery = queryText ? `${endpoint}?${queryText}` : endpoint;\r\n return withQuery as AthenaGatewayEndpointPath;\r\n}\r\n\r\nfunction buildHeaders(\r\n config: AthenaGatewayBaseOptions,\r\n options?: AthenaGatewayCallOptions,\r\n): Record<string, string> {\r\n const mergedStripNulls = options?.stripNulls ?? true;\r\n const extraHeaders = {\r\n ...(config.headers ?? {}),\r\n ...(options?.headers ?? {}),\r\n };\r\n const headerClient =\r\n extraHeaders[\"x-athena-client\"] ?? extraHeaders[\"X-Athena-Client\"];\r\n const finalClient =\r\n options?.client ??\r\n config.client ??\r\n (typeof headerClient === \"string\" ? headerClient : undefined) ??\r\n DEFAULT_CLIENT;\r\n const finalApiKey = options?.apiKey ?? config.apiKey;\r\n const finalPublishEvent = options?.publishEvent ?? config.publishEvent;\r\n\r\n const headers: Record<string, string> = {\r\n \"Content-Type\": \"application/json\",\r\n \"X-Athena-Sdk\": SDK_HEADER_VALUE,\r\n };\r\n\r\n if (options?.userId ?? config.userId) {\r\n headers[\"X-User-Id\"] = options?.userId ?? config.userId ?? \"\";\r\n }\r\n\r\n if (options?.organizationId ?? config.organizationId) {\r\n headers[\"X-Organization-Id\"] =\r\n options?.organizationId ?? config.organizationId ?? \"\";\r\n }\r\n\r\n if (finalClient) {\r\n headers[\"X-Athena-Client\"] = finalClient;\r\n }\r\n\r\n const finalBackend = options?.backend ?? config.backend;\r\n if (finalBackend) {\r\n const type =\r\n typeof finalBackend === \"string\" ? finalBackend : finalBackend.type;\r\n if (type) headers[\"X-Backend-Type\"] = type;\r\n }\r\n\r\n if (typeof mergedStripNulls === \"boolean\") {\r\n headers[\"X-Strip-Nulls\"] = mergedStripNulls ? \"true\" : \"false\";\r\n }\r\n\r\n if (finalPublishEvent) {\r\n headers[\"X-Publish-Event\"] = finalPublishEvent;\r\n }\r\n\r\n if (finalApiKey) {\r\n headers[\"apikey\"] = finalApiKey;\r\n headers[\"x-api-key\"] = headers[\"x-api-key\"] ?? finalApiKey;\r\n }\r\n\r\n const athenaClientKeys = [\"x-athena-client\", \"X-Athena-Client\"];\r\n Object.entries(extraHeaders).forEach(([key, value]) => {\r\n if (athenaClientKeys.includes(key)) return;\r\n const normalized = normalizeHeaderValue(value);\r\n if (normalized) {\r\n headers[key] = normalized;\r\n }\r\n });\r\n\r\n return headers;\r\n}\r\n\r\nasync function callAthena<T>(\r\n config: AthenaGatewayBaseOptions,\r\n endpoint: AthenaGatewayEndpointPath,\r\n method: AthenaGatewayMethod,\r\n payload: unknown,\r\n options?: AthenaGatewayCallOptions,\r\n): Promise<AthenaGatewayResponse<T>> {\r\n const baseUrl = (\r\n options?.baseUrl ??\r\n config.baseUrl ??\r\n DEFAULT_BASE_URL\r\n ).replace(/\\/$/, \"\");\r\n const url = `${baseUrl}${endpoint}`;\r\n const headers = buildHeaders(config, options);\r\n\r\n try {\r\n const requestInit: RequestInit = {\r\n method,\r\n headers,\r\n };\r\n if (method !== \"GET\") {\r\n requestInit.body = JSON.stringify(payload);\r\n }\r\n\r\n const response = await fetch(url, requestInit);\r\n\r\n const rawText = await response.text();\r\n const requestId = resolveRequestId(response.headers);\r\n const parsedBody = parseResponseBody(\r\n rawText ?? \"\",\r\n response.headers.get(\"content-type\"),\r\n );\r\n\r\n if (parsedBody.parseFailed) {\r\n const invalidJsonError = new AthenaGatewayError({\r\n code: \"INVALID_JSON\",\r\n message: \"Gateway returned malformed JSON\",\r\n status: response.status,\r\n endpoint,\r\n method,\r\n requestId,\r\n hint: \"Verify the gateway response body is valid JSON.\",\r\n cause: rawText.slice(0, 300),\r\n });\r\n return {\r\n ok: false,\r\n status: response.status,\r\n data: null,\r\n error: invalidJsonError.message,\r\n errorDetails: detailsFromError(invalidJsonError),\r\n raw: parsedBody.parsed,\r\n };\r\n }\r\n\r\n const parsed = parsedBody.parsed;\r\n const parsedPayload = isRecord(parsed) ? parsed : null;\r\n\r\n if (!response.ok) {\r\n const httpError = new AthenaGatewayError({\r\n code: \"HTTP_ERROR\",\r\n message: resolveErrorMessage(\r\n parsed,\r\n `Athena gateway ${method} ${endpoint} failed with status ${response.status}`,\r\n ),\r\n status: response.status,\r\n endpoint,\r\n method,\r\n requestId,\r\n });\r\n\r\n return {\r\n ok: false,\r\n status: response.status,\r\n data: null,\r\n error: httpError.message,\r\n errorDetails: detailsFromError(httpError),\r\n raw: parsed,\r\n };\r\n }\r\n\r\n // Unwrap envelope: API may return { data: [...], error: null } (e.g. when cached)\r\n // vs raw array when uncached. Use inner data when present to avoid double nesting.\r\n const payloadData =\r\n parsedPayload && \"data\" in parsedPayload\r\n ? (parsedPayload.data as T)\r\n : (parsed as T);\r\n const payloadCount =\r\n parsedPayload && \"count\" in parsedPayload\r\n ? typeof parsedPayload.count === \"number\" || parsedPayload.count === null\r\n ? (parsedPayload.count as number | null)\r\n : undefined\r\n : undefined;\r\n\r\n return {\r\n ok: true,\r\n status: response.status,\r\n data: payloadData ?? null,\r\n count: payloadCount,\r\n error: undefined,\r\n errorDetails: null,\r\n raw: parsed,\r\n };\r\n } catch (callError) {\r\n const message = callError instanceof Error ? callError.message : String(callError);\r\n const networkError = new AthenaGatewayError({\r\n code: \"NETWORK_ERROR\",\r\n message: `Network error while calling ${method} ${endpoint}: ${message}`,\r\n endpoint,\r\n method,\r\n cause: message,\r\n hint: \"Check gateway URL, DNS, and network reachability.\",\r\n });\r\n return {\r\n ok: false,\r\n status: 0,\r\n data: null,\r\n error: networkError.message,\r\n errorDetails: detailsFromError(networkError),\r\n raw: null,\r\n };\r\n }\r\n}\r\n\r\nexport interface AthenaGatewayClient {\r\n baseUrl: string;\r\n buildHeaders(options?: AthenaGatewayCallOptions): Record<string, string>;\r\n fetchGateway<T>(\r\n payload: AthenaFetchPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n insertGateway<T>(\r\n payload: AthenaInsertPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n updateGateway<T>(\r\n payload: AthenaUpdatePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n deleteGateway<T>(\r\n payload: AthenaDeletePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n rpcGateway<T>(\r\n payload: AthenaRpcPayload,\r\n options?: AthenaRpcCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n queryGateway<T>(\r\n payload: AthenaQueryPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n}\r\n\r\nexport function createAthenaGatewayClient(\r\n config: AthenaGatewayBaseOptions = {},\r\n): AthenaGatewayClient {\r\n return {\r\n baseUrl: (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\"),\r\n buildHeaders(options) {\r\n return buildHeaders(config, options);\r\n },\r\n fetchGateway(payload, options) {\r\n return callAthena(config, \"/gateway/fetch\", \"POST\", payload, options);\r\n },\r\n insertGateway(payload, options) {\r\n return callAthena(config, \"/gateway/insert\", \"PUT\", payload, options);\r\n },\r\n updateGateway(payload, options) {\r\n return callAthena(config, \"/gateway/update\", \"POST\", payload, options);\r\n },\r\n deleteGateway(payload, options) {\r\n return callAthena(config, \"/gateway/delete\", \"DELETE\", payload, options);\r\n },\r\n rpcGateway(payload, options) {\r\n if (options?.get) {\r\n const endpoint = buildRpcGetEndpoint(payload);\r\n return callAthena(config, endpoint, \"GET\", null, options);\r\n }\r\n return callAthena(config, \"/gateway/rpc\", \"POST\", payload, options);\r\n },\r\n queryGateway(payload, options) {\r\n return callAthena(config, \"/gateway/query\", \"POST\", payload, options);\r\n },\r\n };\r\n}\r\n","import { useCallback, useMemo, useState } from \"react\";\r\nimport type {\r\n AthenaDeletePayload,\r\n AthenaFetchPayload,\r\n AthenaGatewayCallLog,\r\n AthenaGatewayCallOptions,\r\n AthenaGatewayEndpointPath,\r\n AthenaGatewayHookConfig,\r\n AthenaGatewayHookResult,\r\n AthenaGatewayMethod,\r\n AthenaGatewayResponse,\n AthenaGatewayResponseLog,\n AthenaInsertPayload,\n AthenaRpcCallOptions,\n AthenaRpcPayload,\n AthenaUpdatePayload,\n} from \"./types.js\";\nimport { createAthenaGatewayClient } from \"./client.js\";\nimport { AthenaGatewayError } from \"./errors.ts\";\n\r\nexport function useAthenaGateway(\r\n config?: AthenaGatewayHookConfig,\r\n): AthenaGatewayHookResult {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [lastRequest, setLastRequest] = useState<AthenaGatewayCallLog | null>(\r\n null,\r\n );\r\n const [lastResponse, setLastResponse] =\r\n useState<AthenaGatewayResponseLog | null>(null);\r\n\r\n const client = useMemo(\r\n () =>\r\n createAthenaGatewayClient({\r\n client: config?.client,\r\n baseUrl: config?.baseUrl,\r\n apiKey: config?.apiKey,\r\n backend: config?.backend,\r\n publishEvent: config?.publishEvent,\r\n headers: config?.headers,\r\n userId: config?.userId,\r\n organizationId: config?.organizationId,\r\n }),\r\n [\r\n config?.baseUrl,\r\n config?.client,\r\n config?.apiKey,\r\n config?.backend,\r\n config?.publishEvent,\r\n config?.headers,\r\n config?.userId,\r\n config?.organizationId,\r\n ],\r\n );\r\n\r\n const callWithLifecycle = useCallback(\r\n async <T>(\r\n fn: () => Promise<AthenaGatewayResponse<T>>,\r\n metadata: {\r\n endpoint: string;\r\n method: string;\r\n payload: unknown;\r\n options?: AthenaGatewayCallOptions;\r\n },\r\n ): Promise<AthenaGatewayResponse<T>> => {\r\n const requestLog: AthenaGatewayCallLog = {\r\n endpoint: metadata.endpoint as AthenaGatewayEndpointPath,\r\n method: metadata.method as AthenaGatewayMethod,\r\n payload: metadata.payload,\r\n headers: client.buildHeaders(metadata.options),\r\n timestamp: new Date().toISOString(),\r\n };\r\n\r\n setLastRequest(requestLog);\r\n setIsLoading(true);\r\n setError(null);\r\n\r\n let response: AthenaGatewayResponse<T> | undefined;\r\n try {\n response = await fn();\n setLastResponse({ ...response, timestamp: new Date().toISOString() });\n\n if (!response.ok) {\n const failure = AthenaGatewayError.fromResponse(response, {\n endpoint: metadata.endpoint as AthenaGatewayEndpointPath,\n method: metadata.method as AthenaGatewayMethod,\n });\n setError(failure.message);\n throw failure;\n }\n\n return response;\n } catch (callError) {\n const message =\n callError instanceof Error ? callError.message : String(callError);\n const typedError =\n callError instanceof AthenaGatewayError\n ? callError\n : new AthenaGatewayError({\n code: \"UNKNOWN_ERROR\",\n message,\n endpoint: metadata.endpoint as AthenaGatewayEndpointPath,\n method: metadata.method as AthenaGatewayMethod,\n cause: message,\n });\n setError(message);\n setLastResponse({\n timestamp: new Date().toISOString(),\n status: typedError.status || response?.status || 0,\n ok: false,\n data: null,\n raw: null,\n error: typedError.message,\n errorDetails: typedError.toDetails(),\n });\n throw typedError;\n } finally {\n setIsLoading(false);\n }\n },\n [client],\r\n );\r\n\r\n const defaultStripNulls = true;\r\n\r\n const fetchGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaFetchPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) => {\r\n const normalizedPayload: AthenaFetchPayload = {\r\n ...payload,\r\n conditions: payload.conditions ?? [],\r\n strip_nulls:\r\n payload.strip_nulls ?? options?.stripNulls ?? defaultStripNulls,\r\n };\r\n return callWithLifecycle<T>(\r\n () => client.fetchGateway<T>(normalizedPayload, options),\r\n {\r\n endpoint: \"/gateway/fetch\",\r\n method: \"POST\",\r\n payload: normalizedPayload,\r\n options,\r\n },\r\n );\r\n },\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const insertGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaInsertPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) =>\r\n callWithLifecycle<T>(() => client.insertGateway<T>(payload, options), {\r\n endpoint: \"/gateway/insert\",\r\n method: \"PUT\",\r\n payload,\r\n options,\r\n }),\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const updateGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaUpdatePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) => {\r\n const normalizedPayload: AthenaUpdatePayload = {\r\n ...payload,\r\n conditions: payload.conditions ?? [],\r\n strip_nulls:\r\n payload.strip_nulls ?? options?.stripNulls ?? defaultStripNulls,\r\n };\r\n return callWithLifecycle<T>(\r\n () => client.updateGateway<T>(normalizedPayload, options),\r\n {\r\n endpoint: \"/gateway/update\",\r\n method: \"POST\",\r\n payload: normalizedPayload,\r\n options,\r\n },\r\n );\r\n },\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const deleteGateway = useCallback(\n <T = unknown>(\r\n payload: AthenaDeletePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) => {\r\n if (!payload.resource_id) {\r\n throw new Error(\r\n \"deleteGateway requires resource_id (the unique identifier of the record to delete)\",\r\n );\r\n }\r\n return callWithLifecycle<T>(\r\n () => client.deleteGateway<T>(payload, options),\r\n { endpoint: \"/gateway/delete\", method: \"DELETE\", payload, options },\r\n );\r\n },\r\n [callWithLifecycle, client],\n );\n\n const rpcGateway = useCallback(\n <T = unknown>(payload: AthenaRpcPayload, options?: AthenaRpcCallOptions) =>\n callWithLifecycle<T>(() => client.rpcGateway<T>(payload, options), {\n endpoint: options?.get ? `/rpc/${payload.function}` : \"/gateway/rpc\",\n method: options?.get ? \"GET\" : \"POST\",\n payload,\n options,\n }),\n [callWithLifecycle, client],\n );\n\n return {\n fetchGateway,\n insertGateway,\n updateGateway,\n deleteGateway,\n rpcGateway,\n isLoading,\n error,\n lastRequest,\n lastResponse,\r\n baseUrl: client.baseUrl,\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/gateway/errors.ts","../src/gateway/client.ts","../src/gateway/use-athena-gateway.ts","../src/react/utils.ts","../src/react/query-client.ts","../src/react/provider.ts","../src/react/use-query.ts","../src/react/use-mutation.ts"],"names":["useState","useMemo","useCallback","isRecord","serialized","sourceData","selectedData","createContext","createElement","useContext","useRef","useSyncExternalStore","useEffect"],"mappings":"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","file":"react.cjs","sourcesContent":["import type {\n AthenaGatewayEndpointPath,\n AthenaGatewayErrorCode,\n AthenaGatewayErrorDetails,\n AthenaGatewayMethod,\n AthenaGatewayResponse,\n} from './types.js'\n\nexport interface AthenaGatewayErrorInput {\n code: AthenaGatewayErrorCode\n message: string\n status?: number\n endpoint?: AthenaGatewayEndpointPath\n method?: AthenaGatewayMethod\n requestId?: string\n hint?: string\n cause?: string\n}\n\n/**\n * Canonical error for gateway failures.\n * Holds request context and machine-readable classification.\n */\nexport class AthenaGatewayError extends Error {\n readonly code: AthenaGatewayErrorCode\n readonly status: number\n readonly endpoint?: AthenaGatewayEndpointPath\n readonly method?: AthenaGatewayMethod\n readonly requestId?: string\n readonly hint?: string\n readonly causeDetail?: string\n\n constructor(input: AthenaGatewayErrorInput) {\n super(input.message)\n this.name = 'AthenaGatewayError'\n this.code = input.code\n this.status = input.status ?? 0\n this.endpoint = input.endpoint\n this.method = input.method\n this.requestId = input.requestId\n this.hint = input.hint\n this.causeDetail = input.cause\n }\n\n toDetails(): AthenaGatewayErrorDetails {\n return {\n code: this.code,\n message: this.message,\n status: this.status,\n endpoint: this.endpoint,\n method: this.method,\n requestId: this.requestId,\n hint: this.hint,\n cause: this.causeDetail,\n }\n }\n\n static fromResponse<T>(\n response: AthenaGatewayResponse<T>,\n fallback: Omit<AthenaGatewayErrorInput, 'code' | 'message' | 'status'>,\n ) {\n const details = response.errorDetails\n if (details) {\n return new AthenaGatewayError({\n code: details.code,\n message: details.message,\n status: details.status,\n endpoint: details.endpoint ?? fallback.endpoint,\n method: details.method ?? fallback.method,\n requestId: details.requestId ?? fallback.requestId,\n hint: details.hint,\n cause: details.cause,\n })\n }\n\n return new AthenaGatewayError({\n code: 'HTTP_ERROR',\n message: response.error ?? 'Gateway request failed',\n status: response.status,\n endpoint: fallback.endpoint,\n method: fallback.method,\n requestId: fallback.requestId,\n })\n }\n}\n\nexport function isAthenaGatewayError(error: unknown): error is AthenaGatewayError {\n return error instanceof AthenaGatewayError\n}\n","import type {\r\n AthenaGatewayBaseOptions,\r\n AthenaGatewayCallOptions,\r\n AthenaGatewayEndpointPath,\r\n AthenaGatewayErrorDetails,\r\n AthenaGatewayMethod,\r\n AthenaRpcCallOptions,\r\n AthenaRpcPayload,\r\n AthenaGatewayResponse,\r\n} from \"./types.js\";\r\nimport type {\r\n AthenaDeletePayload,\r\n AthenaFetchPayload,\r\n AthenaInsertPayload,\r\n AthenaRpcFilter,\r\n AthenaUpdatePayload,\r\n AthenaQueryPayload,\r\n} from \"./types.js\";\r\nimport { AthenaGatewayError } from \"./errors.ts\";\r\n\r\nconst DEFAULT_BASE_URL = \"https://athena-db.com\";\r\nconst DEFAULT_CLIENT = \"railway_direct\";\r\nconst FALLBACK_SDK_VERSION = \"1.3.0\";\r\nconst SDK_NAME = \"xylex-group/athena\";\r\n\r\nconst SDK_VERSION =\r\n typeof process !== \"undefined\" && process?.env?.npm_package_version\r\n ? process.env.npm_package_version\r\n : FALLBACK_SDK_VERSION;\r\nconst SDK_HEADER_VALUE = `${SDK_NAME} ${SDK_VERSION}`;\r\n\r\nfunction parseResponseBody(rawText: string, contentType: string | null) {\r\n if (!rawText) {\r\n return { parsed: null as unknown, parseFailed: false };\r\n }\r\n\r\n const contentTypeSuggestsJson =\r\n contentType?.toLowerCase().includes(\"application/json\") ?? false;\r\n const looksJson =\r\n contentTypeSuggestsJson || rawText.startsWith(\"{\") || rawText.startsWith(\"[\");\r\n\r\n if (!looksJson) {\r\n return { parsed: rawText as unknown, parseFailed: false };\r\n }\r\n\r\n try {\r\n return { parsed: JSON.parse(rawText) as unknown, parseFailed: false };\r\n } catch {\r\n return { parsed: rawText as unknown, parseFailed: true };\r\n }\r\n}\r\n\r\nfunction normalizeHeaderValue(value?: string | null) {\r\n return value ? value : undefined;\r\n}\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\r\n}\r\n\r\nfunction resolveRequestId(headers: Headers): string | undefined {\r\n return (\r\n headers.get(\"x-request-id\") ??\r\n headers.get(\"x-correlation-id\") ??\r\n headers.get(\"x-athena-request-id\") ??\r\n undefined\r\n );\r\n}\r\n\r\nfunction resolveErrorMessage(payload: unknown, fallback: string) {\r\n if (isRecord(payload)) {\r\n const messageCandidates = [payload.error, payload.message, payload.details];\r\n for (const candidate of messageCandidates) {\r\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\r\n return candidate.trim();\r\n }\r\n }\r\n }\r\n\r\n if (typeof payload === \"string\" && payload.trim().length > 0) {\r\n return payload.trim();\r\n }\r\n\r\n return fallback;\r\n}\r\n\r\nfunction detailsFromError(error: AthenaGatewayError): AthenaGatewayErrorDetails {\r\n return error.toDetails();\r\n}\r\n\r\nfunction toQueryScalar(value: unknown): string {\r\n if (value === null || value === undefined) return \"null\";\r\n if (typeof value === \"boolean\") return value ? \"true\" : \"false\";\r\n if (typeof value === \"number\") return Number.isFinite(value) ? String(value) : \"null\";\r\n return String(value);\r\n}\r\n\r\nfunction toQueryArray(values: unknown[]): string {\r\n return `{${values.map(toQueryScalar).join(\",\")}}`;\r\n}\r\n\r\nfunction toRpcArgumentQueryValue(value: unknown): string {\r\n if (Array.isArray(value)) return toQueryArray(value);\r\n if (value && typeof value === \"object\") return JSON.stringify(value);\r\n return toQueryScalar(value);\r\n}\r\n\r\nfunction toRpcFilterQueryValue(filter: AthenaRpcFilter): string {\r\n const value = filter.value;\r\n switch (filter.operator) {\r\n case \"in\": {\r\n if (!Array.isArray(value)) {\r\n throw new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message: `RPC filter \"${filter.column}\" with operator \"in\" requires an array value`,\r\n status: 0,\r\n });\r\n }\r\n return `in.${toQueryArray(value)}`;\r\n }\r\n case \"is\":\r\n return `is.${toQueryScalar(value)}`;\r\n case \"eq\":\r\n case \"neq\":\r\n case \"gt\":\r\n case \"gte\":\r\n case \"lt\":\r\n case \"lte\":\r\n case \"like\":\r\n case \"ilike\":\r\n return `${filter.operator}.${toQueryScalar(value)}`;\r\n }\r\n}\r\n\r\nfunction buildRpcGetEndpoint(payload: AthenaRpcPayload): AthenaGatewayEndpointPath {\r\n const functionName = (payload.function_name ?? payload.function).trim();\r\n if (!functionName) {\r\n throw new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message: \"rpc requires a function name\",\r\n status: 0,\r\n endpoint: \"/gateway/rpc\",\r\n method: \"GET\",\r\n });\r\n }\r\n\r\n const query = new URLSearchParams();\r\n if (payload.schema) query.set(\"schema\", payload.schema);\r\n if (payload.select) query.set(\"select\", payload.select);\r\n if (payload.count) query.set(\"count\", payload.count);\r\n if (payload.head) query.set(\"head\", \"true\");\r\n if (typeof payload.limit === \"number\") query.set(\"limit\", String(payload.limit));\r\n if (typeof payload.offset === \"number\") query.set(\"offset\", String(payload.offset));\r\n if (payload.order?.column) {\r\n query.set(\r\n \"order\",\r\n payload.order.ascending === false\r\n ? `${payload.order.column}.desc`\r\n : payload.order.column,\r\n );\r\n }\r\n\r\n if (payload.args) {\r\n for (const [key, value] of Object.entries(payload.args)) {\r\n query.set(key, toRpcArgumentQueryValue(value));\r\n }\r\n }\r\n\r\n if (payload.filters?.length) {\r\n for (const filter of payload.filters) {\r\n if (payload.args && Object.prototype.hasOwnProperty.call(payload.args, filter.column)) {\r\n throw new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message: `RPC filter \"${filter.column}\" conflicts with RPC argument \"${filter.column}\" in GET mode`,\r\n status: 0,\r\n });\r\n }\r\n query.set(filter.column, toRpcFilterQueryValue(filter));\r\n }\r\n }\r\n\r\n const endpoint = `/rpc/${encodeURIComponent(functionName)}`;\r\n const queryText = query.toString();\r\n const withQuery = queryText ? `${endpoint}?${queryText}` : endpoint;\r\n return withQuery as AthenaGatewayEndpointPath;\r\n}\r\n\r\nfunction buildHeaders(\r\n config: AthenaGatewayBaseOptions,\r\n options?: AthenaGatewayCallOptions,\r\n): Record<string, string> {\r\n const mergedStripNulls = options?.stripNulls ?? true;\r\n const extraHeaders = {\r\n ...(config.headers ?? {}),\r\n ...(options?.headers ?? {}),\r\n };\r\n const headerClient =\r\n extraHeaders[\"x-athena-client\"] ?? extraHeaders[\"X-Athena-Client\"];\r\n const finalClient =\r\n options?.client ??\r\n config.client ??\r\n (typeof headerClient === \"string\" ? headerClient : undefined) ??\r\n DEFAULT_CLIENT;\r\n const finalApiKey = options?.apiKey ?? config.apiKey;\r\n const finalPublishEvent = options?.publishEvent ?? config.publishEvent;\r\n\r\n const headers: Record<string, string> = {\r\n \"Content-Type\": \"application/json\",\r\n \"X-Athena-Sdk\": SDK_HEADER_VALUE,\r\n };\r\n\r\n if (options?.userId ?? config.userId) {\r\n headers[\"X-User-Id\"] = options?.userId ?? config.userId ?? \"\";\r\n }\r\n\r\n if (options?.organizationId ?? config.organizationId) {\r\n headers[\"X-Organization-Id\"] =\r\n options?.organizationId ?? config.organizationId ?? \"\";\r\n }\r\n\r\n if (finalClient) {\r\n headers[\"X-Athena-Client\"] = finalClient;\r\n }\r\n\r\n const finalBackend = options?.backend ?? config.backend;\r\n if (finalBackend) {\r\n const type =\r\n typeof finalBackend === \"string\" ? finalBackend : finalBackend.type;\r\n if (type) headers[\"X-Backend-Type\"] = type;\r\n }\r\n\r\n if (typeof mergedStripNulls === \"boolean\") {\r\n headers[\"X-Strip-Nulls\"] = mergedStripNulls ? \"true\" : \"false\";\r\n }\r\n\r\n if (finalPublishEvent) {\r\n headers[\"X-Publish-Event\"] = finalPublishEvent;\r\n }\r\n\r\n if (finalApiKey) {\r\n headers[\"apikey\"] = finalApiKey;\r\n headers[\"x-api-key\"] = headers[\"x-api-key\"] ?? finalApiKey;\r\n }\r\n\r\n const athenaClientKeys = [\"x-athena-client\", \"X-Athena-Client\"];\r\n Object.entries(extraHeaders).forEach(([key, value]) => {\r\n if (athenaClientKeys.includes(key)) return;\r\n const normalized = normalizeHeaderValue(value);\r\n if (normalized) {\r\n headers[key] = normalized;\r\n }\r\n });\r\n\r\n return headers;\r\n}\r\n\r\nasync function callAthena<T>(\r\n config: AthenaGatewayBaseOptions,\r\n endpoint: AthenaGatewayEndpointPath,\r\n method: AthenaGatewayMethod,\r\n payload: unknown,\r\n options?: AthenaGatewayCallOptions,\r\n): Promise<AthenaGatewayResponse<T>> {\r\n const baseUrl = (\r\n options?.baseUrl ??\r\n config.baseUrl ??\r\n DEFAULT_BASE_URL\r\n ).replace(/\\/$/, \"\");\r\n const url = `${baseUrl}${endpoint}`;\r\n const headers = buildHeaders(config, options);\r\n\r\n try {\r\n const requestInit: RequestInit = {\r\n method,\r\n headers,\r\n };\r\n if (method !== \"GET\") {\r\n requestInit.body = JSON.stringify(payload);\r\n }\r\n\r\n const response = await fetch(url, requestInit);\r\n\r\n const rawText = await response.text();\r\n const requestId = resolveRequestId(response.headers);\r\n const parsedBody = parseResponseBody(\r\n rawText ?? \"\",\r\n response.headers.get(\"content-type\"),\r\n );\r\n\r\n if (parsedBody.parseFailed) {\r\n const invalidJsonError = new AthenaGatewayError({\r\n code: \"INVALID_JSON\",\r\n message: \"Gateway returned malformed JSON\",\r\n status: response.status,\r\n endpoint,\r\n method,\r\n requestId,\r\n hint: \"Verify the gateway response body is valid JSON.\",\r\n cause: rawText.slice(0, 300),\r\n });\r\n return {\r\n ok: false,\r\n status: response.status,\r\n data: null,\r\n error: invalidJsonError.message,\r\n errorDetails: detailsFromError(invalidJsonError),\r\n raw: parsedBody.parsed,\r\n };\r\n }\r\n\r\n const parsed = parsedBody.parsed;\r\n const parsedPayload = isRecord(parsed) ? parsed : null;\r\n\r\n if (!response.ok) {\r\n const httpError = new AthenaGatewayError({\r\n code: \"HTTP_ERROR\",\r\n message: resolveErrorMessage(\r\n parsed,\r\n `Athena gateway ${method} ${endpoint} failed with status ${response.status}`,\r\n ),\r\n status: response.status,\r\n endpoint,\r\n method,\r\n requestId,\r\n });\r\n\r\n return {\r\n ok: false,\r\n status: response.status,\r\n data: null,\r\n error: httpError.message,\r\n errorDetails: detailsFromError(httpError),\r\n raw: parsed,\r\n };\r\n }\r\n\r\n // Unwrap envelope: API may return { data: [...], error: null } (e.g. when cached)\r\n // vs raw array when uncached. Use inner data when present to avoid double nesting.\r\n const payloadData =\r\n parsedPayload && \"data\" in parsedPayload\r\n ? (parsedPayload.data as T)\r\n : (parsed as T);\r\n const payloadCount =\r\n parsedPayload && \"count\" in parsedPayload\r\n ? typeof parsedPayload.count === \"number\" || parsedPayload.count === null\r\n ? (parsedPayload.count as number | null)\r\n : undefined\r\n : undefined;\r\n\r\n return {\r\n ok: true,\r\n status: response.status,\r\n data: payloadData ?? null,\r\n count: payloadCount,\r\n error: undefined,\r\n errorDetails: null,\r\n raw: parsed,\r\n };\r\n } catch (callError) {\r\n const message = callError instanceof Error ? callError.message : String(callError);\r\n const networkError = new AthenaGatewayError({\r\n code: \"NETWORK_ERROR\",\r\n message: `Network error while calling ${method} ${endpoint}: ${message}`,\r\n endpoint,\r\n method,\r\n cause: message,\r\n hint: \"Check gateway URL, DNS, and network reachability.\",\r\n });\r\n return {\r\n ok: false,\r\n status: 0,\r\n data: null,\r\n error: networkError.message,\r\n errorDetails: detailsFromError(networkError),\r\n raw: null,\r\n };\r\n }\r\n}\r\n\r\nexport interface AthenaGatewayClient {\r\n baseUrl: string;\r\n buildHeaders(options?: AthenaGatewayCallOptions): Record<string, string>;\r\n fetchGateway<T>(\r\n payload: AthenaFetchPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n insertGateway<T>(\r\n payload: AthenaInsertPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n updateGateway<T>(\r\n payload: AthenaUpdatePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n deleteGateway<T>(\r\n payload: AthenaDeletePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n rpcGateway<T>(\r\n payload: AthenaRpcPayload,\r\n options?: AthenaRpcCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n queryGateway<T>(\r\n payload: AthenaQueryPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ): Promise<AthenaGatewayResponse<T>>;\r\n}\r\n\r\nexport function createAthenaGatewayClient(\r\n config: AthenaGatewayBaseOptions = {},\r\n): AthenaGatewayClient {\r\n return {\r\n baseUrl: (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\"),\r\n buildHeaders(options) {\r\n return buildHeaders(config, options);\r\n },\r\n fetchGateway(payload, options) {\r\n return callAthena(config, \"/gateway/fetch\", \"POST\", payload, options);\r\n },\r\n insertGateway(payload, options) {\r\n return callAthena(config, \"/gateway/insert\", \"PUT\", payload, options);\r\n },\r\n updateGateway(payload, options) {\r\n return callAthena(config, \"/gateway/update\", \"POST\", payload, options);\r\n },\r\n deleteGateway(payload, options) {\r\n return callAthena(config, \"/gateway/delete\", \"DELETE\", payload, options);\r\n },\r\n rpcGateway(payload, options) {\r\n if (options?.get) {\r\n const endpoint = buildRpcGetEndpoint(payload);\r\n return callAthena(config, endpoint, \"GET\", null, options);\r\n }\r\n return callAthena(config, \"/gateway/rpc\", \"POST\", payload, options);\r\n },\r\n queryGateway(payload, options) {\r\n return callAthena(config, \"/gateway/query\", \"POST\", payload, options);\r\n },\r\n };\r\n}\r\n","import { useCallback, useMemo, useState } from \"react\";\r\nimport type {\r\n AthenaDeletePayload,\r\n AthenaFetchPayload,\r\n AthenaGatewayCallLog,\r\n AthenaGatewayCallOptions,\r\n AthenaGatewayEndpointPath,\r\n AthenaGatewayHookConfig,\r\n AthenaGatewayHookResult,\r\n AthenaGatewayMethod,\r\n AthenaGatewayResponse,\r\n AthenaGatewayResponseLog,\r\n AthenaInsertPayload,\r\n AthenaRpcCallOptions,\r\n AthenaRpcPayload,\r\n AthenaUpdatePayload,\r\n} from \"./types.ts\";\r\nimport { createAthenaGatewayClient } from \"./client.ts\";\r\nimport { AthenaGatewayError } from \"./errors.ts\";\r\n\r\nexport function useAthenaGateway(\r\n config?: AthenaGatewayHookConfig,\r\n): AthenaGatewayHookResult {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [lastRequest, setLastRequest] = useState<AthenaGatewayCallLog | null>(\r\n null,\r\n );\r\n const [lastResponse, setLastResponse] =\r\n useState<AthenaGatewayResponseLog | null>(null);\r\n\r\n const client = useMemo(\r\n () =>\r\n createAthenaGatewayClient({\r\n client: config?.client,\r\n baseUrl: config?.baseUrl,\r\n apiKey: config?.apiKey,\r\n backend: config?.backend,\r\n publishEvent: config?.publishEvent,\r\n headers: config?.headers,\r\n userId: config?.userId,\r\n organizationId: config?.organizationId,\r\n }),\r\n [\r\n config?.baseUrl,\r\n config?.client,\r\n config?.apiKey,\r\n config?.backend,\r\n config?.publishEvent,\r\n config?.headers,\r\n config?.userId,\r\n config?.organizationId,\r\n ],\r\n );\r\n\r\n const callWithLifecycle = useCallback(\r\n async <T>(\r\n fn: () => Promise<AthenaGatewayResponse<T>>,\r\n metadata: {\r\n endpoint: string;\r\n method: string;\r\n payload: unknown;\r\n options?: AthenaGatewayCallOptions;\r\n },\r\n ): Promise<AthenaGatewayResponse<T>> => {\r\n const requestLog: AthenaGatewayCallLog = {\r\n endpoint: metadata.endpoint as AthenaGatewayEndpointPath,\r\n method: metadata.method as AthenaGatewayMethod,\r\n payload: metadata.payload,\r\n headers: client.buildHeaders(metadata.options),\r\n timestamp: new Date().toISOString(),\r\n };\r\n\r\n setLastRequest(requestLog);\r\n setIsLoading(true);\r\n setError(null);\r\n\r\n let response: AthenaGatewayResponse<T> | undefined;\r\n try {\r\n response = await fn();\r\n setLastResponse({ ...response, timestamp: new Date().toISOString() });\r\n\r\n if (!response.ok) {\r\n const failure = AthenaGatewayError.fromResponse(response, {\r\n endpoint: metadata.endpoint as AthenaGatewayEndpointPath,\r\n method: metadata.method as AthenaGatewayMethod,\r\n });\r\n setError(failure.message);\r\n throw failure;\r\n }\r\n\r\n return response;\r\n } catch (callError) {\r\n const message =\r\n callError instanceof Error ? callError.message : String(callError);\r\n const typedError =\r\n callError instanceof AthenaGatewayError\r\n ? callError\r\n : new AthenaGatewayError({\r\n code: \"UNKNOWN_ERROR\",\r\n message,\r\n endpoint: metadata.endpoint as AthenaGatewayEndpointPath,\r\n method: metadata.method as AthenaGatewayMethod,\r\n cause: message,\r\n });\r\n setError(message);\r\n setLastResponse({\r\n timestamp: new Date().toISOString(),\r\n status: typedError.status || response?.status || 0,\r\n ok: false,\r\n data: null,\r\n raw: null,\r\n error: typedError.message,\r\n errorDetails: typedError.toDetails(),\r\n });\r\n throw typedError;\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n },\r\n [client],\r\n );\r\n\r\n const defaultStripNulls = true;\r\n\r\n const fetchGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaFetchPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) => {\r\n const normalizedPayload: AthenaFetchPayload = {\r\n ...payload,\r\n conditions: payload.conditions ?? [],\r\n strip_nulls:\r\n payload.strip_nulls ?? options?.stripNulls ?? defaultStripNulls,\r\n };\r\n return callWithLifecycle<T>(\r\n () => client.fetchGateway<T>(normalizedPayload, options),\r\n {\r\n endpoint: \"/gateway/fetch\",\r\n method: \"POST\",\r\n payload: normalizedPayload,\r\n options,\r\n },\r\n );\r\n },\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const insertGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaInsertPayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) =>\r\n callWithLifecycle<T>(() => client.insertGateway<T>(payload, options), {\r\n endpoint: \"/gateway/insert\",\r\n method: \"PUT\",\r\n payload,\r\n options,\r\n }),\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const updateGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaUpdatePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) => {\r\n const normalizedPayload: AthenaUpdatePayload = {\r\n ...payload,\r\n conditions: payload.conditions ?? [],\r\n strip_nulls:\r\n payload.strip_nulls ?? options?.stripNulls ?? defaultStripNulls,\r\n };\r\n return callWithLifecycle<T>(\r\n () => client.updateGateway<T>(normalizedPayload, options),\r\n {\r\n endpoint: \"/gateway/update\",\r\n method: \"POST\",\r\n payload: normalizedPayload,\r\n options,\r\n },\r\n );\r\n },\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const deleteGateway = useCallback(\r\n <T = unknown>(\r\n payload: AthenaDeletePayload,\r\n options?: AthenaGatewayCallOptions,\r\n ) => {\r\n if (!payload.resource_id) {\r\n throw new Error(\r\n \"deleteGateway requires resource_id (the unique identifier of the record to delete)\",\r\n );\r\n }\r\n return callWithLifecycle<T>(\r\n () => client.deleteGateway<T>(payload, options),\r\n { endpoint: \"/gateway/delete\", method: \"DELETE\", payload, options },\r\n );\r\n },\r\n [callWithLifecycle, client],\r\n );\r\n\r\n const rpcGateway = useCallback(\r\n <T = unknown>(payload: AthenaRpcPayload, options?: AthenaRpcCallOptions) =>\r\n callWithLifecycle<T>(() => client.rpcGateway<T>(payload, options), {\r\n endpoint: options?.get ? `/rpc/${payload.function}` : \"/gateway/rpc\",\r\n method: options?.get ? \"GET\" : \"POST\",\r\n payload,\r\n options,\r\n }),\r\n [callWithLifecycle, client],\r\n );\r\n\r\n return {\r\n fetchGateway,\r\n insertGateway,\r\n updateGateway,\r\n deleteGateway,\r\n rpcGateway,\r\n isLoading,\r\n error,\r\n lastRequest,\r\n lastResponse,\r\n baseUrl: client.baseUrl,\r\n };\r\n}\r\n","import { isAthenaGatewayError } from '../gateway/errors.ts'\r\nimport type {\r\n AthenaQueryError,\r\n AthenaQueryResult,\r\n AthenaResponseLike,\r\n AthenaRetryCount,\r\n AthenaRetryDelay,\r\n QueryKey,\r\n} from './types.ts'\r\n\r\ntype RetryOptions = {\r\n retry?: AthenaRetryCount\r\n retryDelay?: AthenaRetryDelay\r\n}\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value)\r\n}\r\n\r\nfunction isPrimitive(value: unknown): value is string | number | boolean | null | undefined {\r\n return value == null || ['string', 'number', 'boolean'].includes(typeof value)\r\n}\r\n\r\nfunction encodePrimitive(value: string | number | boolean | null | undefined): string {\r\n if (value === null) return 'null:0:'\r\n if (value === undefined) return 'undefined:0:'\r\n if (typeof value === 'string') return `str:${value.length}:${value}`\r\n if (typeof value === 'number') {\r\n const serialized = Number.isFinite(value) ? String(value) : 'nan'\r\n return `num:${serialized.length}:${serialized}`\r\n }\r\n const serialized = value ? '1' : '0'\r\n return `bool:${serialized.length}:${serialized}`\r\n}\r\n\r\nfunction stableSerialize(value: unknown, seen: WeakSet<object>): string {\r\n if (value === null) return 'null'\r\n if (value === undefined) return 'undefined'\r\n\r\n const valueType = typeof value\r\n if (valueType === 'string') return `\"${value}\"`\r\n if (valueType === 'number') return Number.isFinite(value as number) ? String(value) : 'null'\r\n if (valueType === 'boolean') return (value as boolean) ? 'true' : 'false'\r\n if (valueType === 'bigint') return `${String(value)}n`\r\n if (valueType === 'symbol') return `symbol:${String(value)}`\r\n if (valueType === 'function') {\r\n const namedFunction = value as { name?: string }\r\n return `function:${namedFunction.name || 'anonymous'}`\r\n }\r\n\r\n if (value instanceof Date) return `date:${value.toISOString()}`\r\n\r\n if (Array.isArray(value)) {\r\n return `[${value.map(item => stableSerialize(item, seen)).join(',')}]`\r\n }\r\n\r\n if (valueType === 'object') {\r\n const objectValue = value as Record<string, unknown>\r\n if (seen.has(objectValue)) return '[circular]'\r\n seen.add(objectValue)\r\n const keys = Object.keys(objectValue).sort()\r\n const serialized = `{${keys\r\n .map(key => `${key}:${stableSerialize(objectValue[key], seen)}`)\r\n .join(',')}}`\r\n seen.delete(objectValue)\r\n return serialized\r\n }\r\n\r\n return String(value)\r\n}\r\n\r\nexport function safeSerializeQueryKey(queryKey: QueryKey): string {\r\n try {\r\n if (typeof queryKey === 'string') {\r\n return `key:${queryKey}`\r\n }\r\n\r\n if (Array.isArray(queryKey) && queryKey.every(isPrimitive)) {\r\n return `arr:${queryKey.map(item => encodePrimitive(item)).join('|')}`\r\n }\r\n\r\n return `ser:${stableSerialize(queryKey, new WeakSet<object>())}`\r\n } catch {\r\n try {\r\n return `fallback:${String(queryKey)}`\r\n } catch {\r\n return 'fallback:[unserializable-query-key]'\r\n }\r\n }\r\n}\r\n\r\nexport function sleep(ms: number): Promise<void> {\r\n if (ms <= 0) return Promise.resolve()\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms)\r\n })\r\n}\r\n\r\nfunction resolveRetryCount(retry: AthenaRetryCount | undefined): number {\r\n if (retry === false || retry == null) return 0\r\n if (!Number.isFinite(retry)) return 0\r\n return Math.max(0, Math.trunc(retry))\r\n}\r\n\r\nfunction resolveRetryDelay(retryDelay: AthenaRetryDelay | undefined, attempt: number): number {\r\n if (typeof retryDelay === 'function') {\r\n const resolved = retryDelay(attempt)\r\n if (!Number.isFinite(resolved)) return 0\r\n return Math.max(0, resolved)\r\n }\r\n if (typeof retryDelay === 'number') {\r\n if (!Number.isFinite(retryDelay)) return 0\r\n return Math.max(0, retryDelay)\r\n }\r\n return 0\r\n}\r\n\r\nexport async function runWithRetry<T>(\r\n execute: (attempt: number) => Promise<T>,\r\n options?: RetryOptions,\r\n): Promise<T> {\r\n const retries = resolveRetryCount(options?.retry)\r\n let attempt = 0\r\n\r\n for (;;) {\r\n attempt += 1\r\n try {\r\n return await execute(attempt)\r\n } catch (error) {\r\n if (attempt > retries) {\r\n throw error\r\n }\r\n const delay = resolveRetryDelay(options?.retryDelay, attempt)\r\n await sleep(delay)\r\n }\r\n }\r\n}\r\n\r\nfunction errorMessageFromUnknown(error: unknown): string {\r\n if (typeof error === 'string' && error.trim()) return error.trim()\r\n if (error instanceof Error && error.message.trim()) return error.message.trim()\r\n if (isRecord(error)) {\r\n const messageCandidate = error.message ?? error.error\r\n if (typeof messageCandidate === 'string' && messageCandidate.trim()) {\r\n return messageCandidate.trim()\r\n }\r\n }\r\n return 'Athena request failed'\r\n}\r\n\r\nexport function normalizeAthenaError(\r\n error: unknown,\r\n source?: unknown,\r\n): AthenaQueryError {\r\n if (\r\n isRecord(error) &&\r\n typeof error.message === 'string' &&\r\n (error.status === undefined || typeof error.status === 'number') &&\r\n (error.code === undefined || typeof error.code === 'string')\r\n ) {\r\n return {\r\n message: error.message,\r\n status: typeof error.status === 'number' ? error.status : undefined,\r\n code: typeof error.code === 'string' ? error.code : undefined,\r\n details: error.details,\r\n raw: error.raw ?? source ?? error,\r\n }\r\n }\r\n\r\n if (isAthenaGatewayError(error)) {\r\n const details = error.toDetails()\r\n return {\r\n message: details.message,\r\n status: details.status,\r\n code: details.code,\r\n details,\r\n raw: source ?? error,\r\n }\r\n }\r\n\r\n if (isRecord(source) && source.errorDetails && isRecord(source.errorDetails)) {\r\n const details = source.errorDetails\r\n return {\r\n message: errorMessageFromUnknown(error ?? source.error),\r\n status: typeof source.status === 'number' ? source.status : undefined,\r\n code: typeof details.code === 'string' ? details.code : undefined,\r\n details,\r\n raw: source,\r\n }\r\n }\r\n\r\n if (isRecord(source) && typeof source.status === 'number') {\r\n return {\r\n message: errorMessageFromUnknown(error),\r\n status: source.status,\r\n details: source,\r\n raw: source,\r\n }\r\n }\r\n\r\n return {\r\n message: errorMessageFromUnknown(error),\r\n raw: source ?? error,\r\n }\r\n}\r\n\r\nexport function isAthenaResponseLike<T>(value: unknown): value is AthenaResponseLike<T> {\r\n if (!isRecord(value)) return false\r\n if ('error' in value || 'errorDetails' in value) return true\r\n if ('status' in value && typeof value.status === 'number') {\r\n return 'data' in value || 'raw' in value\r\n }\r\n return (\r\n 'data' in value &&\r\n ('raw' in value || 'status' in value)\r\n )\r\n}\r\n\r\nexport function normalizeAthenaResult<TQueryFnData, TData = TQueryFnData>(\r\n value: unknown,\r\n select?: (data: TQueryFnData) => TData,\r\n): AthenaQueryResult<TData> {\r\n if (isAthenaResponseLike<TQueryFnData>(value)) {\r\n const status = typeof value.status === 'number' ? value.status : value.error != null ? 500 : 200\r\n if (value.error != null) {\r\n return {\r\n data: undefined,\r\n error: normalizeAthenaError(value.error, value),\r\n status,\r\n raw: value.raw ?? value,\r\n }\r\n }\r\n\r\n const hasData = 'data' in value\r\n const sourceData = hasData\r\n ? (value.data as TQueryFnData | null | undefined)\r\n : undefined\r\n const selectedData =\r\n sourceData === undefined\r\n ? undefined\r\n : sourceData === null\r\n ? (null as unknown as TData)\r\n : select\r\n ? select(sourceData)\r\n : (sourceData as unknown as TData)\r\n\r\n return {\r\n data: selectedData,\r\n error: null,\r\n status,\r\n raw: value.raw ?? value,\r\n }\r\n }\r\n\r\n const sourceData = value as TQueryFnData\r\n const selectedData = select\r\n ? select(sourceData)\r\n : (sourceData as unknown as TData)\r\n\r\n return {\r\n data: selectedData,\r\n error: null,\r\n status: 200,\r\n raw: value,\r\n }\r\n}\r\n","import type {\r\n AthenaMutationDefaults,\r\n AthenaMutationEvent,\r\n AthenaMutationRequestLog,\r\n AthenaMutationResultData,\r\n AthenaMutationState,\r\n AthenaQueryClientConfig,\r\n AthenaQueryDefaults,\r\n AthenaQueryEvent,\r\n AthenaQueryRequestLog,\r\n AthenaQueryResult,\r\n AthenaQueryState,\r\n AthenaRuntimeEvent,\r\n AthenaStateAdapter,\r\n AthenaUnsubscribe,\r\n QueryKey,\r\n} from './types.ts'\r\nimport { normalizeAthenaError, normalizeAthenaResult, runWithRetry, safeSerializeQueryKey } from './utils.ts'\r\n\r\ntype ExecuteQueryInput<TQueryFnData, TData> = {\r\n queryKey: QueryKey\r\n queryKeyToken: string\r\n queryFn: () => Promise<TQueryFnData>\r\n select?: (data: TQueryFnData) => TData\r\n retry?: number | false\r\n retryDelay?: number | ((attempt: number) => number)\r\n dedupe?: boolean\r\n force?: boolean\r\n}\r\n\r\ntype ExecuteMutationInput<TVariables, TMutationFnData, TData> = {\r\n mutationKey?: QueryKey\r\n mutationKeyToken: string\r\n variables: TVariables\r\n mutationFn: (variables: TVariables) => Promise<TMutationFnData>\r\n select?: (data: TMutationFnData) => TData\r\n retry?: number | false\r\n retryDelay?: number | ((attempt: number) => number)\r\n}\r\n\r\ntype QueryEntry = {\r\n key: string\r\n state: AthenaQueryState<unknown>\r\n listeners: Set<() => void>\r\n gcTimer?: ReturnType<typeof setTimeout>\r\n activeRequestId: number\r\n}\r\n\r\ntype MutationEntry = {\r\n key: string\r\n state: AthenaMutationState<unknown, unknown>\r\n listeners: Set<() => void>\r\n gcTimer?: ReturnType<typeof setTimeout>\r\n activeRequestId: number\r\n}\r\n\r\nfunction createInitialQueryState<TData>(initialData?: TData): AthenaQueryState<TData> {\r\n return {\r\n status: initialData === undefined ? 'idle' : 'success',\r\n isFetching: false,\r\n data: initialData,\r\n error: null,\r\n updatedAt: initialData === undefined ? undefined : Date.now(),\r\n }\r\n}\r\n\r\nfunction createInitialMutationState<TVariables, TData>(): AthenaMutationState<TVariables, TData> {\r\n return {\r\n status: 'idle',\r\n data: undefined,\r\n error: null,\r\n isLoading: false,\r\n lastVariables: undefined,\r\n lastResponse: undefined,\r\n updatedAt: undefined,\r\n }\r\n}\r\n\r\nfunction shouldUseMemoryCache(config: AthenaQueryClientConfig): boolean {\r\n return config.cache?.mode === 'memory'\r\n}\r\n\r\nexport class AthenaQueryClient {\r\n private readonly queryEntries = new Map<string, QueryEntry>()\r\n private readonly mutationEntries = new Map<string, MutationEntry>()\r\n private readonly inflightQueries = new Map<string, Promise<AthenaQueryResult<unknown>>>()\r\n private readonly eventSubscribers = new Set<(event: AthenaRuntimeEvent) => void>()\r\n private readonly adapters = new Set<AthenaStateAdapter>()\r\n private requestCounter = 0\r\n\r\n readonly config: AthenaQueryClientConfig\r\n readonly defaultQueryOptions: AthenaQueryDefaults\r\n readonly defaultMutationOptions: AthenaMutationDefaults\r\n\r\n constructor(config: AthenaQueryClientConfig = {}) {\r\n this.config = {\r\n cache: {\r\n mode: config.cache?.mode ?? 'none',\r\n staleTime: config.cache?.staleTime,\r\n gcTime: config.cache?.gcTime,\r\n },\r\n defaultQueryOptions: config.defaultQueryOptions,\r\n defaultMutationOptions: config.defaultMutationOptions,\r\n }\r\n this.defaultQueryOptions = {\r\n retry: config.defaultQueryOptions?.retry ?? 0,\r\n retryDelay: config.defaultQueryOptions?.retryDelay,\r\n refetchOnMount: config.defaultQueryOptions?.refetchOnMount ?? true,\r\n refetchOnWindowFocus: config.defaultQueryOptions?.refetchOnWindowFocus ?? false,\r\n refetchOnReconnect: config.defaultQueryOptions?.refetchOnReconnect ?? false,\r\n }\r\n this.defaultMutationOptions = {\r\n retry: config.defaultMutationOptions?.retry ?? 0,\r\n retryDelay: config.defaultMutationOptions?.retryDelay,\r\n }\r\n }\r\n\r\n getQueryKeyToken(queryKey: QueryKey): string {\r\n return safeSerializeQueryKey(queryKey)\r\n }\r\n\r\n getMutationKeyToken(mutationKey?: QueryKey): string {\r\n if (mutationKey == null) {\r\n return '__mutation__default__'\r\n }\r\n return safeSerializeQueryKey(mutationKey)\r\n }\r\n\r\n getQueryState<TData = unknown>(key: string): AthenaQueryState<TData> {\r\n const entry = this.ensureQueryEntry(key)\r\n return entry.state as AthenaQueryState<TData>\r\n }\r\n\r\n getMutationState<TVariables = unknown, TData = unknown>(\r\n key: string,\r\n ): AthenaMutationState<TVariables, TData> {\r\n const entry = this.ensureMutationEntry(key)\r\n return entry.state as AthenaMutationState<TVariables, TData>\r\n }\r\n\r\n subscribeQuery(key: string, listener: () => void): AthenaUnsubscribe {\r\n const entry = this.ensureQueryEntry(key)\r\n if (entry.gcTimer) {\r\n clearTimeout(entry.gcTimer)\r\n entry.gcTimer = undefined\r\n }\r\n entry.listeners.add(listener)\r\n return () => {\r\n const current = this.queryEntries.get(key)\r\n if (!current) return\r\n current.listeners.delete(listener)\r\n if (current.listeners.size === 0) {\r\n this.scheduleQueryGc(current)\r\n }\r\n }\r\n }\r\n\r\n subscribeMutation(key: string, listener: () => void): AthenaUnsubscribe {\r\n const entry = this.ensureMutationEntry(key)\r\n if (entry.gcTimer) {\r\n clearTimeout(entry.gcTimer)\r\n entry.gcTimer = undefined\r\n }\r\n entry.listeners.add(listener)\r\n return () => {\r\n const current = this.mutationEntries.get(key)\r\n if (!current) return\r\n current.listeners.delete(listener)\r\n if (current.listeners.size === 0) {\r\n this.scheduleMutationGc(current)\r\n }\r\n }\r\n }\r\n\r\n subscribeEvents(listener: (event: AthenaRuntimeEvent) => void): AthenaUnsubscribe {\r\n this.eventSubscribers.add(listener)\r\n return () => {\r\n this.eventSubscribers.delete(listener)\r\n }\r\n }\r\n\r\n attachAdapter(adapter: AthenaStateAdapter): AthenaUnsubscribe {\r\n this.adapters.add(adapter)\r\n return () => {\r\n this.adapters.delete(adapter)\r\n }\r\n }\r\n\r\n resetQuery(queryKey: QueryKey): void {\r\n const key = this.getQueryKeyToken(queryKey)\r\n const entry = this.ensureQueryEntry(key)\r\n entry.activeRequestId = ++this.requestCounter\r\n this.setQueryState(entry, createInitialQueryState(), 'query_reset')\r\n this.inflightQueries.delete(key)\r\n }\r\n\r\n resetMutation(mutationKey?: QueryKey): void {\r\n const key = this.getMutationKeyToken(mutationKey)\r\n const entry = this.ensureMutationEntry(key)\r\n entry.activeRequestId = ++this.requestCounter\r\n this.setMutationState(entry, createInitialMutationState(), 'mutation_reset')\r\n }\r\n\r\n async executeQuery<TQueryFnData, TData = TQueryFnData>(\r\n input: ExecuteQueryInput<TQueryFnData, TData>,\r\n ): Promise<AthenaQueryResult<TData>> {\r\n const entry = this.ensureQueryEntry(input.queryKeyToken)\r\n\r\n if (input.dedupe !== false) {\r\n const existing = this.inflightQueries.get(input.queryKeyToken)\r\n if (existing) {\r\n return existing as Promise<AthenaQueryResult<TData>>\r\n }\r\n }\r\n\r\n if (!input.force && shouldUseMemoryCache(this.config)) {\r\n const staleTime = this.config.cache?.staleTime ?? 0\r\n const hasFreshData =\r\n entry.state.status === 'success' &&\r\n entry.state.data !== undefined &&\r\n entry.state.updatedAt !== undefined &&\r\n Date.now() - entry.state.updatedAt <= staleTime\r\n if (hasFreshData) {\r\n return {\r\n data: entry.state.data as TData,\r\n error: null,\r\n status: 200,\r\n raw: entry.state.lastResponse ?? entry.state.data,\r\n __applied: true,\r\n } as AthenaQueryResult<TData>\r\n }\r\n }\r\n\r\n const requestId = ++this.requestCounter\r\n entry.activeRequestId = requestId\r\n\r\n const startRequestLog: AthenaQueryRequestLog = {\r\n requestId,\r\n queryKey: input.queryKey,\r\n queryKeyToken: input.queryKeyToken,\r\n attempt: 1,\r\n startedAt: Date.now(),\r\n }\r\n\r\n const loadingStatus = entry.state.data === undefined ? 'loading' : entry.state.status\r\n this.setQueryState(\r\n entry,\r\n {\r\n ...entry.state,\r\n status: loadingStatus,\r\n isFetching: true,\r\n error: null,\r\n lastRequest: startRequestLog,\r\n },\r\n 'query_updated',\r\n )\r\n\r\n const executionPromise = runWithRetry(\r\n async attempt => {\r\n const attemptRequestLog: AthenaQueryRequestLog = {\r\n ...startRequestLog,\r\n attempt,\r\n }\r\n\r\n if (entry.activeRequestId === requestId) {\r\n this.setQueryState(\r\n entry,\r\n {\r\n ...entry.state,\r\n lastRequest: attemptRequestLog,\r\n isFetching: true,\r\n },\r\n 'query_updated',\r\n )\r\n }\r\n\r\n const rawResult = await input.queryFn()\r\n const normalized = normalizeAthenaResult<TQueryFnData, TData>(rawResult, input.select)\r\n\r\n if (normalized.error) {\r\n throw {\r\n __athenaNormalizedError: normalized.error,\r\n __athenaStatus: normalized.status,\r\n __athenaRaw: normalized.raw,\r\n __athenaResponse: rawResult,\r\n }\r\n }\r\n\r\n return {\r\n normalized,\r\n response: rawResult,\r\n attempt,\r\n }\r\n },\r\n {\r\n retry: input.retry,\r\n retryDelay: input.retryDelay,\r\n },\r\n )\r\n .then(result => {\r\n const applied = entry.activeRequestId === requestId\r\n if (applied) {\r\n const finishedAt = Date.now()\r\n const doneRequestLog: AthenaQueryRequestLog = {\r\n ...startRequestLog,\r\n attempt: result.attempt,\r\n endedAt: finishedAt,\r\n }\r\n this.setQueryState(\r\n entry,\r\n {\r\n ...entry.state,\r\n status: 'success',\r\n isFetching: false,\r\n error: null,\r\n data: result.normalized.data,\r\n lastRequest: doneRequestLog,\r\n lastResponse: result.response,\r\n updatedAt: finishedAt,\r\n },\r\n 'query_updated',\r\n )\r\n }\r\n\r\n return {\r\n ...result.normalized,\r\n __applied: applied,\r\n } as AthenaQueryResult<TData>\r\n })\r\n .catch(error => {\r\n const wrapped =\r\n typeof error === 'object' && error !== null ? (error as Record<string, unknown>) : undefined\r\n\r\n const normalizedError = wrapped?.__athenaNormalizedError\r\n ? (wrapped.__athenaNormalizedError as ReturnType<typeof normalizeAthenaError>)\r\n : normalizeAthenaError(error)\r\n\r\n const status =\r\n typeof wrapped?.__athenaStatus === 'number'\r\n ? (wrapped.__athenaStatus as number)\r\n : normalizedError.status ?? 500\r\n\r\n const raw = wrapped?.__athenaRaw ?? normalizedError.raw ?? null\r\n const response = wrapped?.__athenaResponse ?? raw\r\n\r\n const applied = entry.activeRequestId === requestId\r\n if (applied) {\r\n const finishedAt = Date.now()\r\n const doneRequestLog: AthenaQueryRequestLog = {\r\n ...startRequestLog,\r\n endedAt: finishedAt,\r\n attempt:\r\n entry.state.lastRequest?.requestId === requestId\r\n ? entry.state.lastRequest.attempt\r\n : startRequestLog.attempt,\r\n }\r\n this.setQueryState(\r\n entry,\r\n {\r\n ...entry.state,\r\n status: 'error',\r\n isFetching: false,\r\n error: normalizedError,\r\n lastRequest: doneRequestLog,\r\n lastResponse: response,\r\n updatedAt: finishedAt,\r\n },\r\n 'query_updated',\r\n )\r\n }\r\n\r\n return {\r\n data: undefined,\r\n error: normalizedError,\r\n status,\r\n raw,\r\n __applied: applied,\r\n } as AthenaQueryResult<TData>\r\n })\r\n .finally(() => {\r\n const inflight = this.inflightQueries.get(input.queryKeyToken)\r\n if (inflight === executionPromise) {\r\n this.inflightQueries.delete(input.queryKeyToken)\r\n }\r\n })\r\n\r\n this.inflightQueries.set(input.queryKeyToken, executionPromise as Promise<AthenaQueryResult<unknown>>)\r\n\r\n return executionPromise\r\n }\r\n\r\n async executeMutation<TVariables, TMutationFnData, TData = TMutationFnData>(\r\n input: ExecuteMutationInput<TVariables, TMutationFnData, TData>,\r\n ): Promise<AthenaMutationResultData<TData>> {\r\n const entry = this.ensureMutationEntry(input.mutationKeyToken)\r\n const requestId = ++this.requestCounter\r\n entry.activeRequestId = requestId\r\n\r\n const startRequestLog: AthenaMutationRequestLog<TVariables> = {\r\n requestId,\r\n mutationKey: input.mutationKey,\r\n mutationKeyToken: input.mutationKeyToken,\r\n attempt: 1,\r\n startedAt: Date.now(),\r\n variables: input.variables,\r\n }\r\n\r\n this.setMutationState(\r\n entry,\r\n {\r\n ...entry.state,\r\n status: 'loading',\r\n isLoading: true,\r\n error: null,\r\n lastVariables: input.variables,\r\n lastRequest: startRequestLog,\r\n },\r\n 'mutation_updated',\r\n )\r\n\r\n try {\r\n const result = await runWithRetry(\r\n async attempt => {\r\n const attemptRequestLog: AthenaMutationRequestLog<TVariables> = {\r\n ...startRequestLog,\r\n attempt,\r\n }\r\n\r\n if (entry.activeRequestId === requestId) {\r\n this.setMutationState(\r\n entry,\r\n {\r\n ...entry.state,\r\n lastRequest: attemptRequestLog,\r\n isLoading: true,\r\n },\r\n 'mutation_updated',\r\n )\r\n }\r\n\r\n const rawResult = await input.mutationFn(input.variables)\r\n const normalized = normalizeAthenaResult<TMutationFnData, TData>(rawResult, input.select)\r\n if (normalized.error) {\r\n throw {\r\n __athenaNormalizedError: normalized.error,\r\n __athenaStatus: normalized.status,\r\n __athenaRaw: normalized.raw,\r\n __athenaResponse: rawResult,\r\n }\r\n }\r\n\r\n return {\r\n normalized,\r\n response: rawResult,\r\n attempt,\r\n }\r\n },\r\n {\r\n retry: input.retry,\r\n retryDelay: input.retryDelay,\r\n },\r\n )\r\n\r\n if (entry.activeRequestId === requestId) {\r\n const finishedAt = Date.now()\r\n const doneRequestLog: AthenaMutationRequestLog<TVariables> = {\r\n ...startRequestLog,\r\n attempt: result.attempt,\r\n endedAt: finishedAt,\r\n }\r\n this.setMutationState(\r\n entry,\r\n {\r\n ...entry.state,\r\n status: 'success',\r\n isLoading: false,\r\n data: result.normalized.data,\r\n error: null,\r\n lastVariables: input.variables,\r\n lastRequest: doneRequestLog,\r\n lastResponse: result.response,\r\n updatedAt: finishedAt,\r\n },\r\n 'mutation_updated',\r\n )\r\n }\r\n\r\n return result.normalized\r\n } catch (error) {\r\n const wrapped =\r\n typeof error === 'object' && error !== null ? (error as Record<string, unknown>) : undefined\r\n const normalizedError = wrapped?.__athenaNormalizedError\r\n ? (wrapped.__athenaNormalizedError as ReturnType<typeof normalizeAthenaError>)\r\n : normalizeAthenaError(error)\r\n\r\n const status =\r\n typeof wrapped?.__athenaStatus === 'number'\r\n ? (wrapped.__athenaStatus as number)\r\n : normalizedError.status ?? 500\r\n const raw = wrapped?.__athenaRaw ?? normalizedError.raw ?? null\r\n const response = wrapped?.__athenaResponse ?? raw\r\n\r\n if (entry.activeRequestId === requestId) {\r\n const finishedAt = Date.now()\r\n const doneRequestLog: AthenaMutationRequestLog<TVariables> = {\r\n ...startRequestLog,\r\n endedAt: finishedAt,\r\n attempt:\r\n entry.state.lastRequest?.requestId === requestId\r\n ? entry.state.lastRequest.attempt\r\n : startRequestLog.attempt,\r\n }\r\n\r\n this.setMutationState(\r\n entry,\r\n {\r\n ...entry.state,\r\n status: 'error',\r\n isLoading: false,\r\n error: normalizedError,\r\n lastVariables: input.variables,\r\n lastRequest: doneRequestLog,\r\n lastResponse: response,\r\n updatedAt: finishedAt,\r\n },\r\n 'mutation_updated',\r\n )\r\n }\r\n\r\n return {\r\n data: undefined,\r\n error: normalizedError,\r\n status,\r\n raw,\r\n }\r\n }\r\n }\r\n\r\n private ensureQueryEntry(key: string): QueryEntry {\r\n let entry = this.queryEntries.get(key)\r\n if (entry) return entry\r\n\r\n entry = {\r\n key,\r\n state: createInitialQueryState(),\r\n listeners: new Set(),\r\n activeRequestId: 0,\r\n }\r\n this.queryEntries.set(key, entry)\r\n return entry\r\n }\r\n\r\n private ensureMutationEntry(key: string): MutationEntry {\r\n let entry = this.mutationEntries.get(key)\r\n if (entry) return entry\r\n\r\n entry = {\r\n key,\r\n state: createInitialMutationState(),\r\n listeners: new Set(),\r\n activeRequestId: 0,\r\n }\r\n this.mutationEntries.set(key, entry)\r\n return entry\r\n }\r\n\r\n private scheduleQueryGc(entry: QueryEntry): void {\r\n const gcTime = shouldUseMemoryCache(this.config)\r\n ? Math.max(0, this.config.cache?.gcTime ?? 300_000)\r\n : Math.max(0, this.config.cache?.gcTime ?? 0)\r\n\r\n entry.gcTimer = setTimeout(() => {\r\n const current = this.queryEntries.get(entry.key)\r\n if (!current || current.listeners.size > 0) return\r\n this.queryEntries.delete(entry.key)\r\n this.inflightQueries.delete(entry.key)\r\n this.emitEvent({\r\n type: 'query_gc',\r\n key: entry.key,\r\n state: current.state,\r\n timestamp: Date.now(),\r\n })\r\n }, gcTime)\r\n }\r\n\r\n private scheduleMutationGc(entry: MutationEntry): void {\r\n const gcTime = shouldUseMemoryCache(this.config)\r\n ? Math.max(0, this.config.cache?.gcTime ?? 300_000)\r\n : Math.max(0, this.config.cache?.gcTime ?? 0)\r\n\r\n entry.gcTimer = setTimeout(() => {\r\n const current = this.mutationEntries.get(entry.key)\r\n if (!current || current.listeners.size > 0) return\r\n this.mutationEntries.delete(entry.key)\r\n }, gcTime)\r\n }\r\n\r\n private setQueryState(\r\n entry: QueryEntry,\r\n state: AthenaQueryState<unknown>,\r\n eventType: AthenaQueryEvent['type'],\r\n ): void {\r\n entry.state = state\r\n for (const listener of entry.listeners) {\r\n listener()\r\n }\r\n\r\n this.emitEvent({\r\n type: eventType,\r\n key: entry.key,\r\n state,\r\n timestamp: Date.now(),\r\n })\r\n }\r\n\r\n private setMutationState(\r\n entry: MutationEntry,\r\n state: AthenaMutationState<unknown, unknown>,\r\n eventType: AthenaMutationEvent['type'],\r\n ): void {\r\n entry.state = state\r\n for (const listener of entry.listeners) {\r\n listener()\r\n }\r\n\r\n this.emitEvent({\r\n type: eventType,\r\n key: entry.key,\r\n state,\r\n timestamp: Date.now(),\r\n })\r\n }\r\n\r\n private emitEvent(event: AthenaRuntimeEvent): void {\r\n for (const listener of this.eventSubscribers) {\r\n listener(event)\r\n }\r\n\r\n for (const adapter of this.adapters) {\r\n adapter.onEvent?.(event)\r\n if (event.type === 'query_updated' || event.type === 'query_reset' || event.type === 'query_gc') {\r\n adapter.onQueryUpdated?.(event)\r\n }\r\n if (event.type === 'mutation_updated' || event.type === 'mutation_reset') {\r\n adapter.onMutationUpdated?.(event)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function createAthenaQueryClient(config?: AthenaQueryClientConfig): AthenaQueryClient {\r\n return new AthenaQueryClient(config)\r\n}\r\n\r\nexport function attachStateAdapter(\r\n client: AthenaQueryClient,\r\n adapter: AthenaStateAdapter,\r\n): AthenaUnsubscribe {\r\n return client.attachAdapter(adapter)\r\n}\r\n","import { createContext, createElement, useContext, useMemo, type ReactNode } from 'react'\r\nimport type { AthenaQueryClientConfig } from './types.ts'\r\nimport { AthenaQueryClient, createAthenaQueryClient } from './query-client.ts'\r\n\r\nconst AthenaQueryClientContext = createContext<AthenaQueryClient | null>(null)\r\n\r\nexport interface AthenaQueryClientProviderProps {\r\n client?: AthenaQueryClient\r\n config?: AthenaQueryClientConfig\r\n children: ReactNode\r\n}\r\n\r\nexport function AthenaQueryClientProvider(props: AthenaQueryClientProviderProps) {\r\n const memoizedClient = useMemo(() => {\r\n if (props.client) {\r\n return props.client\r\n }\r\n return createAthenaQueryClient(props.config)\r\n }, [props.client, props.config])\r\n\r\n return createElement(\r\n AthenaQueryClientContext.Provider,\r\n { value: memoizedClient },\r\n props.children,\r\n )\r\n}\r\n\r\nexport function useAthenaQueryClient(): AthenaQueryClient {\r\n const client = useContext(AthenaQueryClientContext)\r\n if (!client) {\r\n throw new Error(\r\n 'No AthenaQueryClient found. Wrap your component tree with AthenaQueryClientProvider.',\r\n )\r\n }\r\n return client\r\n}\r\n\r\nexport { AthenaQueryClientContext }\r\n","import {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n} from 'react'\r\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\r\nimport type {\r\n AthenaQueryResult,\r\n AthenaQueryState,\r\n UseQueryOptions,\r\n UseQueryResult,\r\n} from './types.ts'\r\nimport { useAthenaQueryClient } from './provider.ts'\r\n\r\ntype BrowserEventName = 'focus' | 'online'\r\n\r\ntype BrowserTarget = {\r\n addEventListener: (event: BrowserEventName, listener: () => void) => void\r\n removeEventListener: (event: BrowserEventName, listener: () => void) => void\r\n}\r\n\r\nfunction getBrowserTarget(): BrowserTarget | null {\r\n const maybeGlobal = globalThis as unknown as {\r\n addEventListener?: unknown\r\n removeEventListener?: unknown\r\n window?: unknown\r\n }\r\n\r\n const hasListeners = (value: unknown): value is BrowserTarget =>\r\n Boolean(value) &&\r\n typeof value === 'object' &&\r\n typeof (value as BrowserTarget).addEventListener === 'function' &&\r\n typeof (value as BrowserTarget).removeEventListener === 'function'\r\n\r\n if (hasListeners(maybeGlobal.window)) {\r\n return maybeGlobal.window\r\n }\r\n\r\n if (hasListeners(maybeGlobal)) {\r\n return maybeGlobal\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function useQuery<TQueryFnData, TData = TQueryFnData>(\r\n options: UseQueryOptions<TQueryFnData, TData>,\r\n): UseQueryResult<TData> {\r\n const client = useAthenaQueryClient()\r\n\r\n const queryKeyRef = useRef(options.queryKey)\r\n queryKeyRef.current = options.queryKey\r\n\r\n const queryFnRef = useRef(options.queryFn)\r\n queryFnRef.current = options.queryFn\r\n\r\n const selectRef = useRef(options.select)\r\n selectRef.current = options.select\r\n\r\n const onSuccessRef = useRef(options.onSuccess)\r\n onSuccessRef.current = options.onSuccess\r\n\r\n const onErrorRef = useRef(options.onError)\r\n onErrorRef.current = options.onError\r\n\r\n const onSettledRef = useRef(options.onSettled)\r\n onSettledRef.current = options.onSettled\r\n\r\n const enabledRef = useRef(options.enabled ?? true)\r\n enabledRef.current = options.enabled ?? true\r\n\r\n const retryRef = useRef(options.retry)\r\n retryRef.current = options.retry\r\n\r\n const retryDelayRef = useRef(options.retryDelay)\r\n retryDelayRef.current = options.retryDelay\r\n\r\n const initialDataRef = useRef(options.initialData)\r\n initialDataRef.current = options.initialData\r\n\r\n const refetchOnMountRef = useRef(options.refetchOnMount)\r\n refetchOnMountRef.current = options.refetchOnMount\r\n\r\n const refetchOnWindowFocusRef = useRef(options.refetchOnWindowFocus)\r\n refetchOnWindowFocusRef.current = options.refetchOnWindowFocus\r\n\r\n const refetchOnReconnectRef = useRef(options.refetchOnReconnect)\r\n refetchOnReconnectRef.current = options.refetchOnReconnect\r\n\r\n const queryKeyToken = useMemo(\r\n () => client.getQueryKeyToken(options.queryKey),\r\n [client, options.queryKey],\r\n )\r\n const activeQueryKeyTokenRef = useRef(queryKeyToken)\r\n activeQueryKeyTokenRef.current = queryKeyToken\r\n\r\n const subscribe = useCallback(\r\n (listener: () => void) => client.subscribeQuery(queryKeyToken, listener),\r\n [client, queryKeyToken],\r\n )\r\n\r\n const getSnapshot = useCallback(\r\n () => client.getQueryState<TData>(queryKeyToken),\r\n [client, queryKeyToken],\r\n )\r\n\r\n const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\r\n\r\n const effectiveSnapshot = useMemo<AthenaQueryState<TData>>(() => {\r\n if (\r\n snapshot.status === 'idle' &&\r\n snapshot.data === undefined &&\r\n initialDataRef.current !== undefined\r\n ) {\r\n return {\r\n ...snapshot,\r\n status: 'success',\r\n data: initialDataRef.current,\r\n error: null,\r\n }\r\n }\r\n return snapshot\r\n }, [snapshot])\r\n\r\n const runQuery = useCallback(\r\n async (force = false): Promise<AthenaQueryResult<TData>> => {\r\n const result = await client.executeQuery<TQueryFnData, TData>({\r\n queryKey: queryKeyRef.current,\r\n queryKeyToken,\r\n queryFn: () => queryFnRef.current(),\r\n select: selectRef.current,\r\n retry:\r\n retryRef.current ??\r\n client.defaultQueryOptions.retry ??\r\n 0,\r\n retryDelay:\r\n retryDelayRef.current ??\r\n client.defaultQueryOptions.retryDelay,\r\n dedupe: true,\r\n force,\r\n })\r\n\r\n const internalResult = result as AthenaQueryResult<TData> & {\r\n __applied?: boolean\r\n }\r\n if (activeQueryKeyTokenRef.current !== queryKeyToken || internalResult.__applied === false) {\r\n return result\r\n }\r\n\r\n if (result.error) {\r\n onErrorRef.current?.(result.error)\r\n onSettledRef.current?.(result.data, result.error)\r\n return result\r\n }\r\n\r\n onSuccessRef.current?.(result.data as TData)\r\n onSettledRef.current?.(result.data, null)\r\n return result\r\n },\r\n [client, queryKeyToken],\r\n )\r\n\r\n const lastAutoKeyRef = useRef<string | null>(null)\r\n\r\n useEffect(() => {\r\n const refetchOnMount =\r\n refetchOnMountRef.current ?? client.defaultQueryOptions.refetchOnMount ?? true\r\n\r\n const isFirstRenderForKey = lastAutoKeyRef.current !== queryKeyToken\r\n lastAutoKeyRef.current = queryKeyToken\r\n\r\n if (!enabledRef.current) {\r\n return\r\n }\r\n\r\n const state = client.getQueryState(queryKeyToken)\r\n const shouldFetch = state.status === 'idle' || (isFirstRenderForKey && refetchOnMount)\r\n\r\n if (shouldFetch) {\r\n void runQuery(false)\r\n }\r\n }, [client, queryKeyToken, runQuery])\r\n\r\n useEffect(() => {\r\n const browser = getBrowserTarget()\r\n if (!browser || !enabledRef.current) {\r\n return undefined\r\n }\r\n\r\n const refetchOnWindowFocus =\r\n refetchOnWindowFocusRef.current ??\r\n client.defaultQueryOptions.refetchOnWindowFocus ??\r\n false\r\n\r\n if (!refetchOnWindowFocus) {\r\n return undefined\r\n }\r\n\r\n const onFocus = () => {\r\n if (!enabledRef.current) return\r\n void runQuery(true)\r\n }\r\n\r\n browser.addEventListener('focus', onFocus)\r\n return () => {\r\n browser.removeEventListener('focus', onFocus)\r\n }\r\n }, [client, runQuery])\r\n\r\n useEffect(() => {\r\n const browser = getBrowserTarget()\r\n if (!browser || !enabledRef.current) {\r\n return undefined\r\n }\r\n\r\n const refetchOnReconnect =\r\n refetchOnReconnectRef.current ??\r\n client.defaultQueryOptions.refetchOnReconnect ??\r\n false\r\n\r\n if (!refetchOnReconnect) {\r\n return undefined\r\n }\r\n\r\n const onReconnect = () => {\r\n if (!enabledRef.current) return\r\n void runQuery(true)\r\n }\r\n\r\n browser.addEventListener('online', onReconnect)\r\n return () => {\r\n browser.removeEventListener('online', onReconnect)\r\n }\r\n }, [client, runQuery])\r\n\r\n const refetch = useCallback(() => runQuery(true), [runQuery])\r\n\r\n const reset = useCallback(() => {\r\n client.resetQuery(queryKeyRef.current)\r\n }, [client])\r\n\r\n return {\r\n data: effectiveSnapshot.data,\r\n error: effectiveSnapshot.error,\r\n isLoading:\r\n effectiveSnapshot.status === 'loading' && effectiveSnapshot.data === undefined,\r\n isFetching: effectiveSnapshot.isFetching,\r\n isSuccess: effectiveSnapshot.status === 'success',\r\n isError: effectiveSnapshot.status === 'error',\r\n status: effectiveSnapshot.status,\r\n refetch,\r\n reset,\r\n lastResponse: effectiveSnapshot.lastResponse,\r\n lastRequest: effectiveSnapshot.lastRequest,\r\n }\r\n}\r\n","import { useCallback, useMemo, useRef } from 'react'\r\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\r\nimport type {\r\n UseMutationOptions,\r\n UseMutationResult,\r\n} from './types.ts'\r\nimport { useAthenaQueryClient } from './provider.ts'\r\n\r\nexport function useMutation<TVariables, TMutationFnData, TData = TMutationFnData>(\r\n options: UseMutationOptions<TVariables, TMutationFnData, TData>,\r\n): UseMutationResult<TVariables, TData> {\r\n const client = useAthenaQueryClient()\r\n\r\n const mutationKeyRef = useRef(options.mutationKey)\r\n mutationKeyRef.current = options.mutationKey\r\n\r\n const mutationFnRef = useRef(options.mutationFn)\r\n mutationFnRef.current = options.mutationFn\r\n\r\n const selectRef = useRef(options.select)\r\n selectRef.current = options.select\r\n\r\n const retryRef = useRef(options.retry)\r\n retryRef.current = options.retry\r\n\r\n const retryDelayRef = useRef(options.retryDelay)\r\n retryDelayRef.current = options.retryDelay\r\n\r\n const onMutateRef = useRef(options.onMutate)\r\n onMutateRef.current = options.onMutate\r\n\r\n const onSuccessRef = useRef(options.onSuccess)\r\n onSuccessRef.current = options.onSuccess\r\n\r\n const onErrorRef = useRef(options.onError)\r\n onErrorRef.current = options.onError\r\n\r\n const onSettledRef = useRef(options.onSettled)\r\n onSettledRef.current = options.onSettled\r\n\r\n const mutationKeyToken = useMemo(\r\n () => client.getMutationKeyToken(options.mutationKey),\r\n [client, options.mutationKey],\r\n )\r\n\r\n const subscribe = useCallback(\r\n (listener: () => void) => client.subscribeMutation(mutationKeyToken, listener),\r\n [client, mutationKeyToken],\r\n )\r\n\r\n const getSnapshot = useCallback(\r\n () => client.getMutationState<TVariables, TData>(mutationKeyToken),\r\n [client, mutationKeyToken],\r\n )\r\n\r\n const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\r\n\r\n const mutateAsync = useCallback(\r\n async (variables: TVariables): Promise<TData> => {\r\n await onMutateRef.current?.(variables)\r\n\r\n const result = await client.executeMutation<TVariables, TMutationFnData, TData>({\r\n mutationKey: mutationKeyRef.current,\r\n mutationKeyToken,\r\n variables,\r\n mutationFn: currentVariables => mutationFnRef.current(currentVariables),\r\n select: selectRef.current,\r\n retry:\r\n retryRef.current ??\r\n client.defaultMutationOptions.retry ??\r\n 0,\r\n retryDelay:\r\n retryDelayRef.current ??\r\n client.defaultMutationOptions.retryDelay,\r\n })\r\n\r\n if (result.error) {\r\n onErrorRef.current?.(result.error, variables)\r\n onSettledRef.current?.(result.data, result.error, variables)\r\n throw result.error\r\n }\r\n\r\n const data = result.data as TData\r\n onSuccessRef.current?.(data, variables)\r\n onSettledRef.current?.(data, null, variables)\r\n return data\r\n },\r\n [client, mutationKeyToken],\r\n )\r\n\r\n const mutate = useCallback(\r\n (variables: TVariables) => {\r\n void mutateAsync(variables).catch(() => undefined)\r\n },\r\n [mutateAsync],\r\n )\r\n\r\n const reset = useCallback(() => {\r\n client.resetMutation(mutationKeyRef.current)\r\n }, [client])\r\n\r\n return {\r\n mutate,\r\n mutateAsync,\r\n data: snapshot.data,\r\n error: snapshot.error,\r\n isIdle: snapshot.status === 'idle',\r\n isLoading: snapshot.status === 'loading',\r\n isSuccess: snapshot.status === 'success',\r\n isError: snapshot.status === 'error',\r\n status: snapshot.status,\r\n reset,\r\n lastResponse: snapshot.lastResponse,\r\n lastVariables: snapshot.lastVariables,\r\n lastRequest: snapshot.lastRequest,\r\n }\r\n}\r\n"]}
|
package/dist/react.d.cts
CHANGED
|
@@ -1,6 +1,237 @@
|
|
|
1
|
-
import { p as AthenaGatewayHookConfig, q as AthenaGatewayHookResult } from './errors-
|
|
2
|
-
export {
|
|
1
|
+
import { p as AthenaGatewayHookConfig, q as AthenaGatewayHookResult } from './errors-C4GJaFI_.cjs';
|
|
2
|
+
export { u as AthenaDeletePayload, r as AthenaFetchPayload, A as AthenaGatewayCallOptions, i as AthenaGatewayError, o as AthenaGatewayErrorCode, e as AthenaGatewayErrorDetails, v as AthenaGatewayResponse, s as AthenaInsertPayload, f as AthenaRpcCallOptions, k as AthenaRpcFilter, l as AthenaRpcFilterOperator, m as AthenaRpcOrder, n as AthenaRpcPayload, t as AthenaUpdatePayload, j as isAthenaGatewayError } from './errors-C4GJaFI_.cjs';
|
|
3
|
+
import * as react from 'react';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
3
5
|
|
|
4
6
|
declare function useAthenaGateway(config?: AthenaGatewayHookConfig): AthenaGatewayHookResult;
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
type QueryStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
9
|
+
type AthenaCacheMode = 'none' | 'memory';
|
|
10
|
+
type QueryKey = readonly unknown[] | string;
|
|
11
|
+
interface AthenaQueryError {
|
|
12
|
+
message: string;
|
|
13
|
+
status?: number;
|
|
14
|
+
code?: string;
|
|
15
|
+
details?: unknown;
|
|
16
|
+
raw?: unknown;
|
|
17
|
+
}
|
|
18
|
+
type AthenaRetryDelay = number | ((attempt: number) => number);
|
|
19
|
+
type AthenaRetryCount = number | false;
|
|
20
|
+
interface AthenaResponseLike<T> {
|
|
21
|
+
data?: T | null;
|
|
22
|
+
error?: unknown;
|
|
23
|
+
status?: number;
|
|
24
|
+
raw?: unknown;
|
|
25
|
+
}
|
|
26
|
+
interface AthenaQueryRequestLog {
|
|
27
|
+
requestId: number;
|
|
28
|
+
queryKey: QueryKey;
|
|
29
|
+
queryKeyToken: string;
|
|
30
|
+
attempt: number;
|
|
31
|
+
startedAt: number;
|
|
32
|
+
endedAt?: number;
|
|
33
|
+
}
|
|
34
|
+
interface AthenaMutationRequestLog<TVariables = unknown> {
|
|
35
|
+
requestId: number;
|
|
36
|
+
mutationKey?: QueryKey;
|
|
37
|
+
mutationKeyToken?: string;
|
|
38
|
+
attempt: number;
|
|
39
|
+
startedAt: number;
|
|
40
|
+
endedAt?: number;
|
|
41
|
+
variables?: TVariables;
|
|
42
|
+
}
|
|
43
|
+
interface AthenaQueryResult<TData = unknown> {
|
|
44
|
+
data: TData | undefined;
|
|
45
|
+
error: AthenaQueryError | null;
|
|
46
|
+
status: number;
|
|
47
|
+
raw: unknown;
|
|
48
|
+
}
|
|
49
|
+
interface AthenaMutationResultData<TData = unknown> {
|
|
50
|
+
data: TData | undefined;
|
|
51
|
+
error: AthenaQueryError | null;
|
|
52
|
+
status: number;
|
|
53
|
+
raw: unknown;
|
|
54
|
+
}
|
|
55
|
+
interface AthenaQueryState<TData = unknown> {
|
|
56
|
+
status: QueryStatus;
|
|
57
|
+
isFetching: boolean;
|
|
58
|
+
data: TData | undefined;
|
|
59
|
+
error: AthenaQueryError | null;
|
|
60
|
+
lastRequest?: AthenaQueryRequestLog;
|
|
61
|
+
lastResponse?: unknown;
|
|
62
|
+
updatedAt?: number;
|
|
63
|
+
}
|
|
64
|
+
interface AthenaMutationState<TVariables = unknown, TData = unknown> {
|
|
65
|
+
status: QueryStatus;
|
|
66
|
+
data: TData | undefined;
|
|
67
|
+
error: AthenaQueryError | null;
|
|
68
|
+
isLoading: boolean;
|
|
69
|
+
lastVariables?: TVariables;
|
|
70
|
+
lastRequest?: AthenaMutationRequestLog<TVariables>;
|
|
71
|
+
lastResponse?: unknown;
|
|
72
|
+
updatedAt?: number;
|
|
73
|
+
}
|
|
74
|
+
interface UseQueryOptions<TQueryFnData, TData = TQueryFnData> {
|
|
75
|
+
queryKey: QueryKey;
|
|
76
|
+
queryFn: () => Promise<TQueryFnData>;
|
|
77
|
+
enabled?: boolean;
|
|
78
|
+
initialData?: TData;
|
|
79
|
+
refetchOnMount?: boolean;
|
|
80
|
+
refetchOnWindowFocus?: boolean;
|
|
81
|
+
refetchOnReconnect?: boolean;
|
|
82
|
+
retry?: AthenaRetryCount;
|
|
83
|
+
retryDelay?: AthenaRetryDelay;
|
|
84
|
+
select?: (data: TQueryFnData) => TData;
|
|
85
|
+
onSuccess?: (data: TData) => void;
|
|
86
|
+
onError?: (error: AthenaQueryError) => void;
|
|
87
|
+
onSettled?: (data: TData | undefined, error: AthenaQueryError | null) => void;
|
|
88
|
+
}
|
|
89
|
+
interface UseQueryResult<TData> {
|
|
90
|
+
data: TData | undefined;
|
|
91
|
+
error: AthenaQueryError | null;
|
|
92
|
+
isLoading: boolean;
|
|
93
|
+
isFetching: boolean;
|
|
94
|
+
isSuccess: boolean;
|
|
95
|
+
isError: boolean;
|
|
96
|
+
status: QueryStatus;
|
|
97
|
+
refetch: () => Promise<AthenaQueryResult<TData>>;
|
|
98
|
+
reset: () => void;
|
|
99
|
+
lastResponse?: unknown;
|
|
100
|
+
lastRequest?: AthenaQueryRequestLog;
|
|
101
|
+
}
|
|
102
|
+
interface UseMutationOptions<TVariables, TMutationFnData, TData = TMutationFnData> {
|
|
103
|
+
mutationFn: (variables: TVariables) => Promise<TMutationFnData>;
|
|
104
|
+
mutationKey?: QueryKey;
|
|
105
|
+
onMutate?: (variables: TVariables) => void | Promise<void>;
|
|
106
|
+
onSuccess?: (data: TData, variables: TVariables) => void;
|
|
107
|
+
onError?: (error: AthenaQueryError, variables: TVariables) => void;
|
|
108
|
+
onSettled?: (data: TData | undefined, error: AthenaQueryError | null, variables: TVariables) => void;
|
|
109
|
+
select?: (data: TMutationFnData) => TData;
|
|
110
|
+
retry?: AthenaRetryCount;
|
|
111
|
+
retryDelay?: AthenaRetryDelay;
|
|
112
|
+
}
|
|
113
|
+
interface UseMutationResult<TVariables, TData> {
|
|
114
|
+
mutate: (variables: TVariables) => void;
|
|
115
|
+
mutateAsync: (variables: TVariables) => Promise<TData>;
|
|
116
|
+
data: TData | undefined;
|
|
117
|
+
error: AthenaQueryError | null;
|
|
118
|
+
isIdle: boolean;
|
|
119
|
+
isLoading: boolean;
|
|
120
|
+
isSuccess: boolean;
|
|
121
|
+
isError: boolean;
|
|
122
|
+
status: QueryStatus;
|
|
123
|
+
reset: () => void;
|
|
124
|
+
lastResponse?: unknown;
|
|
125
|
+
lastVariables?: TVariables;
|
|
126
|
+
lastRequest?: AthenaMutationRequestLog<TVariables>;
|
|
127
|
+
}
|
|
128
|
+
interface AthenaCachePolicy {
|
|
129
|
+
mode?: AthenaCacheMode;
|
|
130
|
+
staleTime?: number;
|
|
131
|
+
gcTime?: number;
|
|
132
|
+
}
|
|
133
|
+
interface AthenaQueryDefaults {
|
|
134
|
+
retry?: AthenaRetryCount;
|
|
135
|
+
retryDelay?: AthenaRetryDelay;
|
|
136
|
+
refetchOnMount?: boolean;
|
|
137
|
+
refetchOnWindowFocus?: boolean;
|
|
138
|
+
refetchOnReconnect?: boolean;
|
|
139
|
+
}
|
|
140
|
+
interface AthenaMutationDefaults {
|
|
141
|
+
retry?: AthenaRetryCount;
|
|
142
|
+
retryDelay?: AthenaRetryDelay;
|
|
143
|
+
}
|
|
144
|
+
interface AthenaQueryClientConfig {
|
|
145
|
+
cache?: AthenaCachePolicy;
|
|
146
|
+
defaultQueryOptions?: AthenaQueryDefaults;
|
|
147
|
+
defaultMutationOptions?: AthenaMutationDefaults;
|
|
148
|
+
}
|
|
149
|
+
type AthenaRuntimeEventType = 'query_updated' | 'query_reset' | 'query_gc' | 'mutation_updated' | 'mutation_reset';
|
|
150
|
+
interface AthenaRuntimeBaseEvent {
|
|
151
|
+
type: AthenaRuntimeEventType;
|
|
152
|
+
timestamp: number;
|
|
153
|
+
}
|
|
154
|
+
interface AthenaQueryEvent extends AthenaRuntimeBaseEvent {
|
|
155
|
+
type: 'query_updated' | 'query_reset' | 'query_gc';
|
|
156
|
+
key: string;
|
|
157
|
+
state: AthenaQueryState<unknown>;
|
|
158
|
+
}
|
|
159
|
+
interface AthenaMutationEvent extends AthenaRuntimeBaseEvent {
|
|
160
|
+
type: 'mutation_updated' | 'mutation_reset';
|
|
161
|
+
key: string;
|
|
162
|
+
state: AthenaMutationState<unknown, unknown>;
|
|
163
|
+
}
|
|
164
|
+
type AthenaRuntimeEvent = AthenaQueryEvent | AthenaMutationEvent;
|
|
165
|
+
interface AthenaStateAdapter {
|
|
166
|
+
onQueryUpdated?: (event: AthenaQueryEvent) => void;
|
|
167
|
+
onMutationUpdated?: (event: AthenaMutationEvent) => void;
|
|
168
|
+
onEvent?: (event: AthenaRuntimeEvent) => void;
|
|
169
|
+
}
|
|
170
|
+
type AthenaUnsubscribe = () => void;
|
|
171
|
+
|
|
172
|
+
type ExecuteQueryInput<TQueryFnData, TData> = {
|
|
173
|
+
queryKey: QueryKey;
|
|
174
|
+
queryKeyToken: string;
|
|
175
|
+
queryFn: () => Promise<TQueryFnData>;
|
|
176
|
+
select?: (data: TQueryFnData) => TData;
|
|
177
|
+
retry?: number | false;
|
|
178
|
+
retryDelay?: number | ((attempt: number) => number);
|
|
179
|
+
dedupe?: boolean;
|
|
180
|
+
force?: boolean;
|
|
181
|
+
};
|
|
182
|
+
type ExecuteMutationInput<TVariables, TMutationFnData, TData> = {
|
|
183
|
+
mutationKey?: QueryKey;
|
|
184
|
+
mutationKeyToken: string;
|
|
185
|
+
variables: TVariables;
|
|
186
|
+
mutationFn: (variables: TVariables) => Promise<TMutationFnData>;
|
|
187
|
+
select?: (data: TMutationFnData) => TData;
|
|
188
|
+
retry?: number | false;
|
|
189
|
+
retryDelay?: number | ((attempt: number) => number);
|
|
190
|
+
};
|
|
191
|
+
declare class AthenaQueryClient {
|
|
192
|
+
private readonly queryEntries;
|
|
193
|
+
private readonly mutationEntries;
|
|
194
|
+
private readonly inflightQueries;
|
|
195
|
+
private readonly eventSubscribers;
|
|
196
|
+
private readonly adapters;
|
|
197
|
+
private requestCounter;
|
|
198
|
+
readonly config: AthenaQueryClientConfig;
|
|
199
|
+
readonly defaultQueryOptions: AthenaQueryDefaults;
|
|
200
|
+
readonly defaultMutationOptions: AthenaMutationDefaults;
|
|
201
|
+
constructor(config?: AthenaQueryClientConfig);
|
|
202
|
+
getQueryKeyToken(queryKey: QueryKey): string;
|
|
203
|
+
getMutationKeyToken(mutationKey?: QueryKey): string;
|
|
204
|
+
getQueryState<TData = unknown>(key: string): AthenaQueryState<TData>;
|
|
205
|
+
getMutationState<TVariables = unknown, TData = unknown>(key: string): AthenaMutationState<TVariables, TData>;
|
|
206
|
+
subscribeQuery(key: string, listener: () => void): AthenaUnsubscribe;
|
|
207
|
+
subscribeMutation(key: string, listener: () => void): AthenaUnsubscribe;
|
|
208
|
+
subscribeEvents(listener: (event: AthenaRuntimeEvent) => void): AthenaUnsubscribe;
|
|
209
|
+
attachAdapter(adapter: AthenaStateAdapter): AthenaUnsubscribe;
|
|
210
|
+
resetQuery(queryKey: QueryKey): void;
|
|
211
|
+
resetMutation(mutationKey?: QueryKey): void;
|
|
212
|
+
executeQuery<TQueryFnData, TData = TQueryFnData>(input: ExecuteQueryInput<TQueryFnData, TData>): Promise<AthenaQueryResult<TData>>;
|
|
213
|
+
executeMutation<TVariables, TMutationFnData, TData = TMutationFnData>(input: ExecuteMutationInput<TVariables, TMutationFnData, TData>): Promise<AthenaMutationResultData<TData>>;
|
|
214
|
+
private ensureQueryEntry;
|
|
215
|
+
private ensureMutationEntry;
|
|
216
|
+
private scheduleQueryGc;
|
|
217
|
+
private scheduleMutationGc;
|
|
218
|
+
private setQueryState;
|
|
219
|
+
private setMutationState;
|
|
220
|
+
private emitEvent;
|
|
221
|
+
}
|
|
222
|
+
declare function createAthenaQueryClient(config?: AthenaQueryClientConfig): AthenaQueryClient;
|
|
223
|
+
declare function attachStateAdapter(client: AthenaQueryClient, adapter: AthenaStateAdapter): AthenaUnsubscribe;
|
|
224
|
+
|
|
225
|
+
interface AthenaQueryClientProviderProps {
|
|
226
|
+
client?: AthenaQueryClient;
|
|
227
|
+
config?: AthenaQueryClientConfig;
|
|
228
|
+
children: ReactNode;
|
|
229
|
+
}
|
|
230
|
+
declare function AthenaQueryClientProvider(props: AthenaQueryClientProviderProps): react.FunctionComponentElement<react.ProviderProps<AthenaQueryClient | null>>;
|
|
231
|
+
declare function useAthenaQueryClient(): AthenaQueryClient;
|
|
232
|
+
|
|
233
|
+
declare function useQuery<TQueryFnData, TData = TQueryFnData>(options: UseQueryOptions<TQueryFnData, TData>): UseQueryResult<TData>;
|
|
234
|
+
|
|
235
|
+
declare function useMutation<TVariables, TMutationFnData, TData = TMutationFnData>(options: UseMutationOptions<TVariables, TMutationFnData, TData>): UseMutationResult<TVariables, TData>;
|
|
236
|
+
|
|
237
|
+
export { type AthenaCacheMode, type AthenaCachePolicy, AthenaGatewayHookConfig, AthenaGatewayHookResult, type AthenaMutationDefaults, type AthenaMutationEvent, type AthenaMutationRequestLog, type AthenaMutationResultData, type AthenaMutationState, AthenaQueryClient, type AthenaQueryClientConfig, AthenaQueryClientProvider, type AthenaQueryDefaults, type AthenaQueryError, type AthenaQueryEvent, type AthenaQueryRequestLog, type AthenaQueryResult, type AthenaQueryState, type AthenaResponseLike, type AthenaRetryCount, type AthenaRetryDelay, type AthenaRuntimeBaseEvent, type AthenaRuntimeEvent, type AthenaRuntimeEventType, type AthenaStateAdapter, type AthenaUnsubscribe, type QueryKey, type QueryStatus, type UseMutationOptions, type UseMutationResult, type UseQueryOptions, type UseQueryResult, attachStateAdapter, createAthenaQueryClient, useAthenaGateway, useAthenaQueryClient, useMutation, useQuery };
|