axios-error
Advanced tools
Comparing version 1.0.0-beta.26 to 1.0.0-beta.27
/// <reference types="node" /> | ||
import util from 'util'; | ||
import { AxiosRequestConfig, AxiosResponse } from 'axios'; | ||
import { AxiosError as BaseAxiosError } from 'axios'; | ||
declare class AxiosError extends Error { | ||
config: AxiosRequestConfig; | ||
request?: any; | ||
response?: AxiosResponse; | ||
config: BaseAxiosError['config']; | ||
request?: BaseAxiosError['request']; | ||
response?: BaseAxiosError['response']; | ||
status?: number; | ||
constructor(messageOrErr: any, _err?: any); | ||
/** | ||
* @example | ||
* ```js | ||
* new AxiosError(errorThrownByAxios) | ||
* ``` | ||
*/ | ||
constructor(error: BaseAxiosError); | ||
/** | ||
* @example | ||
* ```js | ||
* new AxiosError('error message', errorThrownByAxios) | ||
* ``` | ||
*/ | ||
constructor(message: string, error: BaseAxiosError); | ||
/** | ||
* @example | ||
* ```js | ||
* new AxiosError('error message', { config, request, response }) | ||
* ``` | ||
*/ | ||
constructor(message: string, error: Pick<BaseAxiosError, 'config' | 'request' | 'response'>); | ||
[util.inspect.custom](): string; | ||
@@ -11,0 +31,0 @@ } |
@@ -16,11 +16,11 @@ "use strict"; | ||
class AxiosError extends Error { | ||
constructor(messageOrErr, _err = {}) { | ||
constructor(messageOrError, error) { | ||
let err; | ||
if (messageOrErr instanceof Error) { | ||
super(messageOrErr.message); | ||
err = messageOrErr; | ||
if (typeof messageOrError === 'string') { | ||
super(messageOrError); | ||
err = error; | ||
} | ||
else { | ||
super(messageOrErr); | ||
err = _err; | ||
super(messageOrError.message); | ||
err = messageOrError; | ||
} | ||
@@ -27,0 +27,0 @@ const { config, request, response } = err; |
{ | ||
"name": "axios-error", | ||
"description": "An axios error wrapper that aim to provide clear error message to the user", | ||
"description": "Axios error wrapper that aim to provide clear error message to developers", | ||
"license": "MIT", | ||
@@ -9,7 +9,8 @@ "repository": { | ||
}, | ||
"version": "1.0.0-beta.26", | ||
"version": "1.0.0-beta.27", | ||
"main": "dist/index.js", | ||
"types": "dist/index.d.ts", | ||
"dependencies": { | ||
"axios": "^0.19.2" | ||
"axios": "^0.19.2", | ||
"type-fest": "^0.15.1" | ||
}, | ||
@@ -24,3 +25,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "a22b819aad9b425d5d0d2bb45aada31f0ecee42e" | ||
"gitHead": "38107f34a63c32cf0a1c7994c4c39a2d6034daa4" | ||
} |
# axios-error | ||
> An axios error wrapper that aim to provide clear error message to the user | ||
> Axios error wrapper that aim to provide clear error message to developers | ||
@@ -24,7 +24,7 @@ ## Installation | ||
// You can construct it from error throw by axios | ||
const error = new AxiosError(errorThrowByAxios); | ||
// You can construct it from the error thrown by axios | ||
const error = new AxiosError(errorThrownByAxios); | ||
// Or with custom error message | ||
const error = new AxiosError(message, errorThrowByAxios); | ||
// Or with an custom error message | ||
const error = new AxiosError(message, errorThrownByAxios); | ||
@@ -35,3 +35,3 @@ // Or construct it from axios config, axios request and axios response | ||
Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance. | ||
Calling `console.log` on the error instance returns the formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via the following keys on the error instance: | ||
@@ -38,0 +38,0 @@ ```js |
@@ -86,9 +86,1 @@ import util from 'util'; | ||
}); | ||
it('should support error without axios data', () => { | ||
const error = new AxiosError('custom error'); | ||
error.stack = stack; | ||
expect(error[util.inspect.custom]()).toMatchSnapshot(); | ||
expect(error.name).toBe('AxiosError'); | ||
}); |
import util from 'util'; | ||
import { | ||
AxiosRequestConfig, | ||
AxiosResponse, | ||
AxiosError as BaseAxiosError, | ||
} from 'axios'; | ||
import { AxiosError as BaseAxiosError } from 'axios'; | ||
import { JsonValue } from 'type-fest'; | ||
@@ -16,3 +13,3 @@ function indent(str: string): string { | ||
function json(data: Record<string, any>): string { | ||
function json(data: JsonValue): string { | ||
return JSON.stringify(data, null, 2); | ||
@@ -22,21 +19,54 @@ } | ||
class AxiosError extends Error { | ||
config: AxiosRequestConfig; | ||
config: BaseAxiosError['config']; | ||
request?: any; | ||
request?: BaseAxiosError['request']; | ||
response?: AxiosResponse; | ||
response?: BaseAxiosError['response']; | ||
status?: number; | ||
constructor(messageOrErr: any, _err: any = {}) { | ||
let err; | ||
if (messageOrErr instanceof Error) { | ||
super(messageOrErr.message); | ||
err = messageOrErr; | ||
/** | ||
* @example | ||
* ```js | ||
* new AxiosError(errorThrownByAxios) | ||
* ``` | ||
*/ | ||
constructor(error: BaseAxiosError); | ||
/** | ||
* @example | ||
* ```js | ||
* new AxiosError('error message', errorThrownByAxios) | ||
* ``` | ||
*/ | ||
constructor(message: string, error: BaseAxiosError); | ||
/** | ||
* @example | ||
* ```js | ||
* new AxiosError('error message', { config, request, response }) | ||
* ``` | ||
*/ | ||
constructor( | ||
message: string, | ||
error: Pick<BaseAxiosError, 'config' | 'request' | 'response'> | ||
); | ||
constructor( | ||
messageOrError: string | BaseAxiosError, | ||
error?: | ||
| BaseAxiosError | ||
| Pick<BaseAxiosError, 'config' | 'request' | 'response'> | ||
) { | ||
let err: Pick<BaseAxiosError, 'config' | 'request' | 'response'>; | ||
if (typeof messageOrError === 'string') { | ||
super(messageOrError); | ||
err = error as Pick<BaseAxiosError, 'config' | 'request' | 'response'>; | ||
} else { | ||
super(messageOrErr); | ||
err = _err; | ||
super(messageOrError.message); | ||
err = messageOrError; | ||
} | ||
const { config, request, response } = err as BaseAxiosError; | ||
const { config, request, response } = err; | ||
this.config = config; | ||
@@ -43,0 +73,0 @@ this.request = request; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
133914
289
2
+ Addedtype-fest@^0.15.1
+ Addedtype-fest@0.15.1(transitive)