{"version":3,"sources":["../src/index.ts","../src/api-typing.ts","../src/api-typing-proxy.ts","../src/global-status.ts","../src/lib.ts"],"sourcesContent":["export * from \"./api-typing\"\n\nexport * from \"./api-helper\"\n\nexport * from \"./lib\"\n","import axios, {\n  type AxiosResponse,\n  type AxiosRequestConfig,\n  isAxiosError,\n  type AxiosInstance,\n} from \"axios\"\n\nimport type {\n  ExtractMethodResponseStatusContentJSON,\n  PathKeyOfMethod,\n  StatusOfPathKeyOfMethod,\n  ApiTypingMeta,\n  ApiTyping,\n} from \"./api-helper\"\nimport { requestProxyHandler } from \"./api-typing-proxy\"\nimport type {\n  CreateHTTPClientConfig,\n  PostArgs,\n  GetArgs,\n  PutArgs,\n  PatchArgs,\n  DelArgs,\n  HeadArgs,\n  OptionsArgs,\n  MockOptions,\n} from \"./core-type\"\nimport { GlobalStatus } from \"./global-status\"\nimport type { IStringifyOptions } from \"qs\"\n\n/**\n * judge any is config object\n * @param obj any\n * @returns boolean\n */\nexport const isConfig = (obj: any) => {\n  // 判断任意对象是不是 config 对象\n  // 如果对象的 keys 包含 CreateHTTPClientConfig 的 key 并且不包含 __is_data 则判断为 config 对象\n  // 如果是 config 对象，则返回 true\n  if (obj === null || obj === undefined) return false\n  // if obj is form data return false\n  if (obj instanceof FormData) return false\n  // if obj is not object return false\n  if (typeof obj !== \"object\") return false\n  const keys = Object.keys(obj)\n  if (keys.includes(\"__is_data\")) return false\n  return keys.some((key) => [\"__is_config\"].includes(key as any))\n}\n\n/**\n * 创建一个生成请求选项的辅助函数，用于内部使用和测试\n * @param method HTTP方法\n * @param url 请求URL\n * @param data 请求数据\n * @param config 请求配置\n * @returns 完整的请求选项\n */\nexport const _createRequestOptions = (\n  method: string,\n  url: string,\n  data: any,\n  config: any,\n  rootConfig: any = {},\n): AxiosRequestConfig &\n  MockOptions & { stringifyOptions?: IStringifyOptions } => {\n  let options: Record<string, any> = { method, url }\n\n  // 合并参数\n  if (data !== undefined) {\n    if (isConfig(data)) {\n      options = { ...data, ...options }\n    } else {\n      options.data = data\n    }\n  }\n  if (config !== undefined) {\n    options = { ...config, ...options }\n  }\n\n  // 添加 mock 配置\n  const { mock = false, mockBaseURL = \"\", stringifyOptions = {} } = rootConfig\n  return { mock, mockBaseURL, stringifyOptions, ...options }\n}\n\nconst counterInstance = GlobalStatus.getInstance()\n/**\n * Creates a type-safe HTTP client with enhanced features based on axios.\n *\n * This function returns an extended axios instance with type-checking capabilities\n * for API endpoints defined in your OpenAPI/Swagger specifications. It adds request\n * and response interceptors for tracking request counts, handles mock configurations,\n * and provides strongly-typed methods for all HTTP verbs.\n *\n * @param config - Optional configuration for the HTTP client\n * @returns An enhanced axios instance with type-checked HTTP methods\n *\n * @example\n * ```typescript\n * // Create a basic client\n * const api = createHTTPClient();\n *\n * // Create a client with custom configuration\n * const api = createHTTPClient({\n *   baseURL: 'https://api.example.com',\n *   timeout: 5000,\n *   mock: true,\n *   mockBaseURL: 'https://mock-api.example.com'\n * });\n *\n * // Make type-safe API calls\n * const response = await api.get('/users/{id}', {\n *   params: { id: 123 },\n *   query: { include: 'profile' }\n * });\n *\n * // Use with custom types\n * interface CustomApiTypes extends ApiTyping {\n *   paths: {\n *     \"/custom/{id}\": {\n *       get: {\n *         parameters: { path: { id: string } };\n *         responses: { 200: { content: { \"application/json\": { name: string } } } };\n *       };\n *     };\n *   };\n *   components: {};\n *   operations: {};\n *   external: {};\n * }\n * \n * const customApi = createHTTPClient<CustomApiTypes>();\n * ```\n */\nexport const createHTTPClient = <\n  TMeta extends ApiTyping = ApiTypingMeta,\n  TConfig extends CreateHTTPClientConfig = CreateHTTPClientConfig\n>(\n  config?: TConfig,\n) => {\n  const rootConfig = config || ({} as TConfig)\n  const modifiedAxios =\n    config?.axiosFactory?.(axios.create(config)) || axios.create(config)\n  const api = modifiedAxios\n\n  let originApi = null as null | AxiosInstance\n  if (config?.createNoTypeHTTPClient) {\n    originApi = modifiedAxios\n  }\n\n  api.interceptors.request.use((config) => {\n    if (config.url) {\n      counterInstance.incrementRequestCount(config.url)\n    }\n    return config\n  })\n  api.interceptors.response.use(\n    (fullfill) => {\n      if (fullfill.config.url) {\n        counterInstance.decrementRequestCount(fullfill.config.url)\n      }\n      return fullfill\n    },\n    (error) => {\n      if (isAxiosError(error) && error.config && error.config.url) {\n        counterInstance.decrementRequestCount(error.config.url)\n      }\n      // https://github.com/axios/axios/issues/5412\n      return Promise.reject(error)\n    },\n  )\n\n  const { CancelToken } = axios\n  const cancelToken = CancelToken.source()\n  const proxy = new Proxy(api.request, requestProxyHandler)\n  api.request = proxy\n\n  const getOptions = (\n    method: string,\n    url: string,\n    data: any,\n    config: any,\n  ): AxiosRequestConfig &\n    MockOptions & { stringifyOptions?: IStringifyOptions } => {\n    return _createRequestOptions(method, url, data, config, rootConfig)\n  }\n\n  const post = <\n    T extends PathKeyOfMethod<\"post\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"post\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"post\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, data, config]: PostArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"post\", S, T, TMeta>>\n  > => {\n    return api.request(getOptions(\"post\", url as string, data, config))\n  }\n\n  const put = <\n    T extends PathKeyOfMethod<\"put\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"put\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"put\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, data, config]: PutArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"put\", S, T, TMeta>>\n  > => {\n    return api.request(getOptions(\"put\", url as string, data, config))\n  }\n\n  const patch = <\n    T extends PathKeyOfMethod<\"patch\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"patch\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"patch\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, data, config]: PatchArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"patch\", S, T, TMeta>>\n  > => {\n    return api.request(getOptions(\"patch\", url as string, data, config))\n  }\n\n  const del = <\n    T extends PathKeyOfMethod<\"delete\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"delete\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"delete\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, data, config]: DelArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"delete\", S, T, TMeta>>\n  > => {\n    return api.request(getOptions(\"delete\", url as string, data, config))\n  }\n\n  const get = <\n    T extends PathKeyOfMethod<\"get\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"get\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"get\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, config]: GetArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"get\", S, T, TMeta>>\n  > => {\n    return api.request(getOptions(\"get\", url as string, undefined, config))\n  }\n\n  const head = <\n    T extends PathKeyOfMethod<\"head\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"head\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"head\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, config]: HeadArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"head\", S, T, TMeta>>\n  > => api.request(getOptions(\"head\", url as string, undefined, config))\n\n  const options = <\n    T extends PathKeyOfMethod<\"options\", TMeta>,\n    S extends StatusOfPathKeyOfMethod<\"options\", T, TMeta> = Extract<\n      StatusOfPathKeyOfMethod<\"options\", T, TMeta>,\n      200\n    >,\n  >(\n    ...[url, config]: OptionsArgs<T, TMeta>\n  ): Promise<\n    AxiosResponse<ExtractMethodResponseStatusContentJSON<\"options\", S, T, TMeta>>\n  > => api.request(getOptions(\"options\", url as string, undefined, config))\n\n  const apiTyping = {\n    ...api,\n    /**\n     * axios instance\n     */\n    axiosInstance: api,\n    /**\n     * http get request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.get(\"https://some/url/with/{id}\", { params: { id: 1 }, query: { limit: 10 }})\n     * ```\n     */\n    get,\n    /**\n     * http post request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.post(\"https://some/url/with/{id}\", { some: { data: {}}}, { params: { id: 1 }, query: { limit: 10 }, __is_config: true })\n     * ```\n     */\n    post,\n    /**\n     * http put request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.put(\"https://some/url/with/{id}\", { some: { data: {}}}, { params: { id: 1 }, query: { limit: 10 }, __is_config: true })\n     * ```\n     */\n    put,\n    /**\n     * http patch request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.patch(\"https://some/url/with/{id}\", { some: { data: {}}}, { params: { id: 1 }, query: { limit: 10 }, __is_config: true })\n     * ```\n     */\n    patch,\n    /**\n     * http head request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.post(\"https://some/url/with/{id}\", { params: { id: 1 }, query: { limit: 10 } })\n     * ```\n     */\n    head,\n    /**\n     * http options request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.options(\"https://some/url/with/{id}\", { params: { id: 1 }, query: { limit: 10 } })\n     * ```\n     */\n    options,\n    /**\n     * http delete request with type check\n     * @example\n     * ```ts\n     * const { data } = await client.delete(\"https://some/url/with/{id}\", { params: { id: 1 }, query: { limit: 10 } })\n     * ```\n     */\n    delete: del,\n    /**\n     * cancel token\n     * @example\n     * ```ts\n     * cancelToken.cancel(\"cancel message\")\n     * ```\n     */\n    cancelToken,\n    /**\n     * global request count status\n     */\n    globalStatus: counterInstance,\n    /**\n     * axios instance without type check, use this instance when you don't need type check.\n     * this instance use the same config with the main instance\n     */\n    noTypeHTTPClient: originApi,\n  }\n\n  return apiTyping\n}\n/**\n * ApiTypingInstance\n */\nexport type ApiTypingInstance<TMeta extends ApiTyping = ApiTypingMeta> = ReturnType<typeof createHTTPClient<TMeta>>\n","import type { AxiosRequestConfig } from \"axios\"\nimport qs, { type IStringifyOptions } from \"qs\"\nimport type { MockOptions } from \"./core-type\"\n\nexport type Parsable = Record<string, string | number>\n\nexport const replacerFactory = (obj?: Parsable) => {\n  return (match: string, p1: string, p2: string, p3: string) => {\n    return obj === undefined ? match : `${obj[p2]}`\n  }\n}\n\nexport type ProxyConfig = AxiosRequestConfig & {\n  query?: any\n  params?: any\n  __is_config?: boolean\n  __is_data?: boolean\n} & MockOptions & { stringifyOptions?: IStringifyOptions }\n\nexport const requestProxyHandler = {\n  apply: function (target: any, thisArg: any, argumentList: ProxyConfig[]) {\n    const requestOption = argumentList[0]!\n    if (!requestOption.url) {\n      requestOption.url = \"\"\n    }\n\n    const params = requestOption.params as Parsable | undefined\n    if (params) {\n      const replacer = replacerFactory(params)\n      requestOption.url = requestOption.url.replace(/({)(.*?)(})/g, replacer)\n    }\n\n    if (requestOption.query) {\n      requestOption.url = `${requestOption.url}?${qs.stringify(\n        requestOption.query,\n        requestOption.stringifyOptions,\n      )}`\n    }\n\n    if (requestOption.mockBaseURL && requestOption.mock) {\n      requestOption.baseURL = requestOption.mockBaseURL\n    }\n\n    delete requestOption?.params\n    delete requestOption?.query\n    delete requestOption?.mock\n    delete requestOption?.mockBaseURL\n    delete requestOption?.__is_config\n    delete requestOption?.__is_data\n    delete requestOption?.stringifyOptions\n\n    return target(requestOption)\n  },\n}\n","import { computed, ref } from \"@vue/reactivity\"\n\nclass GlobalStatus {\n  #urls = ref(new Map<string, number>())\n\n  /**\n   * 当前请求数（总计数）\n   */\n  public requestCount = computed(() => {\n    let total = 0\n    this.#urls.value.forEach((count) => {\n      total += count\n    })\n    return total\n  })\n\n  /**\n   * 是否正在请求\n   */\n  public inRequest = computed(() => {\n    return this.requestCount.value > 0\n  })\n\n  incrementRequestCount(url: string) {\n    const count = this.#urls.value.get(url) || 0\n    this.#urls.value.set(url, count + 1)\n  }\n\n  decrementRequestCount(url: string) {\n    const count = this.#urls.value.get(url) || 0\n    if (count > 1) {\n      this.#urls.value.set(url, count - 1)\n    } else if (count === 1) {\n      this.#urls.value.delete(url)\n    }\n  }\n\n  resetRequestCount() {\n    this.#urls.value.clear()\n  }\n\n  /**\n   * 获取特定 URL 的请求计数\n   */\n  getRequestCount(url: string): number {\n    return this.#urls.value.get(url) || 0\n  }\n\n  /**\n   * 直接获取 inRequest 的布尔值（无需 .value）\n   */\n  getInRequest(): boolean {\n    return this.inRequest.value\n  }\n\n  /**\n   * 直接获取请求计数值（无需 .value）\n   */\n  getRequestCountValue(): number {\n    return this.requestCount.value\n  }\n\n  static #instance: GlobalStatus\n\n  static getInstance() {\n    if (!GlobalStatus.#instance) {\n      GlobalStatus.#instance = new GlobalStatus()\n    }\n    return GlobalStatus.#instance\n  }\n}\n\nexport { GlobalStatus }\n","/**\n * third packages\n */\n\n/**\n * export axios as AxiosNamespace\n */\nexport * as AxiosNamespace from \"axios\"\n"],"mappings":"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","names":["qs","axios","config"]}