@commercetools-backend/loggers 22.30.3 → 22.31.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.
@@ -2,10 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var expressWinston = require('express-winston');
6
+ var winston = require('winston');
5
7
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
6
8
  var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
7
9
  var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
8
- var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
10
+ var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
9
11
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
10
12
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
11
13
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
@@ -14,8 +16,6 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
14
16
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
15
17
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
16
18
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
17
- var expressWinston = require('express-winston');
18
- var winston = require('winston');
19
19
  var cloneDeep = require('lodash/cloneDeep');
20
20
  var getIn = require('lodash/get');
21
21
  var setIn = require('lodash/set');
@@ -42,8 +42,10 @@ function _interopNamespace(e) {
42
42
  return Object.freeze(n);
43
43
  }
44
44
 
45
+ var expressWinston__default = /*#__PURE__*/_interopDefault(expressWinston);
46
+ var winston__namespace = /*#__PURE__*/_interopNamespace(winston);
45
47
  var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
46
- var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
48
+ var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
47
49
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
48
50
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
49
51
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
@@ -52,15 +54,13 @@ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachIns
52
54
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
53
55
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
54
56
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
55
- var expressWinston__default = /*#__PURE__*/_interopDefault(expressWinston);
56
- var winston__namespace = /*#__PURE__*/_interopNamespace(winston);
57
57
  var cloneDeep__default = /*#__PURE__*/_interopDefault(cloneDeep);
58
58
  var getIn__default = /*#__PURE__*/_interopDefault(getIn);
59
59
  var setIn__default = /*#__PURE__*/_interopDefault(setIn);
60
60
  var unsetIn__default = /*#__PURE__*/_interopDefault(unsetIn);
61
61
 
62
62
  function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
63
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
63
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
64
64
  const parseIps = request => {
65
65
  const forwardedFor = request.headers['x-forwarded-for'];
66
66
  if (!forwardedFor) {
@@ -69,48 +69,60 @@ const parseIps = request => {
69
69
  const remoteAddresses = _Array$isArray__default["default"](forwardedFor) ? forwardedFor : forwardedFor.split(',');
70
70
  return remoteAddresses;
71
71
  };
72
+ const createAccessLogSkipper = options => request => {
73
+ var _context;
74
+ if (Boolean(options.silent)) {
75
+ return true;
76
+ }
77
+ const hasMatchingIgnoreUrl = _someInstanceProperty__default["default"](_context = options.ignoreUrls ?? []).call(_context, uriPathOrRegex => {
78
+ if (typeof uriPathOrRegex === 'string') {
79
+ return request.originalUrl === uriPathOrRegex;
80
+ }
81
+ return request.originalUrl.match(uriPathOrRegex);
82
+ });
83
+ return hasMatchingIgnoreUrl;
84
+ };
85
+ const mapRequestMetadata = request => {
86
+ try {
87
+ const remoteAddress = request.socket?.remoteAddress;
88
+ const proxyIps = parseIps(request);
89
+ const _proxyIps = _slicedToArray(proxyIps, 1),
90
+ clientIp = _proxyIps[0];
91
+ return _objectSpread({
92
+ clientIp: clientIp ?? remoteAddress,
93
+ proxyIps,
94
+ hostname: request.socket ? request.hostname : undefined
95
+ }, remoteAddress ? {
96
+ remoteAddress
97
+ } : {});
98
+ } catch (error) {
99
+ console.error(`Failed to parse request metadata`, error);
100
+ return {};
101
+ }
102
+ };
103
+
72
104
  const createAccessLoggerMiddleware = function () {
73
- var _options$ignoreUrls, _options$formatters, _options$level;
74
105
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75
- const ignoreUrls = (_options$ignoreUrls = options.ignoreUrls) !== null && _options$ignoreUrls !== void 0 ? _options$ignoreUrls : [];
76
- const formatters = winston__namespace["default"].format.combine(winston__namespace["default"].format.timestamp(), ...((_options$formatters = options.formatters) !== null && _options$formatters !== void 0 ? _options$formatters : []), options.json ? winston__namespace["default"].format.json() : winston__namespace["default"].format.cli());
106
+ const formatters = winston__namespace["default"].format.combine(winston__namespace["default"].format.timestamp(), ...(options.formatters ?? []), options.json ? winston__namespace["default"].format.json() : winston__namespace["default"].format.cli());
107
+ const skip = createAccessLogSkipper(options);
77
108
  return expressWinston__default["default"].logger({
78
- level: (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 'info',
109
+ level: options.level ?? 'info',
79
110
  transports: [new winston__namespace["default"].transports.Console()],
80
111
  format: formatters,
81
112
  meta: true,
82
113
  expressFormat: true,
83
114
  // Use default morgan access log formatting
84
115
  colorize: !options.json,
85
- skip: req => Boolean(options.silent) || _includesInstanceProperty__default["default"](ignoreUrls).call(ignoreUrls, req.originalUrl),
86
- dynamicMeta: req => {
87
- try {
88
- var _req$socket;
89
- const remoteAddress = (_req$socket = req.socket) === null || _req$socket === void 0 ? void 0 : _req$socket.remoteAddress;
90
- const proxyIps = parseIps(req);
91
- const _proxyIps = _slicedToArray(proxyIps, 1),
92
- clientIp = _proxyIps[0];
93
- return _objectSpread({
94
- clientIp: clientIp !== null && clientIp !== void 0 ? clientIp : remoteAddress,
95
- proxyIps,
96
- hostname: req.socket ? req.hostname : undefined
97
- }, remoteAddress ? {
98
- remoteAddress
99
- } : {});
100
- } catch (error) {
101
- console.error("Failed to parse request metadata", error);
102
- return {};
103
- }
104
- }
116
+ skip,
117
+ dynamicMeta: mapRequestMetadata
105
118
  });
106
119
  };
107
120
 
108
121
  const createApplicationLogger = function () {
109
- var _options$formatters, _options$level;
110
122
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
111
- const formatters = winston__namespace.format.combine(...((_options$formatters = options.formatters) !== null && _options$formatters !== void 0 ? _options$formatters : []), options.json ? winston__namespace.format.json() : winston__namespace.format.combine(winston__namespace.format.cli(), winston__namespace.format.simple()));
123
+ const formatters = winston__namespace.format.combine(...(options.formatters ?? []), options.json ? winston__namespace.format.json() : winston__namespace.format.combine(winston__namespace.format.cli(), winston__namespace.format.simple()));
112
124
  return winston__namespace.createLogger({
113
- level: (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 'info',
125
+ level: options.level ?? 'info',
114
126
  format: formatters,
115
127
  transports: [new winston__namespace.transports.Console({
116
128
  silent: Boolean(options.silent)
@@ -119,9 +131,8 @@ const createApplicationLogger = function () {
119
131
  };
120
132
 
121
133
  function rewriteField(info, field) {
122
- var _field$preserveFromFi;
123
134
  const fromFieldValue = getIn__default["default"](info, field.from);
124
- const preserveFromField = (_field$preserveFromFi = field.preserveFromField) !== null && _field$preserveFromFi !== void 0 ? _field$preserveFromFi : false;
135
+ const preserveFromField = field.preserveFromField ?? false;
125
136
  if (fromFieldValue) {
126
137
  if (!preserveFromField) {
127
138
  unsetIn__default["default"](info, field.from);
@@ -2,10 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var expressWinston = require('express-winston');
6
+ var winston = require('winston');
5
7
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
6
8
  var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
7
9
  var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
8
- var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
10
+ var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
9
11
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
10
12
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
11
13
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
@@ -14,8 +16,6 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
14
16
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
15
17
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
16
18
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
17
- var expressWinston = require('express-winston');
18
- var winston = require('winston');
19
19
  var cloneDeep = require('lodash/cloneDeep');
20
20
  var getIn = require('lodash/get');
21
21
  var setIn = require('lodash/set');
@@ -42,8 +42,10 @@ function _interopNamespace(e) {
42
42
  return Object.freeze(n);
43
43
  }
44
44
 
45
+ var expressWinston__default = /*#__PURE__*/_interopDefault(expressWinston);
46
+ var winston__namespace = /*#__PURE__*/_interopNamespace(winston);
45
47
  var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
46
- var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
48
+ var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
47
49
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
48
50
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
49
51
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
@@ -52,15 +54,13 @@ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachIns
52
54
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
53
55
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
54
56
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
55
- var expressWinston__default = /*#__PURE__*/_interopDefault(expressWinston);
56
- var winston__namespace = /*#__PURE__*/_interopNamespace(winston);
57
57
  var cloneDeep__default = /*#__PURE__*/_interopDefault(cloneDeep);
58
58
  var getIn__default = /*#__PURE__*/_interopDefault(getIn);
59
59
  var setIn__default = /*#__PURE__*/_interopDefault(setIn);
60
60
  var unsetIn__default = /*#__PURE__*/_interopDefault(unsetIn);
61
61
 
62
62
  function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
63
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
63
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
64
64
  const parseIps = request => {
65
65
  const forwardedFor = request.headers['x-forwarded-for'];
66
66
  if (!forwardedFor) {
@@ -69,48 +69,60 @@ const parseIps = request => {
69
69
  const remoteAddresses = _Array$isArray__default["default"](forwardedFor) ? forwardedFor : forwardedFor.split(',');
70
70
  return remoteAddresses;
71
71
  };
72
+ const createAccessLogSkipper = options => request => {
73
+ var _context;
74
+ if (Boolean(options.silent)) {
75
+ return true;
76
+ }
77
+ const hasMatchingIgnoreUrl = _someInstanceProperty__default["default"](_context = options.ignoreUrls ?? []).call(_context, uriPathOrRegex => {
78
+ if (typeof uriPathOrRegex === 'string') {
79
+ return request.originalUrl === uriPathOrRegex;
80
+ }
81
+ return request.originalUrl.match(uriPathOrRegex);
82
+ });
83
+ return hasMatchingIgnoreUrl;
84
+ };
85
+ const mapRequestMetadata = request => {
86
+ try {
87
+ const remoteAddress = request.socket?.remoteAddress;
88
+ const proxyIps = parseIps(request);
89
+ const _proxyIps = _slicedToArray(proxyIps, 1),
90
+ clientIp = _proxyIps[0];
91
+ return _objectSpread({
92
+ clientIp: clientIp ?? remoteAddress,
93
+ proxyIps,
94
+ hostname: request.socket ? request.hostname : undefined
95
+ }, remoteAddress ? {
96
+ remoteAddress
97
+ } : {});
98
+ } catch (error) {
99
+ console.error(`Failed to parse request metadata`, error);
100
+ return {};
101
+ }
102
+ };
103
+
72
104
  const createAccessLoggerMiddleware = function () {
73
- var _options$ignoreUrls, _options$formatters, _options$level;
74
105
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75
- const ignoreUrls = (_options$ignoreUrls = options.ignoreUrls) !== null && _options$ignoreUrls !== void 0 ? _options$ignoreUrls : [];
76
- const formatters = winston__namespace["default"].format.combine(winston__namespace["default"].format.timestamp(), ...((_options$formatters = options.formatters) !== null && _options$formatters !== void 0 ? _options$formatters : []), options.json ? winston__namespace["default"].format.json() : winston__namespace["default"].format.cli());
106
+ const formatters = winston__namespace["default"].format.combine(winston__namespace["default"].format.timestamp(), ...(options.formatters ?? []), options.json ? winston__namespace["default"].format.json() : winston__namespace["default"].format.cli());
107
+ const skip = createAccessLogSkipper(options);
77
108
  return expressWinston__default["default"].logger({
78
- level: (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 'info',
109
+ level: options.level ?? 'info',
79
110
  transports: [new winston__namespace["default"].transports.Console()],
80
111
  format: formatters,
81
112
  meta: true,
82
113
  expressFormat: true,
83
114
  // Use default morgan access log formatting
84
115
  colorize: !options.json,
85
- skip: req => Boolean(options.silent) || _includesInstanceProperty__default["default"](ignoreUrls).call(ignoreUrls, req.originalUrl),
86
- dynamicMeta: req => {
87
- try {
88
- var _req$socket;
89
- const remoteAddress = (_req$socket = req.socket) === null || _req$socket === void 0 ? void 0 : _req$socket.remoteAddress;
90
- const proxyIps = parseIps(req);
91
- const _proxyIps = _slicedToArray(proxyIps, 1),
92
- clientIp = _proxyIps[0];
93
- return _objectSpread({
94
- clientIp: clientIp !== null && clientIp !== void 0 ? clientIp : remoteAddress,
95
- proxyIps,
96
- hostname: req.socket ? req.hostname : undefined
97
- }, remoteAddress ? {
98
- remoteAddress
99
- } : {});
100
- } catch (error) {
101
- console.error("Failed to parse request metadata", error);
102
- return {};
103
- }
104
- }
116
+ skip,
117
+ dynamicMeta: mapRequestMetadata
105
118
  });
106
119
  };
107
120
 
108
121
  const createApplicationLogger = function () {
109
- var _options$formatters, _options$level;
110
122
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
111
- const formatters = winston__namespace.format.combine(...((_options$formatters = options.formatters) !== null && _options$formatters !== void 0 ? _options$formatters : []), options.json ? winston__namespace.format.json() : winston__namespace.format.combine(winston__namespace.format.cli(), winston__namespace.format.simple()));
123
+ const formatters = winston__namespace.format.combine(...(options.formatters ?? []), options.json ? winston__namespace.format.json() : winston__namespace.format.combine(winston__namespace.format.cli(), winston__namespace.format.simple()));
112
124
  return winston__namespace.createLogger({
113
- level: (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 'info',
125
+ level: options.level ?? 'info',
114
126
  format: formatters,
115
127
  transports: [new winston__namespace.transports.Console({
116
128
  silent: Boolean(options.silent)
@@ -119,9 +131,8 @@ const createApplicationLogger = function () {
119
131
  };
120
132
 
121
133
  function rewriteField(info, field) {
122
- var _field$preserveFromFi;
123
134
  const fromFieldValue = getIn__default["default"](info, field.from);
124
- const preserveFromField = (_field$preserveFromFi = field.preserveFromField) !== null && _field$preserveFromFi !== void 0 ? _field$preserveFromFi : false;
135
+ const preserveFromField = field.preserveFromField ?? false;
125
136
  if (fromFieldValue) {
126
137
  if (!preserveFromField) {
127
138
  unsetIn__default["default"](info, field.from);
@@ -1,7 +1,10 @@
1
+ import expressWinston from 'express-winston';
2
+ import * as winston from 'winston';
3
+ import winston__default from 'winston';
1
4
  import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
2
5
  import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
3
6
  import _Array$isArray from '@babel/runtime-corejs3/core-js-stable/array/is-array';
4
- import _includesInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/includes';
7
+ import _someInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/some';
5
8
  import _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';
6
9
  import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
7
10
  import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
@@ -10,9 +13,6 @@ import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/inst
10
13
  import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
11
14
  import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
12
15
  import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
13
- import expressWinston from 'express-winston';
14
- import * as winston from 'winston';
15
- import winston__default from 'winston';
16
16
  import cloneDeep from 'lodash/cloneDeep';
17
17
  import getIn from 'lodash/get';
18
18
  import setIn from 'lodash/set';
@@ -20,7 +20,7 @@ import unsetIn from 'lodash/unset';
20
20
  import { format } from 'logform';
21
21
 
22
22
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
24
24
  const parseIps = request => {
25
25
  const forwardedFor = request.headers['x-forwarded-for'];
26
26
  if (!forwardedFor) {
@@ -29,48 +29,60 @@ const parseIps = request => {
29
29
  const remoteAddresses = _Array$isArray(forwardedFor) ? forwardedFor : forwardedFor.split(',');
30
30
  return remoteAddresses;
31
31
  };
32
+ const createAccessLogSkipper = options => request => {
33
+ var _context;
34
+ if (Boolean(options.silent)) {
35
+ return true;
36
+ }
37
+ const hasMatchingIgnoreUrl = _someInstanceProperty(_context = options.ignoreUrls ?? []).call(_context, uriPathOrRegex => {
38
+ if (typeof uriPathOrRegex === 'string') {
39
+ return request.originalUrl === uriPathOrRegex;
40
+ }
41
+ return request.originalUrl.match(uriPathOrRegex);
42
+ });
43
+ return hasMatchingIgnoreUrl;
44
+ };
45
+ const mapRequestMetadata = request => {
46
+ try {
47
+ const remoteAddress = request.socket?.remoteAddress;
48
+ const proxyIps = parseIps(request);
49
+ const _proxyIps = _slicedToArray(proxyIps, 1),
50
+ clientIp = _proxyIps[0];
51
+ return _objectSpread({
52
+ clientIp: clientIp ?? remoteAddress,
53
+ proxyIps,
54
+ hostname: request.socket ? request.hostname : undefined
55
+ }, remoteAddress ? {
56
+ remoteAddress
57
+ } : {});
58
+ } catch (error) {
59
+ console.error(`Failed to parse request metadata`, error);
60
+ return {};
61
+ }
62
+ };
63
+
32
64
  const createAccessLoggerMiddleware = function () {
33
- var _options$ignoreUrls, _options$formatters, _options$level;
34
65
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
35
- const ignoreUrls = (_options$ignoreUrls = options.ignoreUrls) !== null && _options$ignoreUrls !== void 0 ? _options$ignoreUrls : [];
36
- const formatters = winston__default.format.combine(winston__default.format.timestamp(), ...((_options$formatters = options.formatters) !== null && _options$formatters !== void 0 ? _options$formatters : []), options.json ? winston__default.format.json() : winston__default.format.cli());
66
+ const formatters = winston__default.format.combine(winston__default.format.timestamp(), ...(options.formatters ?? []), options.json ? winston__default.format.json() : winston__default.format.cli());
67
+ const skip = createAccessLogSkipper(options);
37
68
  return expressWinston.logger({
38
- level: (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 'info',
69
+ level: options.level ?? 'info',
39
70
  transports: [new winston__default.transports.Console()],
40
71
  format: formatters,
41
72
  meta: true,
42
73
  expressFormat: true,
43
74
  // Use default morgan access log formatting
44
75
  colorize: !options.json,
45
- skip: req => Boolean(options.silent) || _includesInstanceProperty(ignoreUrls).call(ignoreUrls, req.originalUrl),
46
- dynamicMeta: req => {
47
- try {
48
- var _req$socket;
49
- const remoteAddress = (_req$socket = req.socket) === null || _req$socket === void 0 ? void 0 : _req$socket.remoteAddress;
50
- const proxyIps = parseIps(req);
51
- const _proxyIps = _slicedToArray(proxyIps, 1),
52
- clientIp = _proxyIps[0];
53
- return _objectSpread({
54
- clientIp: clientIp !== null && clientIp !== void 0 ? clientIp : remoteAddress,
55
- proxyIps,
56
- hostname: req.socket ? req.hostname : undefined
57
- }, remoteAddress ? {
58
- remoteAddress
59
- } : {});
60
- } catch (error) {
61
- console.error("Failed to parse request metadata", error);
62
- return {};
63
- }
64
- }
76
+ skip,
77
+ dynamicMeta: mapRequestMetadata
65
78
  });
66
79
  };
67
80
 
68
81
  const createApplicationLogger = function () {
69
- var _options$formatters, _options$level;
70
82
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
71
- const formatters = winston.format.combine(...((_options$formatters = options.formatters) !== null && _options$formatters !== void 0 ? _options$formatters : []), options.json ? winston.format.json() : winston.format.combine(winston.format.cli(), winston.format.simple()));
83
+ const formatters = winston.format.combine(...(options.formatters ?? []), options.json ? winston.format.json() : winston.format.combine(winston.format.cli(), winston.format.simple()));
72
84
  return winston.createLogger({
73
- level: (_options$level = options.level) !== null && _options$level !== void 0 ? _options$level : 'info',
85
+ level: options.level ?? 'info',
74
86
  format: formatters,
75
87
  transports: [new winston.transports.Console({
76
88
  silent: Boolean(options.silent)
@@ -79,9 +91,8 @@ const createApplicationLogger = function () {
79
91
  };
80
92
 
81
93
  function rewriteField(info, field) {
82
- var _field$preserveFromFi;
83
94
  const fromFieldValue = getIn(info, field.from);
84
- const preserveFromField = (_field$preserveFromFi = field.preserveFromField) !== null && _field$preserveFromFi !== void 0 ? _field$preserveFromFi : false;
95
+ const preserveFromField = field.preserveFromField ?? false;
85
96
  if (fromFieldValue) {
86
97
  if (!preserveFromField) {
87
98
  unsetIn(info, field.from);
@@ -0,0 +1,6 @@
1
+ import type { Request } from 'express';
2
+ import type { TAccessLoggerOptions } from './types';
3
+ declare const parseIps: (request: Request) => string[];
4
+ declare const createAccessLogSkipper: (options: TAccessLoggerOptions) => (request: Request) => boolean;
5
+ declare const mapRequestMetadata: (request: Request) => {};
6
+ export { parseIps, createAccessLogSkipper, mapRequestMetadata };
@@ -6,5 +6,5 @@ export type TLoggerOptions = {
6
6
  formatters?: Format[];
7
7
  };
8
8
  export type TAccessLoggerOptions = TLoggerOptions & {
9
- ignoreUrls?: string[];
9
+ ignoreUrls?: (string | RegExp)[];
10
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools-backend/loggers",
3
- "version": "22.30.3",
3
+ "version": "22.31.0",
4
4
  "description": "Opinionated JSON loggers for HTTP server applications",
5
5
  "bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
6
6
  "repository": {