8000 GitHub - drpiou/axios: Returns unified axios responses.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

drpiou/axios

Repository files navigation

@drpiou/axios

Licence Package.json version Stage

The @drpiou/axios package wraps the axios package.

  • make axios request as usual.
  • test the requests before the api implementation as it will be.
  • cancel axios requests.
  • log axios responses.
  • written in TypeScript.

Installation

yarn add @drpiou/axios

Peer Dependencies

yarn add axios@^0.27.2

Example

import { prepareAxios } from '@drpiou/axios';

const request = prepareAxios({
  baseURL: 'https://api.domain.com',
  url: 'test',
});

const response = await request.start();

// or
//
// void request.start().then((response) => {});
//
// setTimeout(request.abort, 1000);

Documentation

import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';

export type prepareAxios = <SD = any, ED = any, CD = any>(
  config: AxiosConfig<CD>,
  options?: AxiosOptions<SD, ED>,
) => AxiosRequest<SD, ED, CD>;

export type AxiosConfig<CD = any> = AxiosRequestConfig<CD>;

export type AxiosLog =
  | 'verbose'
  | 'info'
  | 'success'
  | 'error'
  | 'response'
  | 'none';

export type AxiosOptions<SD = any, ED = any> = {
  axios?: typeof axios;
  isNetworkConnected?: () => Promise<boolean>;
  log?: AxiosLog;
  test?: boolean;
  testCancel?: boolean;
  testData?: SD | ED;
  testNetworkError?: boolean;
  testSleep?: number;
  testStatus?: number;
};

export type AxiosRequest<SD = any, ED = any, CD = any> = {
  start: AxiosRequestStart<SD, ED, CD>;
  abort: AxiosRequestAbort;
};

export type AxiosRequestStart<SD = any, ED = any, CD = any> = () => Promise<
  AxiosResponseRequest<SD, ED, CD>
>;

export type AxiosRequestAbort = () => void;

export type AxiosRequestResponse<SD = any, ED = any, CD = any> =
  | AxiosRequestResponseSuccess<SD, CD>
  | AxiosRequestResponseError<ED, CD>;

export type AxiosRequestResponseSuccess<
  SD = any,
  CD = any,
> = AxiosResponseBase & {
  data: SD;
  isError: false;
  response: AxiosResponse<SD, CD>;
};

export type AxiosRequestResponseError<
  ED = any,
  CD = any,
> = AxiosResponseBase & {
  data?: ED;
  error: AxiosError<ED, CD> | Error;
  isAxiosError: boolean;
  isError: true;
  isCancel: boolean;
  isConnexionError: boolean;
  isConnexionTimeoutError: boolean;
  isNetworkError?: boolean;
  response?: AxiosResponse<ED, CD>;
};

type AxiosResponseBase = {
  elapsedTime: number;
};

About

Returns unified axios responses.

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0