{"version":3,"sources":["../src/request.ts"],"sourcesContent":["import type { AnyElysia, MaybeArray, MaybePromise } from 'elysia'\n\nimport type { EdenFetchError } from './errors'\nimport type { HTTPHeaders } from './http'\nimport type { OperationContext } from './links/internal/operation'\nimport type { DataTransformerOptions } from './links/internal/transformer'\nimport type { Nullish } from './utils/null'\n\n/**\n * Flexible format for defining headers.\n */\nexport type EdenRequestHeaders =\n  | MaybeArray<\n      | RequestInit['headers']\n      | ((path: string, options?: RequestInit) => MaybePromise<RequestInit['headers'] | Nullish>)\n    >\n  | MaybePromise<HTTPHeaders>\n\n/**\n * Callback function to invoke before the request is made. The fetch options can be modified,\n * or new options can be returned.\n */\nexport type EdenOnRequest = (\n  path: string,\n  options: RequestInit,\n) => MaybePromise<RequestInit | Nullish>\n\n/**\n * Callback function to invoke after a response is received. Output value is ignored.\n */\nexport type EdenOnResponse = (response: Response) => MaybePromise<EdenResponse | Nullish>\n\n/**\n * General, untyped response.\n */\nexport type EdenResponse<TRaw extends boolean = false> = (\n  | {\n      data: null\n      error: EdenFetchError<any, any>\n      status: number\n      statusText: string\n    }\n  | {\n      data: any\n      error: null\n      status: number\n      statusText: string\n    }\n) &\n  (TRaw extends true ? EdenRawResponse : {})\n\n/**\n * Raw response is __not__ JSON serializable, so only available when asked.\n */\nexport type EdenRawResponse = {\n  headers: Headers\n  response: Response\n  statusText: string\n}\n\n/**\n * Options to customize the fetch behavior for the request.\n */\nexport type EdenRequestOptions<T extends AnyElysia = AnyElysia, TRaw extends boolean = false> = {\n  /**\n   */\n  domain?: T | string\n\n  /**\n   */\n  transformer?: DataTransformerOptions\n\n  /**\n   * Fetch options.\n   */\n  fetch?: Omit<RequestInit, keyof EdenRequestOptions | 'method'>\n\n  /**\n   * `fetch` implementation.\n   */\n  fetcher?: typeof fetch\n\n  /**\n   * Custom headers object that's processed and forwarded to the fetch options.\n   */\n  headers?: EdenRequestHeaders\n\n  /**\n   * Callback to invoke prior to fetching the request.\n   */\n  onRequest?: MaybeArray<EdenOnRequest>\n\n  /**\n   * Callback to invoke after fetching the request.\n   */\n  onResponse?: MaybeArray<EdenOnResponse>\n\n  /**\n   */\n  keepDomain?: boolean\n\n  /**\n   */\n  raw?: TRaw\n\n  /**\n   * Context to pass to the operation links.\n   */\n  context?: OperationContext\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}