import type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'; import { safeJsonTransformResponse } from '../request/json'; export type ServiceRequestResult = | { data: T; error: null; response: AxiosResponse>; } | { data: null; error: AxiosError>; response: AxiosResponse> | undefined; }; export const safeJsonRequestConfig: Pick = { transformResponse: [safeJsonTransformResponse] }; export function normalizeStringId(id: string | number) { return String(id); } export function normalizeNullableStringId(id: string | number | null | undefined) { if (id === null || id === undefined || id === '') { return null; } return String(id); } export function mapServiceResult( result: ServiceRequestResult, mapper: (data: TInput) => TOutput ): ServiceRequestResult { if (result.error || result.data === null) { return result as ServiceRequestResult; } return { ...result, data: mapper(result.data) }; }