@rf-logger/logger-axios 0.3.1 → 0.4.0

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 CHANGED
@@ -1,3 +1,4 @@
1
1
  import { LoggerPlugin } from "@rf-logger/logger";
2
- declare const plugin: LoggerPlugin;
3
- export default plugin;
2
+ import { registerAxiosInterceptor } from "./interceptors/axios.interceptor";
3
+ declare const AxiosPlugin: LoggerPlugin;
4
+ export { AxiosPlugin, registerAxiosInterceptor };
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAxiosInterceptor = exports.AxiosPlugin = void 0;
3
4
  const axios_interceptor_1 = require("./interceptors/axios.interceptor");
4
- const plugin = {
5
+ Object.defineProperty(exports, "registerAxiosInterceptor", { enumerable: true, get: function () { return axios_interceptor_1.registerAxiosInterceptor; } });
6
+ const AxiosPlugin = {
5
7
  registerInterceptors: (logger) => {
6
- (0, axios_interceptor_1.registerAxiosInterceptor)(logger);
8
+ (0, axios_interceptor_1.registerLoggerInterceptor)(logger);
7
9
  },
8
10
  };
9
- exports.default = plugin;
11
+ exports.AxiosPlugin = AxiosPlugin;
@@ -1,4 +1,6 @@
1
- import type { AxiosInstance } from "axios";
2
1
  import { Logger } from "winston";
3
- export declare const enhanceAxiosInstance: (axios: AxiosInstance, logger: Logger) => void;
4
- export declare const registerAxiosInterceptor: (logger: Logger) => void;
2
+ /**
3
+ * Use this method to enhance the Axios module before any other Axios instance gets created
4
+ */
5
+ export declare const registerAxiosInterceptor: () => void;
6
+ export declare const registerLoggerInterceptor: (logger: Logger) => void;
@@ -36,14 +36,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.registerAxiosInterceptor = exports.enhanceAxiosInstance = void 0;
39
+ exports.registerLoggerInterceptor = exports.registerAxiosInterceptor = void 0;
40
40
  const axios_1 = __importDefault(require("axios"));
41
41
  const axios_better_stacktrace_1 = __importDefault(require("axios-better-stacktrace"));
42
42
  const AxiosLogger = __importStar(require("axios-logger"));
43
+ const globalState = {
44
+ axiosModuleEnhanced: false,
45
+ logger: undefined,
46
+ };
43
47
  /**
44
48
  * Wrap axios-logger "error" interceptor to customize the output.
45
49
  */
46
- const wrappedErrorLogger = (logger) => async (error) => AxiosLogger.errorLogger(error, {
50
+ const wrappedErrorLogger = async (error) => AxiosLogger.errorLogger(error, {
47
51
  logger: (message) => {
48
52
  const statusCode = error.response?.status;
49
53
  const request = error.request;
@@ -70,7 +74,7 @@ const wrappedErrorLogger = (logger) => async (error) => AxiosLogger.errorLogger(
70
74
  logLevel = "warn";
71
75
  }
72
76
  }
73
- logger.log(logLevel,
77
+ globalState.logger?.log(logLevel,
74
78
  // We add the error directly in the message for easy reading
75
79
  message, {
76
80
  channel: "axios",
@@ -84,31 +88,45 @@ const wrappedErrorLogger = (logger) => async (error) => AxiosLogger.errorLogger(
84
88
  headers: true,
85
89
  data: true,
86
90
  });
87
- const axiosLogRequestResponse = (axios, logger) => {
88
- axios.interceptors.request.use(AxiosLogger.requestLogger, wrappedErrorLogger(logger));
89
- axios.interceptors.response.use(AxiosLogger.responseLogger, wrappedErrorLogger(logger));
91
+ const axiosLogRequestResponse = (axios) => {
92
+ axios.interceptors.request.use(AxiosLogger.requestLogger, wrappedErrorLogger);
93
+ axios.interceptors.response.use(AxiosLogger.responseLogger, wrappedErrorLogger);
90
94
  };
91
- const enhanceAxiosInstance = (axios, logger) => {
95
+ const enhanceAxiosInstance = (axios) => {
92
96
  (0, axios_better_stacktrace_1.default)(axios);
93
- axiosLogRequestResponse(axios, logger);
97
+ axiosLogRequestResponse(axios);
94
98
  };
95
- exports.enhanceAxiosInstance = enhanceAxiosInstance;
96
- const enhanceAxiosModule = (axios, logger) => {
97
- (0, exports.enhanceAxiosInstance)(axios, logger);
99
+ const enhanceAxiosModule = (axios) => {
100
+ if (globalState.axiosModuleEnhanced)
101
+ return;
102
+ globalState.axiosModuleEnhanced = true;
103
+ enhanceAxiosInstance(axios);
98
104
  axios.create = ((originalCreate) => {
99
105
  return (config) => {
100
106
  const instance = originalCreate.apply(this, [config]);
101
- (0, exports.enhanceAxiosInstance)(instance, logger);
107
+ enhanceAxiosInstance(instance);
102
108
  return instance;
103
109
  };
104
110
  })(axios.create);
105
111
  };
106
- const registerAxiosInterceptor = (logger) => {
112
+ const commonGlobalLogConfig = {
113
+ data: false, // whether to include POST data in logs
114
+ params: true, // whether to include query parameters in logs
115
+ };
116
+ /**
117
+ * Use this method to enhance the Axios module before any other Axios instance gets created
118
+ */
119
+ const registerAxiosInterceptor = () => {
120
+ AxiosLogger.setGlobalConfig(commonGlobalLogConfig);
121
+ enhanceAxiosModule(axios_1.default);
122
+ };
123
+ exports.registerAxiosInterceptor = registerAxiosInterceptor;
124
+ const registerLoggerInterceptor = (logger) => {
125
+ globalState.logger = logger;
107
126
  AxiosLogger.setGlobalConfig({
127
+ ...commonGlobalLogConfig,
108
128
  logger: (message) => logger.http(message, { channel: "axios" }),
109
- data: false, // whether to include POST data in logs
110
- params: true, // whether to include query parameters in logs
111
129
  });
112
- enhanceAxiosModule(axios_1.default, logger);
130
+ enhanceAxiosModule(axios_1.default);
113
131
  };
114
- exports.registerAxiosInterceptor = registerAxiosInterceptor;
132
+ exports.registerLoggerInterceptor = registerLoggerInterceptor;
package/package.json CHANGED
@@ -7,21 +7,21 @@
7
7
  "peerDependencies": {
8
8
  "axios": "~0.27 || ^1.5",
9
9
  "winston": "^3.8.2",
10
- "@rf-logger/logger": "0.3.1../logger"
10
+ "@rf-logger/logger": "0.4.0../logger"
11
11
  },
12
12
  "dependencies": {
13
13
  "axios-better-stacktrace": "^2.1.5",
14
14
  "axios-logger": "^2.7.1"
15
15
  },
16
16
  "devDependencies": {
17
- "axios": "^1.7.4",
17
+ "axios": "^1.12.2",
18
18
  "axios-mock-adapter": "^1.22.0",
19
19
  "axios-retry": "^4.0.0"
20
20
  },
21
21
  "engines": {
22
22
  "node": ">=16.0.0"
23
23
  },
24
- "version": "0.3.1",
24
+ "version": "0.4.0",
25
25
  "scripts": {
26
26
  "test": "jest",
27
27
  "version": "pnpm version --no-git-tag-version"