UNPKG

@cloudsugar/axios-logger

Version:
65 lines (64 loc) 2.86 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.axiosLogger = void 0; ; /** * The default Axios request formatter function */ function formatDefault(request) { var _a, _b; const { config, response, error, startTime, endTime } = request; const method = (config === null || config === void 0 ? void 0 : config.method) || ''; const { url } = config; const status = (_a = (response || (error === null || error === void 0 ? void 0 : error.response))) === null || _a === void 0 ? void 0 : _a.status; const statusText = (_b = (response || (error === null || error === void 0 ? void 0 : error.response))) === null || _b === void 0 ? void 0 : _b.statusText; const ms = endTime.getTime() - startTime.getTime(); return [method.toUpperCase(), `${status}/(${statusText})`, `${ms}ms`, url, { config, response, error }]; } /** * Decorates an Axios instance with logging * * @example * import axiosDefault from 'axios'; * import { axiosLogger } from '@cloudsugar/axios-logger'; * * const axios = axiosLogger(axios, {logger: console}); */ function axiosLogger(axios, options = {}) { const defaultAdapter = axios.defaults.adapter; if (!defaultAdapter) { throw new Error('axios.defaults.adapter is missing'); } const formatData = (options === null || options === void 0 ? void 0 : options.format) || formatDefault; const logger = (options === null || options === void 0 ? void 0 : options.logger) || console; axios.defaults.adapter = (config) => __awaiter(this, void 0, void 0, function* () { let response = null; let error = null; const startTime = new Date(); try { response = yield defaultAdapter(config); return response; } catch (e) { error = e; throw e; } finally { const endTime = new Date(); const logLevel = response ? 'info' : 'error'; const content = formatData({ config, response, error, startTime, endTime }); logger[logLevel](...content); } }); return axios; } exports.axiosLogger = axiosLogger;