bit-bin
Version:
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b
112 lines (84 loc) • 2.42 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = hashErrorIfNeeded;
function _objectHash() {
const data = _interopRequireDefault(require("object-hash"));
_objectHash = function () {
return data;
};
return data;
}
function _yn() {
const data = _interopRequireDefault(require("yn"));
_yn = function () {
return data;
};
return data;
}
function _globalConfig() {
const data = require("../api/consumer/lib/global-config");
_globalConfig = function () {
return data;
};
return data;
}
function _constants() {
const data = require("../constants");
_constants = function () {
return data;
};
return data;
}
function _cloneErrorObject() {
const data = _interopRequireWildcard(require("./clone-error-object"));
_cloneErrorObject = function () {
return data;
};
return data;
}
function _logger() {
const data = _interopRequireDefault(require("../logger/logger"));
_logger = function () {
return data;
};
return data;
}
function hashErrorIfNeeded(error) {
let clonedError = error;
try {
clonedError = (0, _cloneErrorObject().default)(error);
} catch (e) {
_logger().default.warn('could not clone error', error);
}
const shouldHash = (0, _yn().default)((0, _globalConfig().getSync)(_constants().CFG_ANALYTICS_ANONYMOUS_KEY), {
default: true
});
if (!shouldHash) return clonedError;
const fields = Object.getOwnPropertyNames(clonedError);
const fieldToHash = fields.filter(field => !_cloneErrorObject().systemFields.includes(field) && field !== 'message');
if (!fieldToHash.length) return clonedError;
fieldToHash.forEach(field => {
clonedError[field] = hashValue(clonedError[field]);
});
return clonedError;
}
function hashValue(value) {
if (!value) return value;
const type = typeof value;
switch (type) {
case 'undefined':
case 'number':
case 'boolean':
return value;
case 'object':
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
if (Array.isArray(value)) return value.map(v => (0, _objectHash().default)(v));
return (0, _objectHash().default)(value);
default:
return (0, _objectHash().default)(value);
}
}
;