@atlaskit/profilecard 19.5.9 → 19.5.11
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/CHANGELOG.md +120 -108
- package/dist/cjs/client/TeamCentralCardClient.js +2 -2
- package/dist/cjs/client/UserProfileCardClient.js +1 -1
- package/dist/cjs/client/errorUtils.js +67 -14
- package/dist/cjs/client/getTeamFromAGG.js +5 -5
- package/dist/cjs/client/graphqlUtils.js +106 -36
- package/dist/cjs/client/types.js +5 -0
- package/dist/cjs/mocks/mock-team-client.js +6 -1
- package/dist/cjs/styled/ReportingLines.js +1 -1
- package/dist/cjs/styled/TeamCard.js +2 -2
- package/dist/cjs/util/analytics.js +1 -1
- package/dist/cjs/util/errors.js +114 -0
- package/dist/es2019/client/TeamCentralCardClient.js +3 -3
- package/dist/es2019/client/UserProfileCardClient.js +2 -2
- package/dist/es2019/client/errorUtils.js +63 -12
- package/dist/es2019/client/getTeamFromAGG.js +3 -3
- package/dist/es2019/client/graphqlUtils.js +28 -26
- package/dist/es2019/client/types.js +1 -0
- package/dist/es2019/mocks/mock-team-client.js +6 -1
- package/dist/es2019/styled/ReportingLines.js +1 -1
- package/dist/es2019/styled/TeamCard.js +3 -3
- package/dist/es2019/util/analytics.js +1 -1
- package/dist/es2019/util/errors.js +59 -0
- package/dist/esm/client/TeamCentralCardClient.js +3 -3
- package/dist/esm/client/UserProfileCardClient.js +2 -2
- package/dist/esm/client/errorUtils.js +63 -12
- package/dist/esm/client/getTeamFromAGG.js +6 -6
- package/dist/esm/client/graphqlUtils.js +104 -35
- package/dist/esm/client/types.js +1 -0
- package/dist/esm/mocks/mock-team-client.js +6 -1
- package/dist/esm/styled/ReportingLines.js +1 -1
- package/dist/esm/styled/TeamCard.js +2 -2
- package/dist/esm/util/analytics.js +1 -1
- package/dist/esm/util/errors.js +102 -0
- package/dist/types/client/errorUtils.d.ts +5 -9
- package/dist/types/client/graphqlUtils.d.ts +13 -1
- package/dist/types/client/types.d.ts +12 -0
- package/dist/types/mocks/mock-team-client.d.ts +1 -0
- package/dist/types/util/analytics.d.ts +2 -1
- package/dist/types/util/errors.d.ts +43 -0
- package/dist/types-ts4.5/client/errorUtils.d.ts +5 -9
- package/dist/types-ts4.5/client/graphqlUtils.d.ts +13 -1
- package/dist/types-ts4.5/client/types.d.ts +12 -0
- package/dist/types-ts4.5/mocks/mock-team-client.d.ts +1 -0
- package/dist/types-ts4.5/util/analytics.d.ts +2 -1
- package/dist/types-ts4.5/util/errors.d.ts +43 -0
- package/package.json +6 -6
|
@@ -90,7 +90,7 @@ var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
|
|
|
90
90
|
case 2:
|
|
91
91
|
query = buildCheckFeatureFlagQuery(featureKey, context);
|
|
92
92
|
_context.next = 5;
|
|
93
|
-
return (0, _graphqlUtils.
|
|
93
|
+
return (0, _graphqlUtils.directoryGraphqlQuery)("".concat(this.options.teamCentralUrl, "?operationName=isFeatureKeyEnabled"), query);
|
|
94
94
|
case 5:
|
|
95
95
|
response = _context.sent;
|
|
96
96
|
return _context.abrupt("return", response.isFeatureEnabled.enabled);
|
|
@@ -121,7 +121,7 @@ var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
|
|
|
121
121
|
case 2:
|
|
122
122
|
query = buildReportingLinesQuery(userId);
|
|
123
123
|
_context2.next = 5;
|
|
124
|
-
return (0, _graphqlUtils.
|
|
124
|
+
return (0, _graphqlUtils.directoryGraphqlQuery)("".concat(this.options.teamCentralUrl, "?operationName=ReportingLines"), query);
|
|
125
125
|
case 5:
|
|
126
126
|
response = _context2.sent;
|
|
127
127
|
return _context2.abrupt("return", response.reportingLines);
|
|
@@ -93,7 +93,7 @@ var UserProfileCardClient = /*#__PURE__*/function (_CachingClient) {
|
|
|
93
93
|
case 2:
|
|
94
94
|
query = buildUserQuery(cloudId, userId);
|
|
95
95
|
_context.next = 5;
|
|
96
|
-
return (0, _graphqlUtils.
|
|
96
|
+
return (0, _graphqlUtils.directoryGraphqlQuery)(this.options.url, query);
|
|
97
97
|
case 5:
|
|
98
98
|
response = _context.sent;
|
|
99
99
|
return _context.abrupt("return", modifyResponse(response));
|
|
@@ -3,24 +3,77 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getErrorAttributes = void 0;
|
|
7
|
-
var
|
|
6
|
+
exports.handleDirectoryGraphQLErrors = exports.handleAGGErrors = exports.getErrorAttributes = void 0;
|
|
7
|
+
var _errors = require("../util/errors");
|
|
8
|
+
var IGNORED_ERROR_REASONS_DIRECTORY = [
|
|
8
9
|
// Error categories from pf-directory
|
|
9
|
-
'NotPermitted', 'Gone'
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
'NotPermitted', 'Gone'];
|
|
11
|
+
var IGNORE_ERROR_TYPES_AGG = ['IdentityUserNotFoundError', 'TEAMS_FORBIDDEN', 'TEAMS_TEAM_DELETED'];
|
|
12
|
+
var IGNORE_ERROR_CLASSIFICATIONS_AGG = ['Gone'];
|
|
12
13
|
function isIgnoredError(error) {
|
|
13
|
-
|
|
14
|
+
if (!error) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
if (error instanceof _errors.DirectoryGraphQLError) {
|
|
18
|
+
return !!error && IGNORED_ERROR_REASONS_DIRECTORY.includes(error.type);
|
|
19
|
+
} else if (error instanceof _errors.AGGError) {
|
|
20
|
+
return !!error.errorType && IGNORE_ERROR_TYPES_AGG.includes(error.errorType) || !!error.classification && IGNORE_ERROR_CLASSIFICATIONS_AGG.includes(error.classification);
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
14
23
|
}
|
|
15
24
|
var getErrorAttributes = function getErrorAttributes(error) {
|
|
16
|
-
|
|
25
|
+
if (error instanceof _errors.DirectoryGraphQLErrors) {
|
|
26
|
+
return {
|
|
27
|
+
errorMessage: error.message,
|
|
28
|
+
errorCount: error.errors.length,
|
|
29
|
+
errorDetails: error.errors.map(getErrorAttributes),
|
|
30
|
+
isSLOFailure: !error.errors.every(isIgnoredError),
|
|
31
|
+
traceId: error.traceId
|
|
32
|
+
};
|
|
33
|
+
} else if (error instanceof _errors.DirectoryGraphQLError) {
|
|
34
|
+
return {
|
|
35
|
+
errorMessage: error.message,
|
|
36
|
+
errorCategory: error.category,
|
|
37
|
+
errorType: error.type,
|
|
38
|
+
errorPath: error.path,
|
|
39
|
+
errorNumber: error.errorNumber,
|
|
40
|
+
isSLOFailure: !isIgnoredError(error)
|
|
41
|
+
};
|
|
42
|
+
} else if (error instanceof _errors.AGGErrors) {
|
|
43
|
+
return {
|
|
44
|
+
errorMessage: error.message,
|
|
45
|
+
errorCount: error.errors.length,
|
|
46
|
+
errorDetails: error.errors.map(getErrorAttributes),
|
|
47
|
+
isSLOFailure: !error.errors.every(isIgnoredError),
|
|
48
|
+
traceId: error.traceId
|
|
49
|
+
};
|
|
50
|
+
} else if (error instanceof _errors.AGGError) {
|
|
51
|
+
return {
|
|
52
|
+
errorMessage: error.message,
|
|
53
|
+
errorType: error.errorType,
|
|
54
|
+
errorStatusCode: error.statusCode,
|
|
55
|
+
isSLOFailure: !isIgnoredError(error),
|
|
56
|
+
errorCategory: error.classification
|
|
57
|
+
};
|
|
58
|
+
} else if (error instanceof Error) {
|
|
59
|
+
return {
|
|
60
|
+
errorMessage: error.message,
|
|
61
|
+
isSLOFailure: true
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Unknown
|
|
17
66
|
return {
|
|
18
|
-
errorMessage:
|
|
19
|
-
|
|
20
|
-
errorReason: (error === null || error === void 0 ? void 0 : error.reason) || 'default',
|
|
21
|
-
errorSource: error === null || error === void 0 ? void 0 : error.source,
|
|
22
|
-
isSLOFailure: !isIgnoredError(error),
|
|
23
|
-
traceId: (_error$traceId = error === null || error === void 0 ? void 0 : error.traceId) !== null && _error$traceId !== void 0 ? _error$traceId : undefined
|
|
67
|
+
errorMessage: 'Unknown error',
|
|
68
|
+
isSLOFailure: true
|
|
24
69
|
};
|
|
25
70
|
};
|
|
26
|
-
exports.getErrorAttributes = getErrorAttributes;
|
|
71
|
+
exports.getErrorAttributes = getErrorAttributes;
|
|
72
|
+
var handleDirectoryGraphQLErrors = function handleDirectoryGraphQLErrors(errors, traceId) {
|
|
73
|
+
throw new _errors.DirectoryGraphQLErrors(errors, traceId);
|
|
74
|
+
};
|
|
75
|
+
exports.handleDirectoryGraphQLErrors = handleDirectoryGraphQLErrors;
|
|
76
|
+
var handleAGGErrors = function handleAGGErrors(errors, traceId) {
|
|
77
|
+
throw new _errors.AGGErrors(errors, traceId);
|
|
78
|
+
};
|
|
79
|
+
exports.handleAGGErrors = handleAGGErrors;
|
|
@@ -66,7 +66,7 @@ var addHeaders = function addHeaders(headers) {
|
|
|
66
66
|
headers.append('X-ExperimentalApi', 'teams-beta');
|
|
67
67
|
headers.append('X-ExperimentalApi', 'team-members-beta');
|
|
68
68
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
69
|
-
headers.append('atl-client-version', "19.5.
|
|
69
|
+
headers.append('atl-client-version', "19.5.11");
|
|
70
70
|
return headers;
|
|
71
71
|
};
|
|
72
72
|
exports.addHeaders = addHeaders;
|
|
@@ -75,7 +75,7 @@ function getTeamFromAGG(_x, _x2, _x3) {
|
|
|
75
75
|
}
|
|
76
76
|
function _getTeamFromAGG() {
|
|
77
77
|
_getTeamFromAGG = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url, teamId, siteId) {
|
|
78
|
-
var query, _yield$
|
|
78
|
+
var query, _yield$AGGQuery, Team;
|
|
79
79
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
80
80
|
while (1) switch (_context.prev = _context.next) {
|
|
81
81
|
case 0:
|
|
@@ -84,10 +84,10 @@ function _getTeamFromAGG() {
|
|
|
84
84
|
siteId: siteId
|
|
85
85
|
});
|
|
86
86
|
_context.next = 3;
|
|
87
|
-
return (0, _graphqlUtils.
|
|
87
|
+
return (0, _graphqlUtils.AGGQuery)(url, query, addHeaders);
|
|
88
88
|
case 3:
|
|
89
|
-
_yield$
|
|
90
|
-
Team = _yield$
|
|
89
|
+
_yield$AGGQuery = _context.sent;
|
|
90
|
+
Team = _yield$AGGQuery.Team;
|
|
91
91
|
return _context.abrupt("return", convertTeam(Team));
|
|
92
92
|
case 6:
|
|
93
93
|
case "end":
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
|
-
exports.
|
|
7
|
+
exports.AGGQuery = AGGQuery;
|
|
8
|
+
exports.directoryGraphqlQuery = directoryGraphqlQuery;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _errors = require("../util/errors");
|
|
12
|
+
var _errorUtils = require("./errorUtils");
|
|
7
13
|
var buildHeaders = function buildHeaders() {
|
|
8
14
|
var headers = new Headers();
|
|
9
15
|
headers.append('Content-Type', 'application/json');
|
|
@@ -18,39 +24,103 @@ var id = function id(headers) {
|
|
|
18
24
|
* @param {Query} query - GraphQL query
|
|
19
25
|
* @param {HeaderProcessor} processHeaders - a function to add extra headers to the request
|
|
20
26
|
*/
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
27
|
+
function directoryGraphqlQuery(_x, _x2) {
|
|
28
|
+
return _directoryGraphqlQuery.apply(this, arguments);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @param {string} serviceUrl - GraphQL service endpoint
|
|
32
|
+
* @param {Query} query - GraphQL query
|
|
33
|
+
* @param {HeaderProcessor} processHeaders - a function to add extra headers to the request
|
|
34
|
+
*/
|
|
35
|
+
function _directoryGraphqlQuery() {
|
|
36
|
+
_directoryGraphqlQuery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(serviceUrl, query) {
|
|
37
|
+
var processHeaders,
|
|
38
|
+
_args = arguments;
|
|
39
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
40
|
+
while (1) switch (_context.prev = _context.next) {
|
|
41
|
+
case 0:
|
|
42
|
+
processHeaders = _args.length > 2 && _args[2] !== undefined ? _args[2] : id;
|
|
43
|
+
return _context.abrupt("return", graphQLQuery(serviceUrl, query, processHeaders, _errorUtils.handleDirectoryGraphQLErrors));
|
|
44
|
+
case 2:
|
|
45
|
+
case "end":
|
|
46
|
+
return _context.stop();
|
|
47
|
+
}
|
|
48
|
+
}, _callee);
|
|
49
|
+
}));
|
|
50
|
+
return _directoryGraphqlQuery.apply(this, arguments);
|
|
51
|
+
}
|
|
52
|
+
function AGGQuery(_x3, _x4) {
|
|
53
|
+
return _AGGQuery.apply(this, arguments);
|
|
54
|
+
}
|
|
55
|
+
function _AGGQuery() {
|
|
56
|
+
_AGGQuery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(serviceUrl, query) {
|
|
57
|
+
var processHeaders,
|
|
58
|
+
_args2 = arguments;
|
|
59
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
60
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
61
|
+
case 0:
|
|
62
|
+
processHeaders = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : id;
|
|
63
|
+
return _context2.abrupt("return", graphQLQuery(serviceUrl, query, processHeaders, _errorUtils.handleAGGErrors));
|
|
64
|
+
case 2:
|
|
65
|
+
case "end":
|
|
66
|
+
return _context2.stop();
|
|
67
|
+
}
|
|
68
|
+
}, _callee2);
|
|
69
|
+
}));
|
|
70
|
+
return _AGGQuery.apply(this, arguments);
|
|
71
|
+
}
|
|
72
|
+
function graphQLQuery(_x5, _x6) {
|
|
73
|
+
return _graphQLQuery.apply(this, arguments);
|
|
74
|
+
}
|
|
75
|
+
function _graphQLQuery() {
|
|
76
|
+
_graphQLQuery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(serviceUrl, query) {
|
|
77
|
+
var _response$headers;
|
|
78
|
+
var processHeaders,
|
|
79
|
+
handleErrors,
|
|
80
|
+
headers,
|
|
81
|
+
response,
|
|
82
|
+
traceIdFromHeaders,
|
|
83
|
+
json,
|
|
84
|
+
_json$extensions$gate,
|
|
85
|
+
_json$extensions,
|
|
86
|
+
_json$extensions$gate2,
|
|
87
|
+
_args3 = arguments;
|
|
88
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
89
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
90
|
+
case 0:
|
|
91
|
+
processHeaders = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : id;
|
|
92
|
+
handleErrors = _args3.length > 3 ? _args3[3] : undefined;
|
|
93
|
+
headers = processHeaders(buildHeaders());
|
|
94
|
+
_context3.next = 5;
|
|
95
|
+
return fetch(new Request(serviceUrl, {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
credentials: 'include',
|
|
98
|
+
mode: 'cors',
|
|
99
|
+
headers: headers,
|
|
100
|
+
body: JSON.stringify(query)
|
|
101
|
+
}));
|
|
102
|
+
case 5:
|
|
103
|
+
response = _context3.sent;
|
|
104
|
+
traceIdFromHeaders = response === null || response === void 0 ? void 0 : (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.get('atl-traceid');
|
|
105
|
+
if (response.ok) {
|
|
106
|
+
_context3.next = 9;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
throw new _errors.HttpError(response.status, response.statusText, traceIdFromHeaders);
|
|
110
|
+
case 9:
|
|
111
|
+
_context3.next = 11;
|
|
112
|
+
return response.json();
|
|
113
|
+
case 11:
|
|
114
|
+
json = _context3.sent;
|
|
115
|
+
if (json.errors) {
|
|
116
|
+
handleErrors(json.errors, (_json$extensions$gate = (_json$extensions = json.extensions) === null || _json$extensions === void 0 ? void 0 : (_json$extensions$gate2 = _json$extensions.gateway) === null || _json$extensions$gate2 === void 0 ? void 0 : _json$extensions$gate2.request_id) !== null && _json$extensions$gate !== void 0 ? _json$extensions$gate : traceIdFromHeaders);
|
|
117
|
+
}
|
|
118
|
+
return _context3.abrupt("return", json.data);
|
|
119
|
+
case 14:
|
|
120
|
+
case "end":
|
|
121
|
+
return _context3.stop();
|
|
122
|
+
}
|
|
123
|
+
}, _callee3);
|
|
124
|
+
}));
|
|
125
|
+
return _graphQLQuery.apply(this, arguments);
|
|
56
126
|
}
|
|
@@ -10,6 +10,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
10
10
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
11
11
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
12
12
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
13
|
+
var _errorUtils = require("../client/errorUtils");
|
|
13
14
|
var _TeamProfileCardClient = _interopRequireDefault(require("../client/TeamProfileCardClient"));
|
|
14
15
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
15
16
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -34,7 +35,11 @@ function getMockTeamClient(data) {
|
|
|
34
35
|
};
|
|
35
36
|
if (!data.timeout) {
|
|
36
37
|
if (data.error && Math.random() < data.errorRate) {
|
|
37
|
-
|
|
38
|
+
try {
|
|
39
|
+
(0, _errorUtils.handleAGGErrors)(data.error, data.traceId);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
return Promise.reject(e);
|
|
42
|
+
}
|
|
38
43
|
}
|
|
39
44
|
return Promise.resolve(data.team);
|
|
40
45
|
}
|
|
@@ -18,5 +18,5 @@ var ManagerSection = _styled.default.div(_templateObject3 || (_templateObject3 =
|
|
|
18
18
|
exports.ManagerSection = ManagerSection;
|
|
19
19
|
var ManagerName = _styled.default.span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n margin-left: ", ";\n"])), (0, _constants.gridSize)() * 1.5, "var(--ds-space-100, 8px)");
|
|
20
20
|
exports.ManagerName = ManagerName;
|
|
21
|
-
var OffsetWrapper = _styled.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: ", ";\n // Offset left margin so the avatar aligns with the heading\n margin-left:
|
|
21
|
+
var OffsetWrapper = _styled.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: ", ";\n // Offset left margin so the avatar aligns with the heading\n margin-left: ", ";\n"])), "var(--ds-space-050, 4px)", "var(--ds-space-negative-050, -4px)");
|
|
22
22
|
exports.OffsetWrapper = OffsetWrapper;
|
|
@@ -30,13 +30,13 @@ var TeamName = _styled.default.h6(_templateObject6 || (_templateObject6 = (0, _t
|
|
|
30
30
|
exports.TeamName = TeamName;
|
|
31
31
|
var MemberCount = _styled.default.div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n margin-top: ", ";\n"])), "var(--ds-text-subtlest, ".concat(_colors.N200, ")"), "var(--ds-space-050, 4px)");
|
|
32
32
|
exports.MemberCount = MemberCount;
|
|
33
|
-
var AvatarSection = _styled.default.div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: ", ";\n margin-left:
|
|
33
|
+
var AvatarSection = _styled.default.div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: ", ";\n margin-left: ", ";\n"])), "var(--ds-space-200, 16px)", "var(--ds-space-negative-025, -2px)");
|
|
34
34
|
exports.AvatarSection = AvatarSection;
|
|
35
35
|
var DescriptionWrapper = _styled.default.div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: ", ";\n align-items: center;\n display: flex;\n"])), "var(--ds-space-200, 16px)");
|
|
36
36
|
exports.DescriptionWrapper = DescriptionWrapper;
|
|
37
37
|
var Description = _styled.default.span(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["\n overflow: hidden;\n max-height: 60px;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n"])));
|
|
38
38
|
exports.Description = Description;
|
|
39
|
-
var ActionButtons = _styled.default.div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["\n width: calc(100% + 8px);\n display: flex;\n justify-content: space-between;\n margin: ", "
|
|
39
|
+
var ActionButtons = _styled.default.div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["\n width: calc(100% + 8px);\n display: flex;\n justify-content: space-between;\n margin: ", " ", "\n 0 ", ";\n background-color: ", ";\n"])), "var(--ds-space-300, 24px)", "var(--ds-space-negative-300, -24px)", "var(--ds-space-negative-100, -8px)", "var(--ds-surface-overlay, hsla(0, 100%, 100%, 0.2))");
|
|
40
40
|
exports.ActionButtons = ActionButtons;
|
|
41
41
|
var WrappedButton = _styled.default.div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["\n flex-basis: 0;\n flex-grow: 1;\n margin-left: ", ";\n"])), "var(--ds-space-100, 8px)");
|
|
42
42
|
exports.WrappedButton = WrappedButton;
|
|
@@ -44,7 +44,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
44
44
|
actionSubjectId: actionSubjectId,
|
|
45
45
|
attributes: _objectSpread(_objectSpread({
|
|
46
46
|
packageName: "@atlaskit/profilecard",
|
|
47
|
-
packageVersion: "19.5.
|
|
47
|
+
packageVersion: "19.5.11"
|
|
48
48
|
}, attributes), {}, {
|
|
49
49
|
firedAt: Math.round((0, _performance.getPageTime)())
|
|
50
50
|
})
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.HttpError = exports.DirectoryGraphQLErrors = exports.DirectoryGraphQLError = exports.AGGErrors = exports.AGGError = void 0;
|
|
8
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
15
|
+
var _excluded = ["errorNumber"],
|
|
16
|
+
_excluded2 = ["statusCode", "errorType", "classification"];
|
|
17
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
18
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
19
|
+
var HttpError = /*#__PURE__*/function (_Error) {
|
|
20
|
+
(0, _inherits2.default)(HttpError, _Error);
|
|
21
|
+
var _super = _createSuper(HttpError);
|
|
22
|
+
function HttpError(code, reason, traceId) {
|
|
23
|
+
var _this;
|
|
24
|
+
(0, _classCallCheck2.default)(this, HttpError);
|
|
25
|
+
_this = _super.call(this, reason);
|
|
26
|
+
_this.code = code;
|
|
27
|
+
_this.traceId = traceId;
|
|
28
|
+
return _this;
|
|
29
|
+
}
|
|
30
|
+
return (0, _createClass2.default)(HttpError);
|
|
31
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
32
|
+
exports.HttpError = HttpError;
|
|
33
|
+
var DirectoryGraphQLError = /*#__PURE__*/function (_Error2) {
|
|
34
|
+
(0, _inherits2.default)(DirectoryGraphQLError, _Error2);
|
|
35
|
+
var _super2 = _createSuper(DirectoryGraphQLError);
|
|
36
|
+
function DirectoryGraphQLError(message, category, type, extensions) {
|
|
37
|
+
var _this2;
|
|
38
|
+
var path = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
|
|
39
|
+
(0, _classCallCheck2.default)(this, DirectoryGraphQLError);
|
|
40
|
+
_this2 = _super2.call(this, message);
|
|
41
|
+
_this2.category = category;
|
|
42
|
+
_this2.type = type;
|
|
43
|
+
_this2.path = path.join('.');
|
|
44
|
+
var errorNumber = extensions.errorNumber,
|
|
45
|
+
unknownExtension = (0, _objectWithoutProperties2.default)(extensions, _excluded);
|
|
46
|
+
_this2.errorNumber = extensions.errorNumber;
|
|
47
|
+
_this2.extensions = unknownExtension;
|
|
48
|
+
return _this2;
|
|
49
|
+
}
|
|
50
|
+
return (0, _createClass2.default)(DirectoryGraphQLError);
|
|
51
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
52
|
+
exports.DirectoryGraphQLError = DirectoryGraphQLError;
|
|
53
|
+
var DirectoryGraphQLErrors = /*#__PURE__*/function (_Error3) {
|
|
54
|
+
(0, _inherits2.default)(DirectoryGraphQLErrors, _Error3);
|
|
55
|
+
var _super3 = _createSuper(DirectoryGraphQLErrors);
|
|
56
|
+
function DirectoryGraphQLErrors(errors, traceId) {
|
|
57
|
+
var _this3;
|
|
58
|
+
(0, _classCallCheck2.default)(this, DirectoryGraphQLErrors);
|
|
59
|
+
_this3 = _super3.call(this, 'DirectoryGraphQLErrors');
|
|
60
|
+
_this3.traceId = traceId;
|
|
61
|
+
if (Array.isArray(errors)) {
|
|
62
|
+
_this3.errors = errors.map(function (error) {
|
|
63
|
+
return new DirectoryGraphQLError(error.message, error.category, error.type, error.extensions, error.path);
|
|
64
|
+
});
|
|
65
|
+
} else {
|
|
66
|
+
_this3.errors = [];
|
|
67
|
+
}
|
|
68
|
+
return _this3;
|
|
69
|
+
}
|
|
70
|
+
return (0, _createClass2.default)(DirectoryGraphQLErrors);
|
|
71
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
72
|
+
exports.DirectoryGraphQLErrors = DirectoryGraphQLErrors;
|
|
73
|
+
var AGGError = /*#__PURE__*/function (_Error4) {
|
|
74
|
+
(0, _inherits2.default)(AGGError, _Error4);
|
|
75
|
+
var _super4 = _createSuper(AGGError);
|
|
76
|
+
function AGGError(message, extensions) {
|
|
77
|
+
var _this4;
|
|
78
|
+
var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
79
|
+
(0, _classCallCheck2.default)(this, AGGError);
|
|
80
|
+
_this4 = _super4.call(this, message);
|
|
81
|
+
_this4.path = path === null || path === void 0 ? void 0 : path.join('.');
|
|
82
|
+
var statusCode = extensions.statusCode,
|
|
83
|
+
errorType = extensions.errorType,
|
|
84
|
+
classification = extensions.classification,
|
|
85
|
+
unknownExtension = (0, _objectWithoutProperties2.default)(extensions, _excluded2);
|
|
86
|
+
_this4.statusCode = statusCode;
|
|
87
|
+
_this4.errorType = errorType;
|
|
88
|
+
_this4.classification = classification;
|
|
89
|
+
_this4.extensions = unknownExtension;
|
|
90
|
+
return _this4;
|
|
91
|
+
}
|
|
92
|
+
return (0, _createClass2.default)(AGGError);
|
|
93
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
94
|
+
exports.AGGError = AGGError;
|
|
95
|
+
var AGGErrors = /*#__PURE__*/function (_Error5) {
|
|
96
|
+
(0, _inherits2.default)(AGGErrors, _Error5);
|
|
97
|
+
var _super5 = _createSuper(AGGErrors);
|
|
98
|
+
function AGGErrors(errors, traceId) {
|
|
99
|
+
var _this5;
|
|
100
|
+
(0, _classCallCheck2.default)(this, AGGErrors);
|
|
101
|
+
_this5 = _super5.call(this, 'AGGErrors');
|
|
102
|
+
_this5.traceId = traceId;
|
|
103
|
+
if (Array.isArray(errors)) {
|
|
104
|
+
_this5.errors = errors.map(function (error) {
|
|
105
|
+
return new AGGError(error.message, error.extensions, error.path);
|
|
106
|
+
});
|
|
107
|
+
} else {
|
|
108
|
+
_this5.errors = [];
|
|
109
|
+
}
|
|
110
|
+
return _this5;
|
|
111
|
+
}
|
|
112
|
+
return (0, _createClass2.default)(AGGErrors);
|
|
113
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
114
|
+
exports.AGGErrors = AGGErrors;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import CachingClient from './CachingClient';
|
|
2
|
-
import {
|
|
2
|
+
import { directoryGraphqlQuery } from './graphqlUtils';
|
|
3
3
|
const buildReportingLinesQuery = aaid => ({
|
|
4
4
|
query: `
|
|
5
5
|
fragment ReportingLinesUserPII on UserPII {
|
|
@@ -82,7 +82,7 @@ class TeamCentralCardClient extends CachingClient {
|
|
|
82
82
|
throw new Error('options.teamCentralUrl is a required parameter for retrieving Team Central data');
|
|
83
83
|
}
|
|
84
84
|
const query = buildCheckFeatureFlagQuery(featureKey, context);
|
|
85
|
-
const response = await
|
|
85
|
+
const response = await directoryGraphqlQuery(`${this.options.teamCentralUrl}?operationName=isFeatureKeyEnabled`, query);
|
|
86
86
|
return response.isFeatureEnabled.enabled;
|
|
87
87
|
}
|
|
88
88
|
async makeRequest(userId) {
|
|
@@ -90,7 +90,7 @@ class TeamCentralCardClient extends CachingClient {
|
|
|
90
90
|
throw new Error('options.teamCentralUrl is a required parameter for retrieving Team Central data');
|
|
91
91
|
}
|
|
92
92
|
const query = buildReportingLinesQuery(userId);
|
|
93
|
-
const response = await
|
|
93
|
+
const response = await directoryGraphqlQuery(`${this.options.teamCentralUrl}?operationName=ReportingLines`, query);
|
|
94
94
|
return response.reportingLines;
|
|
95
95
|
}
|
|
96
96
|
getReportingLines(userId) {
|
|
@@ -2,7 +2,7 @@ import { userRequestAnalytics } from '../util/analytics';
|
|
|
2
2
|
import { getPageTime } from '../util/performance';
|
|
3
3
|
import CachingClient from './CachingClient';
|
|
4
4
|
import { getErrorAttributes } from './errorUtils';
|
|
5
|
-
import {
|
|
5
|
+
import { directoryGraphqlQuery } from './graphqlUtils';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Transform response from GraphQL
|
|
@@ -77,7 +77,7 @@ export default class UserProfileCardClient extends CachingClient {
|
|
|
77
77
|
throw new Error('options.url is a required parameter');
|
|
78
78
|
}
|
|
79
79
|
const query = buildUserQuery(cloudId, userId);
|
|
80
|
-
const response = await
|
|
80
|
+
const response = await directoryGraphqlQuery(this.options.url, query);
|
|
81
81
|
return modifyResponse(response);
|
|
82
82
|
}
|
|
83
83
|
getProfile(cloudId, userId, analytics) {
|
|
@@ -1,19 +1,70 @@
|
|
|
1
|
-
|
|
1
|
+
import { AGGError, AGGErrors, DirectoryGraphQLError, DirectoryGraphQLErrors } from '../util/errors';
|
|
2
|
+
const IGNORED_ERROR_REASONS_DIRECTORY = [
|
|
2
3
|
// Error categories from pf-directory
|
|
3
|
-
'NotPermitted', 'Gone'
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
'NotPermitted', 'Gone'];
|
|
5
|
+
const IGNORE_ERROR_TYPES_AGG = ['IdentityUserNotFoundError', 'TEAMS_FORBIDDEN', 'TEAMS_TEAM_DELETED'];
|
|
6
|
+
const IGNORE_ERROR_CLASSIFICATIONS_AGG = ['Gone'];
|
|
6
7
|
function isIgnoredError(error) {
|
|
7
|
-
|
|
8
|
+
if (!error) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (error instanceof DirectoryGraphQLError) {
|
|
12
|
+
return !!error && IGNORED_ERROR_REASONS_DIRECTORY.includes(error.type);
|
|
13
|
+
} else if (error instanceof AGGError) {
|
|
14
|
+
return !!error.errorType && IGNORE_ERROR_TYPES_AGG.includes(error.errorType) || !!error.classification && IGNORE_ERROR_CLASSIFICATIONS_AGG.includes(error.classification);
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
8
17
|
}
|
|
9
18
|
export const getErrorAttributes = error => {
|
|
10
|
-
|
|
19
|
+
if (error instanceof DirectoryGraphQLErrors) {
|
|
20
|
+
return {
|
|
21
|
+
errorMessage: error.message,
|
|
22
|
+
errorCount: error.errors.length,
|
|
23
|
+
errorDetails: error.errors.map(getErrorAttributes),
|
|
24
|
+
isSLOFailure: !error.errors.every(isIgnoredError),
|
|
25
|
+
traceId: error.traceId
|
|
26
|
+
};
|
|
27
|
+
} else if (error instanceof DirectoryGraphQLError) {
|
|
28
|
+
return {
|
|
29
|
+
errorMessage: error.message,
|
|
30
|
+
errorCategory: error.category,
|
|
31
|
+
errorType: error.type,
|
|
32
|
+
errorPath: error.path,
|
|
33
|
+
errorNumber: error.errorNumber,
|
|
34
|
+
isSLOFailure: !isIgnoredError(error)
|
|
35
|
+
};
|
|
36
|
+
} else if (error instanceof AGGErrors) {
|
|
37
|
+
return {
|
|
38
|
+
errorMessage: error.message,
|
|
39
|
+
errorCount: error.errors.length,
|
|
40
|
+
errorDetails: error.errors.map(getErrorAttributes),
|
|
41
|
+
isSLOFailure: !error.errors.every(isIgnoredError),
|
|
42
|
+
traceId: error.traceId
|
|
43
|
+
};
|
|
44
|
+
} else if (error instanceof AGGError) {
|
|
45
|
+
return {
|
|
46
|
+
errorMessage: error.message,
|
|
47
|
+
errorType: error.errorType,
|
|
48
|
+
errorStatusCode: error.statusCode,
|
|
49
|
+
isSLOFailure: !isIgnoredError(error),
|
|
50
|
+
errorCategory: error.classification
|
|
51
|
+
};
|
|
52
|
+
} else if (error instanceof Error) {
|
|
53
|
+
return {
|
|
54
|
+
errorMessage: error.message,
|
|
55
|
+
isSLOFailure: true
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Unknown
|
|
11
60
|
return {
|
|
12
|
-
errorMessage:
|
|
13
|
-
|
|
14
|
-
errorReason: (error === null || error === void 0 ? void 0 : error.reason) || 'default',
|
|
15
|
-
errorSource: error === null || error === void 0 ? void 0 : error.source,
|
|
16
|
-
isSLOFailure: !isIgnoredError(error),
|
|
17
|
-
traceId: (_error$traceId = error === null || error === void 0 ? void 0 : error.traceId) !== null && _error$traceId !== void 0 ? _error$traceId : undefined
|
|
61
|
+
errorMessage: 'Unknown error',
|
|
62
|
+
isSLOFailure: true
|
|
18
63
|
};
|
|
64
|
+
};
|
|
65
|
+
export const handleDirectoryGraphQLErrors = (errors, traceId) => {
|
|
66
|
+
throw new DirectoryGraphQLErrors(errors, traceId);
|
|
67
|
+
};
|
|
68
|
+
export const handleAGGErrors = (errors, traceId) => {
|
|
69
|
+
throw new AGGErrors(errors, traceId);
|
|
19
70
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
2
|
-
import {
|
|
2
|
+
import { AGGQuery } from './graphqlUtils';
|
|
3
3
|
export const extractIdFromAri = ari => {
|
|
4
4
|
const slashPos = ari.indexOf('/');
|
|
5
5
|
const id = ari.slice(slashPos + 1);
|
|
@@ -77,7 +77,7 @@ export const addHeaders = headers => {
|
|
|
77
77
|
headers.append('X-ExperimentalApi', 'teams-beta');
|
|
78
78
|
headers.append('X-ExperimentalApi', 'team-members-beta');
|
|
79
79
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
80
|
-
headers.append('atl-client-version', "19.5.
|
|
80
|
+
headers.append('atl-client-version', "19.5.11");
|
|
81
81
|
return headers;
|
|
82
82
|
};
|
|
83
83
|
export async function getTeamFromAGG(url, teamId, siteId) {
|
|
@@ -87,6 +87,6 @@ export async function getTeamFromAGG(url, teamId, siteId) {
|
|
|
87
87
|
});
|
|
88
88
|
const {
|
|
89
89
|
Team
|
|
90
|
-
} = await
|
|
90
|
+
} = await AGGQuery(url, query, addHeaders);
|
|
91
91
|
return convertTeam(Team);
|
|
92
92
|
}
|