interface.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * @Author: wjc
  3. * @Date: 2023-11-27 15:35:24
  4. * @LastEditors: LiZhiWei
  5. * @LastEditTime: 2026-01-15 17:52:25
  6. * @Description:
  7. */
  8. import type { UseFetchOptions } from '#app'
  9. export type _AsyncData<DataT, ErrorT> = {
  10. data: Ref<DataT | null>
  11. pending: Ref<boolean>
  12. refresh: (opts?: AsyncDataExecuteOptions) => Promise<void>
  13. execute: (opts?: AsyncDataExecuteOptions) => Promise<void>
  14. error: Ref<ErrorT | null>
  15. }
  16. interface AsyncDataExecuteOptions {
  17. dedupe?: boolean
  18. }
  19. export type IInterceptor = {
  20. onRequest?: UseFetchOptions<any>['onRequest']
  21. onRequestError?: UseFetchOptions<any>['onRequestError']
  22. onResponse?: UseFetchOptions<any>['onResponse']
  23. onResponseError?: UseFetchOptions<any>['onResponseError']
  24. }
  25. export interface IConfig {
  26. baseURL: any
  27. interceptor?: IInterceptor
  28. }
  29. type Methods = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'get' | 'post' | 'put' | 'delete'
  30. export interface IOption<T> {
  31. url: string
  32. method?: Methods
  33. params?: any // query
  34. data?: any // body
  35. options?: UseFetchOptions<T>
  36. }
  37. export type RequestQueueItem<T = BasicResponse> = {
  38. url: string
  39. options: UseFetchOptions<T>
  40. resolve: (data: T) => void
  41. reject: (data: unknown) => void
  42. }