@igniter-js/caller 0.1.52 → 0.1.54

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.
@@ -157,8 +157,9 @@ function createUseQuery(params) {
157
157
  callerKey,
158
158
  method,
159
159
  path,
160
- getMergedConfig,
160
+ // eslint-disable-next-line react-hooks/exhaustive-deps
161
161
  JSON.stringify(options?.params || {}),
162
+ // eslint-disable-next-line react-hooks/exhaustive-deps
162
163
  JSON.stringify(options?.query || {})
163
164
  ]);
164
165
  const execute = react.useCallback(
@@ -261,9 +262,11 @@ function createUseQuery(params) {
261
262
  register(stableKey, refetch);
262
263
  return () => unregister(stableKey, refetch);
263
264
  }, [register, unregister, refetch, stableKey]);
265
+ const initialFetchDoneRef = react.useRef(false);
264
266
  react.useEffect(() => {
265
267
  if (optionsRef.current?.enabled === false) return;
266
- if (optionsRef.current?.refetchOnMount === false) return;
268
+ if (optionsRef.current?.refetchOnMount === false && initialFetchDoneRef.current) return;
269
+ initialFetchDoneRef.current = true;
267
270
  void execute(lastVariablesRef.current);
268
271
  }, [stableKey, execute]);
269
272
  react.useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/utils/cache.ts","../../src/client/utils/query-key.ts","../../src/client/utils/cookies.ts","../../src/client/builders/hooks.builder.tsx","../../src/client/builders/client.builder.ts","../../src/client/builders/provider.builder.tsx"],"names":["useState","useRef","useMemo","useCallback","useEffect","createContext","value","jsx","useContext"],"mappings":"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","file":"index.js","sourcesContent":["export class IgniterCallerClientCache {\n private static cache = new Map<\n string,\n { data: unknown; timestamp: number }\n >()\n\n static get<T>(key: string, staleTime?: number): T | undefined {\n const entry = IgniterCallerClientCache.cache.get(key)\n if (!entry) return undefined\n\n if (staleTime && Date.now() - entry.timestamp > staleTime) {\n IgniterCallerClientCache.cache.delete(key)\n return undefined\n }\n\n return entry.data as T\n }\n\n static set(key: string, data: unknown): void {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: Date.now(),\n })\n }\n\n static replacePrefix(prefix: string, data: unknown): void {\n for (const [key, entry] of IgniterCallerClientCache.cache.entries()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: entry.timestamp,\n })\n }\n }\n }\n\n static clearPrefix(prefix: string): void {\n for (const key of IgniterCallerClientCache.cache.keys()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.delete(key)\n }\n }\n }\n}\n","import type { IgniterCallerClientQuery } from '../interfaces/config'\n\nconst EMPTY_KEY = '{}'\n\nfunction stableStringify(value: unknown): string {\n if (value === null || value === undefined) return EMPTY_KEY\n if (typeof value !== 'object') return JSON.stringify(value)\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(',')}]`\n }\n\n const entries = Object.entries(value as Record<string, unknown>).sort(\n ([a], [b]) => a.localeCompare(b),\n )\n\n return `{${entries\n .map(([key, val]) => `${JSON.stringify(key)}:${stableStringify(val)}`)\n .join(',')}}`\n}\n\nexport function buildQueryKey(params: {\n callerKey: string\n method: string\n path: string\n query?: IgniterCallerClientQuery\n params?: Record<string, string | number | boolean>\n}): string {\n const { callerKey, method, path, query, params: pathParams } = params\n const payload = {\n params: pathParams || {},\n query: query || {},\n }\n\n return `${callerKey}::${method.toUpperCase()}::${path}::${stableStringify(payload)}`\n}\n\nexport function buildQueryPrefix(params: {\n callerKey: string\n method: string\n path: string\n}): string {\n const { callerKey, method, path } = params\n return `${callerKey}::${method.toUpperCase()}::${path}`\n}\n","import type { IgniterCallerClientCookies } from '../interfaces/config'\n\nexport function buildCookieHeader(\n cookies?: IgniterCallerClientCookies,\n): string | undefined {\n if (!cookies || Object.keys(cookies).length === 0) return undefined\n\n return Object.entries(cookies)\n .map(([key, value]) => `${key}=${value}`)\n .join('; ')\n}\n","'use client'\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type { IgniterCallerApiResponse } from '../../types/response'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientQuery,\n} from '../interfaces/config'\nimport type { IgniterCallerClientRefetchFn } from '../interfaces/context'\nimport type {\n IgniterCallerUseMutateOptions,\n IgniterCallerUseMutateResult,\n IgniterCallerUseQueryOptions,\n IgniterCallerUseQueryResult,\n} from '../interfaces/hooks'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { buildQueryKey, buildQueryPrefix } from '../utils/query-key'\nimport { buildCookieHeader } from '../utils/cookies'\n\nexport interface IgniterCallerClientRequestInput {\n params?: Record<string, string | number | boolean>\n query?: Record<string, string | number | boolean>\n headers?: Record<string, string>\n cookies?: Record<string, string>\n body?: unknown\n}\n\nexport type IgniterCallerClientRequestFactory<TResponse> = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n) => {\n execute: () => Promise<IgniterCallerApiResponse<TResponse>>\n}\n\ninterface UseQueryParams<TResponse, TVariables> {\n callerKey: string\n method: 'GET' | 'HEAD'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n register: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n unregister: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n invalidate: (keys: string | string[], data?: unknown) => void\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\ninterface UseMutateParams<TResponse, TVariables> {\n callerKey: string\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeQueryInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const headers = {\n ...(config.headers || {}),\n ...(options?.headers || {}),\n ...(variables?.headers || {}),\n }\n const cookies = {\n ...(config.cookies || {}),\n ...(options?.cookies || {}),\n ...(variables?.cookies || {}),\n }\n const query = {\n ...(config.query || {}),\n ...(options?.query || {}),\n ...(variables?.query || {}),\n ...(options?.params || {}),\n ...(variables?.params || {}),\n }\n\n const cookieHeader = buildCookieHeader(cookies)\n if (cookieHeader && !headers.Cookie) {\n headers.Cookie = cookieHeader\n }\n\n return {\n headers,\n cookies,\n query,\n params: variables?.params || options?.params,\n }\n}\n\nfunction mergeMutateInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const merged = mergeQueryInput(config, options, variables)\n return {\n ...merged,\n body: variables?.body ?? options?.body,\n }\n}\n\nexport function createUseQuery<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n },\n>(\n params: UseQueryParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseQueryOptions<TResponse, TVariables>,\n) => IgniterCallerUseQueryResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n register,\n unregister,\n invalidate,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n options?.initialData ? 'success' : 'loading',\n )\n const [isFetching, setIsFetching] = useState(false)\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({\n data: options?.initialData ?? null,\n error: null,\n })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const stableKey = useMemo(() => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n options as IgniterCallerClientRequestInput | undefined,\n lastVariablesRef.current as IgniterCallerClientRequestInput | undefined,\n )\n\n return buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n }, [\n callerKey,\n method,\n path,\n getMergedConfig,\n JSON.stringify(options?.params || {}),\n JSON.stringify(options?.query || {}),\n ])\n\n const execute = useCallback(\n async (nextVariables?: TVariables) => {\n if (optionsRef.current?.enabled === false) return\n\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n const queryKey = buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setIsFetching(true)\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onQueryLoading?.(true)\n\n if (optionsRef.current?.staleTime) {\n const cached = IgniterCallerClientCache.get<TResponse>(\n queryKey,\n optionsRef.current.staleTime,\n )\n if (cached !== undefined) {\n setResponse({ data: cached, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(cached)\n mergedConfig.onQuerySuccess?.(cached)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n setIsFetching(false)\n return {\n data: cached,\n error: undefined,\n }\n }\n }\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onQueryError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onQuerySuccess?.(data)\n\n if (optionsRef.current?.staleTime && data !== null) {\n IgniterCallerClientCache.set(queryKey, data)\n }\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onQuerySettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onQueryError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onQuerySettled?.(null, typedError)\n } finally {\n setIsFetching(false)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n }\n },\n [callerKey, method, path, buildRequest, getMergedConfig, onError],\n )\n\n const refetch = useCallback(() => {\n void execute(lastVariablesRef.current)\n }, [execute])\n\n const invalidateQuery = useCallback(\n (data?: TResponse) => {\n const prefix = buildQueryPrefix({ callerKey, method, path })\n invalidate(prefix, data)\n },\n [callerKey, method, path, invalidate],\n )\n\n useEffect(() => {\n register(stableKey, refetch)\n return () => unregister(stableKey, refetch)\n }, [register, unregister, refetch, stableKey])\n\n useEffect(() => {\n if (optionsRef.current?.enabled === false) return\n if (optionsRef.current?.refetchOnMount === false) return\n void execute(lastVariablesRef.current)\n }, [stableKey, execute])\n\n useEffect(() => {\n const interval = optionsRef.current?.refetchInterval\n if (!interval) return\n\n const handler = setInterval(() => {\n if (\n optionsRef.current?.refetchIntervalInBackground === false &&\n typeof document !== 'undefined' &&\n document.hidden\n ) {\n return\n }\n void execute(lastVariablesRef.current)\n }, interval)\n\n return () => clearInterval(handler)\n }, [execute])\n\n useEffect(() => {\n if (optionsRef.current?.refetchOnWindowFocus === false) return\n if (typeof window === 'undefined') return\n\n const handler = () => {\n void execute(lastVariablesRef.current)\n }\n window.addEventListener('focus', handler)\n return () => window.removeEventListener('focus', handler)\n }, [execute])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isFetching,\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n refetch,\n invalidate: invalidateQuery,\n execute,\n }\n }\n}\n\nexport function createUseMutate<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n body?: unknown\n },\n>(\n params: UseMutateParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseMutateOptions<TResponse, TVariables>,\n) => IgniterCallerUseMutateResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n 'success',\n )\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({ data: null, error: null })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const mutate = useCallback(\n async (nextVariables?: TVariables) => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeMutateInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onMutationLoading?.(true)\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onMutationError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onMutationSuccess?.(data)\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onMutationSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onMutationError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onMutationSettled?.(null, typedError)\n } finally {\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onMutationLoading?.(false)\n }\n },\n [method, path, buildRequest, getMergedConfig, onError],\n )\n\n const retry = useCallback(() => {\n void mutate(lastVariablesRef.current)\n }, [mutate])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n mutate,\n retry,\n }\n }\n}\n","import type { IgniterCallerManager } from '../../core/manager'\nimport type { IgniterCallerClientContextValue } from '../interfaces/context'\nimport type { IgniterCallerClientRequestInput } from './hooks.builder'\nimport {\n createUseMutate,\n createUseQuery,\n} from './hooks.builder'\nimport type {\n IgniterCallerClient,\n IgniterCallerClientConfigApi,\n} from '../interfaces/client'\nimport { buildQueryPrefix } from '../utils/query-key'\n\nfunction applyRequestInput(\n builder: { params: (params: Record<string, string | number | boolean>) => any; headers: (headers: Record<string, string>) => any; body: (body: unknown) => any },\n input: IgniterCallerClientRequestInput,\n) {\n if (input.query && Object.keys(input.query).length > 0) {\n builder.params(input.query)\n }\n\n if (input.headers && Object.keys(input.headers).length > 0) {\n builder.headers(input.headers)\n }\n\n if (input.body !== undefined) {\n builder.body(input.body)\n }\n}\n\nexport function createIgniterCallerClient<\n TCaller extends IgniterCallerManager<any>,\n TCallers extends Record<string, IgniterCallerManager<any>>,\n>(\n context: IgniterCallerClientContextValue<TCallers>,\n callerKey: keyof TCallers,\n): IgniterCallerClient<TCaller> {\n const caller = context.callers[callerKey] as unknown as TCaller\n\n const getMergedConfig = () => context.getMergedConfig(callerKey)\n\n const buildRequest = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n ) => {\n if (!path) {\n throw new Error(\n 'IgniterCallerClient: path is required when using hooks with Caller client.',\n )\n }\n\n const methodKey = method.toLowerCase() as\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'head'\n\n const builder = (caller as any)[methodKey](path)\n applyRequestInput(builder, input)\n return builder as { execute: () => Promise<any> }\n }\n\n const invalidate = (pathOrPaths: string | string[], data?: unknown) => {\n const paths = Array.isArray(pathOrPaths) ? pathOrPaths : [pathOrPaths]\n const prefixes = paths.map((path) =>\n buildQueryPrefix({\n callerKey: String(callerKey),\n method: 'GET',\n path,\n }),\n )\n context.invalidate(prefixes, data)\n }\n\n const config: IgniterCallerClientConfigApi = {\n set: (key, value) => context.setConfig(callerKey, key, value),\n get: (key) => context.getConfig(callerKey, key),\n reset: () => context.setConfigBatch(callerKey, {}),\n }\n\n const get = (path?: string) => {\n const builder = caller.get(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'GET',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const head = (path?: string) => {\n const builder = caller.head(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'HEAD',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const post = (path?: string) => {\n const builder = caller.post(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'POST',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const put = (path?: string) => {\n const builder = caller.put(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PUT',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const patch = (path?: string) => {\n const builder = caller.patch(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PATCH',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const del = (path?: string) => {\n const builder = caller.delete(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'DELETE',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n return {\n raw: caller,\n config,\n invalidate: invalidate as any,\n get: get as any,\n post: post as any,\n put: put as any,\n patch: patch as any,\n delete: del as any,\n head: head as any,\n }\n}\n","'use client'\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type {\n IgniterCallerClientContextValue,\n IgniterCallerClientConfigs,\n IgniterCallerClientMap,\n IgniterCallerClientRefetchFn,\n} from '../interfaces/context'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientConfigKey,\n IgniterCallerClientConfigValue,\n} from '../interfaces/config'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { createIgniterCallerClient } from './client.builder'\n\nconst IgniterCallerClientContext = createContext<\n IgniterCallerClientContextValue<any> | undefined\n>(undefined)\n\nexport interface IgniterCallerProviderProps<\n TCallers extends IgniterCallerClientMap,\n> extends PropsWithChildren {\n callers: TCallers\n configs?: IgniterCallerClientConfigs<TCallers>\n hooks?: IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeConfig(\n globalConfig: IgniterCallerClientConfig,\n localConfig?: IgniterCallerClientConfig,\n): IgniterCallerClientConfig {\n return {\n ...globalConfig,\n ...localConfig,\n headers: {\n ...(globalConfig.headers || {}),\n ...(localConfig?.headers || {}),\n },\n cookies: {\n ...(globalConfig.cookies || {}),\n ...(localConfig?.cookies || {}),\n },\n query: {\n ...(globalConfig.query || {}),\n ...(localConfig?.query || {}),\n },\n }\n}\n\nexport function IgniterCallerProvider<\n TCallers extends IgniterCallerClientMap,\n>(props: IgniterCallerProviderProps<TCallers>) {\n const { callers, configs, hooks, onError, children } = props\n const [configState, setConfigState] = useState<\n IgniterCallerClientConfigs<TCallers>\n >(configs || {})\n const [listeners] = useState(\n () => new Map<string, Set<IgniterCallerClientRefetchFn>>(),\n )\n\n const globalConfig = useMemo<IgniterCallerClientConfig>(\n () => hooks || {},\n [hooks],\n )\n\n const register = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key) || new Set()\n current.add(refetch)\n listeners.set(key, current)\n },\n [listeners],\n )\n\n const unregister = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key)\n if (!current) return\n current.delete(refetch)\n if (current.size === 0) {\n listeners.delete(key)\n }\n },\n [listeners],\n )\n\n const invalidate = useCallback(\n (keys: string | string[], data?: unknown) => {\n const keysArray = Array.isArray(keys) ? keys : [keys]\n\n keysArray.forEach((prefix) => {\n if (data !== undefined) {\n IgniterCallerClientCache.replacePrefix(prefix, data)\n } else {\n IgniterCallerClientCache.clearPrefix(prefix)\n }\n\n listeners.forEach((refetchFns, registeredKey) => {\n if (registeredKey.startsWith(prefix)) {\n refetchFns.forEach((refetch) => refetch(true))\n }\n })\n })\n },\n [listeners],\n )\n\n const setConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n value: IgniterCallerClientConfigValue<TKey>,\n ) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n [key]: value,\n },\n }))\n },\n [],\n )\n\n const setConfigBatch = useCallback(\n (callerKey: keyof TCallers, config: Partial<IgniterCallerClientConfig>) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n ...config,\n },\n }))\n },\n [],\n )\n\n const getMergedConfig = useCallback(\n (callerKey: keyof TCallers) =>\n mergeConfig(globalConfig, configState[callerKey]),\n [globalConfig, configState],\n )\n\n const getConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n ) => getMergedConfig(callerKey)[key],\n [getMergedConfig],\n )\n\n const value = useMemo<IgniterCallerClientContextValue<TCallers>>(\n () => ({\n callers,\n configs: configState,\n globalConfig,\n setConfig,\n setConfigBatch,\n getConfig,\n getMergedConfig,\n register,\n unregister,\n invalidate,\n listeners,\n onError,\n }),\n [\n callers,\n configState,\n globalConfig,\n getConfig,\n getMergedConfig,\n invalidate,\n listeners,\n onError,\n register,\n setConfig,\n setConfigBatch,\n unregister,\n ],\n )\n\n return (\n <IgniterCallerClientContext.Provider value={value}>\n {children}\n </IgniterCallerClientContext.Provider>\n )\n}\n\nexport function useIgniterCallerContext<\n TCallers extends IgniterCallerClientMap,\n>() {\n const context = useContext(\n IgniterCallerClientContext,\n ) as IgniterCallerClientContextValue<TCallers> | undefined\n\n if (!context) {\n throw new Error(\n 'IgniterCallerProvider is missing. Wrap your app with <IgniterCallerProvider>.',\n )\n }\n\n return context\n}\n\nexport function useIgniterCaller<TCallers extends IgniterCallerClientMap>() {\n const context = useIgniterCallerContext<TCallers>()\n\n return <TKey extends keyof TCallers>(callerKey: TKey) =>\n createIgniterCallerClient(context, callerKey)\n}\n"]}
1
+ {"version":3,"sources":["../../src/client/utils/cache.ts","../../src/client/utils/query-key.ts","../../src/client/utils/cookies.ts","../../src/client/builders/hooks.builder.tsx","../../src/client/builders/client.builder.ts","../../src/client/builders/provider.builder.tsx"],"names":["useState","useRef","useMemo","useCallback","useEffect","createContext","value","jsx","useContext"],"mappings":"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","file":"index.js","sourcesContent":["export class IgniterCallerClientCache {\n private static cache = new Map<\n string,\n { data: unknown; timestamp: number }\n >()\n\n static get<T>(key: string, staleTime?: number): T | undefined {\n const entry = IgniterCallerClientCache.cache.get(key)\n if (!entry) return undefined\n\n if (staleTime && Date.now() - entry.timestamp > staleTime) {\n IgniterCallerClientCache.cache.delete(key)\n return undefined\n }\n\n return entry.data as T\n }\n\n static set(key: string, data: unknown): void {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: Date.now(),\n })\n }\n\n static replacePrefix(prefix: string, data: unknown): void {\n for (const [key, entry] of IgniterCallerClientCache.cache.entries()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: entry.timestamp,\n })\n }\n }\n }\n\n static clearPrefix(prefix: string): void {\n for (const key of IgniterCallerClientCache.cache.keys()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.delete(key)\n }\n }\n }\n}\n","import type { IgniterCallerClientQuery } from '../interfaces/config'\n\nconst EMPTY_KEY = '{}'\n\nfunction stableStringify(value: unknown): string {\n if (value === null || value === undefined) return EMPTY_KEY\n if (typeof value !== 'object') return JSON.stringify(value)\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(',')}]`\n }\n\n const entries = Object.entries(value as Record<string, unknown>).sort(\n ([a], [b]) => a.localeCompare(b),\n )\n\n return `{${entries\n .map(([key, val]) => `${JSON.stringify(key)}:${stableStringify(val)}`)\n .join(',')}}`\n}\n\nexport function buildQueryKey(params: {\n callerKey: string\n method: string\n path: string\n query?: IgniterCallerClientQuery\n params?: Record<string, string | number | boolean>\n}): string {\n const { callerKey, method, path, query, params: pathParams } = params\n const payload = {\n params: pathParams || {},\n query: query || {},\n }\n\n return `${callerKey}::${method.toUpperCase()}::${path}::${stableStringify(payload)}`\n}\n\nexport function buildQueryPrefix(params: {\n callerKey: string\n method: string\n path: string\n}): string {\n const { callerKey, method, path } = params\n return `${callerKey}::${method.toUpperCase()}::${path}`\n}\n","import type { IgniterCallerClientCookies } from '../interfaces/config'\n\nexport function buildCookieHeader(\n cookies?: IgniterCallerClientCookies,\n): string | undefined {\n if (!cookies || Object.keys(cookies).length === 0) return undefined\n\n return Object.entries(cookies)\n .map(([key, value]) => `${key}=${value}`)\n .join('; ')\n}\n","'use client'\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type { IgniterCallerApiResponse } from '../../types/response'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientQuery,\n} from '../interfaces/config'\nimport type { IgniterCallerClientRefetchFn } from '../interfaces/context'\nimport type {\n IgniterCallerUseMutateOptions,\n IgniterCallerUseMutateResult,\n IgniterCallerUseQueryOptions,\n IgniterCallerUseQueryResult,\n} from '../interfaces/hooks'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { buildQueryKey, buildQueryPrefix } from '../utils/query-key'\nimport { buildCookieHeader } from '../utils/cookies'\n\nexport interface IgniterCallerClientRequestInput {\n params?: Record<string, string | number | boolean>\n query?: Record<string, string | number | boolean>\n headers?: Record<string, string>\n cookies?: Record<string, string>\n body?: unknown\n}\n\nexport type IgniterCallerClientRequestFactory<TResponse> = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n) => {\n execute: () => Promise<IgniterCallerApiResponse<TResponse>>\n}\n\ninterface UseQueryParams<TResponse, TVariables> {\n callerKey: string\n method: 'GET' | 'HEAD'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n register: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n unregister: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n invalidate: (keys: string | string[], data?: unknown) => void\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\ninterface UseMutateParams<TResponse, TVariables> {\n callerKey: string\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeQueryInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const headers = {\n ...(config.headers || {}),\n ...(options?.headers || {}),\n ...(variables?.headers || {}),\n }\n const cookies = {\n ...(config.cookies || {}),\n ...(options?.cookies || {}),\n ...(variables?.cookies || {}),\n }\n const query = {\n ...(config.query || {}),\n ...(options?.query || {}),\n ...(variables?.query || {}),\n ...(options?.params || {}),\n ...(variables?.params || {}),\n }\n\n const cookieHeader = buildCookieHeader(cookies)\n if (cookieHeader && !headers.Cookie) {\n headers.Cookie = cookieHeader\n }\n\n return {\n headers,\n cookies,\n query,\n params: variables?.params || options?.params,\n }\n}\n\nfunction mergeMutateInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const merged = mergeQueryInput(config, options, variables)\n return {\n ...merged,\n body: variables?.body ?? options?.body,\n }\n}\n\nexport function createUseQuery<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n },\n>(\n params: UseQueryParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseQueryOptions<TResponse, TVariables>,\n) => IgniterCallerUseQueryResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n register,\n unregister,\n invalidate,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n options?.initialData ? 'success' : 'loading',\n )\n const [isFetching, setIsFetching] = useState(false)\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({\n data: options?.initialData ?? null,\n error: null,\n })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const stableKey = useMemo(() => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n options as IgniterCallerClientRequestInput | undefined,\n lastVariablesRef.current as IgniterCallerClientRequestInput | undefined,\n )\n\n return buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n }, [\n callerKey,\n method,\n path,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(options?.params || {}),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(options?.query || {}),\n ])\n\n const execute = useCallback(\n async (nextVariables?: TVariables) => {\n if (optionsRef.current?.enabled === false) return\n\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n const queryKey = buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setIsFetching(true)\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onQueryLoading?.(true)\n\n if (optionsRef.current?.staleTime) {\n const cached = IgniterCallerClientCache.get<TResponse>(\n queryKey,\n optionsRef.current.staleTime,\n )\n if (cached !== undefined) {\n setResponse({ data: cached, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(cached)\n mergedConfig.onQuerySuccess?.(cached)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n setIsFetching(false)\n return {\n data: cached,\n error: undefined,\n }\n }\n }\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onQueryError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onQuerySuccess?.(data)\n\n if (optionsRef.current?.staleTime && data !== null) {\n IgniterCallerClientCache.set(queryKey, data)\n }\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onQuerySettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onQueryError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onQuerySettled?.(null, typedError)\n } finally {\n setIsFetching(false)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n }\n },\n [callerKey, method, path, buildRequest, getMergedConfig, onError],\n )\n\n const refetch = useCallback(() => {\n void execute(lastVariablesRef.current)\n }, [execute])\n\n const invalidateQuery = useCallback(\n (data?: TResponse) => {\n const prefix = buildQueryPrefix({ callerKey, method, path })\n invalidate(prefix, data)\n },\n [callerKey, method, path, invalidate],\n )\n\n useEffect(() => {\n register(stableKey, refetch)\n return () => unregister(stableKey, refetch)\n }, [register, unregister, refetch, stableKey])\n\n const initialFetchDoneRef = useRef(false)\n\n useEffect(() => {\n if (optionsRef.current?.enabled === false) return\n if (optionsRef.current?.refetchOnMount === false && initialFetchDoneRef.current) return\n\n initialFetchDoneRef.current = true\n void execute(lastVariablesRef.current)\n }, [stableKey, execute])\n\n useEffect(() => {\n const interval = optionsRef.current?.refetchInterval\n if (!interval) return\n\n const handler = setInterval(() => {\n if (\n optionsRef.current?.refetchIntervalInBackground === false &&\n typeof document !== 'undefined' &&\n document.hidden\n ) {\n return\n }\n void execute(lastVariablesRef.current)\n }, interval)\n\n return () => clearInterval(handler)\n }, [execute])\n\n useEffect(() => {\n if (optionsRef.current?.refetchOnWindowFocus === false) return\n if (typeof window === 'undefined') return\n\n const handler = () => {\n void execute(lastVariablesRef.current)\n }\n window.addEventListener('focus', handler)\n return () => window.removeEventListener('focus', handler)\n }, [execute])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isFetching,\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n refetch,\n invalidate: invalidateQuery,\n execute,\n }\n }\n}\n\nexport function createUseMutate<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n body?: unknown\n },\n>(\n params: UseMutateParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseMutateOptions<TResponse, TVariables>,\n) => IgniterCallerUseMutateResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n 'success',\n )\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({ data: null, error: null })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const mutate = useCallback(\n async (nextVariables?: TVariables) => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeMutateInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onMutationLoading?.(true)\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onMutationError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onMutationSuccess?.(data)\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onMutationSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onMutationError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onMutationSettled?.(null, typedError)\n } finally {\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onMutationLoading?.(false)\n }\n },\n [method, path, buildRequest, getMergedConfig, onError],\n )\n\n const retry = useCallback(() => {\n void mutate(lastVariablesRef.current)\n }, [mutate])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n mutate,\n retry,\n }\n }\n}\n","import type { IgniterCallerManager } from '../../core/manager'\nimport type { IgniterCallerClientContextValue } from '../interfaces/context'\nimport type { IgniterCallerClientRequestInput } from './hooks.builder'\nimport {\n createUseMutate,\n createUseQuery,\n} from './hooks.builder'\nimport type {\n IgniterCallerClient,\n IgniterCallerClientConfigApi,\n} from '../interfaces/client'\nimport { buildQueryPrefix } from '../utils/query-key'\n\nfunction applyRequestInput(\n builder: { params: (params: Record<string, string | number | boolean>) => any; headers: (headers: Record<string, string>) => any; body: (body: unknown) => any },\n input: IgniterCallerClientRequestInput,\n) {\n if (input.query && Object.keys(input.query).length > 0) {\n builder.params(input.query)\n }\n\n if (input.headers && Object.keys(input.headers).length > 0) {\n builder.headers(input.headers)\n }\n\n if (input.body !== undefined) {\n builder.body(input.body)\n }\n}\n\nexport function createIgniterCallerClient<\n TCaller extends IgniterCallerManager<any>,\n TCallers extends Record<string, IgniterCallerManager<any>>,\n>(\n context: IgniterCallerClientContextValue<TCallers>,\n callerKey: keyof TCallers,\n): IgniterCallerClient<TCaller> {\n const caller = context.callers[callerKey] as unknown as TCaller\n\n const getMergedConfig = () => context.getMergedConfig(callerKey)\n\n const buildRequest = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n ) => {\n if (!path) {\n throw new Error(\n 'IgniterCallerClient: path is required when using hooks with Caller client.',\n )\n }\n\n const methodKey = method.toLowerCase() as\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'head'\n\n const builder = (caller as any)[methodKey](path)\n applyRequestInput(builder, input)\n return builder as { execute: () => Promise<any> }\n }\n\n const invalidate = (pathOrPaths: string | string[], data?: unknown) => {\n const paths = Array.isArray(pathOrPaths) ? pathOrPaths : [pathOrPaths]\n const prefixes = paths.map((path) =>\n buildQueryPrefix({\n callerKey: String(callerKey),\n method: 'GET',\n path,\n }),\n )\n context.invalidate(prefixes, data)\n }\n\n const config: IgniterCallerClientConfigApi = {\n set: (key, value) => context.setConfig(callerKey, key, value),\n get: (key) => context.getConfig(callerKey, key),\n reset: () => context.setConfigBatch(callerKey, {}),\n }\n\n const get = (path?: string) => {\n const builder = caller.get(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'GET',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const head = (path?: string) => {\n const builder = caller.head(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'HEAD',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const post = (path?: string) => {\n const builder = caller.post(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'POST',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const put = (path?: string) => {\n const builder = caller.put(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PUT',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const patch = (path?: string) => {\n const builder = caller.patch(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PATCH',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const del = (path?: string) => {\n const builder = caller.delete(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'DELETE',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n return {\n raw: caller,\n config,\n invalidate: invalidate as any,\n get: get as any,\n post: post as any,\n put: put as any,\n patch: patch as any,\n delete: del as any,\n head: head as any,\n }\n}\n","'use client'\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type {\n IgniterCallerClientContextValue,\n IgniterCallerClientConfigs,\n IgniterCallerClientMap,\n IgniterCallerClientRefetchFn,\n} from '../interfaces/context'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientConfigKey,\n IgniterCallerClientConfigValue,\n} from '../interfaces/config'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { createIgniterCallerClient } from './client.builder'\n\nconst IgniterCallerClientContext = createContext<\n IgniterCallerClientContextValue<any> | undefined\n>(undefined)\n\nexport interface IgniterCallerProviderProps<\n TCallers extends IgniterCallerClientMap,\n> extends PropsWithChildren {\n callers: TCallers\n configs?: IgniterCallerClientConfigs<TCallers>\n hooks?: IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeConfig(\n globalConfig: IgniterCallerClientConfig,\n localConfig?: IgniterCallerClientConfig,\n): IgniterCallerClientConfig {\n return {\n ...globalConfig,\n ...localConfig,\n headers: {\n ...(globalConfig.headers || {}),\n ...(localConfig?.headers || {}),\n },\n cookies: {\n ...(globalConfig.cookies || {}),\n ...(localConfig?.cookies || {}),\n },\n query: {\n ...(globalConfig.query || {}),\n ...(localConfig?.query || {}),\n },\n }\n}\n\nexport function IgniterCallerProvider<\n TCallers extends IgniterCallerClientMap,\n>(props: IgniterCallerProviderProps<TCallers>) {\n const { callers, configs, hooks, onError, children } = props\n const [configState, setConfigState] = useState<\n IgniterCallerClientConfigs<TCallers>\n >(configs || {})\n const [listeners] = useState(\n () => new Map<string, Set<IgniterCallerClientRefetchFn>>(),\n )\n\n const globalConfig = useMemo<IgniterCallerClientConfig>(\n () => hooks || {},\n [hooks],\n )\n\n const register = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key) || new Set()\n current.add(refetch)\n listeners.set(key, current)\n },\n [listeners],\n )\n\n const unregister = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key)\n if (!current) return\n current.delete(refetch)\n if (current.size === 0) {\n listeners.delete(key)\n }\n },\n [listeners],\n )\n\n const invalidate = useCallback(\n (keys: string | string[], data?: unknown) => {\n const keysArray = Array.isArray(keys) ? keys : [keys]\n\n keysArray.forEach((prefix) => {\n if (data !== undefined) {\n IgniterCallerClientCache.replacePrefix(prefix, data)\n } else {\n IgniterCallerClientCache.clearPrefix(prefix)\n }\n\n listeners.forEach((refetchFns, registeredKey) => {\n if (registeredKey.startsWith(prefix)) {\n refetchFns.forEach((refetch) => refetch(true))\n }\n })\n })\n },\n [listeners],\n )\n\n const setConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n value: IgniterCallerClientConfigValue<TKey>,\n ) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n [key]: value,\n },\n }))\n },\n [],\n )\n\n const setConfigBatch = useCallback(\n (callerKey: keyof TCallers, config: Partial<IgniterCallerClientConfig>) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n ...config,\n },\n }))\n },\n [],\n )\n\n const getMergedConfig = useCallback(\n (callerKey: keyof TCallers) =>\n mergeConfig(globalConfig, configState[callerKey]),\n [globalConfig, configState],\n )\n\n const getConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n ) => getMergedConfig(callerKey)[key],\n [getMergedConfig],\n )\n\n const value = useMemo<IgniterCallerClientContextValue<TCallers>>(\n () => ({\n callers,\n configs: configState,\n globalConfig,\n setConfig,\n setConfigBatch,\n getConfig,\n getMergedConfig,\n register,\n unregister,\n invalidate,\n listeners,\n onError,\n }),\n [\n callers,\n configState,\n globalConfig,\n getConfig,\n getMergedConfig,\n invalidate,\n listeners,\n onError,\n register,\n setConfig,\n setConfigBatch,\n unregister,\n ],\n )\n\n return (\n <IgniterCallerClientContext.Provider value={value}>\n {children}\n </IgniterCallerClientContext.Provider>\n )\n}\n\nexport function useIgniterCallerContext<\n TCallers extends IgniterCallerClientMap,\n>() {\n const context = useContext(\n IgniterCallerClientContext,\n ) as IgniterCallerClientContextValue<TCallers> | undefined\n\n if (!context) {\n throw new Error(\n 'IgniterCallerProvider is missing. Wrap your app with <IgniterCallerProvider>.',\n )\n }\n\n return context\n}\n\nexport function useIgniterCaller<TCallers extends IgniterCallerClientMap>() {\n const context = useIgniterCallerContext<TCallers>()\n\n return <TKey extends keyof TCallers>(callerKey: TKey) =>\n createIgniterCallerClient(context, callerKey)\n}\n"]}
@@ -155,8 +155,9 @@ function createUseQuery(params) {
155
155
  callerKey,
156
156
  method,
157
157
  path,
158
- getMergedConfig,
158
+ // eslint-disable-next-line react-hooks/exhaustive-deps
159
159
  JSON.stringify(options?.params || {}),
160
+ // eslint-disable-next-line react-hooks/exhaustive-deps
160
161
  JSON.stringify(options?.query || {})
161
162
  ]);
162
163
  const execute = useCallback(
@@ -259,9 +260,11 @@ function createUseQuery(params) {
259
260
  register(stableKey, refetch);
260
261
  return () => unregister(stableKey, refetch);
261
262
  }, [register, unregister, refetch, stableKey]);
263
+ const initialFetchDoneRef = useRef(false);
262
264
  useEffect(() => {
263
265
  if (optionsRef.current?.enabled === false) return;
264
- if (optionsRef.current?.refetchOnMount === false) return;
266
+ if (optionsRef.current?.refetchOnMount === false && initialFetchDoneRef.current) return;
267
+ initialFetchDoneRef.current = true;
265
268
  void execute(lastVariablesRef.current);
266
269
  }, [stableKey, execute]);
267
270
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/utils/cache.ts","../../src/client/utils/query-key.ts","../../src/client/utils/cookies.ts","../../src/client/builders/hooks.builder.tsx","../../src/client/builders/client.builder.ts","../../src/client/builders/provider.builder.tsx"],"names":["useState","useMemo","useCallback","value"],"mappings":"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","file":"index.mjs","sourcesContent":["export class IgniterCallerClientCache {\n private static cache = new Map<\n string,\n { data: unknown; timestamp: number }\n >()\n\n static get<T>(key: string, staleTime?: number): T | undefined {\n const entry = IgniterCallerClientCache.cache.get(key)\n if (!entry) return undefined\n\n if (staleTime && Date.now() - entry.timestamp > staleTime) {\n IgniterCallerClientCache.cache.delete(key)\n return undefined\n }\n\n return entry.data as T\n }\n\n static set(key: string, data: unknown): void {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: Date.now(),\n })\n }\n\n static replacePrefix(prefix: string, data: unknown): void {\n for (const [key, entry] of IgniterCallerClientCache.cache.entries()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: entry.timestamp,\n })\n }\n }\n }\n\n static clearPrefix(prefix: string): void {\n for (const key of IgniterCallerClientCache.cache.keys()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.delete(key)\n }\n }\n }\n}\n","import type { IgniterCallerClientQuery } from '../interfaces/config'\n\nconst EMPTY_KEY = '{}'\n\nfunction stableStringify(value: unknown): string {\n if (value === null || value === undefined) return EMPTY_KEY\n if (typeof value !== 'object') return JSON.stringify(value)\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(',')}]`\n }\n\n const entries = Object.entries(value as Record<string, unknown>).sort(\n ([a], [b]) => a.localeCompare(b),\n )\n\n return `{${entries\n .map(([key, val]) => `${JSON.stringify(key)}:${stableStringify(val)}`)\n .join(',')}}`\n}\n\nexport function buildQueryKey(params: {\n callerKey: string\n method: string\n path: string\n query?: IgniterCallerClientQuery\n params?: Record<string, string | number | boolean>\n}): string {\n const { callerKey, method, path, query, params: pathParams } = params\n const payload = {\n params: pathParams || {},\n query: query || {},\n }\n\n return `${callerKey}::${method.toUpperCase()}::${path}::${stableStringify(payload)}`\n}\n\nexport function buildQueryPrefix(params: {\n callerKey: string\n method: string\n path: string\n}): string {\n const { callerKey, method, path } = params\n return `${callerKey}::${method.toUpperCase()}::${path}`\n}\n","import type { IgniterCallerClientCookies } from '../interfaces/config'\n\nexport function buildCookieHeader(\n cookies?: IgniterCallerClientCookies,\n): string | undefined {\n if (!cookies || Object.keys(cookies).length === 0) return undefined\n\n return Object.entries(cookies)\n .map(([key, value]) => `${key}=${value}`)\n .join('; ')\n}\n","'use client'\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type { IgniterCallerApiResponse } from '../../types/response'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientQuery,\n} from '../interfaces/config'\nimport type { IgniterCallerClientRefetchFn } from '../interfaces/context'\nimport type {\n IgniterCallerUseMutateOptions,\n IgniterCallerUseMutateResult,\n IgniterCallerUseQueryOptions,\n IgniterCallerUseQueryResult,\n} from '../interfaces/hooks'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { buildQueryKey, buildQueryPrefix } from '../utils/query-key'\nimport { buildCookieHeader } from '../utils/cookies'\n\nexport interface IgniterCallerClientRequestInput {\n params?: Record<string, string | number | boolean>\n query?: Record<string, string | number | boolean>\n headers?: Record<string, string>\n cookies?: Record<string, string>\n body?: unknown\n}\n\nexport type IgniterCallerClientRequestFactory<TResponse> = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n) => {\n execute: () => Promise<IgniterCallerApiResponse<TResponse>>\n}\n\ninterface UseQueryParams<TResponse, TVariables> {\n callerKey: string\n method: 'GET' | 'HEAD'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n register: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n unregister: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n invalidate: (keys: string | string[], data?: unknown) => void\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\ninterface UseMutateParams<TResponse, TVariables> {\n callerKey: string\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeQueryInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const headers = {\n ...(config.headers || {}),\n ...(options?.headers || {}),\n ...(variables?.headers || {}),\n }\n const cookies = {\n ...(config.cookies || {}),\n ...(options?.cookies || {}),\n ...(variables?.cookies || {}),\n }\n const query = {\n ...(config.query || {}),\n ...(options?.query || {}),\n ...(variables?.query || {}),\n ...(options?.params || {}),\n ...(variables?.params || {}),\n }\n\n const cookieHeader = buildCookieHeader(cookies)\n if (cookieHeader && !headers.Cookie) {\n headers.Cookie = cookieHeader\n }\n\n return {\n headers,\n cookies,\n query,\n params: variables?.params || options?.params,\n }\n}\n\nfunction mergeMutateInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const merged = mergeQueryInput(config, options, variables)\n return {\n ...merged,\n body: variables?.body ?? options?.body,\n }\n}\n\nexport function createUseQuery<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n },\n>(\n params: UseQueryParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseQueryOptions<TResponse, TVariables>,\n) => IgniterCallerUseQueryResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n register,\n unregister,\n invalidate,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n options?.initialData ? 'success' : 'loading',\n )\n const [isFetching, setIsFetching] = useState(false)\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({\n data: options?.initialData ?? null,\n error: null,\n })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const stableKey = useMemo(() => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n options as IgniterCallerClientRequestInput | undefined,\n lastVariablesRef.current as IgniterCallerClientRequestInput | undefined,\n )\n\n return buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n }, [\n callerKey,\n method,\n path,\n getMergedConfig,\n JSON.stringify(options?.params || {}),\n JSON.stringify(options?.query || {}),\n ])\n\n const execute = useCallback(\n async (nextVariables?: TVariables) => {\n if (optionsRef.current?.enabled === false) return\n\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n const queryKey = buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setIsFetching(true)\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onQueryLoading?.(true)\n\n if (optionsRef.current?.staleTime) {\n const cached = IgniterCallerClientCache.get<TResponse>(\n queryKey,\n optionsRef.current.staleTime,\n )\n if (cached !== undefined) {\n setResponse({ data: cached, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(cached)\n mergedConfig.onQuerySuccess?.(cached)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n setIsFetching(false)\n return {\n data: cached,\n error: undefined,\n }\n }\n }\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onQueryError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onQuerySuccess?.(data)\n\n if (optionsRef.current?.staleTime && data !== null) {\n IgniterCallerClientCache.set(queryKey, data)\n }\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onQuerySettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onQueryError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onQuerySettled?.(null, typedError)\n } finally {\n setIsFetching(false)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n }\n },\n [callerKey, method, path, buildRequest, getMergedConfig, onError],\n )\n\n const refetch = useCallback(() => {\n void execute(lastVariablesRef.current)\n }, [execute])\n\n const invalidateQuery = useCallback(\n (data?: TResponse) => {\n const prefix = buildQueryPrefix({ callerKey, method, path })\n invalidate(prefix, data)\n },\n [callerKey, method, path, invalidate],\n )\n\n useEffect(() => {\n register(stableKey, refetch)\n return () => unregister(stableKey, refetch)\n }, [register, unregister, refetch, stableKey])\n\n useEffect(() => {\n if (optionsRef.current?.enabled === false) return\n if (optionsRef.current?.refetchOnMount === false) return\n void execute(lastVariablesRef.current)\n }, [stableKey, execute])\n\n useEffect(() => {\n const interval = optionsRef.current?.refetchInterval\n if (!interval) return\n\n const handler = setInterval(() => {\n if (\n optionsRef.current?.refetchIntervalInBackground === false &&\n typeof document !== 'undefined' &&\n document.hidden\n ) {\n return\n }\n void execute(lastVariablesRef.current)\n }, interval)\n\n return () => clearInterval(handler)\n }, [execute])\n\n useEffect(() => {\n if (optionsRef.current?.refetchOnWindowFocus === false) return\n if (typeof window === 'undefined') return\n\n const handler = () => {\n void execute(lastVariablesRef.current)\n }\n window.addEventListener('focus', handler)\n return () => window.removeEventListener('focus', handler)\n }, [execute])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isFetching,\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n refetch,\n invalidate: invalidateQuery,\n execute,\n }\n }\n}\n\nexport function createUseMutate<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n body?: unknown\n },\n>(\n params: UseMutateParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseMutateOptions<TResponse, TVariables>,\n) => IgniterCallerUseMutateResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n 'success',\n )\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({ data: null, error: null })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const mutate = useCallback(\n async (nextVariables?: TVariables) => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeMutateInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onMutationLoading?.(true)\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onMutationError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onMutationSuccess?.(data)\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onMutationSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onMutationError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onMutationSettled?.(null, typedError)\n } finally {\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onMutationLoading?.(false)\n }\n },\n [method, path, buildRequest, getMergedConfig, onError],\n )\n\n const retry = useCallback(() => {\n void mutate(lastVariablesRef.current)\n }, [mutate])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n mutate,\n retry,\n }\n }\n}\n","import type { IgniterCallerManager } from '../../core/manager'\nimport type { IgniterCallerClientContextValue } from '../interfaces/context'\nimport type { IgniterCallerClientRequestInput } from './hooks.builder'\nimport {\n createUseMutate,\n createUseQuery,\n} from './hooks.builder'\nimport type {\n IgniterCallerClient,\n IgniterCallerClientConfigApi,\n} from '../interfaces/client'\nimport { buildQueryPrefix } from '../utils/query-key'\n\nfunction applyRequestInput(\n builder: { params: (params: Record<string, string | number | boolean>) => any; headers: (headers: Record<string, string>) => any; body: (body: unknown) => any },\n input: IgniterCallerClientRequestInput,\n) {\n if (input.query && Object.keys(input.query).length > 0) {\n builder.params(input.query)\n }\n\n if (input.headers && Object.keys(input.headers).length > 0) {\n builder.headers(input.headers)\n }\n\n if (input.body !== undefined) {\n builder.body(input.body)\n }\n}\n\nexport function createIgniterCallerClient<\n TCaller extends IgniterCallerManager<any>,\n TCallers extends Record<string, IgniterCallerManager<any>>,\n>(\n context: IgniterCallerClientContextValue<TCallers>,\n callerKey: keyof TCallers,\n): IgniterCallerClient<TCaller> {\n const caller = context.callers[callerKey] as unknown as TCaller\n\n const getMergedConfig = () => context.getMergedConfig(callerKey)\n\n const buildRequest = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n ) => {\n if (!path) {\n throw new Error(\n 'IgniterCallerClient: path is required when using hooks with Caller client.',\n )\n }\n\n const methodKey = method.toLowerCase() as\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'head'\n\n const builder = (caller as any)[methodKey](path)\n applyRequestInput(builder, input)\n return builder as { execute: () => Promise<any> }\n }\n\n const invalidate = (pathOrPaths: string | string[], data?: unknown) => {\n const paths = Array.isArray(pathOrPaths) ? pathOrPaths : [pathOrPaths]\n const prefixes = paths.map((path) =>\n buildQueryPrefix({\n callerKey: String(callerKey),\n method: 'GET',\n path,\n }),\n )\n context.invalidate(prefixes, data)\n }\n\n const config: IgniterCallerClientConfigApi = {\n set: (key, value) => context.setConfig(callerKey, key, value),\n get: (key) => context.getConfig(callerKey, key),\n reset: () => context.setConfigBatch(callerKey, {}),\n }\n\n const get = (path?: string) => {\n const builder = caller.get(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'GET',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const head = (path?: string) => {\n const builder = caller.head(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'HEAD',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const post = (path?: string) => {\n const builder = caller.post(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'POST',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const put = (path?: string) => {\n const builder = caller.put(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PUT',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const patch = (path?: string) => {\n const builder = caller.patch(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PATCH',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const del = (path?: string) => {\n const builder = caller.delete(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'DELETE',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n return {\n raw: caller,\n config,\n invalidate: invalidate as any,\n get: get as any,\n post: post as any,\n put: put as any,\n patch: patch as any,\n delete: del as any,\n head: head as any,\n }\n}\n","'use client'\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type {\n IgniterCallerClientContextValue,\n IgniterCallerClientConfigs,\n IgniterCallerClientMap,\n IgniterCallerClientRefetchFn,\n} from '../interfaces/context'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientConfigKey,\n IgniterCallerClientConfigValue,\n} from '../interfaces/config'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { createIgniterCallerClient } from './client.builder'\n\nconst IgniterCallerClientContext = createContext<\n IgniterCallerClientContextValue<any> | undefined\n>(undefined)\n\nexport interface IgniterCallerProviderProps<\n TCallers extends IgniterCallerClientMap,\n> extends PropsWithChildren {\n callers: TCallers\n configs?: IgniterCallerClientConfigs<TCallers>\n hooks?: IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeConfig(\n globalConfig: IgniterCallerClientConfig,\n localConfig?: IgniterCallerClientConfig,\n): IgniterCallerClientConfig {\n return {\n ...globalConfig,\n ...localConfig,\n headers: {\n ...(globalConfig.headers || {}),\n ...(localConfig?.headers || {}),\n },\n cookies: {\n ...(globalConfig.cookies || {}),\n ...(localConfig?.cookies || {}),\n },\n query: {\n ...(globalConfig.query || {}),\n ...(localConfig?.query || {}),\n },\n }\n}\n\nexport function IgniterCallerProvider<\n TCallers extends IgniterCallerClientMap,\n>(props: IgniterCallerProviderProps<TCallers>) {\n const { callers, configs, hooks, onError, children } = props\n const [configState, setConfigState] = useState<\n IgniterCallerClientConfigs<TCallers>\n >(configs || {})\n const [listeners] = useState(\n () => new Map<string, Set<IgniterCallerClientRefetchFn>>(),\n )\n\n const globalConfig = useMemo<IgniterCallerClientConfig>(\n () => hooks || {},\n [hooks],\n )\n\n const register = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key) || new Set()\n current.add(refetch)\n listeners.set(key, current)\n },\n [listeners],\n )\n\n const unregister = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key)\n if (!current) return\n current.delete(refetch)\n if (current.size === 0) {\n listeners.delete(key)\n }\n },\n [listeners],\n )\n\n const invalidate = useCallback(\n (keys: string | string[], data?: unknown) => {\n const keysArray = Array.isArray(keys) ? keys : [keys]\n\n keysArray.forEach((prefix) => {\n if (data !== undefined) {\n IgniterCallerClientCache.replacePrefix(prefix, data)\n } else {\n IgniterCallerClientCache.clearPrefix(prefix)\n }\n\n listeners.forEach((refetchFns, registeredKey) => {\n if (registeredKey.startsWith(prefix)) {\n refetchFns.forEach((refetch) => refetch(true))\n }\n })\n })\n },\n [listeners],\n )\n\n const setConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n value: IgniterCallerClientConfigValue<TKey>,\n ) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n [key]: value,\n },\n }))\n },\n [],\n )\n\n const setConfigBatch = useCallback(\n (callerKey: keyof TCallers, config: Partial<IgniterCallerClientConfig>) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n ...config,\n },\n }))\n },\n [],\n )\n\n const getMergedConfig = useCallback(\n (callerKey: keyof TCallers) =>\n mergeConfig(globalConfig, configState[callerKey]),\n [globalConfig, configState],\n )\n\n const getConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n ) => getMergedConfig(callerKey)[key],\n [getMergedConfig],\n )\n\n const value = useMemo<IgniterCallerClientContextValue<TCallers>>(\n () => ({\n callers,\n configs: configState,\n globalConfig,\n setConfig,\n setConfigBatch,\n getConfig,\n getMergedConfig,\n register,\n unregister,\n invalidate,\n listeners,\n onError,\n }),\n [\n callers,\n configState,\n globalConfig,\n getConfig,\n getMergedConfig,\n invalidate,\n listeners,\n onError,\n register,\n setConfig,\n setConfigBatch,\n unregister,\n ],\n )\n\n return (\n <IgniterCallerClientContext.Provider value={value}>\n {children}\n </IgniterCallerClientContext.Provider>\n )\n}\n\nexport function useIgniterCallerContext<\n TCallers extends IgniterCallerClientMap,\n>() {\n const context = useContext(\n IgniterCallerClientContext,\n ) as IgniterCallerClientContextValue<TCallers> | undefined\n\n if (!context) {\n throw new Error(\n 'IgniterCallerProvider is missing. Wrap your app with <IgniterCallerProvider>.',\n )\n }\n\n return context\n}\n\nexport function useIgniterCaller<TCallers extends IgniterCallerClientMap>() {\n const context = useIgniterCallerContext<TCallers>()\n\n return <TKey extends keyof TCallers>(callerKey: TKey) =>\n createIgniterCallerClient(context, callerKey)\n}\n"]}
1
+ {"version":3,"sources":["../../src/client/utils/cache.ts","../../src/client/utils/query-key.ts","../../src/client/utils/cookies.ts","../../src/client/builders/hooks.builder.tsx","../../src/client/builders/client.builder.ts","../../src/client/builders/provider.builder.tsx"],"names":["useState","useMemo","useCallback","value"],"mappings":"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","file":"index.mjs","sourcesContent":["export class IgniterCallerClientCache {\n private static cache = new Map<\n string,\n { data: unknown; timestamp: number }\n >()\n\n static get<T>(key: string, staleTime?: number): T | undefined {\n const entry = IgniterCallerClientCache.cache.get(key)\n if (!entry) return undefined\n\n if (staleTime && Date.now() - entry.timestamp > staleTime) {\n IgniterCallerClientCache.cache.delete(key)\n return undefined\n }\n\n return entry.data as T\n }\n\n static set(key: string, data: unknown): void {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: Date.now(),\n })\n }\n\n static replacePrefix(prefix: string, data: unknown): void {\n for (const [key, entry] of IgniterCallerClientCache.cache.entries()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.set(key, {\n data,\n timestamp: entry.timestamp,\n })\n }\n }\n }\n\n static clearPrefix(prefix: string): void {\n for (const key of IgniterCallerClientCache.cache.keys()) {\n if (key.startsWith(prefix)) {\n IgniterCallerClientCache.cache.delete(key)\n }\n }\n }\n}\n","import type { IgniterCallerClientQuery } from '../interfaces/config'\n\nconst EMPTY_KEY = '{}'\n\nfunction stableStringify(value: unknown): string {\n if (value === null || value === undefined) return EMPTY_KEY\n if (typeof value !== 'object') return JSON.stringify(value)\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(',')}]`\n }\n\n const entries = Object.entries(value as Record<string, unknown>).sort(\n ([a], [b]) => a.localeCompare(b),\n )\n\n return `{${entries\n .map(([key, val]) => `${JSON.stringify(key)}:${stableStringify(val)}`)\n .join(',')}}`\n}\n\nexport function buildQueryKey(params: {\n callerKey: string\n method: string\n path: string\n query?: IgniterCallerClientQuery\n params?: Record<string, string | number | boolean>\n}): string {\n const { callerKey, method, path, query, params: pathParams } = params\n const payload = {\n params: pathParams || {},\n query: query || {},\n }\n\n return `${callerKey}::${method.toUpperCase()}::${path}::${stableStringify(payload)}`\n}\n\nexport function buildQueryPrefix(params: {\n callerKey: string\n method: string\n path: string\n}): string {\n const { callerKey, method, path } = params\n return `${callerKey}::${method.toUpperCase()}::${path}`\n}\n","import type { IgniterCallerClientCookies } from '../interfaces/config'\n\nexport function buildCookieHeader(\n cookies?: IgniterCallerClientCookies,\n): string | undefined {\n if (!cookies || Object.keys(cookies).length === 0) return undefined\n\n return Object.entries(cookies)\n .map(([key, value]) => `${key}=${value}`)\n .join('; ')\n}\n","'use client'\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type { IgniterCallerApiResponse } from '../../types/response'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientQuery,\n} from '../interfaces/config'\nimport type { IgniterCallerClientRefetchFn } from '../interfaces/context'\nimport type {\n IgniterCallerUseMutateOptions,\n IgniterCallerUseMutateResult,\n IgniterCallerUseQueryOptions,\n IgniterCallerUseQueryResult,\n} from '../interfaces/hooks'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { buildQueryKey, buildQueryPrefix } from '../utils/query-key'\nimport { buildCookieHeader } from '../utils/cookies'\n\nexport interface IgniterCallerClientRequestInput {\n params?: Record<string, string | number | boolean>\n query?: Record<string, string | number | boolean>\n headers?: Record<string, string>\n cookies?: Record<string, string>\n body?: unknown\n}\n\nexport type IgniterCallerClientRequestFactory<TResponse> = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n) => {\n execute: () => Promise<IgniterCallerApiResponse<TResponse>>\n}\n\ninterface UseQueryParams<TResponse, TVariables> {\n callerKey: string\n method: 'GET' | 'HEAD'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n register: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n unregister: (key: string, refetch: IgniterCallerClientRefetchFn) => void\n invalidate: (keys: string | string[], data?: unknown) => void\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\ninterface UseMutateParams<TResponse, TVariables> {\n callerKey: string\n method: 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n path: string\n buildRequest: IgniterCallerClientRequestFactory<TResponse>\n getMergedConfig: () => IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeQueryInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const headers = {\n ...(config.headers || {}),\n ...(options?.headers || {}),\n ...(variables?.headers || {}),\n }\n const cookies = {\n ...(config.cookies || {}),\n ...(options?.cookies || {}),\n ...(variables?.cookies || {}),\n }\n const query = {\n ...(config.query || {}),\n ...(options?.query || {}),\n ...(variables?.query || {}),\n ...(options?.params || {}),\n ...(variables?.params || {}),\n }\n\n const cookieHeader = buildCookieHeader(cookies)\n if (cookieHeader && !headers.Cookie) {\n headers.Cookie = cookieHeader\n }\n\n return {\n headers,\n cookies,\n query,\n params: variables?.params || options?.params,\n }\n}\n\nfunction mergeMutateInput(\n config: IgniterCallerClientConfig,\n options?: IgniterCallerClientRequestInput,\n variables?: IgniterCallerClientRequestInput,\n): IgniterCallerClientRequestInput {\n const merged = mergeQueryInput(config, options, variables)\n return {\n ...merged,\n body: variables?.body ?? options?.body,\n }\n}\n\nexport function createUseQuery<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n },\n>(\n params: UseQueryParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseQueryOptions<TResponse, TVariables>,\n) => IgniterCallerUseQueryResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n register,\n unregister,\n invalidate,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n options?.initialData ? 'success' : 'loading',\n )\n const [isFetching, setIsFetching] = useState(false)\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({\n data: options?.initialData ?? null,\n error: null,\n })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const stableKey = useMemo(() => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n options as IgniterCallerClientRequestInput | undefined,\n lastVariablesRef.current as IgniterCallerClientRequestInput | undefined,\n )\n\n return buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n }, [\n callerKey,\n method,\n path,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(options?.params || {}),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(options?.query || {}),\n ])\n\n const execute = useCallback(\n async (nextVariables?: TVariables) => {\n if (optionsRef.current?.enabled === false) return\n\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeQueryInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n const queryKey = buildQueryKey({\n callerKey,\n method,\n path,\n query: mergedInput.query,\n params: mergedInput.params,\n })\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setIsFetching(true)\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onQueryLoading?.(true)\n\n if (optionsRef.current?.staleTime) {\n const cached = IgniterCallerClientCache.get<TResponse>(\n queryKey,\n optionsRef.current.staleTime,\n )\n if (cached !== undefined) {\n setResponse({ data: cached, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(cached)\n mergedConfig.onQuerySuccess?.(cached)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n setIsFetching(false)\n return {\n data: cached,\n error: undefined,\n }\n }\n }\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onQueryError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onQuerySuccess?.(data)\n\n if (optionsRef.current?.staleTime && data !== null) {\n IgniterCallerClientCache.set(queryKey, data)\n }\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onQuerySettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onQueryError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onQuerySettled?.(null, typedError)\n } finally {\n setIsFetching(false)\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onQueryLoading?.(false)\n }\n },\n [callerKey, method, path, buildRequest, getMergedConfig, onError],\n )\n\n const refetch = useCallback(() => {\n void execute(lastVariablesRef.current)\n }, [execute])\n\n const invalidateQuery = useCallback(\n (data?: TResponse) => {\n const prefix = buildQueryPrefix({ callerKey, method, path })\n invalidate(prefix, data)\n },\n [callerKey, method, path, invalidate],\n )\n\n useEffect(() => {\n register(stableKey, refetch)\n return () => unregister(stableKey, refetch)\n }, [register, unregister, refetch, stableKey])\n\n const initialFetchDoneRef = useRef(false)\n\n useEffect(() => {\n if (optionsRef.current?.enabled === false) return\n if (optionsRef.current?.refetchOnMount === false && initialFetchDoneRef.current) return\n\n initialFetchDoneRef.current = true\n void execute(lastVariablesRef.current)\n }, [stableKey, execute])\n\n useEffect(() => {\n const interval = optionsRef.current?.refetchInterval\n if (!interval) return\n\n const handler = setInterval(() => {\n if (\n optionsRef.current?.refetchIntervalInBackground === false &&\n typeof document !== 'undefined' &&\n document.hidden\n ) {\n return\n }\n void execute(lastVariablesRef.current)\n }, interval)\n\n return () => clearInterval(handler)\n }, [execute])\n\n useEffect(() => {\n if (optionsRef.current?.refetchOnWindowFocus === false) return\n if (typeof window === 'undefined') return\n\n const handler = () => {\n void execute(lastVariablesRef.current)\n }\n window.addEventListener('focus', handler)\n return () => window.removeEventListener('focus', handler)\n }, [execute])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isFetching,\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n refetch,\n invalidate: invalidateQuery,\n execute,\n }\n }\n}\n\nexport function createUseMutate<\n TResponse,\n TVariables extends {\n params?: Record<string, string | number | boolean>\n query?: IgniterCallerClientQuery\n body?: unknown\n },\n>(\n params: UseMutateParams<TResponse, TVariables>,\n): (\n options?: IgniterCallerUseMutateOptions<TResponse, TVariables>,\n) => IgniterCallerUseMutateResult<TResponse, TVariables> {\n const {\n callerKey,\n method,\n path,\n buildRequest,\n getMergedConfig,\n onError,\n } = params\n\n return (options) => {\n const [status, setStatus] = useState<'loading' | 'error' | 'success'>(\n 'success',\n )\n const [response, setResponse] = useState<{\n data: TResponse | null\n error: IgniterError | null\n }>({ data: null, error: null })\n const [variables, setVariables] = useState<TVariables | undefined>(\n undefined,\n )\n\n const optionsRef = useRef(options)\n optionsRef.current = options\n const lastVariablesRef = useRef<TVariables | undefined>(undefined)\n\n const mutate = useCallback(\n async (nextVariables?: TVariables) => {\n const mergedConfig = getMergedConfig()\n const mergedInput = mergeMutateInput(\n mergedConfig,\n optionsRef.current as IgniterCallerClientRequestInput | undefined,\n nextVariables as IgniterCallerClientRequestInput | undefined,\n )\n\n lastVariablesRef.current = nextVariables\n setVariables(nextVariables)\n\n setStatus('loading')\n optionsRef.current?.onLoading?.(true)\n mergedConfig.onMutationLoading?.(true)\n\n try {\n const result = await buildRequest(method, path, mergedInput).execute()\n optionsRef.current?.onRequest?.(result)\n if (result.error) {\n setResponse({ data: null, error: result.error })\n setStatus('error')\n optionsRef.current?.onError?.(result.error)\n mergedConfig.onMutationError?.(result.error)\n onError?.(result.error)\n } else {\n const data = (result.data ?? null) as TResponse | null\n setResponse({ data, error: null })\n setStatus('success')\n optionsRef.current?.onSuccess?.(data as TResponse)\n mergedConfig.onMutationSuccess?.(data)\n }\n\n optionsRef.current?.onSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n mergedConfig.onMutationSettled?.(\n result.data ?? null,\n result.error ?? null,\n )\n\n return result\n } catch (error) {\n const typedError = error as IgniterError\n setResponse({ data: null, error: typedError })\n setStatus('error')\n optionsRef.current?.onError?.(typedError)\n mergedConfig.onMutationError?.(typedError)\n onError?.(typedError)\n optionsRef.current?.onSettled?.(null, typedError)\n mergedConfig.onMutationSettled?.(null, typedError)\n } finally {\n optionsRef.current?.onLoading?.(false)\n mergedConfig.onMutationLoading?.(false)\n }\n },\n [method, path, buildRequest, getMergedConfig, onError],\n )\n\n const retry = useCallback(() => {\n void mutate(lastVariablesRef.current)\n }, [mutate])\n\n return {\n data: response.data,\n error: response.error,\n variables,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n status,\n mutate,\n retry,\n }\n }\n}\n","import type { IgniterCallerManager } from '../../core/manager'\nimport type { IgniterCallerClientContextValue } from '../interfaces/context'\nimport type { IgniterCallerClientRequestInput } from './hooks.builder'\nimport {\n createUseMutate,\n createUseQuery,\n} from './hooks.builder'\nimport type {\n IgniterCallerClient,\n IgniterCallerClientConfigApi,\n} from '../interfaces/client'\nimport { buildQueryPrefix } from '../utils/query-key'\n\nfunction applyRequestInput(\n builder: { params: (params: Record<string, string | number | boolean>) => any; headers: (headers: Record<string, string>) => any; body: (body: unknown) => any },\n input: IgniterCallerClientRequestInput,\n) {\n if (input.query && Object.keys(input.query).length > 0) {\n builder.params(input.query)\n }\n\n if (input.headers && Object.keys(input.headers).length > 0) {\n builder.headers(input.headers)\n }\n\n if (input.body !== undefined) {\n builder.body(input.body)\n }\n}\n\nexport function createIgniterCallerClient<\n TCaller extends IgniterCallerManager<any>,\n TCallers extends Record<string, IgniterCallerManager<any>>,\n>(\n context: IgniterCallerClientContextValue<TCallers>,\n callerKey: keyof TCallers,\n): IgniterCallerClient<TCaller> {\n const caller = context.callers[callerKey] as unknown as TCaller\n\n const getMergedConfig = () => context.getMergedConfig(callerKey)\n\n const buildRequest = (\n method: string,\n path: string,\n input: IgniterCallerClientRequestInput,\n ) => {\n if (!path) {\n throw new Error(\n 'IgniterCallerClient: path is required when using hooks with Caller client.',\n )\n }\n\n const methodKey = method.toLowerCase() as\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'head'\n\n const builder = (caller as any)[methodKey](path)\n applyRequestInput(builder, input)\n return builder as { execute: () => Promise<any> }\n }\n\n const invalidate = (pathOrPaths: string | string[], data?: unknown) => {\n const paths = Array.isArray(pathOrPaths) ? pathOrPaths : [pathOrPaths]\n const prefixes = paths.map((path) =>\n buildQueryPrefix({\n callerKey: String(callerKey),\n method: 'GET',\n path,\n }),\n )\n context.invalidate(prefixes, data)\n }\n\n const config: IgniterCallerClientConfigApi = {\n set: (key, value) => context.setConfig(callerKey, key, value),\n get: (key) => context.getConfig(callerKey, key),\n reset: () => context.setConfigBatch(callerKey, {}),\n }\n\n const get = (path?: string) => {\n const builder = caller.get(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'GET',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const head = (path?: string) => {\n const builder = caller.head(path as any)\n const useQuery = createUseQuery({\n callerKey: String(callerKey),\n method: 'HEAD',\n path: path || '',\n buildRequest,\n register: context.register,\n unregister: context.unregister,\n invalidate: context.invalidate,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useQuery = useQuery\n return builder as any\n }\n\n const post = (path?: string) => {\n const builder = caller.post(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'POST',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const put = (path?: string) => {\n const builder = caller.put(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PUT',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const patch = (path?: string) => {\n const builder = caller.patch(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'PATCH',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n const del = (path?: string) => {\n const builder = caller.delete(path as any)\n const useMutate = createUseMutate({\n callerKey: String(callerKey),\n method: 'DELETE',\n path: path || '',\n buildRequest,\n getMergedConfig,\n onError: context.onError,\n })\n ;(builder as any).useMutate = useMutate\n return builder as any\n }\n\n return {\n raw: caller,\n config,\n invalidate: invalidate as any,\n get: get as any,\n post: post as any,\n put: put as any,\n patch: patch as any,\n delete: del as any,\n head: head as any,\n }\n}\n","'use client'\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport type { IgniterError } from '@igniter-js/common'\nimport type {\n IgniterCallerClientContextValue,\n IgniterCallerClientConfigs,\n IgniterCallerClientMap,\n IgniterCallerClientRefetchFn,\n} from '../interfaces/context'\nimport type {\n IgniterCallerClientConfig,\n IgniterCallerClientConfigKey,\n IgniterCallerClientConfigValue,\n} from '../interfaces/config'\nimport { IgniterCallerClientCache } from '../utils/cache'\nimport { createIgniterCallerClient } from './client.builder'\n\nconst IgniterCallerClientContext = createContext<\n IgniterCallerClientContextValue<any> | undefined\n>(undefined)\n\nexport interface IgniterCallerProviderProps<\n TCallers extends IgniterCallerClientMap,\n> extends PropsWithChildren {\n callers: TCallers\n configs?: IgniterCallerClientConfigs<TCallers>\n hooks?: IgniterCallerClientConfig\n onError?: (error: IgniterError) => void\n}\n\nfunction mergeConfig(\n globalConfig: IgniterCallerClientConfig,\n localConfig?: IgniterCallerClientConfig,\n): IgniterCallerClientConfig {\n return {\n ...globalConfig,\n ...localConfig,\n headers: {\n ...(globalConfig.headers || {}),\n ...(localConfig?.headers || {}),\n },\n cookies: {\n ...(globalConfig.cookies || {}),\n ...(localConfig?.cookies || {}),\n },\n query: {\n ...(globalConfig.query || {}),\n ...(localConfig?.query || {}),\n },\n }\n}\n\nexport function IgniterCallerProvider<\n TCallers extends IgniterCallerClientMap,\n>(props: IgniterCallerProviderProps<TCallers>) {\n const { callers, configs, hooks, onError, children } = props\n const [configState, setConfigState] = useState<\n IgniterCallerClientConfigs<TCallers>\n >(configs || {})\n const [listeners] = useState(\n () => new Map<string, Set<IgniterCallerClientRefetchFn>>(),\n )\n\n const globalConfig = useMemo<IgniterCallerClientConfig>(\n () => hooks || {},\n [hooks],\n )\n\n const register = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key) || new Set()\n current.add(refetch)\n listeners.set(key, current)\n },\n [listeners],\n )\n\n const unregister = useCallback(\n (key: string, refetch: IgniterCallerClientRefetchFn) => {\n const current = listeners.get(key)\n if (!current) return\n current.delete(refetch)\n if (current.size === 0) {\n listeners.delete(key)\n }\n },\n [listeners],\n )\n\n const invalidate = useCallback(\n (keys: string | string[], data?: unknown) => {\n const keysArray = Array.isArray(keys) ? keys : [keys]\n\n keysArray.forEach((prefix) => {\n if (data !== undefined) {\n IgniterCallerClientCache.replacePrefix(prefix, data)\n } else {\n IgniterCallerClientCache.clearPrefix(prefix)\n }\n\n listeners.forEach((refetchFns, registeredKey) => {\n if (registeredKey.startsWith(prefix)) {\n refetchFns.forEach((refetch) => refetch(true))\n }\n })\n })\n },\n [listeners],\n )\n\n const setConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n value: IgniterCallerClientConfigValue<TKey>,\n ) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n [key]: value,\n },\n }))\n },\n [],\n )\n\n const setConfigBatch = useCallback(\n (callerKey: keyof TCallers, config: Partial<IgniterCallerClientConfig>) => {\n setConfigState((prev) => ({\n ...prev,\n [callerKey]: {\n ...(prev[callerKey] || {}),\n ...config,\n },\n }))\n },\n [],\n )\n\n const getMergedConfig = useCallback(\n (callerKey: keyof TCallers) =>\n mergeConfig(globalConfig, configState[callerKey]),\n [globalConfig, configState],\n )\n\n const getConfig = useCallback(\n <TKey extends IgniterCallerClientConfigKey>(\n callerKey: keyof TCallers,\n key: TKey,\n ) => getMergedConfig(callerKey)[key],\n [getMergedConfig],\n )\n\n const value = useMemo<IgniterCallerClientContextValue<TCallers>>(\n () => ({\n callers,\n configs: configState,\n globalConfig,\n setConfig,\n setConfigBatch,\n getConfig,\n getMergedConfig,\n register,\n unregister,\n invalidate,\n listeners,\n onError,\n }),\n [\n callers,\n configState,\n globalConfig,\n getConfig,\n getMergedConfig,\n invalidate,\n listeners,\n onError,\n register,\n setConfig,\n setConfigBatch,\n unregister,\n ],\n )\n\n return (\n <IgniterCallerClientContext.Provider value={value}>\n {children}\n </IgniterCallerClientContext.Provider>\n )\n}\n\nexport function useIgniterCallerContext<\n TCallers extends IgniterCallerClientMap,\n>() {\n const context = useContext(\n IgniterCallerClientContext,\n ) as IgniterCallerClientContextValue<TCallers> | undefined\n\n if (!context) {\n throw new Error(\n 'IgniterCallerProvider is missing. Wrap your app with <IgniterCallerProvider>.',\n )\n }\n\n return context\n}\n\nexport function useIgniterCaller<TCallers extends IgniterCallerClientMap>() {\n const context = useIgniterCallerContext<TCallers>()\n\n return <TKey extends keyof TCallers>(callerKey: TKey) =>\n createIgniterCallerClient(context, callerKey)\n}\n"]}
package/dist/index.js CHANGED
@@ -2159,14 +2159,13 @@ var IgniterCallerBuilder = class _IgniterCallerBuilder {
2159
2159
  });
2160
2160
  }
2161
2161
  withSchemas(schemas, validation) {
2162
+ const { mock: _removedMock, ...stateWithoutMock } = this.state;
2162
2163
  const nextState = {
2163
- ...this.state,
2164
+ ...stateWithoutMock,
2164
2165
  schemas,
2165
2166
  schemaValidation: validation
2166
2167
  };
2167
- return new _IgniterCallerBuilder(
2168
- nextState
2169
- );
2168
+ return new _IgniterCallerBuilder(nextState);
2170
2169
  }
2171
2170
  /**
2172
2171
  * Attaches telemetry for request monitoring and observability.