UNPKG

axios-case-converter

Version:

Axios transformer/interceptor that converts snake_case/camelCase

72 lines (71 loc) 2.52 kB
import { Options as NoCaseOptions } from "camel-case"; import { AxiosInstance, AxiosRequestConfig, AxiosTransformer } from "axios"; /** string transformers (change-case functions) */ export interface Transformer { (input: string, options?: NoCaseOptions): string; } export declare type Transformers = { snake?: Transformer; camel?: Transformer; header?: Transformer; }; /** decorators for string transformers */ export interface PreserveArrayBrackets { (fn: Transformer): Transformer; } export interface PreserveSpecificKeys { (fn: Transformer, keys: string[] | PreservedKeysCondition): Transformer; } /** objects which can be handled in object transformers */ export interface TransformableObject { [key: string]: unknown; } export declare type Transformable = (unknown[] | object | FormData | URLSearchParams) & TransformableObject; /** object transformers and their factories */ export interface PreservedKeysCondition { (input: string, options?: NoCaseOptions): boolean; } export declare type TransformOptions = { overwrite?: boolean; preservedKeys?: string[] | PreservedKeysCondition; }; export interface TransformUsingCallback { (data: unknown, fn: Transformer, options?: TransformOptions | boolean): unknown; } export interface Transform { (data: Parameters<TransformUsingCallback>[0], options?: Parameters<TransformUsingCallback>[2]): unknown; } export interface CreateTransform { (fn: Transformer): Transform; } export interface CreateTransformOf { (type: keyof Transformers, options?: Transformers): Transform; } export interface CreateTransforms { (options?: Transformers): Record<keyof Transformers, Transform>; } /** converters for axios and their factories */ export declare type ConverterOptions = Omit<TransformOptions, "overwrite"> & { caseFunctions?: Transformers; ignoreHeaders?: boolean; }; export interface AxiosInterceptor { (config: AxiosRequestConfig): AxiosRequestConfig; } export interface CreateAxiosInterceptor { (options?: ConverterOptions): AxiosInterceptor; } export interface CreateAxiosTransformer { (options?: ConverterOptions): AxiosTransformer; } /** converter applier */ export declare type ApplyConvertersOptions = ConverterOptions & { converters?: { snakeRequest?: AxiosTransformer; camelResponse?: AxiosTransformer; snakeParams?: AxiosInterceptor; }; }; export interface ApplyConverters { (axios: AxiosInstance, options?: ApplyConvertersOptions): AxiosInstance; }