@atlaskit/profilecard
Version:
A React component to display a card with user information.
108 lines (106 loc) • 5.53 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.handleDirectoryGraphQLErrors = exports.handleAGGErrors = exports.getErrorAttributes = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _errors = require("../util/errors");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var IGNORED_ERROR_REASONS_DIRECTORY = [
// Error categories from pf-directory
'NotPermitted', 'Gone', 'IdentityUserNotFoundError'];
var IGNORE_ERROR_TYPES_AGG = ['IdentityUserNotFoundError', 'TEAMS_FORBIDDEN', 'TEAMS_TEAM_DELETED'];
var IGNORE_ERROR_CLASSIFICATIONS_AGG = ['Gone'];
function isIgnoredError(error) {
if (!error) {
return false;
}
if (error instanceof _errors.DirectoryGraphQLError) {
return !!error && IGNORED_ERROR_REASONS_DIRECTORY.includes(error.type);
} else if (error instanceof _errors.AGGError) {
return !!error.errorType && IGNORE_ERROR_TYPES_AGG.includes(error.errorType) || !!error.classification && IGNORE_ERROR_CLASSIFICATIONS_AGG.includes(error.classification);
}
return false;
}
var _getErrorAttributes = exports.getErrorAttributes = function getErrorAttributes(error) {
var defaultErrorAttributes = {
errorCount: null,
errorDetails: null,
errorCategory: null,
errorType: null,
errorPath: null,
errorNumber: null,
errorStatusCode: null,
traceId: null,
errorStack: null
};
if (error instanceof _errors.DirectoryGraphQLErrors) {
var _error$traceId;
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: error.message,
errorCount: error.errors.length,
errorDetails: error.errors.map(_getErrorAttributes),
isSLOFailure: !error.errors.every(isIgnoredError),
traceId: (_error$traceId = error.traceId) !== null && _error$traceId !== void 0 ? _error$traceId : null
});
} else if (error instanceof _errors.DirectoryGraphQLError) {
var _error$errorNumber;
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: error.message,
errorCategory: error.category,
errorType: error.type,
errorPath: error.path,
errorNumber: (_error$errorNumber = error.errorNumber) !== null && _error$errorNumber !== void 0 ? _error$errorNumber : null,
isSLOFailure: !isIgnoredError(error)
});
} else if (error instanceof _errors.AGGErrors) {
var _error$traceId2;
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: error.message,
errorCount: error.errors.length,
errorDetails: error.errors.map(_getErrorAttributes),
isSLOFailure: !error.errors.every(isIgnoredError),
traceId: (_error$traceId2 = error.traceId) !== null && _error$traceId2 !== void 0 ? _error$traceId2 : null
});
} else if (error instanceof _errors.AGGError) {
var _error$errorType, _error$statusCode, _error$classification;
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: error.message,
errorType: (_error$errorType = error.errorType) !== null && _error$errorType !== void 0 ? _error$errorType : null,
errorStatusCode: (_error$statusCode = error.statusCode) !== null && _error$statusCode !== void 0 ? _error$statusCode : null,
isSLOFailure: !isIgnoredError(error),
errorCategory: (_error$classification = error.classification) !== null && _error$classification !== void 0 ? _error$classification : null
});
} else if (error instanceof Error) {
// Jira custom profile card client error, they wrap the error & put the underlying error in the cause property
if (error.message.startsWith('Unable to fetch user:')) {
if (error.hasOwnProperty('cause')) {
var causeError = error.cause;
if (causeError instanceof _errors.DirectoryGraphQLErrors || causeError instanceof _errors.AGGErrors) {
return _getErrorAttributes(causeError);
}
}
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: error.message,
isSLOFailure: false
});
}
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: error.message,
isSLOFailure: true
});
}
// Unknown
return _objectSpread(_objectSpread({}, defaultErrorAttributes), {}, {
errorMessage: 'Unknown error',
isSLOFailure: true
});
};
var handleDirectoryGraphQLErrors = exports.handleDirectoryGraphQLErrors = function handleDirectoryGraphQLErrors(errors, traceId) {
throw new _errors.DirectoryGraphQLErrors(errors, traceId);
};
var handleAGGErrors = exports.handleAGGErrors = function handleAGGErrors(errors, traceId) {
throw new _errors.AGGErrors(errors, traceId);
};