mobx-tanstack-query-api 0.41.1 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/runtime/endpoint-query.ts","../src/runtime/endpoint-infinite-query.ts","../src/runtime/endpoint-mutation.ts","../src/runtime/http-response.ts","../src/runtime/endpoint.ts","../src/runtime/endpoint-query-client.ts","../src/runtime/http-client.ts"],"sourcesContent":["/** biome-ignore-all lint/correctness/noUnusedVariables: generic type imports are intentional */\nimport type {\n DefaultError,\n QueryFunctionContext,\n QueryObserverResult,\n RefetchOptions,\n} from '@tanstack/query-core';\nimport {\n comparer,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport { Query, type QueryUpdateOptionsAllVariants } from 'mobx-tanstack-query';\nimport { callFunction } from 'yummies/common';\nimport { getMobxAdministration, lazyObserve } from 'yummies/mobx';\nimport type { AnyObject, Maybe, MaybeFalsy, MaybeFn } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport type {\n EndpointQueryFlattenOptions,\n EndpointQueryOptions,\n EndpointQueryUniqKey,\n ExcludedQueryKeys,\n} from './endpoint-query.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { RequestParams } from './http-client.js';\n\ninterface InternalObservableData<TEndpoint extends AnyEndpoint> {\n params: MaybeFalsy<TEndpoint['__params']>;\n uniqKey?: EndpointQueryUniqKey;\n initialized?: boolean;\n dynamicOptions?: any;\n response: TEndpoint['__response'] | null;\n}\n\n/**\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/)\n */\nexport class EndpointQuery<\n TEndpoint extends AnyEndpoint,\n TQueryFnData = TEndpoint['__response']['data'],\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n> extends Query<TQueryFnData, TError, TData, TQueryData> {\n private _observableData: InternalObservableData<TEndpoint>;\n\n /**\n * Creates `EndpointQuery` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#constructor)\n */\n constructor(\n private endpoint: AnyEndpoint,\n inputQueryClient: EndpointQueryClient,\n queryOptionsInput:\n | EndpointQueryOptions<TEndpoint, TQueryFnData, TError, TData, TQueryData>\n | (() => EndpointQueryFlattenOptions<\n TEndpoint,\n TQueryFnData,\n TError,\n TData,\n TQueryData\n >),\n ) {\n const isQueryOptionsInputFn = typeof queryOptionsInput === 'function';\n const unpackedQueryOptionsInput = isQueryOptionsInputFn\n ? queryOptionsInput()\n : queryOptionsInput;\n\n const {\n uniqKey,\n transform: transformResponse,\n params,\n onDone: onDoneInput,\n queryClient: overridedQueryClient,\n ...queryOptions\n } = unpackedQueryOptionsInput;\n\n const queryClient = overridedQueryClient ?? inputQueryClient;\n\n const _observableData: InternalObservableData<TEndpoint> = {\n params: null,\n dynamicOptions: undefined,\n response: null,\n uniqKey: unpackedQueryOptionsInput.uniqKey,\n };\n\n if (!isQueryOptionsInputFn && typeof params !== 'function') {\n if ('params' in unpackedQueryOptionsInput) {\n _observableData.params = params;\n } else {\n _observableData.params = {};\n }\n _observableData.initialized = true;\n }\n\n makeObservable(_observableData, {\n params: observable.ref,\n response: observable.ref,\n dynamicOptions: observable,\n });\n\n const lastHandledDataUpdatedAt = -1;\n const onDone =\n onDoneInput &&\n ((...args: Parameters<NonNullable<typeof onDoneInput>>) => {\n // const currentDataUpdatedAt = this.dataUpdatedAt ?? 0;\n // if (currentDataUpdatedAt === lastHandledDataUpdatedAt) {\n // return;\n // }\n // lastHandledDataUpdatedAt = currentDataUpdatedAt;\n onDoneInput(...args);\n });\n\n super({\n ...queryOptions,\n onDone,\n queryClient,\n meta: endpoint.toQueryMeta(queryOptions.meta),\n options: (): any => {\n const builtOptions = buildOptionsFromParams(\n endpoint,\n _observableData.params,\n _observableData.uniqKey,\n );\n\n let isEnabled = !!_observableData.initialized && builtOptions.enabled;\n\n if (\n typeof queryOptionsInput !== 'function' &&\n queryOptionsInput.enabled === false\n ) {\n isEnabled = false;\n }\n\n return {\n ...builtOptions,\n enabled: isEnabled,\n ..._observableData.dynamicOptions,\n };\n },\n queryFn: async (ctx): Promise<any> => {\n const params = endpoint.getParamsFromContext(ctx);\n\n runInAction(() => {\n _observableData.response = null;\n if (!comparer.structural(params, _observableData.params)) {\n _observableData.params = params;\n }\n });\n\n let requestParams = params.requestParams as Maybe<RequestParams>;\n\n if (requestParams) {\n if (!requestParams.signal) {\n requestParams.signal = ctx.signal;\n }\n } else {\n requestParams = { signal: ctx.signal };\n }\n\n const fixedInput = {\n ...params,\n requestParams,\n };\n\n const response = await endpoint.request(fixedInput);\n\n runInAction(() => {\n _observableData.response = response as TEndpoint['__response'];\n });\n\n return (await transformResponse?.(response)) ?? response.data;\n },\n });\n\n const parentAtom = getMobxAdministration(this);\n\n computed.struct(this, 'params');\n computed.struct(this, 'response');\n makeObservable(this);\n\n if (isQueryOptionsInputFn || typeof params === 'function') {\n const createParamsReaction = () =>\n reaction(\n (): Partial<InternalObservableData<TEndpoint>> => {\n let outDynamicOptions: InternalObservableData<TEndpoint>['dynamicOptions'];\n let outParams: MaybeFn<MaybeFalsy<TEndpoint['__params']>>;\n let uniqKey: Maybe<EndpointQueryUniqKey>;\n\n if (isQueryOptionsInputFn) {\n const result = queryOptionsInput();\n const {\n params,\n abortSignal,\n select,\n onDone,\n onError,\n onInit,\n enableOnDemand,\n uniqKey: _uniqKey,\n ...dynamicOptions\n } = result;\n\n uniqKey = _uniqKey;\n\n if ('params' in result) {\n outParams = result.params;\n } else {\n outParams = {};\n }\n\n outDynamicOptions =\n Object.keys(dynamicOptions).length > 0\n ? dynamicOptions\n : undefined;\n } else if ('params' in unpackedQueryOptionsInput) {\n outParams = unpackedQueryOptionsInput.params;\n uniqKey = unpackedQueryOptionsInput.uniqKey;\n } else {\n outParams = {};\n uniqKey = unpackedQueryOptionsInput.uniqKey;\n }\n\n return {\n params: callFunction(outParams),\n dynamicOptions: outDynamicOptions,\n uniqKey,\n };\n },\n ({ params, dynamicOptions, uniqKey }) => {\n runInAction(() => {\n _observableData.initialized = true;\n _observableData.params = params;\n _observableData.dynamicOptions = dynamicOptions;\n _observableData.uniqKey = uniqKey;\n });\n },\n {\n fireImmediately: true,\n },\n );\n\n if (this.features.lazy) {\n lazyObserve({\n property: parentAtom.values_.get('_result'),\n onStart: createParamsReaction,\n onEnd: (disposeFn) => disposeFn(),\n });\n } else {\n this.abortController.signal.addEventListener(\n 'abort',\n createParamsReaction(),\n );\n }\n }\n\n this._observableData = _observableData;\n }\n\n /**\n * Current endpoint params used by this query.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#params)\n */\n get params() {\n return this._observableData.params;\n }\n\n /**\n * Last raw HTTP response returned by endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#response)\n */\n get response() {\n return this._observableData.response;\n }\n\n /**\n * Updates query options and optionally params.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#update)\n */\n update(\n updateParams: Omit<\n QueryUpdateOptionsAllVariants<TQueryFnData, TError, TData, TQueryData>,\n ExcludedQueryKeys\n > & {\n params?: MaybeFalsy<TEndpoint['__params']>;\n },\n ) {\n if ('params' in updateParams) {\n const { params, ...options } = updateParams;\n runInAction(() => {\n this._observableData.params = params;\n });\n return super.update({\n ...buildOptionsFromParams(\n this.endpoint,\n params,\n this._observableData.uniqKey,\n ),\n ...options,\n });\n } else if (this._observableData) {\n return super.update({\n ...buildOptionsFromParams(\n this.endpoint,\n this._observableData.params,\n this._observableData.uniqKey,\n ),\n ...updateParams,\n });\n } else {\n return super.update(updateParams);\n }\n }\n\n /**\n * Refetches query when params are initialized.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#refetch)\n */\n refetch(\n options?: RefetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n if (this.params) {\n return super.refetch(options);\n }\n return Promise.resolve(this.queryObserver.getCurrentResult());\n }\n\n /**\n * Sets params and starts query execution.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#start)\n */\n async start(\n params: MaybeFalsy<TEndpoint['__params']>,\n ): Promise<QueryObserverResult<TData, TError>> {\n runInAction(() => {\n this._observableData.params = params;\n });\n return await super.start(\n buildOptionsFromParams(\n this.endpoint,\n params,\n this._observableData.uniqKey,\n ),\n );\n }\n\n protected handleDestroy(): void {\n super.handleDestroy();\n runInAction(() => {\n this._observableData.params = undefined;\n this._observableData.dynamicOptions = undefined;\n });\n }\n}\n\nexport const getParamsFromContext = (ctx: QueryFunctionContext<any, any>) => {\n return (ctx.queryKey.at(-2) || {}) as AnyEndpoint['__params'];\n};\n\nexport const buildOptionsFromParams = (\n endpoint: AnyEndpoint,\n params: MaybeFalsy<AnyObject>,\n uniqKey: Maybe<EndpointQueryUniqKey>,\n): { enabled: boolean; queryKey: any[] } => {\n const { requiredParams } = endpoint.configuration;\n let hasRequiredParams = false;\n\n if (requiredParams.length > 0) {\n hasRequiredParams =\n !!params && requiredParams.every((param) => param in params);\n } else {\n hasRequiredParams = !!params;\n }\n\n return {\n enabled: hasRequiredParams,\n queryKey: endpoint.toQueryKey(params || {}, uniqKey),\n };\n};\n","import type {\n DefaultError,\n InfiniteData,\n QueryObserverResult,\n} from '@tanstack/query-core';\nimport { makeObservable, observable, runInAction } from 'mobx';\nimport { InfiniteQuery } from 'mobx-tanstack-query';\nimport type { Maybe, MaybeFalsy } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport type {\n EndpointInfiniteQueryFlattenOptions,\n EndpointInfiniteQueryOptions,\n EndpointInfiniteQueryUpdateOptionsAllVariants,\n} from './endpoint-infinite-query.types.js';\nimport { buildOptionsFromParams } from './endpoint-query.js';\nimport type { EndpointQueryUniqKey } from './endpoint-query.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { RequestParams } from './http-client.js';\n\nexport class EndpointInfiniteQuery<\n TEndpoint extends AnyEndpoint,\n TQueryFnData = TEndpoint['__response']['data'],\n TError = DefaultError,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n> extends InfiniteQuery<TQueryFnData, TError, TPageParam, TData, any[]> {\n response: TEndpoint['__response'] | null = null;\n params: TEndpoint['__params'] | null = null;\n\n private uniqKey?: EndpointQueryUniqKey;\n\n constructor(\n private endpoint: AnyEndpoint,\n queryClient: EndpointQueryClient,\n\n queryOptionsInput:\n | EndpointInfiniteQueryOptions<\n TEndpoint,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >\n | (() => EndpointInfiniteQueryFlattenOptions<\n TEndpoint,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >),\n ) {\n const {\n uniqKey,\n transform: transformResponse,\n params: paramsFn,\n ...queryOptions\n } = typeof queryOptionsInput === 'function'\n ? queryOptionsInput()\n : queryOptionsInput;\n\n super({\n ...queryOptions,\n queryClient,\n meta: endpoint.toQueryMeta(queryOptions.meta),\n options: (query): any => {\n const extraOptions: any = {};\n let willEnableManually: boolean;\n let params: any;\n\n const pageParam = query.options.initialPageParam;\n\n if (typeof queryOptionsInput === 'function') {\n Object.assign(extraOptions, queryOptionsInput());\n params = paramsFn(pageParam);\n willEnableManually = false;\n } else {\n willEnableManually = queryOptionsInput.enabled === false;\n params = paramsFn(pageParam);\n }\n\n const builtOptions = buildOptionsFromParams(endpoint, params, uniqKey);\n // const dynamicOuterOptions = getDynamicOptions?.(query);\n\n let isEnabled = false;\n\n if (willEnableManually) {\n // if (dynamicOuterOptions?.enabled != null) {\n // isEnabled = dynamicOuterOptions.enabled;\n // }\n } else {\n // const outerDynamicEnabled =\n // dynamicOuterOptions?.enabled == null ||\n // !!dynamicOuterOptions.enabled;\n\n // isEnabled = builtOptions.enabled && outerDynamicEnabled;\n isEnabled = builtOptions.enabled;\n }\n\n return {\n ...query.options,\n ...builtOptions,\n // ...dynamicOuterOptions,\n enabled: isEnabled,\n ...extraOptions,\n } as any;\n },\n queryFn: async (ctx): Promise<any> => {\n const params = paramsFn(\n (ctx.pageParam as any) ?? queryOptions.initialPageParam,\n ) as TEndpoint['__params'];\n\n runInAction(() => {\n this.response = null;\n this.params = params;\n });\n\n let requestParams = params.request as Maybe<RequestParams>;\n\n if (requestParams) {\n if (!requestParams.signal) {\n requestParams.signal = ctx.signal;\n }\n } else {\n requestParams = { signal: ctx.signal };\n }\n\n const fixedInput = {\n ...params,\n request: requestParams,\n };\n\n const response = await endpoint.request(fixedInput);\n\n runInAction(() => {\n this.response = response as TEndpoint['__response'];\n });\n\n return (await transformResponse?.(response)) ?? response.data;\n },\n });\n\n this.uniqKey = uniqKey;\n\n observable.ref(this, 'response');\n observable.ref(this, 'params');\n makeObservable(this);\n }\n\n update({\n params,\n ...options\n }: EndpointInfiniteQueryUpdateOptionsAllVariants<\n TEndpoint,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >) {\n return super.update({\n ...buildOptionsFromParams(this.endpoint, params, this.uniqKey),\n ...options,\n });\n }\n\n async start(\n params: MaybeFalsy<TEndpoint['__params']>,\n ): Promise<QueryObserverResult<TData, TError>> {\n return await super.start(\n buildOptionsFromParams(this.endpoint, params, this.uniqKey),\n );\n }\n}\n","import { Mutation } from 'mobx-tanstack-query';\nimport type { AnyObject, Maybe } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport type {\n EndpointMutationOptions,\n EndpointMutationParams,\n} from './endpoint-mutation.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { InvalidateEndpointsFilters } from './endpoint-query-client.types.js';\nimport type { RequestParams } from './http-client.js';\n\n/**\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-mutations/)\n */\nexport class EndpointMutation<\n TEndpoint extends AnyEndpoint,\n TData = unknown,\n TParams extends AnyObject = AnyObject,\n TMutationMeta extends AnyObject | void = void,\n TOnMutateResult = unknown,\n> extends Mutation<\n TData,\n EndpointMutationParams<TParams, TMutationMeta>,\n TEndpoint['__response']['error'],\n TOnMutateResult\n> {\n /**\n * Creates `EndpointMutation` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-mutations/#constructor)\n */\n constructor(\n endpoint: AnyEndpoint,\n inputQueryClient: EndpointQueryClient,\n {\n transform: transformResponse,\n invalidateEndpoints,\n queryClient: overridedQueryClient,\n ...mutationOptions\n }: EndpointMutationOptions<\n TEndpoint,\n TData,\n TParams,\n TMutationMeta,\n TOnMutateResult\n >,\n ) {\n const queryClient = overridedQueryClient ?? inputQueryClient;\n super({\n ...mutationOptions,\n queryClient,\n onSuccess: (data, variables, onMutateResult, context) => {\n mutationOptions.onSuccess?.(data, variables, onMutateResult, context);\n if (invalidateEndpoints) {\n if (typeof invalidateEndpoints === 'object') {\n queryClient.invalidateEndpoints(invalidateEndpoints);\n } else {\n let filters: Maybe<InvalidateEndpointsFilters>;\n switch (`${invalidateEndpoints}`) {\n case 'true': {\n filters = endpoint.group\n ? {\n group: endpoint.group,\n }\n : {\n tag: endpoint.tags,\n };\n\n break;\n }\n case 'by-group': {\n filters = {\n group: endpoint.group,\n };\n\n break;\n }\n case 'by-tag': {\n filters = {\n tag: endpoint.tags,\n };\n\n break;\n }\n }\n\n if (filters) {\n queryClient.invalidateEndpoints(filters);\n }\n }\n }\n },\n mutationFn: async (input, context) => {\n let requestParams = input?.requestParams as Maybe<RequestParams>;\n\n if (requestParams) {\n if (!requestParams.signal) {\n requestParams.signal = context.signal;\n }\n } else {\n requestParams = { signal: context.signal };\n }\n\n const fixedInput = {\n ...input,\n requestParams,\n };\n\n const response = await endpoint.request(fixedInput);\n return (await transformResponse?.(response)) ?? response.data;\n },\n });\n }\n}\n","import type {\n HttpStatusCode,\n HttpSuccessStatusCode,\n} from 'http-status-code-types';\nimport type { ValueOf } from 'yummies/types';\n\nexport const emptyStatusCodesSet = new Set([204, 205, 304]);\n\nexport interface RequestInfo {\n url: string;\n params: globalThis.RequestInit;\n}\n\ntype ResponsesByStatusMap = {\n [K in HttpStatusCode]?: any;\n};\n\nexport type HttpMultistatusResponse<\n TResponsesByStatusMap extends ResponsesByStatusMap,\n TDefaultOkResponse,\n TDefaultBadResponse = unknown,\n> =\n | ValueOf<{\n [K in keyof TResponsesByStatusMap]-?: HttpResponse<\n K extends HttpSuccessStatusCode\n ? TResponsesByStatusMap[K]\n : TDefaultOkResponse,\n K extends HttpSuccessStatusCode\n ? TDefaultBadResponse\n : TResponsesByStatusMap[K],\n number & K\n >;\n }>\n | HttpResponse<\n TDefaultOkResponse,\n TDefaultBadResponse,\n Exclude<HttpStatusCode, keyof TResponsesByStatusMap>\n >;\n\nexport type GetHttpResponse<T> = T extends (...args: any[]) => infer R\n ? R extends Promise<HttpResponse<any, any>>\n ? Awaited<R>\n : R extends Promise<HttpMultistatusResponse<any, any, any>>\n ? Awaited<R>\n : HttpResponse<any, any>\n : HttpResponse<any, any>;\n\nexport type HttpBadResponse<T = any> = HttpResponse<null, T>;\n\nexport type AnyHttpResponse = HttpResponse<any, any>;\n\nexport type AnyHttpMultistatusResponse = HttpMultistatusResponse<\n ResponsesByStatusMap,\n any,\n any\n>;\n\nexport type AnyResponse = AnyHttpResponse | AnyHttpMultistatusResponse;\n\nexport type ResponseFormat = ValueOf<{\n [K in keyof Body]: Body[K] extends Function ? K : never;\n}>;\n\nexport class HttpResponse<\n TData,\n TError = null,\n TStatus extends number = number,\n> {\n headers;\n ok;\n redirected;\n statusText;\n type;\n url;\n body;\n\n data: TData;\n error: TError;\n status: TStatus;\n\n constructor(\n public originalResponse: Response,\n public request: RequestInfo,\n ) {\n this.headers = originalResponse.headers;\n this.ok = originalResponse.ok ?? false;\n this.body = originalResponse.body ?? null;\n this.redirected = originalResponse.redirected ?? false;\n this.status = originalResponse.status as TStatus;\n this.statusText = originalResponse.statusText;\n this.type = originalResponse.type;\n this.url = originalResponse.url;\n this.data = null as any;\n this.error = null as any;\n }\n\n clone(): HttpResponse<TData, TError, TStatus> {\n return new HttpResponse(this.originalResponse.clone(), this.request);\n }\n\n isEmpty() {\n if (emptyStatusCodesSet.has(this.status)) {\n return true;\n }\n\n const contentLength = this.headers?.get('content-length');\n\n if (contentLength !== null && contentLength === '0') {\n return true;\n }\n\n if (this.body === null) {\n return true;\n }\n\n return false;\n }\n\n async resolveBody(responseFormat: ResponseFormat) {\n try {\n const formatted = await this.originalResponse[responseFormat]();\n if (this.ok) {\n this.data = formatted;\n } else {\n this.error = formatted;\n }\n } catch (error) {\n this.error = error as TError;\n }\n }\n}\n\nexport const isHttpResponse = (\n response: unknown,\n status?: number,\n): response is AnyHttpResponse =>\n typeof response === 'object' &&\n response instanceof HttpResponse &&\n 'data' in response &&\n (!status || response.status === status);\n\nexport const isHttpBadResponse = (\n response: unknown,\n): response is HttpResponse<null, any> => {\n return isHttpResponse(response) && (!response.ok || !!response.error);\n};\n","/** biome-ignore-all lint/style/useShorthandFunctionType: this is special trick to add typings for callable class instance */\nimport type {\n DefaultError,\n InvalidateOptions,\n InvalidateQueryFilters,\n QueryFunctionContext,\n QueryKey,\n} from '@tanstack/query-core';\nimport type { HttpStatusCode } from 'http-status-code-types';\nimport type { IQueryClientCore } from 'mobx-tanstack-query';\nimport { callFunction } from 'yummies/common';\nimport type { AnyObject, Defined, IsPartial, Maybe } from 'yummies/types';\nimport type {\n EndpointConfiguration,\n EndpointMutationPresets,\n} from './endpoint.types.js';\nimport { EndpointInfiniteQuery } from './endpoint-infinite-query.js';\nimport type {\n EndpointInfiniteQueryFlattenOptions,\n EndpointInfiniteQueryOptions,\n} from './endpoint-infinite-query.types.js';\nimport { EndpointMutation } from './endpoint-mutation.js';\nimport type { EndpointMutationOptions } from './endpoint-mutation.types.js';\nimport { EndpointQuery } from './endpoint-query.js';\nimport type {\n EndpointQueryFlattenOptions,\n EndpointQueryMeta,\n EndpointQueryOptions,\n EndpointQueryUniqKey,\n} from './endpoint-query.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { HttpClient } from './http-client.js';\nimport { type AnyResponse, isHttpResponse } from './http-response.js';\n\nfunction isContractOptionEnabled(\n option: boolean | { params?: boolean; data?: boolean } | undefined,\n key: 'params' | 'data',\n): boolean {\n return (\n option === true ||\n (typeof option === 'object' && option !== null && option[key] === true)\n );\n}\n\nexport interface Endpoint<\n TResponse extends AnyResponse,\n TParams extends AnyObject,\n TMetaData extends AnyObject = AnyObject,\n> {\n (\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ): ReturnType<Endpoint<TResponse, TParams, TMetaData>['request']>;\n}\n\n/**\n * This class is a wrapper for your http request.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/)\n */\nexport class Endpoint<\n TResponse extends AnyResponse,\n TParams extends AnyObject,\n TMetaData extends AnyObject = AnyObject,\n> {\n endpointId: string;\n\n presets: {\n mutations: EndpointMutationPresets;\n } = {\n mutations: {},\n };\n\n __params!: TParams;\n __response!: TResponse;\n\n meta!: TMetaData;\n\n protected validateParams: boolean = false;\n protected validateData: boolean = false;\n protected throwParams: boolean = false;\n protected throwData: boolean = false;\n\n constructor(\n public configuration: EndpointConfiguration<NoInfer<TParams>, TMetaData>,\n public queryClient: EndpointQueryClient,\n public httpClient: HttpClient,\n ) {\n this.endpointId = globalThis.crypto.randomUUID();\n this.meta = configuration.meta ?? ({} as TMetaData);\n const vc = configuration.validateContract;\n this.validateParams = isContractOptionEnabled(vc, 'params');\n this.validateData = isContractOptionEnabled(vc, 'data');\n const tc = configuration.throwContracts;\n this.throwParams = isContractOptionEnabled(tc, 'params');\n this.throwData = isContractOptionEnabled(tc, 'data');\n // Сохраняем оригинальный инстанс\n const instance = this;\n\n // Создаем функцию-обертку\n const callable = function (\n this: any,\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ) {\n return instance.request.apply(instance, args);\n } as unknown as Endpoint<TResponse, TParams, TMetaData>;\n\n // Копируем прототип\n Object.setPrototypeOf(callable, new.target.prototype);\n\n // Копируем методы из оригинального инстанса\n Object.getOwnPropertyNames(instance)\n .concat(Object.getOwnPropertyNames(new.target.prototype))\n .forEach((key) => {\n if (key === 'constructor') return;\n const desc =\n Object.getOwnPropertyDescriptor(instance, key) ||\n Object.getOwnPropertyDescriptor(new.target.prototype, key);\n if (desc) Object.defineProperty(callable, key, desc);\n });\n\n // biome-ignore lint/correctness/noConstructorReturn: this is special trick to add typings for callable class instance\n return callable;\n }\n\n getFullUrl(\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ): string {\n const params = this.configuration.params(args[0] ?? ({} as TParams));\n return this.httpClient.buildUrl(params);\n }\n\n getPath(\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ): string {\n const params = this.configuration.params(args[0] ?? ({} as TParams));\n return params.path;\n }\n\n getParamsFromContext<\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n ctx: Omit<QueryFunctionContext<TQueryKey, TPageParam>, 'client'> & {\n client: IQueryClientCore;\n },\n ): TParams {\n return (ctx.queryKey.at(-2) || {}) as TParams;\n }\n\n get tags() {\n return this.configuration.tags;\n }\n\n get path() {\n return this.configuration.path;\n }\n\n get pathDeclaration() {\n return this.path.join('/');\n }\n\n get operationId() {\n return this.configuration.operationId;\n }\n\n get group() {\n return this.configuration.group;\n }\n\n get namespace() {\n return this.configuration.namespace;\n }\n\n checkResponse<TStatus extends HttpStatusCode>(\n response: unknown,\n status: TStatus,\n ): response is Extract<TResponse, { status: TStatus }>;\n checkResponse(response: unknown): response is TResponse;\n checkResponse(response: unknown, status?: HttpStatusCode) {\n return isHttpResponse(response, status);\n }\n\n protected async validateContract(\n kind: 'params' | 'data',\n contract: { safeParseAsync: (input: unknown) => Promise<any> } | undefined,\n payload: unknown,\n options?: { throw?: boolean },\n ): Promise<unknown> {\n if (!contract?.safeParseAsync) return;\n\n const label = kind === 'params' ? 'Params' : 'Data';\n const shouldThrow = options?.throw === true;\n\n try {\n const result = await contract.safeParseAsync(payload);\n if (!result?.success) {\n if (shouldThrow) {\n throw result?.error;\n } else {\n console.warn(\n `[mobx-tanstack-query-api] ${label} contract validation failed for \"${this.operationId}\"`,\n result?.error,\n payload,\n );\n return;\n }\n }\n return result.data;\n } catch (error) {\n if (shouldThrow) {\n throw error;\n } else {\n console.warn(\n `[mobx-tanstack-query-api] ${label} contract validation threw for \"${this.operationId}\"`,\n error,\n payload,\n );\n return;\n }\n }\n }\n\n async request(\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ) {\n const rawParams = (args[0] ?? {}) as TParams;\n\n const contract = this.configuration.contract;\n\n const params =\n this.validateParams && contract?.params\n ? (((await this.validateContract(\n 'params',\n contract?.params as any,\n rawParams,\n { throw: this.throwParams },\n )) ?? rawParams) as TParams)\n : rawParams;\n\n const response = await this.httpClient.request<TResponse>(\n this.configuration.params(params),\n this,\n );\n\n if (\n this.validateData &&\n contract?.data?.safeParseAsync &&\n this.checkResponse(response) &&\n response.ok\n ) {\n const parsedData = await this.validateContract(\n 'data',\n contract?.data as any,\n response.data,\n { throw: this.throwData },\n );\n if (parsedData !== undefined) {\n response.data = parsedData as TResponse['data'];\n }\n }\n\n return response;\n }\n\n toQueryMeta = (meta?: AnyObject) =>\n ({\n ...meta,\n tags: this.tags,\n operationId: this.operationId,\n path: this.path,\n pathDeclaration: this.pathDeclaration,\n endpointId: this.endpointId,\n endpointQuery: true,\n }) satisfies EndpointQueryMeta;\n\n toQueryKey(params?: Maybe<TParams>, uniqKey?: EndpointQueryUniqKey): any {\n return [\n ...this.configuration.path,\n this.configuration.operationId,\n params ?? {},\n callFunction(uniqKey),\n ];\n }\n\n toInfiniteQueryKey(\n params?: Maybe<TParams>,\n uniqKey?: EndpointQueryUniqKey,\n ): any {\n return [\n { infiniteQuery: true },\n ...this.configuration.path,\n this.configuration.operationId,\n params ?? {},\n callFunction(uniqKey),\n ];\n }\n\n invalidateQuery(\n ...args: IsPartial<TParams> extends true\n ? [\n params?: Maybe<TParams>,\n filters?: InvalidateQueryFilters & { uniqKey?: EndpointQueryUniqKey },\n options?: InvalidateOptions,\n ]\n : [\n params: TParams,\n filters?: InvalidateQueryFilters & { uniqKey?: EndpointQueryUniqKey },\n options?: InvalidateOptions,\n ]\n ) {\n this.queryClient.invalidateQueries(\n {\n queryKey: this.toQueryKey(args[0], args[1]?.uniqKey),\n exact: true,\n ...(args[1] as any),\n },\n args[2],\n );\n }\n\n toMutation<\n TData = TResponse['data'],\n TMutationMeta extends AnyObject | void = void,\n TContext = unknown,\n >(\n options: EndpointMutationOptions<\n this,\n TData,\n TParams,\n TMutationMeta,\n TContext\n >,\n ) {\n return new EndpointMutation<this, TData, TParams, TMutationMeta, TContext>(\n this,\n this.queryClient,\n {\n ...options,\n invalidateEndpoints:\n options.invalidateEndpoints ??\n this.presets.mutations?.invalidateQueries,\n },\n );\n }\n\n toQuery<\n TQueryFnData = TResponse['data'],\n TError = DefaultError | Defined<TResponse['error']>,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n >(\n options:\n | EndpointQueryOptions<this, TQueryFnData, TError, TData, TQueryData>\n | (() => EndpointQueryFlattenOptions<\n this,\n TQueryFnData,\n TError,\n TData,\n TQueryData\n >),\n ) {\n return new EndpointQuery<this, TQueryFnData, TError, TData, TQueryData>(\n this,\n this.queryClient,\n options,\n );\n }\n\n toInfiniteQuery<\n TData = TResponse['data'],\n TError = DefaultError,\n TPageParam = unknown,\n >(\n options:\n | EndpointInfiniteQueryOptions<this, TData, TError, TPageParam>\n | (() => EndpointInfiniteQueryFlattenOptions<\n this,\n TData,\n TError,\n TPageParam\n >),\n ) {\n return new EndpointInfiniteQuery<this, TData, TError, TPageParam>(\n this,\n this.queryClient,\n options,\n );\n }\n}\n","import { hashKey, type InvalidateOptions } from '@tanstack/query-core';\nimport { QueryClient, type QueryClientConfig } from 'mobx-tanstack-query';\nimport type { Maybe } from 'yummies/types';\nimport type { EndpointQueryMeta } from './endpoint-query.types.js';\nimport type {\n EndpointStringFilter,\n InvalidateEndpointsFilters,\n} from './endpoint-query-client.types.js';\n\n/**\n * Class that extends `QueryClient` and gives a bit more control over endpoint queries and mutations.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-query-client/)\n */\nexport class EndpointQueryClient extends QueryClient {\n /**\n * Creates `EndpointQueryClient` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-query-client/#constructor)\n */\n constructor(config?: QueryClientConfig) {\n super({\n ...config,\n defaultOptions: {\n ...config?.defaultOptions,\n queries: {\n ...config?.defaultOptions?.queries,\n queryKeyHashFn:\n config?.defaultOptions?.queries?.queryKeyHashFn ?? hashKey,\n },\n },\n });\n }\n\n /**\n * Invalidates endpoint queries by endpoint metadata filters.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-query-client/#invalidateendpoints)\n */\n invalidateEndpoints(\n {\n group,\n namespace,\n operationId,\n tag,\n predicate,\n endpoint,\n exclude,\n ...queryFilters\n }: InvalidateEndpointsFilters,\n options?: InvalidateOptions,\n ) {\n const endpointIdsToExclude = new Set<string>(\n exclude?.endpoints?.map((it) => it.endpointId),\n );\n const endpointTagsToExclude = new Set<string>(exclude?.tags ?? []);\n\n let endpointIdsToFilter: Maybe<Set<string>>;\n\n if (Array.isArray(endpoint)) {\n endpointIdsToFilter = new Set(endpoint.map((it) => it.endpointId));\n } else if (endpoint) {\n endpointIdsToFilter = new Set([endpoint.endpointId]);\n }\n\n return this.invalidateQueries(\n {\n ...queryFilters,\n predicate: (query) => {\n if (!query.meta?.endpointQuery) {\n return false;\n }\n\n const meta = query.meta as unknown as EndpointQueryMeta;\n\n if (\n endpointIdsToExclude.has(meta.endpointId) ||\n (endpointTagsToExclude.size &&\n meta.tags.some((tag) => endpointTagsToExclude.has(tag)))\n ) {\n return false;\n }\n\n if (\n endpointIdsToFilter &&\n !endpointIdsToFilter.has(meta.endpointId)\n ) {\n return false;\n }\n\n if (\n namespace &&\n meta.namespace &&\n !applyStringFilter(namespace, meta.namespace)\n ) {\n return false;\n }\n\n if (group && meta.group && !applyStringFilter(group, meta.group)) {\n return false;\n }\n\n if (tag && meta.tags && !applyStringFilter(tag, meta.tags)) {\n return false;\n }\n\n if (tag && meta.tags && !applyStringFilter(tag, meta.tags)) {\n return false;\n }\n\n if (\n operationId &&\n !applyStringFilter(operationId, meta.operationId)\n ) {\n return false;\n }\n\n if (predicate && !predicate(meta, query as any)) {\n return false;\n }\n\n return true;\n },\n },\n options,\n );\n }\n}\n\nconst applyStringFilter = (\n filter: EndpointStringFilter,\n value: string | string[],\n): boolean => {\n const values = Array.isArray(value) ? value : [value];\n\n if (filter instanceof RegExp) {\n return values.some((value) => filter.test(value));\n }\n\n if (Array.isArray(filter)) {\n return filter.some((filter) => values.includes(filter));\n }\n\n return values.includes(filter);\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport { type BooleanOptional, type IStringifyOptions, stringify } from 'qs';\nimport type { AnyObject, Defined, Maybe } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport {\n type AnyHttpResponse,\n type AnyResponse,\n HttpResponse,\n type ResponseFormat,\n} from './http-response.js';\n\nexport type QueryParamsType = Record<string | number, any>;\n\nexport interface FullRequestParams extends Omit<RequestInit, 'body'> {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n contentType?: string;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseFormat;\n /** request body */\n body?: unknown;\n /** base url */\n baseUrl?: string;\n /** meta data */\n meta?: Record<string, any>;\n}\n\nexport const ContentType = {\n Json: 'application/json',\n FormData: 'multipart/form-data',\n UrlEncoded: 'application/x-www-form-urlencoded',\n Text: 'text/plain',\n Binary: 'application/octet-stream',\n} as const;\n\nexport type RequestParams = Omit<\n FullRequestParams,\n 'body' | 'method' | 'query' | 'path' | 'serviceName'\n>;\n\nexport interface HttpClientConfig<TMeta = unknown> {\n baseUrl?: string;\n meta?: TMeta;\n fetch?: typeof globalThis.fetch;\n baseApiParams?: Omit<RequestParams, 'baseUrl' | 'cancelToken' | 'signal'>;\n contentFormatters?: Record<string, (input: any) => any>;\n queryStringifyOptions?: IStringifyOptions<BooleanOptional>;\n toQueryString?: (query?: AnyObject) => string;\n buildUrl?: (\n fullParams: FullRequestParams,\n formattedParts: { baseUrl: string; path: string; query: string },\n metadata: TMeta | null,\n ) => string;\n interceptor?: (\n requestParams: RequestParams,\n metadata: TMeta | null,\n endpoint?: Maybe<AnyEndpoint>,\n ) => Promise<RequestParams | void> | RequestParams | void;\n}\n\nexport class HttpClient<TMeta = unknown> {\n private config: HttpClientConfig<TMeta>;\n private fetch: Required<HttpClientConfig<TMeta>>['fetch'];\n\n public meta: TMeta | null;\n public baseApiParams: RequestParams;\n\n badResponse: unknown;\n\n protected toQueryString: Defined<HttpClientConfig<TMeta>['toQueryString']>;\n\n constructor(config?: HttpClientConfig<TMeta>) {\n this.config = config ?? {};\n this.badResponse = null;\n this.meta = config?.meta ?? null;\n this.fetch =\n config?.fetch ??\n ((...fetchParams: Parameters<typeof globalThis.fetch>) =>\n globalThis.fetch(...fetchParams));\n this.toQueryString =\n config?.toQueryString ??\n ((query) => stringify(query, config?.queryStringifyOptions));\n\n this.baseApiParams = {\n credentials: 'same-origin',\n headers: {},\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n };\n\n this.updateConfig(this.config);\n\n observable.ref(this, 'badResponse');\n observable.ref(this, 'meta');\n\n action(this, 'setMeta');\n action(this, 'setBadResponse');\n\n makeObservable(this);\n }\n\n get baseUrl() {\n return this.config.baseUrl ?? '';\n }\n\n public updateConfig(update: Partial<HttpClientConfig<TMeta>>) {\n Object.assign(this.config, update);\n\n if (update.baseApiParams) {\n Object.assign(this.baseApiParams, update.baseApiParams);\n }\n\n if (update.contentFormatters) {\n Object.assign(this.contentFormatters, update.contentFormatters);\n }\n\n if (update.fetch) {\n this.fetch = update.fetch;\n }\n }\n\n public setMeta = (data: TMeta | null) => {\n this.meta = data;\n };\n\n public setBadResponse = (response: unknown) => {\n this.badResponse = response;\n };\n\n private contentFormatters: Record<string, (input: any) => any> = {\n 'application/json': (input: any) =>\n input !== null && (typeof input === 'object' || typeof input === 'string')\n ? JSON.stringify(input)\n : input,\n 'text/plain': (input: any) =>\n input !== null && typeof input !== 'string'\n ? JSON.stringify(input)\n : input,\n 'multipart/form-data': (input: any) =>\n Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n\n if (property instanceof Blob) {\n formData.append(key, property);\n } else if (typeof property === 'object' && property !== null) {\n formData.append(key, JSON.stringify(property));\n } else {\n formData.append(key, `${property}`);\n }\n\n return formData;\n }, new FormData()),\n 'application/x-www-form-urlencoded': (input: any) =>\n this.toQueryString(input),\n 'application/octet-stream': (input: any) => input,\n };\n\n protected mergeRequestParams(\n params1: RequestParams,\n params2?: RequestParams,\n ): RequestParams {\n return {\n ...this.baseApiParams,\n ...params1,\n ...params2,\n headers: {\n ...this.baseApiParams.headers,\n ...params1.headers,\n ...params2?.headers,\n },\n };\n }\n\n protected async createResponse(\n responseFormat: FullRequestParams['format'] = 'json',\n raw: Response,\n url: string,\n params: RequestInit,\n ): Promise<AnyHttpResponse> {\n const response = new HttpResponse<any, any>(raw, { url, params });\n\n if (response.isEmpty()) {\n return response;\n }\n\n await response.resolveBody(responseFormat);\n\n if (!response.ok || response.error) {\n this.setBadResponse(response);\n }\n\n return response;\n }\n\n public buildUrl = (params: FullRequestParams) => {\n const baseUrl = params.baseUrl ?? this.baseUrl ?? '';\n\n const path = params.path;\n\n const queryString = params.query && this.toQueryString(params.query);\n\n const query = queryString ? `?${queryString}` : '';\n\n if (this.config.buildUrl) {\n return this.config.buildUrl(params, { baseUrl, path, query }, this.meta);\n }\n\n const url = baseUrl + path + query;\n\n return url;\n };\n\n public request<T, E>(\n fullParams: FullRequestParams,\n endpoint?: Maybe<AnyEndpoint>,\n ): Promise<HttpResponse<T, E>>;\n public request<THttpResponse extends AnyResponse>(\n fullParams: FullRequestParams,\n endpoint?: Maybe<AnyEndpoint>,\n ): Promise<THttpResponse>;\n\n public async request(\n fullParams: FullRequestParams,\n endpoint?: Maybe<AnyEndpoint>,\n ): Promise<any> {\n this.setBadResponse(null);\n\n const { body, contentType, format, ...params } = fullParams;\n\n let requestParams = this.mergeRequestParams(params);\n\n if (this.config.interceptor) {\n requestParams =\n (await this.config.interceptor(requestParams, this.meta, endpoint)) ??\n requestParams;\n }\n\n const responseFormat = format || requestParams.format;\n\n const url = this.buildUrl(fullParams);\n\n let headers: Headers;\n\n if (requestParams.headers instanceof Headers) {\n headers = requestParams.headers;\n } else if (Array.isArray(requestParams.headers)) {\n headers = new Headers(requestParams.headers);\n } else {\n headers = new Headers(requestParams.headers);\n }\n\n let bodyToSend: Maybe<BodyInit>;\n\n if (contentType) {\n if (\n contentType !== ContentType.FormData &&\n !headers.has('Content-Type')\n ) {\n headers.set('Content-Type', contentType);\n }\n\n const payloadFormatter = this.contentFormatters[contentType];\n\n if (body == null) {\n bodyToSend = null;\n } else if (payloadFormatter) {\n bodyToSend = payloadFormatter(body);\n } else {\n bodyToSend = body as any;\n }\n }\n\n const fetchUrl: string = url;\n const fetchParams: RequestInit = {\n ...requestParams,\n headers,\n body: bodyToSend,\n };\n\n let response: Response;\n\n try {\n response = await this.fetch(fetchUrl, fetchParams);\n } catch (error) {\n if (error instanceof Response) {\n response = error;\n } else {\n throw error;\n }\n }\n\n const httpResponse = await this.createResponse(\n responseFormat,\n response,\n fetchUrl,\n fetchParams,\n );\n\n if (!httpResponse.ok || httpResponse.error) {\n throw httpResponse;\n }\n\n return httpResponse;\n }\n}\n"],"names":["params","uniqKey","onDone","tag","value","filter"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/runtime/endpoint-infinite-query.ts","../src/runtime/endpoint-mutation.ts","../src/runtime/endpoint-query.ts","../src/runtime/http-response.ts","../src/runtime/endpoint.ts","../src/runtime/endpoint-query-client.ts","../src/runtime/http-client.ts"],"sourcesContent":["/** biome-ignore-all lint/correctness/noUnusedVariables: generic type imports are intentional */\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverResult,\n} from '@tanstack/query-core';\nimport {\n comparer,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport {\n InfiniteQuery,\n type InfiniteQueryUpdateOptionsAllVariants,\n} from 'mobx-tanstack-query';\nimport { callFunction } from 'yummies/common';\nimport { getMobxAdministration, lazyObserve } from 'yummies/mobx';\nimport type { AnyObject, Maybe, MaybeFalsy, MaybeFn } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport type {\n EndpointInfiniteQueryFlattenOptions,\n EndpointInfiniteQueryMergePageParam,\n EndpointInfiniteQueryOptions,\n} from './endpoint-infinite-query.types.js';\nimport type { EndpointQueryUniqKey } from './endpoint-query.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { RequestParams } from './http-client.js';\n\ninterface InternalObservableData<\n TEndpoint extends AnyEndpoint,\n TQueryFnData,\n TPageParam,\n> {\n params: MaybeFalsy<TEndpoint['__params']>;\n uniqKey?: EndpointQueryUniqKey;\n initialized?: boolean;\n dynamicOptions?: any;\n response: TEndpoint['__response'] | null;\n transform?: (\n response: TEndpoint['__response'],\n ) => TQueryFnData | Promise<TQueryFnData>;\n mergePageParam?: EndpointInfiniteQueryMergePageParam<TEndpoint, TPageParam>;\n}\n\n/**\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/)\n */\nexport class EndpointInfiniteQuery<\n TEndpoint extends AnyEndpoint,\n TQueryFnData = TEndpoint['__response']['data'],\n TError = DefaultError,\n TPageParam = unknown,\n TData = InfiniteData<TQueryFnData, TPageParam>,\n> extends InfiniteQuery<TQueryFnData, TError, TPageParam, TData, any[]> {\n private _observableData: InternalObservableData<\n TEndpoint,\n TQueryFnData,\n TPageParam\n >;\n\n /**\n * Creates `EndpointInfiniteQuery` instance.\n */\n constructor(\n private endpoint: AnyEndpoint,\n inputQueryClient: EndpointQueryClient,\n queryOptionsInput:\n | EndpointInfiniteQueryOptions<\n TEndpoint,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >\n | (() => EndpointInfiniteQueryFlattenOptions<\n TEndpoint,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >),\n ) {\n const isQueryOptionsInputFn = typeof queryOptionsInput === 'function';\n const unpackedQueryOptionsInput = isQueryOptionsInputFn\n ? queryOptionsInput()\n : queryOptionsInput;\n\n const {\n uniqKey,\n transform: transformResponse,\n params,\n onDone: onDoneInput,\n queryClient: overridedQueryClient,\n mergePageParam,\n ...queryOptions\n } = unpackedQueryOptionsInput;\n\n const queryClient = overridedQueryClient ?? inputQueryClient;\n\n const _observableData: InternalObservableData<\n TEndpoint,\n TQueryFnData,\n TPageParam\n > = {\n params: null,\n dynamicOptions: undefined,\n response: null,\n uniqKey: unpackedQueryOptionsInput.uniqKey,\n transform: transformResponse,\n mergePageParam,\n };\n\n if (!isQueryOptionsInputFn && typeof params !== 'function') {\n if ('params' in unpackedQueryOptionsInput) {\n _observableData.params = params;\n } else {\n _observableData.params = {};\n }\n _observableData.initialized = true;\n }\n\n makeObservable(_observableData, {\n params: observable.ref,\n response: observable.ref,\n dynamicOptions: observable,\n transform: observable.ref,\n mergePageParam: observable.ref,\n });\n\n const onDone =\n onDoneInput &&\n ((...args: Parameters<NonNullable<typeof onDoneInput>>) => {\n onDoneInput(...args);\n });\n\n super({\n ...queryOptions,\n onDone,\n queryClient,\n meta: endpoint.toQueryMeta(queryOptions.meta),\n options: (): any => {\n const builtOptions = buildInfiniteOptionsFromParams(\n endpoint,\n _observableData.params,\n _observableData.uniqKey,\n );\n\n let isEnabled = !!_observableData.initialized && builtOptions.enabled;\n\n if (\n typeof queryOptionsInput !== 'function' &&\n queryOptionsInput.enabled === false\n ) {\n isEnabled = false;\n }\n\n return {\n ...builtOptions,\n enabled: isEnabled,\n ..._observableData.dynamicOptions,\n };\n },\n queryFn: async (ctx): Promise<any> => {\n const params = endpoint.getParamsFromContext(ctx);\n\n runInAction(() => {\n _observableData.response = null;\n if (!comparer.structural(params, _observableData.params)) {\n _observableData.params = params;\n }\n });\n\n const mergedParams = mergeInfiniteQueryPageParam(\n params,\n (ctx.pageParam as TPageParam) ?? queryOptions.initialPageParam,\n ctx,\n _observableData.mergePageParam,\n );\n\n let requestParams = mergedParams.requestParams as Maybe<RequestParams>;\n\n if (requestParams) {\n if (!requestParams.signal) {\n requestParams.signal = ctx.signal;\n }\n } else {\n requestParams = { signal: ctx.signal };\n }\n\n const fixedInput = {\n ...mergedParams,\n requestParams,\n };\n\n const response = await endpoint.request(fixedInput);\n\n runInAction(() => {\n _observableData.response = response as TEndpoint['__response'];\n });\n\n return (await _observableData.transform?.(response)) ?? response.data;\n },\n });\n\n const parentAtom = getMobxAdministration(this);\n\n computed.struct(this, 'params');\n computed.struct(this, 'response');\n makeObservable(this);\n\n if (isQueryOptionsInputFn || typeof params === 'function') {\n const createParamsReaction = () =>\n reaction(\n (): Partial<\n InternalObservableData<TEndpoint, TQueryFnData, TPageParam>\n > => {\n let outDynamicOptions: InternalObservableData<\n TEndpoint,\n TQueryFnData,\n TPageParam\n >['dynamicOptions'];\n let outParams: MaybeFn<MaybeFalsy<TEndpoint['__params']>>;\n let outTransform: InternalObservableData<\n TEndpoint,\n TQueryFnData,\n TPageParam\n >['transform'];\n let outMergePageParam: InternalObservableData<\n TEndpoint,\n TQueryFnData,\n TPageParam\n >['mergePageParam'];\n let uniqKey: Maybe<EndpointQueryUniqKey>;\n\n if (isQueryOptionsInputFn) {\n const result = queryOptionsInput();\n const {\n params,\n abortSignal,\n select,\n onDone,\n onError,\n onInit,\n enableOnDemand,\n uniqKey: _uniqKey,\n transform,\n mergePageParam,\n queryClient,\n ...dynamicOptions\n } = result;\n\n uniqKey = _uniqKey;\n outTransform = transform;\n outMergePageParam = mergePageParam;\n\n if ('params' in result) {\n outParams = result.params;\n } else {\n outParams = {};\n }\n\n outDynamicOptions =\n Object.keys(dynamicOptions).length > 0\n ? dynamicOptions\n : undefined;\n } else if ('params' in unpackedQueryOptionsInput) {\n outParams = unpackedQueryOptionsInput.params;\n uniqKey = unpackedQueryOptionsInput.uniqKey;\n outTransform = unpackedQueryOptionsInput.transform;\n outMergePageParam = unpackedQueryOptionsInput.mergePageParam;\n } else {\n outParams = {};\n uniqKey = unpackedQueryOptionsInput.uniqKey;\n outTransform = unpackedQueryOptionsInput.transform;\n outMergePageParam = unpackedQueryOptionsInput.mergePageParam;\n }\n\n return {\n params: callFunction(outParams),\n dynamicOptions: outDynamicOptions,\n uniqKey,\n transform: outTransform,\n mergePageParam: outMergePageParam,\n };\n },\n ({ params, dynamicOptions, uniqKey, transform, mergePageParam }) => {\n runInAction(() => {\n _observableData.initialized = true;\n _observableData.params = params;\n _observableData.dynamicOptions = dynamicOptions;\n _observableData.uniqKey = uniqKey;\n _observableData.transform = transform;\n _observableData.mergePageParam = mergePageParam;\n });\n },\n {\n fireImmediately: true,\n },\n );\n\n if (this.features.lazy) {\n lazyObserve({\n property: parentAtom.values_.get('_result'),\n onStart: createParamsReaction,\n onEnd: (disposeFn) => disposeFn(),\n });\n } else {\n this.abortController.signal.addEventListener(\n 'abort',\n createParamsReaction(),\n );\n }\n }\n\n this._observableData = _observableData;\n }\n\n /**\n * Current base endpoint params used for `queryKey`.\n */\n get params() {\n return this._observableData.params;\n }\n\n /**\n * Last raw HTTP response returned by endpoint.\n */\n get response() {\n return this._observableData.response;\n }\n\n /**\n * Updates query options and optionally base params.\n */\n update(\n updateParams: Omit<\n InfiniteQueryUpdateOptionsAllVariants<\n TQueryFnData,\n TError,\n TPageParam,\n TData,\n any[]\n >,\n 'queryKey'\n > & {\n params?: MaybeFalsy<TEndpoint['__params']>;\n },\n ) {\n if ('params' in updateParams) {\n const { params, ...options } = updateParams;\n if (this._observableData) {\n runInAction(() => {\n this._observableData.params = params;\n });\n return super.update({\n ...buildInfiniteOptionsFromParams(\n this.endpoint,\n params,\n this._observableData.uniqKey,\n ),\n ...options,\n } as any);\n }\n\n return super.update(options as any);\n }\n\n if (this._observableData) {\n return super.update({\n ...buildInfiniteOptionsFromParams(\n this.endpoint,\n this._observableData.params,\n this._observableData.uniqKey,\n ),\n ...updateParams,\n } as any);\n }\n\n return super.update(updateParams as any);\n }\n\n /**\n * Sets base params and starts the infinite query execution.\n */\n async start(\n params: MaybeFalsy<TEndpoint['__params']>,\n ): Promise<InfiniteQueryObserverResult<TData, TError>> {\n runInAction(() => {\n this._observableData.params = params;\n });\n return await super.start(\n buildInfiniteOptionsFromParams(\n this.endpoint,\n params,\n this._observableData.uniqKey,\n ),\n );\n }\n\n protected handleDestroy(): void {\n super.handleDestroy();\n runInAction(() => {\n this._observableData.params = undefined;\n this._observableData.dynamicOptions = undefined;\n this._observableData.transform = undefined;\n this._observableData.mergePageParam = undefined;\n });\n }\n}\n\nfunction ensureObjectPageParam(\n pageParam: unknown,\n mergePageParam: 'params' | 'body' | 'query' | 'headers',\n): AnyObject {\n if (\n typeof pageParam === 'object' &&\n pageParam !== null &&\n !Array.isArray(pageParam)\n ) {\n return pageParam as AnyObject;\n }\n\n throw new Error(\n `[mobx-tanstack-query-api] \"${mergePageParam}\" mergePageParam expects an object pageParam. Use a custom mergePageParam function for primitive page params.`,\n );\n}\n\nexport function mergeInfiniteQueryPageParam<\n TEndpoint extends AnyEndpoint,\n TPageParam,\n>(\n params: TEndpoint['__params'] & AnyObject,\n pageParam: TPageParam | undefined,\n ctx: any,\n mergePageParam?: EndpointInfiniteQueryMergePageParam<TEndpoint, TPageParam>,\n): AnyObject {\n if (pageParam == null || !mergePageParam) {\n return params;\n }\n\n if (typeof mergePageParam === 'function') {\n return mergePageParam(params, pageParam, ctx) || {};\n }\n\n const objectPageParam = ensureObjectPageParam(pageParam, mergePageParam);\n\n switch (mergePageParam) {\n case 'params':\n return {\n ...params,\n ...objectPageParam,\n };\n case 'body':\n return {\n ...params,\n body: {\n ...(params.body as AnyObject),\n ...objectPageParam,\n },\n };\n case 'query':\n return {\n ...params,\n query: {\n ...(params.query as AnyObject),\n ...objectPageParam,\n },\n };\n case 'headers':\n return {\n ...params,\n headers: {\n ...(params.headers as AnyObject),\n ...objectPageParam,\n },\n };\n }\n}\n\nexport const buildInfiniteOptionsFromParams = (\n endpoint: AnyEndpoint,\n params: MaybeFalsy<AnyObject>,\n uniqKey: Maybe<EndpointQueryUniqKey>,\n): { enabled: boolean; queryKey: any[] } => {\n const { requiredParams } = endpoint.configuration;\n let hasRequiredParams = false;\n\n if (requiredParams.length > 0) {\n hasRequiredParams =\n !!params && requiredParams.every((param) => param in params);\n } else {\n hasRequiredParams = !!params;\n }\n\n return {\n enabled: hasRequiredParams,\n queryKey: endpoint.toInfiniteQueryKey(params || {}, uniqKey),\n };\n};\n","import { Mutation } from 'mobx-tanstack-query';\nimport type { AnyObject, Maybe } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport type {\n EndpointMutationOptions,\n EndpointMutationParams,\n} from './endpoint-mutation.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { InvalidateEndpointsFilters } from './endpoint-query-client.types.js';\nimport type { RequestParams } from './http-client.js';\n\n/**\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-mutations/)\n */\nexport class EndpointMutation<\n TEndpoint extends AnyEndpoint,\n TData = unknown,\n TParams extends AnyObject = AnyObject,\n TMutationMeta extends AnyObject | void = void,\n TOnMutateResult = unknown,\n> extends Mutation<\n TData,\n EndpointMutationParams<TParams, TMutationMeta>,\n TEndpoint['__response']['error'],\n TOnMutateResult\n> {\n /**\n * Creates `EndpointMutation` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-mutations/#constructor)\n */\n constructor(\n endpoint: AnyEndpoint,\n inputQueryClient: EndpointQueryClient,\n {\n transform: transformResponse,\n invalidateEndpoints,\n queryClient: overridedQueryClient,\n ...mutationOptions\n }: EndpointMutationOptions<\n TEndpoint,\n TData,\n TParams,\n TMutationMeta,\n TOnMutateResult\n >,\n ) {\n const queryClient = overridedQueryClient ?? inputQueryClient;\n super({\n ...mutationOptions,\n queryClient,\n onSuccess: (data, variables, onMutateResult, context) => {\n mutationOptions.onSuccess?.(data, variables, onMutateResult, context);\n if (invalidateEndpoints) {\n if (typeof invalidateEndpoints === 'object') {\n queryClient.invalidateEndpoints(invalidateEndpoints);\n } else {\n let filters: Maybe<InvalidateEndpointsFilters>;\n switch (`${invalidateEndpoints}`) {\n case 'true': {\n filters = endpoint.group\n ? {\n group: endpoint.group,\n }\n : {\n tag: endpoint.tags,\n };\n\n break;\n }\n case 'by-group': {\n filters = {\n group: endpoint.group,\n };\n\n break;\n }\n case 'by-tag': {\n filters = {\n tag: endpoint.tags,\n };\n\n break;\n }\n }\n\n if (filters) {\n queryClient.invalidateEndpoints(filters);\n }\n }\n }\n },\n mutationFn: async (input, context) => {\n let requestParams = input?.requestParams as Maybe<RequestParams>;\n\n if (requestParams) {\n if (!requestParams.signal) {\n requestParams.signal = context.signal;\n }\n } else {\n requestParams = { signal: context.signal };\n }\n\n const fixedInput = {\n ...input,\n requestParams,\n };\n\n const response = await endpoint.request(fixedInput);\n return (await transformResponse?.(response)) ?? response.data;\n },\n });\n }\n}\n","/** biome-ignore-all lint/correctness/noUnusedVariables: generic type imports are intentional */\nimport type {\n DefaultError,\n QueryFunctionContext,\n QueryObserverResult,\n RefetchOptions,\n} from '@tanstack/query-core';\nimport {\n comparer,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport { Query, type QueryUpdateOptionsAllVariants } from 'mobx-tanstack-query';\nimport { callFunction } from 'yummies/common';\nimport { getMobxAdministration, lazyObserve } from 'yummies/mobx';\nimport type { AnyObject, Maybe, MaybeFalsy, MaybeFn } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport type {\n EndpointQueryFlattenOptions,\n EndpointQueryOptions,\n EndpointQueryUniqKey,\n ExcludedQueryKeys,\n} from './endpoint-query.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { RequestParams } from './http-client.js';\n\ninterface InternalObservableData<TEndpoint extends AnyEndpoint> {\n params: MaybeFalsy<TEndpoint['__params']>;\n uniqKey?: EndpointQueryUniqKey;\n initialized?: boolean;\n dynamicOptions?: any;\n response: TEndpoint['__response'] | null;\n}\n\n/**\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/)\n */\nexport class EndpointQuery<\n TEndpoint extends AnyEndpoint,\n TQueryFnData = TEndpoint['__response']['data'],\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n> extends Query<TQueryFnData, TError, TData, TQueryData> {\n private _observableData: InternalObservableData<TEndpoint>;\n\n /**\n * Creates `EndpointQuery` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#constructor)\n */\n constructor(\n private endpoint: AnyEndpoint,\n inputQueryClient: EndpointQueryClient,\n queryOptionsInput:\n | EndpointQueryOptions<TEndpoint, TQueryFnData, TError, TData, TQueryData>\n | (() => EndpointQueryFlattenOptions<\n TEndpoint,\n TQueryFnData,\n TError,\n TData,\n TQueryData\n >),\n ) {\n const isQueryOptionsInputFn = typeof queryOptionsInput === 'function';\n const unpackedQueryOptionsInput = isQueryOptionsInputFn\n ? queryOptionsInput()\n : queryOptionsInput;\n\n const {\n uniqKey,\n transform: transformResponse,\n params,\n onDone: onDoneInput,\n queryClient: overridedQueryClient,\n ...queryOptions\n } = unpackedQueryOptionsInput;\n\n const queryClient = overridedQueryClient ?? inputQueryClient;\n\n const _observableData: InternalObservableData<TEndpoint> = {\n params: null,\n dynamicOptions: undefined,\n response: null,\n uniqKey: unpackedQueryOptionsInput.uniqKey,\n };\n\n if (!isQueryOptionsInputFn && typeof params !== 'function') {\n if ('params' in unpackedQueryOptionsInput) {\n _observableData.params = params;\n } else {\n _observableData.params = {};\n }\n _observableData.initialized = true;\n }\n\n makeObservable(_observableData, {\n params: observable.ref,\n response: observable.ref,\n dynamicOptions: observable,\n });\n\n const lastHandledDataUpdatedAt = -1;\n const onDone =\n onDoneInput &&\n ((...args: Parameters<NonNullable<typeof onDoneInput>>) => {\n // const currentDataUpdatedAt = this.dataUpdatedAt ?? 0;\n // if (currentDataUpdatedAt === lastHandledDataUpdatedAt) {\n // return;\n // }\n // lastHandledDataUpdatedAt = currentDataUpdatedAt;\n onDoneInput(...args);\n });\n\n super({\n ...queryOptions,\n onDone,\n queryClient,\n meta: endpoint.toQueryMeta(queryOptions.meta),\n options: (): any => {\n const builtOptions = buildOptionsFromParams(\n endpoint,\n _observableData.params,\n _observableData.uniqKey,\n );\n\n let isEnabled = !!_observableData.initialized && builtOptions.enabled;\n\n if (\n typeof queryOptionsInput !== 'function' &&\n queryOptionsInput.enabled === false\n ) {\n isEnabled = false;\n }\n\n return {\n ...builtOptions,\n enabled: isEnabled,\n ..._observableData.dynamicOptions,\n };\n },\n queryFn: async (ctx): Promise<any> => {\n const params = endpoint.getParamsFromContext(ctx);\n\n runInAction(() => {\n _observableData.response = null;\n if (!comparer.structural(params, _observableData.params)) {\n _observableData.params = params;\n }\n });\n\n let requestParams = params.requestParams as Maybe<RequestParams>;\n\n if (requestParams) {\n if (!requestParams.signal) {\n requestParams.signal = ctx.signal;\n }\n } else {\n requestParams = { signal: ctx.signal };\n }\n\n const fixedInput = {\n ...params,\n requestParams,\n };\n\n const response = await endpoint.request(fixedInput);\n\n runInAction(() => {\n _observableData.response = response as TEndpoint['__response'];\n });\n\n return (await transformResponse?.(response)) ?? response.data;\n },\n });\n\n const parentAtom = getMobxAdministration(this);\n\n computed.struct(this, 'params');\n computed.struct(this, 'response');\n makeObservable(this);\n\n if (isQueryOptionsInputFn || typeof params === 'function') {\n const createParamsReaction = () =>\n reaction(\n (): Partial<InternalObservableData<TEndpoint>> => {\n let outDynamicOptions: InternalObservableData<TEndpoint>['dynamicOptions'];\n let outParams: MaybeFn<MaybeFalsy<TEndpoint['__params']>>;\n let uniqKey: Maybe<EndpointQueryUniqKey>;\n\n if (isQueryOptionsInputFn) {\n const result = queryOptionsInput();\n const {\n params,\n abortSignal,\n select,\n onDone,\n onError,\n onInit,\n enableOnDemand,\n uniqKey: _uniqKey,\n ...dynamicOptions\n } = result;\n\n uniqKey = _uniqKey;\n\n if ('params' in result) {\n outParams = result.params;\n } else {\n outParams = {};\n }\n\n outDynamicOptions =\n Object.keys(dynamicOptions).length > 0\n ? dynamicOptions\n : undefined;\n } else if ('params' in unpackedQueryOptionsInput) {\n outParams = unpackedQueryOptionsInput.params;\n uniqKey = unpackedQueryOptionsInput.uniqKey;\n } else {\n outParams = {};\n uniqKey = unpackedQueryOptionsInput.uniqKey;\n }\n\n return {\n params: callFunction(outParams),\n dynamicOptions: outDynamicOptions,\n uniqKey,\n };\n },\n ({ params, dynamicOptions, uniqKey }) => {\n runInAction(() => {\n _observableData.initialized = true;\n _observableData.params = params;\n _observableData.dynamicOptions = dynamicOptions;\n _observableData.uniqKey = uniqKey;\n });\n },\n {\n fireImmediately: true,\n },\n );\n\n if (this.features.lazy) {\n lazyObserve({\n property: parentAtom.values_.get('_result'),\n onStart: createParamsReaction,\n onEnd: (disposeFn) => disposeFn(),\n });\n } else {\n this.abortController.signal.addEventListener(\n 'abort',\n createParamsReaction(),\n );\n }\n }\n\n this._observableData = _observableData;\n }\n\n /**\n * Current endpoint params used by this query.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#params)\n */\n get params() {\n return this._observableData.params;\n }\n\n /**\n * Last raw HTTP response returned by endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#response)\n */\n get response() {\n return this._observableData.response;\n }\n\n /**\n * Updates query options and optionally params.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#update)\n */\n update(\n updateParams: Omit<\n QueryUpdateOptionsAllVariants<TQueryFnData, TError, TData, TQueryData>,\n ExcludedQueryKeys\n > & {\n params?: MaybeFalsy<TEndpoint['__params']>;\n },\n ) {\n if ('params' in updateParams) {\n const { params, ...options } = updateParams;\n runInAction(() => {\n this._observableData.params = params;\n });\n return super.update({\n ...buildOptionsFromParams(\n this.endpoint,\n params,\n this._observableData.uniqKey,\n ),\n ...options,\n });\n } else if (this._observableData) {\n return super.update({\n ...buildOptionsFromParams(\n this.endpoint,\n this._observableData.params,\n this._observableData.uniqKey,\n ),\n ...updateParams,\n });\n } else {\n return super.update(updateParams);\n }\n }\n\n /**\n * Refetches query when params are initialized.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#refetch)\n */\n refetch(\n options?: RefetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n if (this.params) {\n return super.refetch(options);\n }\n return Promise.resolve(this.queryObserver.getCurrentResult());\n }\n\n /**\n * Sets params and starts query execution.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-queries/#start)\n */\n async start(\n params: MaybeFalsy<TEndpoint['__params']>,\n ): Promise<QueryObserverResult<TData, TError>> {\n runInAction(() => {\n this._observableData.params = params;\n });\n return await super.start(\n buildOptionsFromParams(\n this.endpoint,\n params,\n this._observableData.uniqKey,\n ),\n );\n }\n\n protected handleDestroy(): void {\n super.handleDestroy();\n runInAction(() => {\n this._observableData.params = undefined;\n this._observableData.dynamicOptions = undefined;\n });\n }\n}\n\nexport const getParamsFromContext = (ctx: QueryFunctionContext<any, any>) => {\n return (ctx.queryKey.at(-2) || {}) as AnyEndpoint['__params'];\n};\n\nexport const buildOptionsFromParams = (\n endpoint: AnyEndpoint,\n params: MaybeFalsy<AnyObject>,\n uniqKey: Maybe<EndpointQueryUniqKey>,\n): { enabled: boolean; queryKey: any[] } => {\n const { requiredParams } = endpoint.configuration;\n let hasRequiredParams = false;\n\n if (requiredParams.length > 0) {\n hasRequiredParams =\n !!params && requiredParams.every((param) => param in params);\n } else {\n hasRequiredParams = !!params;\n }\n\n return {\n enabled: hasRequiredParams,\n queryKey: endpoint.toQueryKey(params || {}, uniqKey),\n };\n};\n","import type {\n HttpStatusCode,\n HttpSuccessStatusCode,\n} from 'http-status-code-types';\nimport type { ValueOf } from 'yummies/types';\n\nexport const emptyStatusCodesSet = new Set([204, 205, 304]);\n\nexport interface RequestInfo {\n url: string;\n params: globalThis.RequestInit;\n}\n\ntype ResponsesByStatusMap = {\n [K in HttpStatusCode]?: any;\n};\n\nexport type HttpMultistatusResponse<\n TResponsesByStatusMap extends ResponsesByStatusMap,\n TDefaultOkResponse,\n TDefaultBadResponse = unknown,\n> =\n | ValueOf<{\n [K in keyof TResponsesByStatusMap]-?: HttpResponse<\n K extends HttpSuccessStatusCode\n ? TResponsesByStatusMap[K]\n : TDefaultOkResponse,\n K extends HttpSuccessStatusCode\n ? TDefaultBadResponse\n : TResponsesByStatusMap[K],\n number & K\n >;\n }>\n | HttpResponse<\n TDefaultOkResponse,\n TDefaultBadResponse,\n Exclude<HttpStatusCode, keyof TResponsesByStatusMap>\n >;\n\nexport type GetHttpResponse<T> = T extends (...args: any[]) => infer R\n ? R extends Promise<HttpResponse<any, any>>\n ? Awaited<R>\n : R extends Promise<HttpMultistatusResponse<any, any, any>>\n ? Awaited<R>\n : HttpResponse<any, any>\n : HttpResponse<any, any>;\n\nexport type HttpBadResponse<T = any> = HttpResponse<null, T>;\n\nexport type AnyHttpResponse = HttpResponse<any, any>;\n\nexport type AnyHttpMultistatusResponse = HttpMultistatusResponse<\n ResponsesByStatusMap,\n any,\n any\n>;\n\nexport type AnyResponse = AnyHttpResponse | AnyHttpMultistatusResponse;\n\nexport type ResponseFormat = ValueOf<{\n [K in keyof Body]: Body[K] extends Function ? K : never;\n}>;\n\nexport class HttpResponse<\n TData,\n TError = null,\n TStatus extends number = number,\n> {\n headers;\n ok;\n redirected;\n statusText;\n type;\n url;\n body;\n\n data: TData;\n error: TError;\n status: TStatus;\n\n constructor(\n public originalResponse: Response,\n public request: RequestInfo,\n ) {\n this.headers = originalResponse.headers;\n this.ok = originalResponse.ok ?? false;\n this.body = originalResponse.body ?? null;\n this.redirected = originalResponse.redirected ?? false;\n this.status = originalResponse.status as TStatus;\n this.statusText = originalResponse.statusText;\n this.type = originalResponse.type;\n this.url = originalResponse.url;\n this.data = null as any;\n this.error = null as any;\n }\n\n clone(): HttpResponse<TData, TError, TStatus> {\n return new HttpResponse(this.originalResponse.clone(), this.request);\n }\n\n isEmpty() {\n if (emptyStatusCodesSet.has(this.status)) {\n return true;\n }\n\n const contentLength = this.headers?.get('content-length');\n\n if (contentLength !== null && contentLength === '0') {\n return true;\n }\n\n if (this.body === null) {\n return true;\n }\n\n return false;\n }\n\n async resolveBody(responseFormat: ResponseFormat) {\n try {\n const formatted = await this.originalResponse[responseFormat]();\n if (this.ok) {\n this.data = formatted;\n } else {\n this.error = formatted;\n }\n } catch (error) {\n this.error = error as TError;\n }\n }\n}\n\nexport const isHttpResponse = (\n response: unknown,\n status?: number,\n): response is AnyHttpResponse =>\n typeof response === 'object' &&\n response instanceof HttpResponse &&\n 'data' in response &&\n (!status || response.status === status);\n\nexport const isHttpBadResponse = (\n response: unknown,\n): response is HttpResponse<null, any> => {\n return isHttpResponse(response) && (!response.ok || !!response.error);\n};\n","/** biome-ignore-all lint/style/useShorthandFunctionType: this is special trick to add typings for callable class instance */\nimport type {\n DefaultError,\n InvalidateOptions,\n InvalidateQueryFilters,\n QueryFunctionContext,\n QueryKey,\n} from '@tanstack/query-core';\nimport type { HttpStatusCode } from 'http-status-code-types';\nimport type { IQueryClientCore } from 'mobx-tanstack-query';\nimport { callFunction } from 'yummies/common';\nimport type { AnyObject, Defined, IsPartial, Maybe } from 'yummies/types';\nimport type {\n EndpointConfiguration,\n EndpointMutationPresets,\n} from './endpoint.types.js';\nimport { EndpointInfiniteQuery } from './endpoint-infinite-query.js';\nimport type {\n EndpointInfiniteQueryFlattenOptions,\n EndpointInfiniteQueryOptions,\n} from './endpoint-infinite-query.types.js';\nimport { EndpointMutation } from './endpoint-mutation.js';\nimport type { EndpointMutationOptions } from './endpoint-mutation.types.js';\nimport { EndpointQuery } from './endpoint-query.js';\nimport type {\n EndpointQueryFlattenOptions,\n EndpointQueryMeta,\n EndpointQueryOptions,\n EndpointQueryUniqKey,\n} from './endpoint-query.types.js';\nimport type { EndpointQueryClient } from './endpoint-query-client.js';\nimport type { HttpClient } from './http-client.js';\nimport { type AnyResponse, isHttpResponse } from './http-response.js';\n\nfunction isContractOptionEnabled(\n option: boolean | { params?: boolean; data?: boolean } | undefined,\n key: 'params' | 'data',\n): boolean {\n return (\n option === true ||\n (typeof option === 'object' && option !== null && option[key] === true)\n );\n}\n\nexport interface Endpoint<\n TResponse extends AnyResponse,\n TParams extends AnyObject,\n TMetaData extends AnyObject = AnyObject,\n> {\n (\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ): ReturnType<Endpoint<TResponse, TParams, TMetaData>['request']>;\n}\n\n/**\n * This class is a wrapper for your http request.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/)\n */\nexport class Endpoint<\n TResponse extends AnyResponse,\n TParams extends AnyObject,\n TMetaData extends AnyObject = AnyObject,\n> {\n /**\n * Unique runtime identifier of the endpoint instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#endpointid)\n */\n endpointId: string;\n\n /**\n * Mutable presets used by helper factory methods like `toMutation()`.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#presets)\n */\n presets: {\n mutations: EndpointMutationPresets;\n } = {\n mutations: {},\n };\n\n /**\n * Type-only helper that exposes endpoint params shape.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#__params)\n */\n __params!: TParams;\n\n /**\n * Type-only helper that exposes endpoint response shape.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#__response)\n */\n __response!: TResponse;\n\n /**\n * Custom metadata attached to the endpoint configuration.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#meta)\n */\n meta!: TMetaData;\n\n /**\n * Endpoint configuration generated from the contract/codegen layer.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#configuration)\n */\n configuration: EndpointConfiguration<NoInfer<TParams>, TMetaData>;\n\n /**\n * Query client used by query and mutation helpers.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#queryclient)\n */\n queryClient: EndpointQueryClient;\n\n /**\n * HTTP client used to build URLs and execute requests.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#httpclient)\n */\n httpClient: HttpClient;\n\n protected validateParams: boolean = false;\n protected validateData: boolean = false;\n protected throwParams: boolean = false;\n protected throwData: boolean = false;\n\n /**\n * Creates a callable `Endpoint` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#constructor)\n */\n constructor(\n configuration: EndpointConfiguration<NoInfer<TParams>, TMetaData>,\n queryClient: EndpointQueryClient,\n httpClient: HttpClient,\n ) {\n this.configuration = configuration;\n this.queryClient = queryClient;\n this.httpClient = httpClient;\n this.endpointId = globalThis.crypto.randomUUID();\n this.meta = configuration.meta ?? ({} as TMetaData);\n const vc = configuration.validateContract;\n this.validateParams = isContractOptionEnabled(vc, 'params');\n this.validateData = isContractOptionEnabled(vc, 'data');\n const tc = configuration.throwContracts;\n this.throwParams = isContractOptionEnabled(tc, 'params');\n this.throwData = isContractOptionEnabled(tc, 'data');\n // Сохраняем оригинальный инстанс\n const instance = this;\n\n // Создаем функцию-обертку\n const callable = function (\n this: any,\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ) {\n return instance.request.apply(instance, args);\n } as unknown as Endpoint<TResponse, TParams, TMetaData>;\n\n // Копируем прототип\n Object.setPrototypeOf(callable, new.target.prototype);\n\n // Копируем методы из оригинального инстанса\n Object.getOwnPropertyNames(instance)\n .concat(Object.getOwnPropertyNames(new.target.prototype))\n .forEach((key) => {\n if (key === 'constructor') return;\n const desc =\n Object.getOwnPropertyDescriptor(instance, key) ||\n Object.getOwnPropertyDescriptor(new.target.prototype, key);\n if (desc) Object.defineProperty(callable, key, desc);\n });\n\n // biome-ignore lint/correctness/noConstructorReturn: this is special trick to add typings for callable class instance\n return callable;\n }\n\n /**\n * Returns a fully resolved request URL for the provided params.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#getfullurl)\n */\n getFullUrl(\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ): string {\n const params = this.configuration.params(args[0] ?? ({} as TParams));\n return this.httpClient.buildUrl(params);\n }\n\n /**\n * Returns the resolved request path without the base URL.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#getpath)\n */\n getPath(\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ): string {\n const params = this.configuration.params(args[0] ?? ({} as TParams));\n return params.path;\n }\n\n /**\n * Extracts endpoint params from TanStack Query function context.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#getparamsfromcontext)\n */\n getParamsFromContext<\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n ctx: Omit<QueryFunctionContext<TQueryKey, TPageParam>, 'client'> & {\n client: IQueryClientCore;\n },\n ): TParams {\n return (ctx.queryKey.at(-2) || {}) as TParams;\n }\n\n /**\n * Tags declared for the endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#tags)\n */\n get tags() {\n return this.configuration.tags;\n }\n\n /**\n * Path segments declared for the endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#path)\n */\n get path() {\n return this.configuration.path;\n }\n\n /**\n * Slash-joined path declaration for the endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#pathdeclaration)\n */\n get pathDeclaration() {\n return this.path.join('/');\n }\n\n /**\n * Operation identifier from the endpoint configuration.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#operationid)\n */\n get operationId() {\n return this.configuration.operationId;\n }\n\n /**\n * Optional endpoint group.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#group)\n */\n get group() {\n return this.configuration.group;\n }\n\n /**\n * Optional endpoint namespace.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#namespace)\n */\n get namespace() {\n return this.configuration.namespace;\n }\n\n /**\n * Narrows unknown values to endpoint HTTP responses.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#checkresponse)\n */\n checkResponse<TStatus extends HttpStatusCode>(\n response: unknown,\n status: TStatus,\n ): response is Extract<TResponse, { status: TStatus }>;\n checkResponse(response: unknown): response is TResponse;\n checkResponse(response: unknown, status?: HttpStatusCode) {\n return isHttpResponse(response, status);\n }\n\n protected async validateContract(\n kind: 'params' | 'data',\n contract: { safeParseAsync: (input: unknown) => Promise<any> } | undefined,\n payload: unknown,\n options?: { throw?: boolean },\n ): Promise<unknown> {\n if (!contract?.safeParseAsync) return;\n\n const label = kind === 'params' ? 'Params' : 'Data';\n const shouldThrow = options?.throw === true;\n\n try {\n const result = await contract.safeParseAsync(payload);\n if (!result?.success) {\n if (shouldThrow) {\n throw result?.error;\n } else {\n console.warn(\n `[mobx-tanstack-query-api] ${label} contract validation failed for \"${this.operationId}\"`,\n result?.error,\n payload,\n );\n return;\n }\n }\n return result.data;\n } catch (error) {\n if (shouldThrow) {\n throw error;\n } else {\n console.warn(\n `[mobx-tanstack-query-api] ${label} contract validation threw for \"${this.operationId}\"`,\n error,\n payload,\n );\n return;\n }\n }\n }\n\n /**\n * Performs the HTTP request and optionally validates contracts.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#request)\n */\n async request(\n ...args: IsPartial<TParams> extends true\n ? [params?: Maybe<TParams>]\n : [params: TParams]\n ) {\n const rawParams = (args[0] ?? {}) as TParams;\n\n const contract = this.configuration.contract;\n\n const params =\n this.validateParams && contract?.params\n ? (((await this.validateContract(\n 'params',\n contract?.params as any,\n rawParams,\n { throw: this.throwParams },\n )) ?? rawParams) as TParams)\n : rawParams;\n\n const response = await this.httpClient.request<TResponse>(\n this.configuration.params(params),\n this,\n );\n\n if (\n this.validateData &&\n contract?.data?.safeParseAsync &&\n this.checkResponse(response) &&\n response.ok\n ) {\n const parsedData = await this.validateContract(\n 'data',\n contract?.data as any,\n response.data,\n { throw: this.throwData },\n );\n if (parsedData !== undefined) {\n response.data = parsedData as TResponse['data'];\n }\n }\n\n return response;\n }\n\n /**\n * Builds query metadata payload enriched with endpoint fields.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#toquerymeta)\n */\n toQueryMeta = (meta?: AnyObject) =>\n ({\n ...meta,\n tags: this.tags,\n operationId: this.operationId,\n path: this.path,\n pathDeclaration: this.pathDeclaration,\n endpointId: this.endpointId,\n endpointQuery: true,\n }) satisfies EndpointQueryMeta;\n\n /**\n * Builds a stable TanStack Query key for a regular query.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#toquerykey)\n */\n toQueryKey(params?: Maybe<TParams>, uniqKey?: EndpointQueryUniqKey): any {\n return [\n ...this.configuration.path,\n this.configuration.operationId,\n params ?? {},\n callFunction(uniqKey),\n ];\n }\n\n /**\n * Builds a stable TanStack Query key for an infinite query.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#toinfinitequerykey)\n */\n toInfiniteQueryKey(\n params?: Maybe<TParams>,\n uniqKey?: EndpointQueryUniqKey,\n ): any {\n return [\n { infiniteQuery: true },\n ...this.configuration.path,\n this.configuration.operationId,\n params ?? {},\n callFunction(uniqKey),\n ];\n }\n\n /**\n * Invalidates the exact query produced by this endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#invalidatequery)\n */\n invalidateQuery(\n ...args: IsPartial<TParams> extends true\n ? [\n params?: Maybe<TParams>,\n filters?: InvalidateQueryFilters & { uniqKey?: EndpointQueryUniqKey },\n options?: InvalidateOptions,\n ]\n : [\n params: TParams,\n filters?: InvalidateQueryFilters & { uniqKey?: EndpointQueryUniqKey },\n options?: InvalidateOptions,\n ]\n ) {\n this.queryClient.invalidateQueries(\n {\n queryKey: this.toQueryKey(args[0], args[1]?.uniqKey),\n exact: true,\n ...(args[1] as any),\n },\n args[2],\n );\n }\n\n /**\n * Creates an `EndpointMutation` bound to this endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#tomutation)\n */\n toMutation<\n TData = TResponse['data'],\n TMutationMeta extends AnyObject | void = void,\n TContext = unknown,\n >(\n options: EndpointMutationOptions<\n this,\n TData,\n TParams,\n TMutationMeta,\n TContext\n >,\n ) {\n return new EndpointMutation<this, TData, TParams, TMutationMeta, TContext>(\n this,\n this.queryClient,\n {\n ...options,\n invalidateEndpoints:\n options.invalidateEndpoints ??\n this.presets.mutations?.invalidateQueries,\n },\n );\n }\n\n /**\n * Creates an `EndpointQuery` bound to this endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#toquery)\n */\n toQuery<\n TQueryFnData = TResponse['data'],\n TError = DefaultError | Defined<TResponse['error']>,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n >(\n options:\n | EndpointQueryOptions<this, TQueryFnData, TError, TData, TQueryData>\n | (() => EndpointQueryFlattenOptions<\n this,\n TQueryFnData,\n TError,\n TData,\n TQueryData\n >),\n ) {\n return new EndpointQuery<this, TQueryFnData, TError, TData, TQueryData>(\n this,\n this.queryClient,\n options,\n );\n }\n\n /**\n * Creates an `EndpointInfiniteQuery` bound to this endpoint.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoints/#toinfinitequery)\n */\n toInfiniteQuery<\n TQueryFnData = TResponse['data'],\n TError = DefaultError | Defined<TResponse['error']>,\n TPageParam = unknown,\n TData = import('@tanstack/query-core').InfiniteData<\n TQueryFnData,\n TPageParam\n >,\n >(\n options:\n | EndpointInfiniteQueryOptions<\n this,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >\n | (() => EndpointInfiniteQueryFlattenOptions<\n this,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >),\n ) {\n return new EndpointInfiniteQuery<\n this,\n TQueryFnData,\n TError,\n TPageParam,\n TData\n >(this, this.queryClient, options);\n }\n}\n","import { hashKey, type InvalidateOptions } from '@tanstack/query-core';\nimport { QueryClient, type QueryClientConfig } from 'mobx-tanstack-query';\nimport type { Maybe } from 'yummies/types';\nimport type { EndpointQueryMeta } from './endpoint-query.types.js';\nimport type {\n EndpointStringFilter,\n InvalidateEndpointsFilters,\n} from './endpoint-query-client.types.js';\n\n/**\n * Class that extends `QueryClient` and gives a bit more control over endpoint queries and mutations.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-query-client/)\n */\nexport class EndpointQueryClient extends QueryClient {\n /**\n * Creates `EndpointQueryClient` instance.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-query-client/#constructor)\n */\n constructor(config?: QueryClientConfig) {\n super({\n ...config,\n defaultOptions: {\n ...config?.defaultOptions,\n queries: {\n ...config?.defaultOptions?.queries,\n queryKeyHashFn:\n config?.defaultOptions?.queries?.queryKeyHashFn ?? hashKey,\n },\n },\n });\n }\n\n /**\n * Invalidates endpoint queries by endpoint metadata filters.\n *\n * [**Documentation**](https://js2me.github.io/mobx-tanstack-query-api/endpoint-query-client/#invalidateendpoints)\n */\n invalidateEndpoints(\n {\n group,\n namespace,\n operationId,\n tag,\n predicate,\n endpoint,\n exclude,\n ...queryFilters\n }: InvalidateEndpointsFilters,\n options?: InvalidateOptions,\n ) {\n const endpointIdsToExclude = new Set<string>(\n exclude?.endpoints?.map((it) => it.endpointId),\n );\n const endpointTagsToExclude = new Set<string>(exclude?.tags ?? []);\n\n let endpointIdsToFilter: Maybe<Set<string>>;\n\n if (Array.isArray(endpoint)) {\n endpointIdsToFilter = new Set(endpoint.map((it) => it.endpointId));\n } else if (endpoint) {\n endpointIdsToFilter = new Set([endpoint.endpointId]);\n }\n\n return this.invalidateQueries(\n {\n ...queryFilters,\n predicate: (query) => {\n if (!query.meta?.endpointQuery) {\n return false;\n }\n\n const meta = query.meta as unknown as EndpointQueryMeta;\n\n if (\n endpointIdsToExclude.has(meta.endpointId) ||\n (endpointTagsToExclude.size &&\n meta.tags.some((tag) => endpointTagsToExclude.has(tag)))\n ) {\n return false;\n }\n\n if (\n endpointIdsToFilter &&\n !endpointIdsToFilter.has(meta.endpointId)\n ) {\n return false;\n }\n\n if (\n namespace &&\n meta.namespace &&\n !applyStringFilter(namespace, meta.namespace)\n ) {\n return false;\n }\n\n if (group && meta.group && !applyStringFilter(group, meta.group)) {\n return false;\n }\n\n if (tag && meta.tags && !applyStringFilter(tag, meta.tags)) {\n return false;\n }\n\n if (tag && meta.tags && !applyStringFilter(tag, meta.tags)) {\n return false;\n }\n\n if (\n operationId &&\n !applyStringFilter(operationId, meta.operationId)\n ) {\n return false;\n }\n\n if (predicate && !predicate(meta, query as any)) {\n return false;\n }\n\n return true;\n },\n },\n options,\n );\n }\n}\n\nconst applyStringFilter = (\n filter: EndpointStringFilter,\n value: string | string[],\n): boolean => {\n const values = Array.isArray(value) ? value : [value];\n\n if (filter instanceof RegExp) {\n return values.some((value) => filter.test(value));\n }\n\n if (Array.isArray(filter)) {\n return filter.some((filter) => values.includes(filter));\n }\n\n return values.includes(filter);\n};\n","import { action, makeObservable, observable } from 'mobx';\nimport { type BooleanOptional, type IStringifyOptions, stringify } from 'qs';\nimport type { AnyObject, Defined, Maybe } from 'yummies/types';\nimport type { AnyEndpoint } from './endpoint.types.js';\nimport {\n type AnyHttpResponse,\n type AnyResponse,\n HttpResponse,\n type ResponseFormat,\n} from './http-response.js';\n\nexport type QueryParamsType = Record<string | number, any>;\n\nexport interface FullRequestParams extends Omit<RequestInit, 'body'> {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n contentType?: string;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseFormat;\n /** request body */\n body?: unknown;\n /** base url */\n baseUrl?: string;\n /** meta data */\n meta?: Record<string, any>;\n}\n\nexport const ContentType = {\n Json: 'application/json',\n FormData: 'multipart/form-data',\n UrlEncoded: 'application/x-www-form-urlencoded',\n Text: 'text/plain',\n Binary: 'application/octet-stream',\n} as const;\n\nexport type RequestParams = Omit<\n FullRequestParams,\n 'body' | 'method' | 'query' | 'path' | 'serviceName'\n>;\n\nexport interface HttpClientConfig<TMeta = unknown> {\n baseUrl?: string;\n meta?: TMeta;\n fetch?: typeof globalThis.fetch;\n baseApiParams?: Omit<RequestParams, 'baseUrl' | 'cancelToken' | 'signal'>;\n contentFormatters?: Record<string, (input: any) => any>;\n queryStringifyOptions?: IStringifyOptions<BooleanOptional>;\n toQueryString?: (query?: AnyObject) => string;\n buildUrl?: (\n fullParams: FullRequestParams,\n formattedParts: { baseUrl: string; path: string; query: string },\n metadata: TMeta | null,\n ) => string;\n interceptor?: (\n requestParams: RequestParams,\n metadata: TMeta | null,\n endpoint?: Maybe<AnyEndpoint>,\n ) => Promise<RequestParams | void> | RequestParams | void;\n}\n\nexport class HttpClient<TMeta = unknown> {\n private config: HttpClientConfig<TMeta>;\n private fetch: Required<HttpClientConfig<TMeta>>['fetch'];\n\n public meta: TMeta | null;\n public baseApiParams: RequestParams;\n\n badResponse: unknown;\n\n protected toQueryString: Defined<HttpClientConfig<TMeta>['toQueryString']>;\n\n constructor(config?: HttpClientConfig<TMeta>) {\n this.config = config ?? {};\n this.badResponse = null;\n this.meta = config?.meta ?? null;\n this.fetch =\n config?.fetch ??\n ((...fetchParams: Parameters<typeof globalThis.fetch>) =>\n globalThis.fetch(...fetchParams));\n this.toQueryString =\n config?.toQueryString ??\n ((query) => stringify(query, config?.queryStringifyOptions));\n\n this.baseApiParams = {\n credentials: 'same-origin',\n headers: {},\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n };\n\n this.updateConfig(this.config);\n\n observable.ref(this, 'badResponse');\n observable.ref(this, 'meta');\n\n action(this, 'setMeta');\n action(this, 'setBadResponse');\n\n makeObservable(this);\n }\n\n get baseUrl() {\n return this.config.baseUrl ?? '';\n }\n\n public updateConfig(update: Partial<HttpClientConfig<TMeta>>) {\n Object.assign(this.config, update);\n\n if (update.baseApiParams) {\n Object.assign(this.baseApiParams, update.baseApiParams);\n }\n\n if (update.contentFormatters) {\n Object.assign(this.contentFormatters, update.contentFormatters);\n }\n\n if (update.fetch) {\n this.fetch = update.fetch;\n }\n }\n\n public setMeta = (data: TMeta | null) => {\n this.meta = data;\n };\n\n public setBadResponse = (response: unknown) => {\n this.badResponse = response;\n };\n\n private contentFormatters: Record<string, (input: any) => any> = {\n 'application/json': (input: any) =>\n input !== null && (typeof input === 'object' || typeof input === 'string')\n ? JSON.stringify(input)\n : input,\n 'text/plain': (input: any) =>\n input !== null && typeof input !== 'string'\n ? JSON.stringify(input)\n : input,\n 'multipart/form-data': (input: any) =>\n Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n\n if (property instanceof Blob) {\n formData.append(key, property);\n } else if (typeof property === 'object' && property !== null) {\n formData.append(key, JSON.stringify(property));\n } else {\n formData.append(key, `${property}`);\n }\n\n return formData;\n }, new FormData()),\n 'application/x-www-form-urlencoded': (input: any) =>\n this.toQueryString(input),\n 'application/octet-stream': (input: any) => input,\n };\n\n protected mergeRequestParams(\n params1: RequestParams,\n params2?: RequestParams,\n ): RequestParams {\n return {\n ...this.baseApiParams,\n ...params1,\n ...params2,\n headers: {\n ...this.baseApiParams.headers,\n ...params1.headers,\n ...params2?.headers,\n },\n };\n }\n\n protected async createResponse(\n responseFormat: FullRequestParams['format'] = 'json',\n raw: Response,\n url: string,\n params: RequestInit,\n ): Promise<AnyHttpResponse> {\n const response = new HttpResponse<any, any>(raw, { url, params });\n\n if (response.isEmpty()) {\n return response;\n }\n\n await response.resolveBody(responseFormat);\n\n if (!response.ok || response.error) {\n this.setBadResponse(response);\n }\n\n return response;\n }\n\n public buildUrl = (params: FullRequestParams) => {\n const baseUrl = params.baseUrl ?? this.baseUrl ?? '';\n\n const path = params.path;\n\n const queryString = params.query && this.toQueryString(params.query);\n\n const query = queryString ? `?${queryString}` : '';\n\n if (this.config.buildUrl) {\n return this.config.buildUrl(params, { baseUrl, path, query }, this.meta);\n }\n\n const url = baseUrl + path + query;\n\n return url;\n };\n\n public request<T, E>(\n fullParams: FullRequestParams,\n endpoint?: Maybe<AnyEndpoint>,\n ): Promise<HttpResponse<T, E>>;\n public request<THttpResponse extends AnyResponse>(\n fullParams: FullRequestParams,\n endpoint?: Maybe<AnyEndpoint>,\n ): Promise<THttpResponse>;\n\n public async request(\n fullParams: FullRequestParams,\n endpoint?: Maybe<AnyEndpoint>,\n ): Promise<any> {\n this.setBadResponse(null);\n\n const { body, contentType, format, ...params } = fullParams;\n\n let requestParams = this.mergeRequestParams(params);\n\n if (this.config.interceptor) {\n requestParams =\n (await this.config.interceptor(requestParams, this.meta, endpoint)) ??\n requestParams;\n }\n\n const responseFormat = format || requestParams.format;\n\n const url = this.buildUrl(fullParams);\n\n let headers: Headers;\n\n if (requestParams.headers instanceof Headers) {\n headers = requestParams.headers;\n } else if (Array.isArray(requestParams.headers)) {\n headers = new Headers(requestParams.headers);\n } else {\n headers = new Headers(requestParams.headers);\n }\n\n let bodyToSend: Maybe<BodyInit>;\n\n if (contentType) {\n if (\n contentType !== ContentType.FormData &&\n !headers.has('Content-Type')\n ) {\n headers.set('Content-Type', contentType);\n }\n\n const payloadFormatter = this.contentFormatters[contentType];\n\n if (body == null) {\n bodyToSend = null;\n } else if (payloadFormatter) {\n bodyToSend = payloadFormatter(body);\n } else {\n bodyToSend = body as any;\n }\n }\n\n const fetchUrl: string = url;\n const fetchParams: RequestInit = {\n ...requestParams,\n headers,\n body: bodyToSend,\n };\n\n let response: Response;\n\n try {\n response = await this.fetch(fetchUrl, fetchParams);\n } catch (error) {\n if (error instanceof Response) {\n response = error;\n } else {\n throw error;\n }\n }\n\n const httpResponse = await this.createResponse(\n responseFormat,\n response,\n fetchUrl,\n fetchParams,\n );\n\n if (!httpResponse.ok || httpResponse.error) {\n throw httpResponse;\n }\n\n return httpResponse;\n }\n}\n"],"names":["params","uniqKey","onDone","mergePageParam","queryClient","tag","value","filter"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.41.1",
2
+ "version": "0.42.0",
3
3
  "name": "mobx-tanstack-query-api",
4
4
  "description": "OpenAPI/Swagger client codegen + endpoints integration with mobx-tanstack-query",
5
5
  "keywords": [
@@ -39,9 +39,9 @@
39
39
  "http-status-code-types": "^1.0.1",
40
40
  "jiti": "^2.6.1",
41
41
  "lodash-es": "^4.17.23",
42
- "mobx-tanstack-query": "^6.12.1",
42
+ "mobx-tanstack-query": "^6.13.0",
43
43
  "qs": "^6.15.0",
44
- "swagger-typescript-api": "13.6.3",
44
+ "swagger-typescript-api": "13.6.5",
45
45
  "ts-morph": "^27.0.2",
46
46
  "undici-types": "^7.22.0",
47
47
  "yummies": "^7.10.0"