{"version":3,"sources":["../src/utils/api-helpers.ts"],"names":[],"mappings":";;;AA8BO,SAAS,YAAA,CACd,QAAA,EACA,WAAA,GAA+B,KAAA,EACtB;AACT,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,QAAA,CAAS,IAAA,IAAQ,SAAS,SAAS,CAAA;AAC1D,EAAA,OAAO,OAAA,KAAY,OAAO,WAAW,CAAA;AACvC;AAgCA,eAAsB,gBAAA,CACpB,OACA,OAAA,EAgBmB;AACnB,EAAA,MAAM,eAAA,GAAkB,SAAS,eAAA,IAAmB,kBAAA;AACpD,EAAA,MAAM,sBAAA,GACJ,SAAS,sBAAA,IAA0B,eAAA;AAErC,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,EAAM;AAC7B,IAAA,MAAM,WAAA,GAAc,SAAS,WAAA,IAAe,KAAA;AAE5C,IAAA,IAAI,YAAA,CAAa,QAAA,EAAU,WAAW,CAAA,EAAG;AACvC,MAAA,MAAM,cAAA,GACJ,SAAS,UAAA,IACT,QAAA,CAAS,OACT,QAAA,CAAS,OAAA,IACT,SAAS,YAAA,IACT,SAAA;AACF,MAAA,OAAA,EAAS,SAAA,GAAY,QAAA,CAAS,IAAA,EAAM,cAAc,CAAA;AAClD,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB;AAEA,IAAA,MAAM,YAAA,GACJ,SAAS,QAAA,IACT,QAAA,CAAS,OACT,QAAA,CAAS,OAAA,IACT,SAAS,YAAA,IACT,eAAA;AACF,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,SAAA,IAAa,eAAA;AACvD,IAAA,OAAA,EAAS,OAAA,GAAU,cAAc,OAAO,CAAA;AACxC,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,eACJ,OAAA,EAAS,QAAA,KACR,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,sBAAA,CAAA;AAC5C,IAAA,OAAA,EAAS,OAAA,GAAU,cAAc,eAAe,CAAA;AAChD,IAAA,OAAO,IAAA;AAAA,EACT;AACF","file":"chunk-P5EGCT3Y.cjs","sourcesContent":["/**\n * API 辅助函数\n *\n * 提供 API 响应判断、安全执行等通用工具。\n * 从 types/api.ts 迁移而来，types/ 目录应仅包含类型定义。\n */\n\nimport type { ApiResponse } from '../types/api';\n\n/**\n * 判断 API 响应是否成功\n *\n * 仅通过 `code` 与 `successCode` 比较来判断，不做隐式回退。\n * 如果后端使用 `0` 作为成功码，请传 `successCode: 0`。\n *\n * @param response - API 响应对象\n * @param successCode - 成功状态码，默认 '200'\n * @returns 是否成功\n *\n * @example\n * ```ts\n * const res = await fetchUser(1);\n * if (isApiSuccess(res)) {\n *   console.log(res.data);\n * }\n *\n * // 后端使用 0 作为成功码\n * if (isApiSuccess(res, 0)) { ... }\n * ```\n */\nexport function isApiSuccess<T>(\n  response: ApiResponse<T> | null | undefined,\n  successCode: string | number = '200',\n): boolean {\n  if (!response) return false;\n  const codeStr = String(response.code ?? response.errorCode);\n  return codeStr === String(successCode);\n}\n\n/**\n * 安全地执行 API 调用并处理错误\n *\n * @param apiFn - API 调用函数\n * @param options - 配置选项\n * @returns API 响应数据或 null\n *\n * @example\n * ```ts\n * // 获取数据\n * const data = await executeApiAction(\n *   () => fetchUser(1),\n *   {\n *     onSuccess: (data, msg) => message.success(msg),\n *     onError: (msg) => message.error(msg),\n *   }\n * );\n *\n * // 执行操作并判断成功\n * const data = await executeApiAction(\n *   () => deleteUser(id),\n *   {\n *     successMsg: 'Deleted',\n *     onSuccess: (data, msg) => message.success(msg),\n *     onError: (msg) => message.error(msg),\n *   }\n * );\n * if (data !== null) actionRef.current?.reload();\n * ```\n */\nexport async function executeApiAction<T>(\n  apiFn: () => Promise<ApiResponse<T>>,\n  options?: {\n    /** 成功时的提示消息 */\n    successMsg?: string;\n    /** 失败时的提示消息 (覆盖 API 返回的 msg) */\n    errorMsg?: string;\n    /** 成功回调 */\n    onSuccess?: (data: T, msg: string) => void;\n    /** 错误回调 */\n    onError?: (msg: string, code: string | number) => void;\n    /** 成功状态码 */\n    successCode?: string | number;\n    /** 默认失败提示，默认 'Operation failed' */\n    defaultErrorMsg?: string;\n    /** 默认网络错误提示，默认 'Network error' */\n    defaultNetworkErrorMsg?: string;\n  },\n): Promise<T | null> {\n  const defaultErrorMsg = options?.defaultErrorMsg ?? 'Operation failed';\n  const defaultNetworkErrorMsg =\n    options?.defaultNetworkErrorMsg ?? 'Network error';\n\n  try {\n    const response = await apiFn();\n    const successCode = options?.successCode ?? '200';\n\n    if (isApiSuccess(response, successCode)) {\n      const successMessage =\n        options?.successMsg ??\n        response.msg ??\n        response.message ??\n        response.errorMessage ??\n        'Success';\n      options?.onSuccess?.(response.data, successMessage);\n      return response.data;\n    }\n\n    const errorMessage =\n      options?.errorMsg ??\n      response.msg ??\n      response.message ??\n      response.errorMessage ??\n      defaultErrorMsg;\n    const errCode = response.code ?? response.errorCode ?? 'UNKNOWN_ERROR';\n    options?.onError?.(errorMessage, errCode);\n    return null;\n  } catch (error) {\n    const errorMessage =\n      options?.errorMsg ??\n      (error instanceof Error ? error.message : defaultNetworkErrorMsg);\n    options?.onError?.(errorMessage, 'NETWORK_ERROR');\n    return null;\n  }\n}\n"]}