{"version":3,"sources":["../src/utils/graphqlHelpers.ts","../src/services/GraphQLClient.ts","../src/services/CubeGraphQLClient.ts","../src/services/ApiClient.ts"],"sourcesContent":["import { CubeQueryFields, CubeQueryWhere, CubeQueryOptions } from '../types/graphql'\n\n/**\n * Constrói uma string de campos para a query GraphQL.\n * Transforma um objeto de campos selecionados em uma string formatada\n * para ser usada em uma query GraphQL do Cube.\n * \n * @param fields Objeto com os campos a serem selecionados\n * @returns String formatada com os campos no formato GraphQL\n * \n * @example\n * ```typescript\n * const fields = {\n *   vendas: {\n *     total: true,\n *     data: true,\n *     status: true\n *   },\n *   cliente: {\n *     nome: true,\n *     email: true\n *   }\n * }\n * \n * const result = buildFields(fields)\n * // Resultado:\n * //     vendas {\n * //       total\n * //       data\n * //       status\n * //     }\n * //     cliente {\n * //       nome\n * //       email\n * //     }\n * ```\n */\nexport function buildFields(fields: CubeQueryFields = {}): string {\n  return Object.entries(fields)\n    .map(([entity, entityFields]) => {\n      const selectedFields = Object.entries(entityFields || {})\n        .filter(([, selected]) => selected)\n        .map(([field]) => field)\n        .join('\\n      ')\n\n      return selectedFields\n        ? `    ${entity} {\\n      ${selectedFields}\\n    }`\n        : ''\n    })\n    .filter(Boolean)\n    .join('\\n')\n}\n\n/**\n * Constrói uma string de filtros para a query GraphQL.\n * Transforma um objeto de filtros em uma string formatada\n * para ser usada como cláusula WHERE em uma query GraphQL do Cube.\n * \n * @param where Objeto com os filtros a serem aplicados\n * @returns String formatada com os filtros no formato GraphQL\n * \n * @example\n * ```typescript\n * const where = {\n *   vendas: {\n *     total: { greaterThan: 1000, lessThan: 5000 },\n *     status: { in: ['APROVADA', 'CONCLUIDA'] }\n *   },\n *   cliente: {\n *     tipo: { equals: 'PJ' }\n *   }\n * }\n * \n * const result = buildWhereClause(where)\n * // Resultado:\n * // where: {\n * //   vendas: {\n * //     total: { greaterThan: 1000, lessThan: 5000 },\n * //     status: { in: [\"APROVADA\", \"CONCLUIDA\"] }\n * //   },\n * //   cliente: {\n * //     tipo: { equals: \"PJ\" }\n * //   }\n * // }\n * ```\n */\nexport function buildWhereClause(where: CubeQueryWhere = {}): string {\n  const conditions = Object.entries(where)\n    .map(([entity, entityFilters]) => {\n      const filters = Object.entries(entityFilters || {})\n        .map(([field, conditions]) => {\n          const filterStr = Object.entries(conditions || {})\n            .map(([operator, value]) => {\n              if (Array.isArray(value)) {\n                return `${operator}: [${value.join(', ')}]`\n              }\n              return `${operator}: ${JSON.stringify(value)}`\n            })\n            .join(', ')\n          return `${field}: {${filterStr}}`\n        })\n        .join(', ')\n      return filters ? `${entity}: {${filters}}` : ''\n    })\n    .filter(Boolean)\n    .join(', ')\n\n  return conditions ? `where: {${conditions}}` : ''\n}\n\n/**\n * Constrói uma query GraphQL completa para o Cube.\n * Combina todas as opções fornecidas (campos, filtros, paginação)\n * em uma única string de query GraphQL formatada.\n * \n * @param options Opções da query\n * @param options.limit Limite de registros por página\n * @param options.offset Número de registros para pular (paginação)\n * @param options.where Filtros a serem aplicados\n * @param options.fields Campos a serem retornados\n * @param options.defaultEntity Entidade padrão para consulta\n * @param options.defaultFields Campos padrão a serem retornados\n * @returns String da query GraphQL formatada\n * \n * @example\n * ```typescript\n * const query = buildCubeQuery({\n *   limit: 20,\n *   offset: 0,\n *   where: {\n *     vendas: {\n *       total: { greaterThan: 1000 },\n *       status: { in: ['APROVADA', 'CONCLUIDA'] }\n *     }\n *   },\n *   fields: {\n *     vendas: {\n *       id: true,\n *       total: true,\n *       status: true\n *     }\n *   },\n *   defaultEntity: 'vendas',\n *   defaultFields: ['id', 'total', 'status']\n * })\n * \n * // Resultado:\n * // query CubeQuery {\n * //   cube(\n * //     limit: 20\n * //     offset: 0\n * //     where: {\n * //       vendas: {\n * //         total: { greaterThan: 1000 },\n * //         status: { in: [\"APROVADA\", \"CONCLUIDA\"] }\n * //       }\n * //     }\n * //   ) {\n * //     vendas {\n * //       id\n * //       total\n * //       status\n * //     }\n * //   }\n * // }\n * ```\n */\nexport function buildCubeQuery(options: CubeQueryOptions = {}): string {\n  const { limit, offset, where, fields, defaultEntity, defaultFields } = options\n  const whereClause = buildWhereClause(where)\n  const selectedFields = buildFields(fields)\n\n  const limitClause = limit ? `limit: ${limit}` : ''\n  const offsetClause = offset ? `offset: ${offset}` : ''\n  const params = [limitClause, offsetClause, whereClause]\n    .filter(Boolean)\n    .join('\\n        ')\n\n  const defaultFieldsString = defaultFields\n    ? `    ${defaultEntity} {\\n      ${defaultFields.join('\\n      ')}\\n    }`\n    : ''\n\n  return `\n    query CubeQuery {\n      cube${params ? `(\\n        ${params}\\n      )` : ''} {\n${selectedFields || defaultFieldsString}\n      }\n    }\n  `.trim()\n} ","import axios, { AxiosError, AxiosInstance } from 'axios'\nimport { ApiError, ApiResponse, RequestCallbacks } from '../types/types'\n\n/**\n * Interface para configuração do cliente GraphQL\n */\nexport interface GraphQLConfig {\n  baseURL: string\n  timeout?: number\n  headers?: Record<string, string>\n}\n\n/**\n * Interface para variáveis da query GraphQL\n */\nexport interface GraphQLVariables {\n  [key: string]: unknown\n}\n\n/**\n * Cliente base para realizar consultas GraphQL.\n * Fornece uma interface simplificada para executar queries e mutations GraphQL\n * com tratamento automático de erros e padronização de respostas.\n * \n * Características principais:\n * - Suporte a queries e mutations\n * - Tratamento automático de erros\n * - Respostas padronizadas\n * - Tipagem forte com TypeScript\n * - Suporte a variáveis dinâmicas\n * \n * @example\n * ```typescript\n * // Configuração do cliente\n * const client = new GraphQLClient({\n *   baseURL: 'https://api.exemplo.com/graphql',\n *   headers: {\n *     'Authorization': 'Bearer seu-token'\n *   }\n * })\n * \n * // Exemplo de query com variáveis\n * const query = `\n *   query GetUser($id: ID!) {\n *     user(id: $id) {\n *       id\n *       name\n *       email\n *       posts {\n *         id\n *         title\n *       }\n *     }\n *   }\n * `\n * \n * await client.query(query, { id: '123' }, {\n *   onSuccess: (response) => {\n *     const user = response.data.user\n *     console.log('Usuário:', user.name)\n *     console.log('Posts:', user.posts.length)\n *   },\n *   onError: (error) => console.error('Erro:', error.message)\n * })\n * \n * // Exemplo de mutation\n * const mutation = `\n *   mutation CreateUser($input: UserInput!) {\n *     createUser(input: $input) {\n *       id\n *       name\n *       email\n *     }\n *   }\n * `\n * \n * const variables = {\n *   input: {\n *     name: 'João Silva',\n *     email: 'joao@exemplo.com',\n *     password: 'senha123'\n *   }\n * }\n * \n * await client.mutate(mutation, variables, {\n *   onSuccess: (response) => console.log('Usuário criado:', response.data.createUser),\n *   onError: (error) => console.error('Erro ao criar usuário:', error.message)\n * })\n * ```\n */\nexport class GraphQLClient {\n  protected api: AxiosInstance\n\n  /**\n   * Cria uma nova instância do cliente GraphQL\n   * @param config Configurações do cliente\n   * @param config.baseURL URL do endpoint GraphQL\n   * @param config.timeout Tempo limite em milissegundos (padrão: 30000)\n   * @param config.headers Headers customizados para todas as requisições\n   */\n  constructor(config: GraphQLConfig) {\n    this.api = axios.create({\n      baseURL: config.baseURL,\n      timeout: config.timeout || 30000,\n      headers: {\n        'Content-Type': 'application/json',\n        ...config.headers,\n      },\n    })\n  }\n\n  /**\n   * Extrai e padroniza os dados de erro do Axios\n   * @param error Erro original do Axios\n   * @returns Objeto de erro padronizado com mensagem, status e detalhes\n   * @internal\n   */\n  protected extractErrorData(error: AxiosError): ApiError {\n    return {\n      message:\n        (error.response?.data as { message?: string })?.message ||\n        'Ocorreu um erro na requisição',\n      status: error.response?.status || 500,\n      code: error.code,\n      details: error.response?.data,\n    }\n  }\n\n  /**\n   * Extrai e padroniza os dados da resposta do Axios\n   * @param response Resposta original do Axios\n   * @returns Objeto de resposta padronizado com dados, status e mensagem\n   * @internal\n   */\n  protected extractResponseData<T>(response: any): ApiResponse<T> {\n    return {\n      data: response.data.data,\n      status: response.status,\n      message: 'Operação realizada com sucesso',\n    }\n  }\n\n  /**\n   * Executa uma query GraphQL\n   * @param query String da query GraphQL\n   * @param variables Variáveis a serem passadas para a query\n   * @param callbacks Objeto com callbacks de sucesso e erro\n   * @param callbacks.onSuccess Callback chamado quando a query é bem sucedida\n   * @param callbacks.onError Callback chamado quando ocorre um erro\n   * \n   * @example\n   * ```typescript\n   * const query = `\n   *   query GetProducts($category: String!, $limit: Int) {\n   *     products(category: $category, limit: $limit) {\n   *       id\n   *       name\n   *       price\n   *     }\n   *   }\n   * `\n   * \n   * const variables = {\n   *   category: 'electronics',\n   *   limit: 10\n   * }\n   * \n   * await client.query(query, variables, {\n   *   onSuccess: (response) => console.log('Produtos:', response.data.products),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * ```\n   */\n  async query<T>(\n    query: string,\n    variables: GraphQLVariables = {},\n    { onSuccess, onError }: RequestCallbacks<T> = {},\n  ): Promise<void> {\n    try {\n      const response = await this.api.post('', {\n        query,\n        variables,\n      })\n      const formattedResponse = this.extractResponseData<T>(response)\n      onSuccess?.(formattedResponse)\n    } catch (error) {\n      const formattedError = this.extractErrorData(error as AxiosError)\n      onError?.(formattedError)\n    }\n  }\n\n  /**\n   * Executa uma mutation GraphQL\n   * @param mutation String da mutation GraphQL\n   * @param variables Variáveis a serem passadas para a mutation\n   * @param callbacks Objeto com callbacks de sucesso e erro\n   * @param callbacks.onSuccess Callback chamado quando a mutation é bem sucedida\n   * @param callbacks.onError Callback chamado quando ocorre um erro\n   * \n   * @example\n   * ```typescript\n   * const mutation = `\n   *   mutation UpdateProduct($id: ID!, $input: ProductInput!) {\n   *     updateProduct(id: $id, input: $input) {\n   *       id\n   *       name\n   *       price\n   *     }\n   *   }\n   * `\n   * \n   * const variables = {\n   *   id: '123',\n   *   input: {\n   *     name: 'Novo Nome',\n   *     price: 99.99\n   *   }\n   * }\n   * \n   * await client.mutate(mutation, variables, {\n   *   onSuccess: (response) => console.log('Produto atualizado:', response.data.updateProduct),\n   *   onError: (error) => console.error('Erro ao atualizar:', error.message)\n   * })\n   * ```\n   */\n  async mutate<T>(\n    mutation: string,\n    variables: GraphQLVariables = {},\n    { onSuccess, onError }: RequestCallbacks<T> = {},\n  ): Promise<void> {\n    return this.query<T>(mutation, variables, { onSuccess, onError })\n  }\n} ","import { GraphQLClient } from './GraphQLClient'\nimport { CubeQueryOptions } from '../types/graphql'\nimport { buildCubeQuery } from '../utils/graphqlHelpers'\nimport { RequestCallbacks, ApiResponse } from '../types/types'\n\n/**\n * Cliente específico para realizar consultas GraphQL no Cube.\n * Estende o GraphQLClient base adicionando funcionalidades específicas para\n * consultas no Cube, como construção automática de queries e tratamento\n * especializado de respostas.\n * \n * Características principais:\n * - Construção automática de queries Cube\n * - Suporte a filtros complexos\n * - Paginação integrada\n * - Seleção de campos dinâmica\n * - Tratamento especializado de respostas Cube\n * \n * @example\n * ```typescript\n * // Configuração do cliente\n * const client = new CubeGraphQLClient({\n *   baseURL: 'http://localhost:4000',\n *   timeout: 30000,\n *   headers: {\n *     'Authorization': 'Bearer seu-token'\n *   }\n * })\n * \n * // Exemplo de consulta simples\n * await client.query('/cubejs-api/graphql', {\n *   limit: 10,\n *   fields: {\n *     vendas: {\n *       total: true,\n *       data: true,\n *       cliente: true\n *     }\n *   }\n * }, {\n *   onSuccess: (response) => console.log('Vendas:', response.data),\n *   onError: (error) => console.error('Erro:', error.message)\n * })\n * \n * // Exemplo de consulta com filtros complexos\n * await client.query('/cubejs-api/graphql', {\n *   limit: 20,\n *   offset: 0,\n *   where: {\n *     vendas: {\n *       total: { greaterThan: 1000 },\n *       data: { between: ['2024-01-01', '2024-12-31'] },\n *       status: { in: ['APROVADA', 'CONCLUIDA'] }\n *     },\n *     cliente: {\n *       tipo: { equals: 'PJ' },\n *       regiao: { in: ['SUDESTE', 'SUL'] }\n *     }\n *   },\n *   fields: {\n *     vendas: {\n *       id: true,\n *       total: true,\n *       data: true,\n *       status: true\n *     },\n *     cliente: {\n *       nome: true,\n *       tipo: true,\n *       regiao: true\n *     }\n *   },\n *   defaultEntity: 'vendas',\n *   defaultFields: ['id', 'total', 'data', 'status']\n * }, {\n *   onSuccess: (response) => {\n *     console.log('Total de registros:', response.data.length)\n *     console.log('Dados:', response.data)\n *   },\n *   onError: (error) => {\n *     console.error('Erro na consulta:', error.message)\n *     console.error('Detalhes:', error.details)\n *   }\n * })\n * ```\n */\nexport class CubeGraphQLClient extends GraphQLClient {\n  /**\n   * Realiza uma consulta GraphQL específica para o Cube\n   * @param url Endpoint da API GraphQL do Cube\n   * @param options Opções da query do Cube\n   * @param options.limit Limite de registros por página\n   * @param options.offset Número de registros para pular (paginação)\n   * @param options.where Filtros a serem aplicados na consulta\n   * @param options.fields Campos a serem retornados na consulta\n   * @param options.defaultEntity Entidade padrão para consulta\n   * @param options.defaultFields Campos padrão a serem retornados\n   * @param callbacks Callbacks para sucesso e erro\n   * \n   * @example\n   * ```typescript\n   * // Exemplo de consulta com agregações\n   * await client.query('/cubejs-api/graphql', {\n   *   where: {\n   *     vendas: {\n   *       data: { equals: '2024-03-01' }\n   *     }\n   *   },\n   *   fields: {\n   *     vendas: {\n   *       total_vendas: true,\n   *       quantidade_pedidos: true,\n   *       ticket_medio: true\n   *     }\n   *   }\n   * }, {\n   *   onSuccess: (response) => console.log('Métricas:', response.data),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * ```\n   */\n  async query<T>(\n    url: string,\n    options: CubeQueryOptions = {},\n    callbacks: RequestCallbacks<T> = {},\n  ): Promise<void> {\n    const query = buildCubeQuery(options)\n    await this.api.post(url, { query })\n    return super.query<T>(query, {}, callbacks)\n  }\n\n  /**\n   * Extrai dados da resposta do Axios e padroniza o formato específico do Cube\n   * @param response Resposta original do Axios\n   * @returns Objeto de resposta padronizado com dados do Cube\n   * @internal\n   */\n  protected extractResponseData<T>(response: any): ApiResponse<T> {\n    return {\n      data: response.data.data.cube,\n      status: response.status,\n      message: 'Operação realizada com sucesso',\n    }\n  }\n} ","import axios, { AxiosError, AxiosInstance, AxiosResponse } from 'axios'\nimport {\n  ApiClientConfig,\n  ApiError,\n  ApiResponse,\n  RequestCallbacks,\n  RequestConfig,\n  RequestInterceptor,\n  ResponseInterceptor,\n  ErrorInterceptor,\n  QueryParams,\n} from '../types/types'\n\n/**\n * Cliente HTTP para requisições API com tratamento de erros e respostas padronizadas.\n * Fornece uma interface simplificada para realizar requisições HTTP com tratamento automático\n * de erros e padronização de respostas, incluindo suporte a interceptadores.\n * \n * @example\n * ```typescript\n * // Criando uma instância do cliente\n * const api = new ApiClient({\n *   baseURL: 'https://api.exemplo.com',\n *   timeout: 5000,\n *   headers: {\n *     'Authorization': 'Bearer seu-token'\n *   }\n * })\n * \n * // Adicionando interceptador de requisição para token dinâmico\n * api.addRequestInterceptor((config) => {\n *   const token = getToken()\n *   if (token) {\n *     config.headers = {\n *       ...config.headers,\n *       Authorization: `Bearer ${token}`\n *     }\n *   }\n *   return config\n * })\n * \n * // Exemplo de GET com callbacks\n * api.get('/usuarios', {\n *   onSuccess: (response) => {\n *     console.log('Dados:', response.data)\n *     console.log('Status:', response.status)\n *     console.log('Mensagem:', response.message)\n *   },\n *   onError: (error) => {\n *     console.error('Erro:', error.message)\n *     console.error('Status:', error.status)\n *     console.error('Detalhes:', error.details)\n *   }\n * })\n * \n * // Exemplo de POST com dados\n * const novoUsuario = {\n *   nome: 'João Silva',\n *   email: 'joao@exemplo.com'\n * }\n * \n * api.post('/usuarios', novoUsuario, {\n *   onSuccess: (response) => console.log('Usuário criado:', response.data),\n *   onError: (error) => console.error('Erro ao criar usuário:', error.message)\n * })\n * ```\n */\nexport class ApiClient {\n  private api: AxiosInstance\n  private requestInterceptors: RequestInterceptor[] = []\n  private responseInterceptors: ResponseInterceptor[] = []\n  private errorInterceptors: ErrorInterceptor[] = []\n\n  /**\n   * Cria uma nova instância do cliente API\n   * @param config Configurações do cliente\n   * @param config.baseURL URL base para todas as requisições\n   * @param config.timeout Tempo limite em milissegundos (padrão: 10000)\n   * @param config.headers Headers customizados para todas as requisições\n   */\n  constructor(config: ApiClientConfig) {\n    this.api = axios.create({\n      baseURL: config.baseURL,\n      timeout: config.timeout || 10000,\n      headers: {\n        'Content-Type': 'application/json',\n        ...config.headers,\n      },\n    })\n  }\n\n  /**\n   * Adiciona um interceptador de requisição.\n   * Permite modificar a configuração da requisição antes do envio.\n   * \n   * @param interceptor Função que recebe e retorna a configuração da requisição\n   * \n   * @example\n   * ```typescript\n   * api.addRequestInterceptor((config) => {\n   *   const token = storage.getToken()\n   *   if (token) {\n   *     config.headers = {\n   *       ...config.headers,\n   *       Authorization: `Bearer ${token}`\n   *     }\n   *   }\n   *   return config\n   * })\n   * ```\n   */\n  addRequestInterceptor(interceptor: RequestInterceptor): void {\n    this.requestInterceptors.push(interceptor)\n  }\n\n  /**\n   * Adiciona um interceptador de resposta.\n   * Permite processar a resposta antes de retorná-la para o callback.\n   * \n   * @param interceptor Função que recebe e retorna a resposta processada\n   * \n   * @example\n   * ```typescript\n   * api.addResponseInterceptor((response) => {\n   *   console.log('Resposta interceptada:', response.status)\n   *   return {\n   *     ...response,\n   *     message: `[${new Date().toISOString()}] ${response.message}`\n   *   }\n   * })\n   * ```\n   */\n  addResponseInterceptor(interceptor: ResponseInterceptor): void {\n    this.responseInterceptors.push(interceptor)\n  }\n\n  /**\n   * Adiciona um interceptador de erro.\n   * Permite processar erros antes de retorná-los para o callback.\n   * \n   * @param interceptor Função que recebe um erro e retorna erro processado ou nova resposta\n   * \n   * @example\n   * ```typescript\n   * api.addErrorInterceptor(async (error) => {\n   *   if (error.status === 401) {\n   *     await refreshToken()\n   *     // Pode retornar um novo ApiResponse ou o erro processado\n   *     return {\n   *       ...error,\n   *       message: 'Token renovado automaticamente'\n   *     }\n   *   }\n   *   return error\n   * })\n   * ```\n   */\n  addErrorInterceptor(interceptor: ErrorInterceptor): void {\n    this.errorInterceptors.push(interceptor)\n  }\n\n  /**\n   * Remove um interceptador de requisição específico.\n   * @param interceptor Interceptador a ser removido\n   */\n  removeRequestInterceptor(interceptor: RequestInterceptor): void {\n    const index = this.requestInterceptors.indexOf(interceptor)\n    if (index > -1) {\n      this.requestInterceptors.splice(index, 1)\n    }\n  }\n\n  /**\n   * Remove um interceptador de resposta específico.\n   * @param interceptor Interceptador a ser removido\n   */\n  removeResponseInterceptor(interceptor: ResponseInterceptor): void {\n    const index = this.responseInterceptors.indexOf(interceptor)\n    if (index > -1) {\n      this.responseInterceptors.splice(index, 1)\n    }\n  }\n\n  /**\n   * Remove um interceptador de erro específico.\n   * @param interceptor Interceptador a ser removido\n   */\n  removeErrorInterceptor(interceptor: ErrorInterceptor): void {\n    const index = this.errorInterceptors.indexOf(interceptor)\n    if (index > -1) {\n      this.errorInterceptors.splice(index, 1)\n    }\n  }\n\n  /**\n   * Remove todos os interceptadores.\n   */\n  clearInterceptors(): void {\n    this.requestInterceptors = []\n    this.responseInterceptors = []\n    this.errorInterceptors = []\n  }\n\n  /**\n   * Aplica todos os interceptadores de requisição à configuração.\n   * @param config Configuração inicial da requisição\n   * @returns Configuração processada pelos interceptadores\n   * @internal\n   */\n  private applyRequestInterceptors(config: RequestConfig): RequestConfig {\n    return this.requestInterceptors.reduce(\n      (processedConfig, interceptor) => interceptor(processedConfig),\n      config\n    )\n  }\n\n  /**\n   * Aplica todos os interceptadores de resposta.\n   * @param response Resposta original\n   * @returns Resposta processada pelos interceptadores\n   * @internal\n   */\n  private applyResponseInterceptors<T>(response: ApiResponse<T>): ApiResponse<T> {\n    return this.responseInterceptors.reduce(\n      (processedResponse, interceptor) => interceptor(processedResponse),\n      response\n    )\n  }\n\n  /**\n   * Aplica todos os interceptadores de erro.\n   * @param error Erro original\n   * @returns Erro processado ou nova resposta\n   * @internal\n   */\n  private async applyErrorInterceptors(error: ApiError): Promise<ApiError | ApiResponse<unknown>> {\n    let processedError: ApiError | ApiResponse<unknown> = error\n\n    for (const interceptor of this.errorInterceptors) {\n      try {\n        const result = await interceptor(error)\n        processedError = result\n        // Se um interceptador retornar uma ApiResponse, para o processamento\n        if ('data' in result) {\n          break\n        }\n      } catch (interceptorError) {\n        // Se um interceptador falhar, continua com o próximo\n        console.warn('Erro no interceptador de erro:', interceptorError)\n      }\n    }\n\n    return processedError\n  }\n\n  /**\n   * Extrai e padroniza os dados de erro do Axios\n   * @param error Erro original do Axios\n   * @returns Objeto de erro padronizado\n   * @internal\n   */\n  private extractErrorData(error: AxiosError): ApiError {\n    return {\n      message:\n        (error.response?.data as { message?: string })?.message ||\n        'Ocorreu um erro na requisição',\n      status: error.response?.status || 500,\n      code: error.code,\n      details: error.response?.data,\n    }\n  }\n\n  /**\n   * Extrai e padroniza os dados da resposta do Axios\n   * @param response Resposta original do Axios\n   * @returns Objeto de resposta padronizado\n   * @internal\n   */\n  private extractResponseData<T>(response: AxiosResponse<T>): ApiResponse<T> {\n    const responseData = response.data as { message?: string }\n    return {\n      data: response.data,\n      status: response.status,\n      message: responseData.message || 'Operação realizada com sucesso',\n    }\n  }\n\n  /**\n   * Realiza uma requisição GET\n   * @param url Caminho da requisição (será concatenado com baseURL)\n   * @param paramsOrCallbacks Parâmetros de query string ou objeto com callbacks\n   * @param callbacks Objeto com callbacks de sucesso e erro (opcional se parâmetros forem fornecidos)\n   * \n   * @example\n   * ```typescript\n   * // GET simples\n   * api.get('/usuarios/1', {\n   *   onSuccess: (response) => console.log('Usuário:', response.data),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * \n   * // GET com parâmetros\n   * api.get('/votos', { userId: '123', agendaId: '456' }, {\n   *   onSuccess: (response) => console.log('Voto:', response.data),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * ```\n   */\n  async get<T>(\n    url: string,\n    paramsOrCallbacks?: QueryParams | RequestCallbacks<T>,\n    callbacks?: RequestCallbacks<T>\n  ): Promise<void> {\n    // Determina se o primeiro parâmetro são parâmetros ou callbacks\n    let params: QueryParams | undefined\n    let finalCallbacks: RequestCallbacks<T>\n\n    if (paramsOrCallbacks && ('onSuccess' in paramsOrCallbacks || 'onError' in paramsOrCallbacks)) {\n      // Primeiro parâmetro são callbacks\n      params = undefined\n      finalCallbacks = paramsOrCallbacks as RequestCallbacks<T>\n    } else {\n      // Primeiro parâmetro são parâmetros\n      params = paramsOrCallbacks as QueryParams\n      finalCallbacks = callbacks || {}\n    }\n\n    const { onSuccess, onError } = finalCallbacks\n\n    try {\n      // Aplica interceptadores de requisição\n      const requestConfig = this.applyRequestInterceptors({\n        url,\n        method: 'GET',\n        headers: {},\n        params\n      })\n\n      const response = await this.api.get<T>(requestConfig.url || url, {\n        headers: requestConfig.headers,\n        timeout: requestConfig.timeout,\n        params: requestConfig.params || params\n      })\n\n      let formattedResponse = this.extractResponseData<T>(response)\n\n      // Aplica interceptadores de resposta\n      formattedResponse = this.applyResponseInterceptors(formattedResponse)\n\n      onSuccess?.(formattedResponse)\n    } catch (error) {\n      let formattedError = this.extractErrorData(error as AxiosError)\n\n      // Aplica interceptadores de erro\n      const processedError = await this.applyErrorInterceptors(formattedError)\n\n      // Se o interceptador retornou uma ApiResponse, chama onSuccess\n      if ('data' in processedError) {\n        onSuccess?.(processedError as ApiResponse<T>)\n      } else {\n        onError?.(processedError as ApiError)\n      }\n    }\n  }\n\n  /**\n   * Realiza uma requisição POST\n   * @param url Caminho da requisição (será concatenado com baseURL)\n   * @param data Dados a serem enviados no corpo da requisição\n   * @param callbacks Objeto com callbacks de sucesso e erro\n   * @param callbacks.onSuccess Callback chamado em caso de sucesso\n   * @param callbacks.onError Callback chamado em caso de erro\n   * \n   * @example\n   * ```typescript\n   * const dados = { nome: 'João', idade: 30 }\n   * api.post('/usuarios', dados, {\n   *   onSuccess: (response) => console.log('Criado:', response.data),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * ```\n   */\n  async post<T>(\n    url: string,\n    data: unknown,\n    { onSuccess, onError }: RequestCallbacks<T> = {},\n  ): Promise<void> {\n    try {\n      // Aplica interceptadores de requisição\n      const requestConfig = this.applyRequestInterceptors({\n        url,\n        method: 'POST',\n        headers: {},\n        data\n      })\n\n      const response = await this.api.post<T>(\n        requestConfig.url || url,\n        requestConfig.data || data,\n        {\n          headers: requestConfig.headers,\n          timeout: requestConfig.timeout\n        }\n      )\n\n      let formattedResponse = this.extractResponseData<T>(response)\n\n      // Aplica interceptadores de resposta\n      formattedResponse = this.applyResponseInterceptors(formattedResponse)\n\n      onSuccess?.(formattedResponse)\n    } catch (error) {\n      let formattedError = this.extractErrorData(error as AxiosError)\n\n      // Aplica interceptadores de erro\n      const processedError = await this.applyErrorInterceptors(formattedError)\n\n      // Se o interceptador retornou uma ApiResponse, chama onSuccess\n      if ('data' in processedError) {\n        onSuccess?.(processedError as ApiResponse<T>)\n      } else {\n        onError?.(processedError as ApiError)\n      }\n    }\n  }\n\n  /**\n   * Realiza uma requisição PUT\n   * @param url Caminho da requisição (será concatenado com baseURL)\n   * @param data Dados a serem enviados no corpo da requisição\n   * @param callbacks Objeto com callbacks de sucesso e erro\n   * @param callbacks.onSuccess Callback chamado em caso de sucesso\n   * @param callbacks.onError Callback chamado em caso de erro\n   * \n   * @example\n   * ```typescript\n   * const atualizacao = { idade: 31 }\n   * api.put('/usuarios/1', atualizacao, {\n   *   onSuccess: (response) => console.log('Atualizado:', response.data),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * ```\n   */\n  async put<T>(\n    url: string,\n    data: unknown,\n    { onSuccess, onError }: RequestCallbacks<T> = {},\n  ): Promise<void> {\n    try {\n      // Aplica interceptadores de requisição\n      const requestConfig = this.applyRequestInterceptors({\n        url,\n        method: 'PUT',\n        headers: {},\n        data\n      })\n\n      const response = await this.api.put<T>(\n        requestConfig.url || url,\n        requestConfig.data || data,\n        {\n          headers: requestConfig.headers,\n          timeout: requestConfig.timeout\n        }\n      )\n\n      let formattedResponse = this.extractResponseData<T>(response)\n\n      // Aplica interceptadores de resposta\n      formattedResponse = this.applyResponseInterceptors(formattedResponse)\n\n      onSuccess?.(formattedResponse)\n    } catch (error) {\n      let formattedError = this.extractErrorData(error as AxiosError)\n\n      // Aplica interceptadores de erro\n      const processedError = await this.applyErrorInterceptors(formattedError)\n\n      // Se o interceptador retornou uma ApiResponse, chama onSuccess\n      if ('data' in processedError) {\n        onSuccess?.(processedError as ApiResponse<T>)\n      } else {\n        onError?.(processedError as ApiError)\n      }\n    }\n  }\n\n  /**\n   * Realiza uma requisição DELETE\n   * @param url Caminho da requisição (será concatenado com baseURL)\n   * @param paramsOrCallbacks Parâmetros de query string ou objeto com callbacks\n   * @param callbacks Objeto com callbacks de sucesso e erro (opcional se parâmetros forem fornecidos)\n   * \n   * @example\n   * ```typescript\n   * // DELETE simples\n   * api.delete('/usuarios/1', {\n   *   onSuccess: (response) => console.log('Deletado com sucesso'),\n   *   onError: (error) => console.error('Erro ao deletar:', error.message)\n   * })\n   * \n   * // DELETE com parâmetros\n   * api.delete('/votos', { userId: '123', agendaId: '456' }, {\n   *   onSuccess: (response) => console.log('Voto removido:', response.data),\n   *   onError: (error) => console.error('Erro:', error.message)\n   * })\n   * ```\n   */\n  async delete<T>(\n    url: string,\n    paramsOrCallbacks?: QueryParams | RequestCallbacks<T>,\n    callbacks?: RequestCallbacks<T>\n  ): Promise<void> {\n    // Determina se o primeiro parâmetro são parâmetros ou callbacks\n    let params: QueryParams | undefined\n    let finalCallbacks: RequestCallbacks<T>\n\n    if (paramsOrCallbacks && ('onSuccess' in paramsOrCallbacks || 'onError' in paramsOrCallbacks)) {\n      // Primeiro parâmetro são callbacks\n      params = undefined\n      finalCallbacks = paramsOrCallbacks as RequestCallbacks<T>\n    } else {\n      // Primeiro parâmetro são parâmetros\n      params = paramsOrCallbacks as QueryParams\n      finalCallbacks = callbacks || {}\n    }\n\n    const { onSuccess, onError } = finalCallbacks\n\n    try {\n      // Aplica interceptadores de requisição\n      const requestConfig = this.applyRequestInterceptors({\n        url,\n        method: 'DELETE',\n        headers: {},\n        params\n      })\n\n      const response = await this.api.delete<T>(requestConfig.url || url, {\n        headers: requestConfig.headers,\n        timeout: requestConfig.timeout,\n        params: requestConfig.params || params\n      })\n\n      let formattedResponse = this.extractResponseData<T>(response)\n\n      // Aplica interceptadores de resposta\n      formattedResponse = this.applyResponseInterceptors(formattedResponse)\n\n      onSuccess?.(formattedResponse)\n    } catch (error) {\n      let formattedError = this.extractErrorData(error as AxiosError)\n\n      // Aplica interceptadores de erro\n      const processedError = await this.applyErrorInterceptors(formattedError)\n\n      // Se o interceptador retornou uma ApiResponse, chama onSuccess\n      if ('data' in processedError) {\n        onSuccess?.(processedError as ApiResponse<T>)\n      } else {\n        onError?.(processedError as ApiError)\n      }\n    }\n  }\n}\n"],"mappings":"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","names":["conditions","axios"]}