import { NuxtError } from "../error.js"; import "./error.js"; import { AcceptedDeclaredMethod, AcceptedMethod, AnyServerRouteMethod, AvailableServerRouteMethod, DeclaredFetchRequest, DeclaredRequestShape, DeclaredServerResponse, EffectiveBaseURL, FallbackBaseURL, RequiredDeclaredBody, RequiredFetchBody, ResolvedFetchPath, ServerRouteMethod, ServerRouteMethods, TypedFetch, TypedFetchOptions, TypedFetchPathInput, TypedFetchRequest, TypedRequestShape, TypedServerError, TypedServerResponse, UnmatchedDeclaredRouteArgs, UnmatchedRouteArgs, ValidDeclaredFetchPath, ValidTypedFetchPath } from "../types/fetch.js"; import { MergedAddonsExtensions, MergedAddonsOptions, UseFetchAddon } from "./addons.js"; import { AsyncData, AsyncDataOptions, AugmentedAsyncData, KeysOf, MultiWatchSources, PickFrom, _Transform } from "./asyncData.js"; import { MaybeRefOrGetter, Ref } from "vue"; import { FetchOptions, ResponseType } from "ofetch"; //#region src/app/composables/fetch.d.ts export type FetchResult = TypedServerResponse; type ComputedOptions> = { [K in keyof T]: T[K] extends Function ? T[K] : ComputedOptions | MaybeRefOrGetter; }; type NuxtFetchOptions = Omit, 'baseURL' | 'cache' | 'method' | 'body' | 'query' | 'params' | 'headers'> & { baseURL?: B; method?: AcceptedMethod; cache?: FetchOptions['cache'] | false; } & TypedRequestShape; type ComputedFetchOptions = ComputedOptions>; export interface UseFetchOptions = KeysOf, DefaultT = undefined, R extends string = string, M extends AnyServerRouteMethod = 'get', B extends string = string> extends Omit, 'watch'>, Omit, 'timeout'> { key?: MaybeRefOrGetter; $fetch?: TypedFetch; watch?: MultiWatchSources | false; } export interface UseFetchOptionsWithTransform = KeysOf, DefaultT = undefined, R extends string = string, M extends AnyServerRouteMethod = 'get', B extends string = string> extends Omit, 'transform'> { transform: _Transform; } type FetchFactoryDataT = [unknown] extends [FDataT] ? _ResT : FDataT; type FetchFactoryDefaultT = [undefined] extends [FDefaultT] ? Fallback : FDefaultT; type FetchFactoryPickKeys = [Array] extends [FPickKeys] ? PickKeys : FPickKeys & KeysOf; export interface UseFetch = never[], FDefaultT = undefined, FBaseURL extends string = '', FAddonOpts = {}, FAddonExt = {}> { , ReqT extends TypedFetchRequest = TypedFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts: UseFetchOptionsWithTransform<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts, ...unmatched: UnmatchedRouteArgs<_ReqT, Method>): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchRequest = TypedFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts: UseFetchOptionsWithTransform<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts, ...unmatched: UnmatchedRouteArgs<_ReqT, Method>): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchRequest = TypedFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = FetchFactoryDataT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts, ...unmatched: UnmatchedRouteArgs<_ReqT, Method>): AugmentedAsyncData> | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchRequest = TypedFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = FetchFactoryDataT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts, ...unmatched: UnmatchedRouteArgs<_ReqT, Method>): AugmentedAsyncData> | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchRequest = TypedFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = undefined>(request: Ref | ReqT | (() => ReqT), arg1?: string | (UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts), arg2?: string, ...unmatched: UnmatchedRouteArgs<_ReqT, Method>): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchPathInput = TypedFetchPathInput, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: (Ref | ReqT | (() => ReqT)) & ValidTypedFetchPath<_ReqT, Method>, opts: UseFetchOptionsWithTransform<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchPathInput = TypedFetchPathInput, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: (Ref | ReqT | (() => ReqT)) & ValidTypedFetchPath<_ReqT, Method>, opts: UseFetchOptionsWithTransform<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchPathInput = TypedFetchPathInput, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = FetchFactoryDataT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: (Ref | ReqT | (() => ReqT)) & ValidTypedFetchPath<_ReqT, Method>, opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts): AugmentedAsyncData> | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchPathInput = TypedFetchPathInput, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = FetchFactoryDataT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: (Ref | ReqT | (() => ReqT)) & ValidTypedFetchPath<_ReqT, Method>, opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts): AugmentedAsyncData> | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends TypedFetchPathInput = TypedFetchPathInput, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, const BaseURL extends string = FallbackBaseURL, _ReqT = ResolvedFetchPath>, _ResT = ResT extends void ? FetchResult<_ReqT, Method> : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = undefined>(request: (Ref | ReqT | (() => ReqT)) & ValidTypedFetchPath<_ReqT, Method>, arg1?: string | (UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, _ReqT & string, Method, BaseURL> & RequiredFetchBody<_ReqT, Method> & FAddonOpts), arg2?: string): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; } /** The response a request to `ReqT` resolves to, against a route set a client declares. */ export type DeclaredFetchResult = DeclaredServerResponse; type DeclaredFetchOptionsBase = Omit, 'cache' | 'method' | 'body' | 'query' | 'params' | 'headers'> & { method?: AcceptedDeclaredMethod; cache?: FetchOptions['cache'] | false; } & DeclaredRequestShape; /** * As {@link UseFetchOptions}, for a client that declared the route set it serves. * * `baseURL` stays ofetch's own: the declared paths are the ones the API documents, so they are * matched as written and the base is transport rather than part of the route. */ export interface DeclaredUseFetchOptions = KeysOf, DefaultT = undefined, R = string, M extends AnyServerRouteMethod = 'get'> extends Omit, 'watch'>, Omit>, 'timeout'> { key?: MaybeRefOrGetter; $fetch?: TypedFetch; watch?: MultiWatchSources | false; /** * The routes this client serves, read as a type only. * * Pass `{} as MyRoutes` - by hand, or an interface a generator emitted from an OpenAPI document - * and every request the composable makes is resolved against that route set instead of the app's * own. The value is dropped before the request is made. */ routes?: Schema; } export interface DeclaredUseFetchOptionsWithTransform = KeysOf, DefaultT = undefined, R = string, M extends AnyServerRouteMethod = 'get'> extends Omit, 'transform'> { transform: _Transform; } /** * The composable {@link createUseFetch} returns for a client that declared its own route set. * * The same shapes as {@link UseFetch}, resolved against `Schema`. A path outside that set is turned * away by the trailing `UnmatchedDeclaredRouteArgs`, exactly as an unregistered path is for the * app's own routes. */ export interface DeclaredUseFetch = never[], FDefaultT = undefined, FAddonOpts = {}, FAddonExt = {}> { , ReqT extends DeclaredFetchRequest = DeclaredFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, _ResT = ResT extends void ? DeclaredFetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts: DeclaredUseFetchOptionsWithTransform & RequiredDeclaredBody & FAddonOpts, ...unmatched: UnmatchedDeclaredRouteArgs): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends DeclaredFetchRequest = DeclaredFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, _ResT = ResT extends void ? DeclaredFetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts: DeclaredUseFetchOptionsWithTransform & RequiredDeclaredBody & FAddonOpts, ...unmatched: UnmatchedDeclaredRouteArgs): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends DeclaredFetchRequest = DeclaredFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, _ResT = ResT extends void ? DeclaredFetchResult : ResT, DataT = FetchFactoryDataT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts?: DeclaredUseFetchOptions & RequiredDeclaredBody & FAddonOpts, ...unmatched: UnmatchedDeclaredRouteArgs): AugmentedAsyncData> | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends DeclaredFetchRequest = DeclaredFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, _ResT = ResT extends void ? DeclaredFetchResult : ResT, DataT = FetchFactoryDataT, PickKeys extends KeysOf = KeysOf, DefaultT = FetchFactoryDefaultT>(request: Ref | ReqT | (() => ReqT), opts?: DeclaredUseFetchOptions & RequiredDeclaredBody & FAddonOpts, ...unmatched: UnmatchedDeclaredRouteArgs): AugmentedAsyncData> | DefaultT, ErrorT | undefined, FAddonExt>; , ReqT extends DeclaredFetchRequest = DeclaredFetchRequest, const Method extends AnyServerRouteMethod = ResT extends void ? 'get' : AnyServerRouteMethod, _ResT = ResT extends void ? DeclaredFetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, DefaultT = undefined>(request: Ref | ReqT | (() => ReqT), arg1?: string | (DeclaredUseFetchOptions & RequiredDeclaredBody & FAddonOpts), arg2?: string, ...unmatched: UnmatchedDeclaredRouteArgs): AugmentedAsyncData | DefaultT, ErrorT | undefined, FAddonExt>; (request: (Ref | ReqT | (() => ReqT)) & ValidDeclaredFetchPath, opts?: { method?: Method; }, key?: string, ...resolves: unknown extends ValidDeclaredFetchPath ? [never] : []): AsyncData | undefined>; } type CreateUseFetchOptions = KeysOf, DefaultT = undefined, R extends string = string, M extends AnyServerRouteMethod = 'get', B extends string = string, Addons extends ReadonlyArray> = []> = Partial> & { addons?: Addons; }; export interface CreateUseFetch { = DeclaredFetchRequest, const FMethod extends AnyServerRouteMethod = 'get', F_ResT = FResT extends void ? DeclaredFetchResult : FResT, FDataT = F_ResT, FPickKeys extends KeysOf = KeysOf, FDefaultT = undefined, const FAddons extends ReadonlyArray> = []>(options: Partial> & { routes: FSchema; addons?: FAddons; }): DeclaredUseFetch, MergedAddonsExtensions>; : FResT, FDataT = F_ResT, FPickKeys extends KeysOf = KeysOf, FDefaultT = undefined, const FAddons extends ReadonlyArray> = []>(options?: CreateUseFetchOptions | ((callerOptions: UseFetchOptions) => Partial>)): UseFetch, MergedAddonsExtensions>; } /** * A factory function to create a custom `useFetch` composable with pre-defined default options. * @since 4.4.0 */ export declare const createUseFetch: CreateUseFetch; /** @internal */ export declare function _createUseFetch : FResT, FDataT = F_ResT, FPickKeys extends KeysOf = KeysOf, FDefaultT = undefined>(options?: Partial> | ((callerOptions: UseFetchOptions) => Partial>)): UseFetch; export declare const useFetch: UseFetch; export declare const useLazyFetch: UseFetch; //#endregion export type { TypedFetch as $Fetch, AnyServerRouteMethod, AvailableServerRouteMethod, ServerRouteMethod, ServerRouteMethods, TypedFetch, TypedFetchOptions, TypedFetchRequest, TypedServerError, TypedServerResponse };