(
request: Ref<ReqT> | ReqT | (() => ReqT),
arg1?: string | UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>,
arg2?: string,
)
| 174 | opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>, |
| 175 | ): AsyncData<PickFrom<DataT, [Array<never>] extends [FPickKeys] ? PickKeys : FPickKeys & KeysOf<DataT>> | DefaultT, ErrorT | undefined> |
| 176 | function useFetch< |
| 177 | ResT = void, |
| 178 | ErrorT = FetchError, |
| 179 | ReqT extends NitroFetchRequest = NitroFetchRequest, |
| 180 | Method extends AvailableRouterMethod<ReqT> = ResT extends void ? 'get' extends AvailableRouterMethod<ReqT> ? 'get' : AvailableRouterMethod<ReqT> : AvailableRouterMethod<ReqT>, |
| 181 | _ResT = ResT extends void ? FetchResult<ReqT, Method> : ResT, |
| 182 | DataT = _ResT, |
| 183 | PickKeys extends KeysOf<DataT> = KeysOf<DataT>, |
| 184 | DefaultT = undefined, |
| 185 | > ( |
| 186 | request: Ref<ReqT> | ReqT | (() => ReqT), |
| 187 | arg1?: string | UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>, |
| 188 | arg2?: string, |
| 189 | ) { |
| 190 | const [opts = {}, autoKey] = typeof arg1 === 'string' ? [{}, arg1] : [arg1, arg2] |
| 191 | |
| 192 | const factoryOptions = (typeof options === 'function' ? options(opts as any) : options) as typeof opts |
| 193 | |
| 194 | // Merge factory options with user options: |
| 195 | // - defaults mode (plain object): factory < user opts (factory provides defaults) |
| 196 | // - override mode (function): user opts < factory (factory overrides user opts) |
| 197 | const { |
| 198 | server, |
| 199 | lazy, |
| 200 | default: defaultFn, |
| 201 | transform, |
| 202 | pick, |
| 203 | watch: watchSources, |
| 204 | immediate, |
| 205 | getCachedData, |
| 206 | deep, |
| 207 | dedupe, |
| 208 | timeout, |
| 209 | ...fetchOptions |
| 210 | } = { |
| 211 | ...(typeof options === 'function' ? {} : factoryOptions), |
| 212 | ...opts, |
| 213 | ...(typeof options === 'function' ? factoryOptions : {}), |
| 214 | } |
| 215 | |
| 216 | const _request = computed(() => toValue(request)) |
| 217 | |
| 218 | const key = computed(() => toValue(fetchOptions.key) || ('$f' + hash([autoKey, typeof _request.value === 'string' ? _request.value : '', ...generateOptionSegments(fetchOptions)]))) |
| 219 | |
| 220 | if (!fetchOptions.baseURL && typeof _request.value === 'string' && (_request.value[0] === '/' && _request.value[1] === '/')) { |
| 221 | throw new Error('[nuxt] [useFetch] the request URL must not start with "//".') |
| 222 | } |
| 223 | |
| 224 | const _fetchOptions = reactive<typeof fetchOptions>({ |
| 225 | ...fetchDefaults, |
| 226 | ...fetchOptions, |
| 227 | cache: typeof fetchOptions.cache === 'boolean' ? undefined : fetchOptions.cache, |
| 228 | }) |
| 229 | |
| 230 | const _asyncDataOptions: AsyncDataOptions<_ResT, DataT, PickKeys, DefaultT> = { |
| 231 | server, |
| 232 | lazy, |
| 233 | default: defaultFn, |
searching dependent graphs…