@rf-logger/logger-axios 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const axios_interceptor_1 = require("./interceptors/axios.interceptor");
|
|
4
|
+
const plugin = {
|
|
5
|
+
registerInterceptors: (logger) => {
|
|
6
|
+
(0, axios_interceptor_1.registerAxiosInterceptor)(logger);
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
exports.default = plugin;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.registerAxiosInterceptor = exports.enhanceAxiosInstance = void 0;
|
|
39
|
+
const axios_1 = __importDefault(require("axios"));
|
|
40
|
+
const axios_better_stacktrace_1 = __importDefault(require("axios-better-stacktrace"));
|
|
41
|
+
const AxiosLogger = __importStar(require("axios-logger"));
|
|
42
|
+
/**
|
|
43
|
+
* Wrap axios-logger "error" interceptor to customize the output.
|
|
44
|
+
*/
|
|
45
|
+
const wrappedErrorLogger = (logger) => (error) => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
return AxiosLogger.errorLogger(error, {
|
|
47
|
+
logger: (message) => {
|
|
48
|
+
var _a;
|
|
49
|
+
const statusCode = (_a = error.response) === null || _a === void 0 ? void 0 : _a.status;
|
|
50
|
+
const request = error.request;
|
|
51
|
+
const response = error.response;
|
|
52
|
+
// To prevent cluttering the logs with the whole
|
|
53
|
+
// request and response objects, we omit them.
|
|
54
|
+
error.request = undefined;
|
|
55
|
+
error.response = undefined;
|
|
56
|
+
logger.log(
|
|
57
|
+
// In case of a 400 HTTP error, we only log it as a debug
|
|
58
|
+
// In case of a 500 HTTP error, we log it as a real error
|
|
59
|
+
statusCode && statusCode < 500 ? "debug" : "error",
|
|
60
|
+
// We add the error directly in the message for easy reading
|
|
61
|
+
message, {
|
|
62
|
+
channel: "axios",
|
|
63
|
+
error,
|
|
64
|
+
});
|
|
65
|
+
// We add back the request and response so that they can be used in catch clauses
|
|
66
|
+
error.request = request;
|
|
67
|
+
error.response = response;
|
|
68
|
+
},
|
|
69
|
+
// For axios errors, we want to log the whole server response headers + data
|
|
70
|
+
headers: true,
|
|
71
|
+
data: true,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
const axiosLogRequestResponse = (axios, logger) => {
|
|
75
|
+
axios.interceptors.request.use(AxiosLogger.requestLogger, wrappedErrorLogger(logger));
|
|
76
|
+
axios.interceptors.response.use(AxiosLogger.responseLogger, wrappedErrorLogger(logger));
|
|
77
|
+
};
|
|
78
|
+
const enhanceAxiosInstance = (axios, logger) => {
|
|
79
|
+
(0, axios_better_stacktrace_1.default)(axios);
|
|
80
|
+
axiosLogRequestResponse(axios, logger);
|
|
81
|
+
};
|
|
82
|
+
exports.enhanceAxiosInstance = enhanceAxiosInstance;
|
|
83
|
+
const enhanceAxiosModule = (axios, logger) => {
|
|
84
|
+
(0, exports.enhanceAxiosInstance)(axios, logger);
|
|
85
|
+
axios.create = ((originalCreate) => {
|
|
86
|
+
return (config) => {
|
|
87
|
+
const instance = originalCreate.apply(this, [config]);
|
|
88
|
+
(0, exports.enhanceAxiosInstance)(instance, logger);
|
|
89
|
+
return instance;
|
|
90
|
+
};
|
|
91
|
+
})(axios.create);
|
|
92
|
+
};
|
|
93
|
+
const registerAxiosInterceptor = (logger) => {
|
|
94
|
+
AxiosLogger.setGlobalConfig({
|
|
95
|
+
logger: (message) => logger.http(message, { channel: "axios" }),
|
|
96
|
+
data: false,
|
|
97
|
+
params: true, // whether to include query parameters in logs
|
|
98
|
+
});
|
|
99
|
+
enhanceAxiosModule(axios_1.default, logger);
|
|
100
|
+
};
|
|
101
|
+
exports.registerAxiosInterceptor = registerAxiosInterceptor;
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rf-logger/logger-axios",
|
|
3
|
+
"files": [
|
|
4
|
+
"dist/**"
|
|
5
|
+
],
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"peerDependencies": {
|
|
8
|
+
"axios": "^0.27.2",
|
|
9
|
+
"winston": "^3.8.2",
|
|
10
|
+
"@rf-logger/logger": "0.0.9"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"axios-better-stacktrace": "^2.1.3",
|
|
14
|
+
"axios-logger": "^2.6.1"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"axios": "0.27.2",
|
|
18
|
+
"axios-mock-adapter": "1.21.1"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=16.0.0"
|
|
22
|
+
},
|
|
23
|
+
"version": "0.0.9",
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test": "jest",
|
|
26
|
+
"version": "pnpm version --no-git-tag-version"
|
|
27
|
+
}
|
|
28
|
+
}
|