feat(tracker-axios): 3.4.2: check if error is axios response & webpack 5 fully specified

This commit is contained in:
ShiKhu 2021-12-01 22:24:41 +01:00
parent 343bb1792d
commit 354f091aae
3 changed files with 25 additions and 13 deletions

View file

@ -57,9 +57,9 @@
}
},
"@openreplay/tracker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@openreplay/tracker/-/tracker-3.0.3.tgz",
"integrity": "sha512-50C2cwJFENeHNjXVV90uIA5YE1bxfGbhI8e76Nfw9Pg+GVN38DcvGhr3PJ3OKjioT9V4gXBbvtE/RDGRaJJWLA==",
"version": "3.4.9",
"resolved": "https://registry.npmjs.org/@openreplay/tracker/-/tracker-3.4.9.tgz",
"integrity": "sha512-7w1ddAboWu6NN926ySMUsKG6kmlYM0BYelSRIPM1xdoddLMRKZT4XaggLYjFezNSi9UJ9WYI8qwMHFIkS9lhCQ==",
"dev": true,
"requires": {
"error-stack-parser": "^2.0.6"
@ -782,9 +782,9 @@
}
},
"typescript": {
"version": "3.9.9",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
"integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
"version": "4.6.0-dev.20211126",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.0-dev.20211126.tgz",
"integrity": "sha512-m+LKstqVv6FYW363aIbO6bm8awsLbeSUCzU6FxPtzUF/WJkFieQfYmdVwEIzigeTpw4E2GETBXnk6P6AixcQJQ==",
"dev": true
},
"validate-npm-package-license": {

View file

@ -1,7 +1,7 @@
{
"name": "@openreplay/tracker-axios",
"description": "Tracker plugin for axios requests recording",
"version": "3.4.1",
"version": "3.4.2",
"keywords": [
"axios",
"logging",
@ -20,14 +20,14 @@
},
"dependencies": {},
"peerDependencies": {
"@openreplay/tracker": "^3.0.0",
"@openreplay/tracker": "^3.4.8",
"axios": "^0.21.2"
},
"devDependencies": {
"@openreplay/tracker": "^3.0.0",
"@openreplay/tracker": "^3.4.9",
"axios": "^0.21.2",
"prettier": "^1.18.2",
"replace-in-files-cli": "^1.0.0",
"typescript": "^3.6.4"
"typescript": "^4.6.0-dev.20211126"
}
}

View file

@ -1,8 +1,8 @@
import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
import axios from 'axios';
import { App, Messages } from '@openreplay/tracker';
import { getExceptionMessage } from '@openreplay/tracker/lib/modules/exception'; // TODO: export from tracker root
import { buildFullPath } from './url';
import { getExceptionMessage } from '@openreplay/tracker/lib/modules/exception.js'; // TODO: export from tracker root
import { buildFullPath } from './url.js';
export interface Options {
sessionTokenHeader?: string;
@ -12,6 +12,13 @@ export interface Options {
ignoreHeaders: Array<string> | boolean;
}
function isAxiosResponse(r: any): r is AxiosResponse {
return typeof r === "object" &&
typeof r.config === "object" &&
typeof r.status === "number"
}
export default function(opts: Partial<Options> = {}) {
const options: Options = Object.assign(
{
@ -145,6 +152,11 @@ export default function(opts: Partial<Options> = {}) {
app.send(getExceptionMessage(error, []));
}
// TODO: common case (selector)
if (isAxiosResponse(error)) {
sendFetchMessage(error)
}
return Promise.reject(error);
});
}