@atlaskit/teams-client 5.4.0 → 5.6.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.
Files changed (82) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/cjs/common/utils/error/isAuthError.js +1 -1
  3. package/dist/cjs/common/utils/ufo/index.js +2 -2
  4. package/dist/cjs/index.js +19 -12
  5. package/dist/cjs/services/base-client/index.js +2 -2
  6. package/dist/cjs/services/constants.js +2 -1
  7. package/dist/cjs/services/invitations-client/InvitationsClient.js +1 -1
  8. package/dist/cjs/services/sentry/utils/get-sentry-config.js +1 -1
  9. package/dist/cjs/services/teams-in-slack-client/TeamsInSlackClient.js +110 -22
  10. package/dist/cjs/services/use-query-light/useQueryLight.js +3 -3
  11. package/dist/es2019/common/utils/ari.js +1 -0
  12. package/dist/es2019/common/utils/error/index.js +1 -0
  13. package/dist/es2019/common/utils/error/isAuthError.js +1 -1
  14. package/dist/es2019/common/utils/index.js +1 -0
  15. package/dist/es2019/common/utils/permissions/index.js +1 -0
  16. package/dist/es2019/common/utils/team.js +1 -0
  17. package/dist/es2019/common/utils/ufo/index.js +2 -2
  18. package/dist/es2019/index.js +10 -3
  19. package/dist/es2019/mocks/endpoints.js +1 -0
  20. package/dist/es2019/mocks/generate-data.js +1 -0
  21. package/dist/es2019/mocks/index.js +1 -0
  22. package/dist/es2019/services/agg-client/index.js +1 -0
  23. package/dist/es2019/services/base-client/index.js +1 -1
  24. package/dist/es2019/services/constants.js +2 -1
  25. package/dist/es2019/services/hooks/use-teams-client-setup.js +1 -0
  26. package/dist/es2019/services/invitations-client/InvitationsClient.js +1 -1
  27. package/dist/es2019/services/public-api-client/index.js +1 -0
  28. package/dist/es2019/services/sentry/index.js +1 -0
  29. package/dist/es2019/services/sentry/main.js +1 -0
  30. package/dist/es2019/services/sentry/utils/get-sentry-config.js +1 -1
  31. package/dist/es2019/services/teams-in-slack-client/TeamsInSlackClient.js +51 -1
  32. package/dist/es2019/services/use-query-light/index.js +1 -0
  33. package/dist/es2019/services/use-query-light/main.js +1 -0
  34. package/dist/es2019/services/use-query-light/useQueryLight.js +1 -1
  35. package/dist/esm/common/utils/ari.js +1 -0
  36. package/dist/esm/common/utils/error/index.js +1 -0
  37. package/dist/esm/common/utils/error/isAuthError.js +1 -1
  38. package/dist/esm/common/utils/index.js +1 -0
  39. package/dist/esm/common/utils/permissions/index.js +1 -0
  40. package/dist/esm/common/utils/team.js +1 -0
  41. package/dist/esm/common/utils/ufo/index.js +2 -2
  42. package/dist/esm/index.js +10 -3
  43. package/dist/esm/mocks/endpoints.js +1 -0
  44. package/dist/esm/mocks/generate-data.js +1 -0
  45. package/dist/esm/mocks/index.js +1 -0
  46. package/dist/esm/services/agg-client/index.js +1 -0
  47. package/dist/esm/services/base-client/index.js +1 -1
  48. package/dist/esm/services/constants.js +2 -1
  49. package/dist/esm/services/hooks/use-teams-client-setup.js +1 -0
  50. package/dist/esm/services/invitations-client/InvitationsClient.js +1 -1
  51. package/dist/esm/services/public-api-client/index.js +1 -0
  52. package/dist/esm/services/sentry/index.js +1 -0
  53. package/dist/esm/services/sentry/main.js +1 -0
  54. package/dist/esm/services/sentry/utils/get-sentry-config.js +1 -1
  55. package/dist/esm/services/teams-in-slack-client/TeamsInSlackClient.js +110 -22
  56. package/dist/esm/services/use-query-light/index.js +1 -0
  57. package/dist/esm/services/use-query-light/main.js +1 -0
  58. package/dist/esm/services/use-query-light/useQueryLight.js +1 -1
  59. package/dist/types/common/utils/is-invited.d.ts +1 -1
  60. package/dist/types/common/utils/is-member.d.ts +1 -1
  61. package/dist/types/common/utils/is-non-member.d.ts +1 -1
  62. package/dist/types/common/utils/is-requesting-join.d.ts +1 -1
  63. package/dist/types/common/utils/sort-teams.d.ts +1 -1
  64. package/dist/types/index.d.ts +13 -5
  65. package/dist/types/mocks/fixed-team-memberships.d.ts +1 -1
  66. package/dist/types/mocks/random-returned-new-team-data.d.ts +1 -1
  67. package/dist/types/mocks/random-team-membership.d.ts +1 -1
  68. package/dist/types/mocks/random-team-memberships.d.ts +1 -1
  69. package/dist/types/mocks/responses.d.ts +1 -1
  70. package/dist/types/mocks/team-link.d.ts +1 -1
  71. package/dist/types/mocks/with-faker.d.ts +3 -1
  72. package/dist/types/services/agg-client/index.d.ts +3 -2
  73. package/dist/types/services/agg-client/utils/queries/team-membership-query.d.ts +1 -1
  74. package/dist/types/services/constants.d.ts +1 -1
  75. package/dist/types/services/directory-client/index.d.ts +1 -1
  76. package/dist/types/services/identity-client/IdentityClient.d.ts +1 -1
  77. package/dist/types/services/legion-client/index.d.ts +4 -2
  78. package/dist/types/services/main.d.ts +4 -2
  79. package/dist/types/services/public-api-client/PublicApiClient.d.ts +1 -1
  80. package/dist/types/services/teams-in-slack-client/TeamsInSlackClient.d.ts +20 -21
  81. package/dist/types/types/config.d.ts +1 -0
  82. package/package.json +6 -36
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # @atlaskit/teams-client
2
2
 
3
+ ## 5.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`5b39d8c208f0f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5b39d8c208f0f) -
8
+ Migrate `TeamsInSlackClient` to Staffy Global Edge URL with staff auth handling.
9
+
10
+ When `ptc-onboard-teams-slack-app-to-global-edge-url` is ON, all `/api/team/{teamId}` calls (GET,
11
+ POST, DELETE) are routed to `https://teams-slack-app.services.atlassian.com` instead of the
12
+ Stargate path `/gateway/api/teamsslack/api/team`.
13
+
14
+ To handle the case where the user has no Staffy SST cookie (which would cause a silent fetch
15
+ failure due to a `302 → Okta` redirect being followed inside `fetch()`), a pre-flight
16
+ `GET /api/authping` probe is made before each call. If the probe fails, the client performs a
17
+ top-level `window.location.assign()` to `/staffy/login?return_to=<current URL>` so the browser
18
+ completes the Okta SSO flow and sets the SST cookie before retrying. An in-memory flag prevents
19
+ infinite redirect loops.
20
+
21
+ Falls back to Stargate when the gate is OFF. No changes to `RestClient` or any other client.
22
+
23
+ Also adds `teamsInSlackServiceUrl` to `TeamsClientConfig` to allow per-environment URL overrides.
24
+
25
+ ## 5.5.0
26
+
27
+ ### Minor Changes
28
+
29
+ - [`04c2bee47b7d0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/04c2bee47b7d0) -
30
+ Migrate `TeamsInSlackClient` to use the Staffy Global Edge URL behind the feature gate
31
+ `ptc-onboard-teams-slack-app-to-global-edge-url`.
32
+
33
+ When the gate is enabled, all `/api/team/{teamId}` calls (GET, POST, DELETE) are routed to
34
+ `https://teams-slack-app.services.atlassian.com` instead of the Stargate path
35
+ `/gateway/api/teamsslack/api/team`. Falls back to Stargate when the gate is off.
36
+
37
+ Also adds `teamsInSlackServiceUrl` to `TeamsClientConfig` to allow per-environment URL overrides.
38
+
3
39
  ## 5.4.0
4
40
 
5
41
  ### Minor Changes
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isAuthError = isAuthError;
7
- var _isErrorStatusCode = require("./isErrorStatusCode");
8
7
  var _index = require("./index");
8
+ var _isErrorStatusCode = require("./isErrorStatusCode");
9
9
  function isAuthError(error) {
10
10
  return (0, _isErrorStatusCode.isErrorStatusCode)(_index.StatusCode.UNAUTHORIZED, error) || (0, _isErrorStatusCode.isErrorStatusCode)(_index.StatusCode.FORBIDDEN, error);
11
11
  }
@@ -56,7 +56,7 @@ var TeamsUFOExperience = exports.TeamsUFOExperience = /*#__PURE__*/function (_UF
56
56
  return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
57
57
  metadata: {
58
58
  error: (0, _createErrorMetadata.createErrorMetadata)(error),
59
- packageVersion: "5.3.0",
59
+ packageVersion: "5.5.0",
60
60
  packageName: "@atlaskit/teams-client"
61
61
  }
62
62
  }]);
@@ -64,7 +64,7 @@ var TeamsUFOExperience = exports.TeamsUFOExperience = /*#__PURE__*/function (_UF
64
64
  return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
65
65
  metadata: {
66
66
  error: 'unknown error',
67
- packageVersion: "5.3.0",
67
+ packageVersion: "5.5.0",
68
68
  packageName: "@atlaskit/teams-client"
69
69
  }
70
70
  }]);
package/dist/cjs/index.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "AllTeamActions", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _permissions.AllTeamActions;
9
+ return _types.AllTeamActions;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "HttpError", {
@@ -24,7 +24,7 @@ Object.defineProperty(exports, "TeamsClient", {
24
24
  Object.defineProperty(exports, "UseQueryLightError", {
25
25
  enumerable: true,
26
26
  get: function get() {
27
- return _useQueryLight.UseQueryLightError;
27
+ return _UseQueryLightError.UseQueryLightError;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "UserInfoProvider", {
@@ -36,7 +36,7 @@ Object.defineProperty(exports, "UserInfoProvider", {
36
36
  Object.defineProperty(exports, "hasPermission", {
37
37
  enumerable: true,
38
38
  get: function get() {
39
- return _permissions.hasPermission;
39
+ return _hasPermission.hasPermission;
40
40
  }
41
41
  });
42
42
  Object.defineProperty(exports, "initialiseSentry", {
@@ -48,25 +48,25 @@ Object.defineProperty(exports, "initialiseSentry", {
48
48
  Object.defineProperty(exports, "isInvited", {
49
49
  enumerable: true,
50
50
  get: function get() {
51
- return _utils.isInvited;
51
+ return _isInvited.isInvited;
52
52
  }
53
53
  });
54
54
  Object.defineProperty(exports, "isMember", {
55
55
  enumerable: true,
56
56
  get: function get() {
57
- return _utils.isMember;
57
+ return _isMember.isMember;
58
58
  }
59
59
  });
60
60
  Object.defineProperty(exports, "isNonMember", {
61
61
  enumerable: true,
62
62
  get: function get() {
63
- return _utils.isNonMember;
63
+ return _isNonMember.isNonMember;
64
64
  }
65
65
  });
66
66
  Object.defineProperty(exports, "isRequestingJoin", {
67
67
  enumerable: true,
68
68
  get: function get() {
69
- return _utils.isRequestingJoin;
69
+ return _isRequestingJoin.isRequestingJoin;
70
70
  }
71
71
  });
72
72
  Object.defineProperty(exports, "isTeamMembershipWithUser", {
@@ -90,7 +90,7 @@ Object.defineProperty(exports, "logInfoMessage", {
90
90
  Object.defineProperty(exports, "sortMembersByType", {
91
91
  enumerable: true,
92
92
  get: function get() {
93
- return _utils.sortMembersByType;
93
+ return _sortTeams.sortMembersByType;
94
94
  }
95
95
  });
96
96
  Object.defineProperty(exports, "teamsClient", {
@@ -126,7 +126,7 @@ Object.defineProperty(exports, "toUserId", {
126
126
  Object.defineProperty(exports, "useLazyQueryLight", {
127
127
  enumerable: true,
128
128
  get: function get() {
129
- return _useQueryLight.useLazyQueryLight;
129
+ return _useLazyQueryLight.useLazyQueryLight;
130
130
  }
131
131
  });
132
132
  Object.defineProperty(exports, "useQueryLight", {
@@ -158,14 +158,21 @@ var _membership = require("./types/membership");
158
158
  var _main = require("./services/main");
159
159
  var _useTeamsClientSetupNext = require("./services/hooks/use-teams-client-setup-next");
160
160
  var _useTeamsClientSetup = require("./services/hooks/use-teams-client-setup");
161
- var _permissions = require("./common/utils/permissions");
161
+ var _types = require("./common/utils/permissions/types");
162
+ var _hasPermission = require("./common/utils/permissions/has-permission");
162
163
  var _initialiseSentry = require("./services/sentry/utils/initialise-sentry");
163
164
  var _logException = require("./services/sentry/logException");
164
165
  var _logInfoMessage = require("./services/sentry/logInfoMessage");
165
166
  var _main2 = require("./services/user-info-provider/main");
166
- var _utils = require("./common/utils");
167
+ var _sortTeams = require("./common/utils/sort-teams");
168
+ var _isInvited = require("./common/utils/is-invited");
169
+ var _isMember = require("./common/utils/is-member");
170
+ var _isNonMember = require("./common/utils/is-non-member");
171
+ var _isRequestingJoin = require("./common/utils/is-requesting-join");
167
172
  var _toTeamAri = require("./common/utils/to-team-ari");
168
173
  var _toTeamId = require("./common/utils/to-team-id");
169
174
  var _toUserAri = require("./common/utils/to-user-ari");
170
175
  var _toUserId = require("./common/utils/to-user-id");
171
- var _useQueryLight = require("./services/use-query-light");
176
+ var _useLazyQueryLight = require("./services/use-query-light/useLazyQueryLight");
177
+ var _useQueryLight = require("./services/use-query-light/useQueryLight");
178
+ var _UseQueryLightError = require("./services/use-query-light/UseQueryLightError");
@@ -8,7 +8,7 @@ exports.BaseClient = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _sentry = require("../sentry");
11
+ var _logException = require("../sentry/logException");
12
12
  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; }
13
13
  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; }
14
14
  var BaseClient = exports.BaseClient = /*#__PURE__*/function () {
@@ -17,7 +17,7 @@ var BaseClient = exports.BaseClient = /*#__PURE__*/function () {
17
17
  (0, _classCallCheck2.default)(this, BaseClient);
18
18
  (0, _defineProperty2.default)(this, "cache", {});
19
19
  (0, _defineProperty2.default)(this, "logException", function (ex, name, context) {
20
- (0, _sentry.logException)(ex, name, context);
20
+ (0, _logException.logException)(ex, name, context);
21
21
  _this.config.logException(ex, name, context);
22
22
  });
23
23
  this.config = config;
@@ -9,5 +9,6 @@ var DEFAULT_CONFIG = exports.DEFAULT_CONFIG = {
9
9
  permsServiceUrl: '/gateway/api/permissions',
10
10
  publicApiRoot: '/gateway/api/public',
11
11
  invitationsServiceUrl: '/gateway/api/invitations',
12
- collaborationGraphUrl: '/gateway/api/collaboration'
12
+ collaborationGraphUrl: '/gateway/api/collaboration',
13
+ teamsInSlackServiceUrl: 'https://teams-slack-app.services.atlassian.com/api/team'
13
14
  };
@@ -13,8 +13,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
13
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
15
  var _restClient = require("../rest-client");
16
- var _utils = require("./utils");
17
16
  var _index = require("./index");
17
+ var _utils = require("./utils");
18
18
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
19
19
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
20
20
  var ALL_SUPPORTED_PRODUCTS = ['confluence', 'jira', 'jira-core', 'jira-servicedesk', 'jira-software', 'jira-incident-manager', 'jira-product-discovery', 'opsgenie', 'statuspage', 'avocado', 'townsquare', 'compass', 'avp', 'beacon', 'mercury'];
@@ -36,7 +36,7 @@ function getSentryConfig(options) {
36
36
  return _objectSpread(_objectSpread(_objectSpread({}, otherOptions), DEFAULT_SENTRY_CONFIG), {}, {
37
37
  // Standalone __VERSION__ is set from `bin/set-release-version.sh`
38
38
  // when building to deploy to production
39
- release: "".concat("@atlaskit/teams-client", "@").concat("5.3.0") ||
39
+ release: "".concat("@atlaskit/teams-client", "@").concat("5.5.0") ||
40
40
  // @ts-ignore Jira - window.BUILD_KEY
41
41
  window.BUILD_KEY || ( // @ts-ignore Confluence - window.__buildInfo
42
42
  (_window$__buildInfo = window.__buildInfo) === null || _window$__buildInfo === void 0 ? void 0 : _window$__buildInfo.FRONTEND_VERSION) || '---',
@@ -13,39 +13,121 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
13
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
15
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
+ var _fg = require("@atlaskit/platform-feature-flags/fg");
17
+ var _SLOIgnoreError = require("../../common/utils/error/SLOIgnoreError");
16
18
  var _constants = require("../constants");
17
19
  var _restClient = require("../rest-client");
20
+ var _redirectCount = require("../rest-client/utils/redirect-count");
18
21
  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; }
19
22
  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; }
20
23
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
21
24
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
25
+ var GLOBAL_EDGE_ORIGIN = new URL(_constants.DEFAULT_CONFIG.teamsInSlackServiceUrl).origin;
22
26
  var defaultConfig = {
23
- serviceUrl: "".concat(_constants.DEFAULT_CONFIG.stargateRoot, "/teamsslack/api/team")
27
+ get serviceUrl() {
28
+ return (0, _fg.fg)('ptc-onboard-teams-slack-app-to-global-edge-url') ? _constants.DEFAULT_CONFIG.teamsInSlackServiceUrl : "".concat(_constants.DEFAULT_CONFIG.stargateRoot, "/teamsslack/api/team");
29
+ }
24
30
  };
31
+
32
+ // Shared in-flight probe: concurrent callers coalesce onto one fetch rather
33
+ // than each firing their own and racing on the flag.
34
+ var staffyAuthProbe = null;
35
+
36
+ // Prevents an infinite redirect loop if Okta completes but auth still fails.
37
+ // Resets on full page reload — correct, since a reload after login should retry.
38
+ var staffyAuthAttempted = false;
25
39
  var TeamsInSlackClient = exports.TeamsInSlackClient = /*#__PURE__*/function (_RestClient) {
26
40
  function TeamsInSlackClient() {
27
41
  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
42
  (0, _classCallCheck2.default)(this, TeamsInSlackClient);
29
43
  return _callSuper(this, TeamsInSlackClient, [_objectSpread(_objectSpread({}, defaultConfig), config)]);
30
44
  }
45
+
46
+ /**
47
+ * Pre-flight auth probe for Staffy Global Edge calls (COMMIT-27483).
48
+ * Fetches /api/authping with credentials:'include'. On failure (302→Okta),
49
+ * navigates to /staffy/login?return_to=<current URL> for top-level Okta SSO.
50
+ * No-op when the gate is OFF (Stargate path).
51
+ */
31
52
  (0, _inherits2.default)(TeamsInSlackClient, _RestClient);
32
53
  return (0, _createClass2.default)(TeamsInSlackClient, [{
33
- key: "getTeamInSlack",
34
- value: function () {
35
- var _getTeamInSlack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(teamId, teamName) {
54
+ key: "ensureStaffyAuth",
55
+ value: (function () {
56
+ var _ensureStaffyAuth = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
57
+ var authenticated, returnTo;
36
58
  return _regenerator.default.wrap(function (_context) {
37
59
  while (1) switch (_context.prev = _context.next) {
38
60
  case 0:
39
- return _context.abrupt("return", this.getResource("/".concat(teamId, "?teamName=").concat(encodeURIComponent(teamName))).then(function (response) {
61
+ if ((0, _fg.fg)('ptc-onboard-teams-slack-app-to-global-edge-url')) {
62
+ _context.next = 1;
63
+ break;
64
+ }
65
+ return _context.abrupt("return");
66
+ case 1:
67
+ staffyAuthProbe !== null && staffyAuthProbe !== void 0 ? staffyAuthProbe : staffyAuthProbe = fetch("".concat(GLOBAL_EDGE_ORIGIN, "/api/authping"), {
68
+ credentials: 'include'
69
+ }).then(function (r) {
70
+ return r.ok;
71
+ }).catch(function () {
72
+ return false;
73
+ }).finally(function () {
74
+ staffyAuthProbe = null;
75
+ });
76
+ _context.next = 2;
77
+ return staffyAuthProbe;
78
+ case 2:
79
+ authenticated = _context.sent;
80
+ if (!authenticated) {
81
+ _context.next = 3;
82
+ break;
83
+ }
84
+ staffyAuthAttempted = false;
85
+ return _context.abrupt("return");
86
+ case 3:
87
+ if (!staffyAuthAttempted) {
88
+ _context.next = 4;
89
+ break;
90
+ }
91
+ return _context.abrupt("return");
92
+ case 4:
93
+ staffyAuthAttempted = true;
94
+ _redirectCount.redirectCount.increment();
95
+ returnTo = encodeURIComponent(window.location.href);
96
+ window.location.assign("".concat(GLOBAL_EDGE_ORIGIN, "/staffy/login?return_to=").concat(returnTo));
97
+ throw new _SLOIgnoreError.SLOIgnoreError({
98
+ message: 'Redirecting to Staffy login'
99
+ });
100
+ case 5:
101
+ case "end":
102
+ return _context.stop();
103
+ }
104
+ }, _callee);
105
+ }));
106
+ function ensureStaffyAuth() {
107
+ return _ensureStaffyAuth.apply(this, arguments);
108
+ }
109
+ return ensureStaffyAuth;
110
+ }())
111
+ }, {
112
+ key: "getTeamInSlack",
113
+ value: function () {
114
+ var _getTeamInSlack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(teamId, teamName) {
115
+ return _regenerator.default.wrap(function (_context2) {
116
+ while (1) switch (_context2.prev = _context2.next) {
117
+ case 0:
118
+ _context2.next = 1;
119
+ return this.ensureStaffyAuth();
120
+ case 1:
121
+ return _context2.abrupt("return", this.getResource("/".concat(teamId, "?teamName=").concat(encodeURIComponent(teamName))).then(function (response) {
40
122
  return _objectSpread({
41
123
  id: teamId
42
124
  }, response);
43
125
  }));
44
- case 1:
126
+ case 2:
45
127
  case "end":
46
- return _context.stop();
128
+ return _context2.stop();
47
129
  }
48
- }, _callee, this);
130
+ }, _callee2, this);
49
131
  }));
50
132
  function getTeamInSlack(_x, _x2) {
51
133
  return _getTeamInSlack.apply(this, arguments);
@@ -55,20 +137,23 @@ var TeamsInSlackClient = exports.TeamsInSlackClient = /*#__PURE__*/function (_Re
55
137
  }, {
56
138
  key: "disconnectTeamInSlack",
57
139
  value: function () {
58
- var _disconnectTeamInSlack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(teamId) {
59
- return _regenerator.default.wrap(function (_context2) {
60
- while (1) switch (_context2.prev = _context2.next) {
140
+ var _disconnectTeamInSlack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(teamId) {
141
+ return _regenerator.default.wrap(function (_context3) {
142
+ while (1) switch (_context3.prev = _context3.next) {
61
143
  case 0:
62
- return _context2.abrupt("return", this.deleteResource("/".concat(teamId)).then(function (response) {
144
+ _context3.next = 1;
145
+ return this.ensureStaffyAuth();
146
+ case 1:
147
+ return _context3.abrupt("return", this.deleteResource("/".concat(teamId)).then(function (response) {
63
148
  return _objectSpread({
64
149
  id: teamId
65
150
  }, response);
66
151
  }));
67
- case 1:
152
+ case 2:
68
153
  case "end":
69
- return _context2.stop();
154
+ return _context3.stop();
70
155
  }
71
- }, _callee2, this);
156
+ }, _callee3, this);
72
157
  }));
73
158
  function disconnectTeamInSlack(_x3) {
74
159
  return _disconnectTeamInSlack.apply(this, arguments);
@@ -78,20 +163,23 @@ var TeamsInSlackClient = exports.TeamsInSlackClient = /*#__PURE__*/function (_Re
78
163
  }, {
79
164
  key: "updateTeamInSlack",
80
165
  value: function () {
81
- var _updateTeamInSlack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(teamId, channelId, usergroupHandle) {
82
- return _regenerator.default.wrap(function (_context3) {
83
- while (1) switch (_context3.prev = _context3.next) {
166
+ var _updateTeamInSlack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(teamId, channelId, usergroupHandle) {
167
+ return _regenerator.default.wrap(function (_context4) {
168
+ while (1) switch (_context4.prev = _context4.next) {
84
169
  case 0:
85
- return _context3.abrupt("return", this.postResource("/".concat(teamId, "?channel=").concat(channelId, "&groupName=").concat(usergroupHandle)).then(function (response) {
170
+ _context4.next = 1;
171
+ return this.ensureStaffyAuth();
172
+ case 1:
173
+ return _context4.abrupt("return", this.postResource("/".concat(teamId, "?channel=").concat(channelId, "&groupName=").concat(usergroupHandle)).then(function (response) {
86
174
  return _objectSpread({
87
175
  id: teamId
88
176
  }, response);
89
177
  }));
90
- case 1:
178
+ case 2:
91
179
  case "end":
92
- return _context3.stop();
180
+ return _context4.stop();
93
181
  }
94
- }, _callee3, this);
182
+ }, _callee4, this);
95
183
  }));
96
184
  function updateTeamInSlack(_x4, _x5, _x6) {
97
185
  return _updateTeamInSlack.apply(this, arguments);
@@ -13,7 +13,7 @@ var _react = require("react");
13
13
  var _graphql = require("graphql");
14
14
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
15
15
  var _http = require("../../common/utils/http");
16
- var _sentry = require("../sentry");
16
+ var _logException = require("../sentry/logException");
17
17
  var _UseQueryLightError = require("./UseQueryLightError");
18
18
  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; }
19
19
  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; }
@@ -108,7 +108,7 @@ var useQueryLight = exports.useQueryLight = function useQueryLight(query, option
108
108
  setError(transformError({
109
109
  error: new Error('Unknown error')
110
110
  }));
111
- (0, _sentry.logException)(_t, "useQueryLight - ".concat(options.operationName));
111
+ (0, _logException.logException)(_t, "useQueryLight - ".concat(options.operationName));
112
112
  }
113
113
  setData(undefined);
114
114
  setLoading(false);
@@ -178,7 +178,7 @@ var useQueryLight = exports.useQueryLight = function useQueryLight(query, option
178
178
  setError(transformError({
179
179
  error: new Error('Unknown error')
180
180
  }));
181
- (0, _sentry.logException)(_t2, "useQueryLight fetchMore - ".concat(options.operationName));
181
+ (0, _logException.logException)(_t2, "useQueryLight fetchMore - ".concat(options.operationName));
182
182
  }
183
183
  case 7:
184
184
  case "end":
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @deprecated Use `import { isUserARI } from '@atlaskit/teams-client/is-user-ari'` instead.
4
4
  */
5
+
5
6
  export { isUserARI } from './is-user-ari';
6
7
  /**
7
8
  * @deprecated Use `import { toUserId } from '@atlaskit/teams-client/to-user-id'` instead.
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
2
+
2
3
  export let ErrorCategory = /*#__PURE__*/function (ErrorCategory) {
3
4
  ErrorCategory["NotFound"] = "NotFound";
4
5
  ErrorCategory["NotPermitted"] = "NotPermitted";
@@ -1,5 +1,5 @@
1
- import { isErrorStatusCode } from './isErrorStatusCode';
2
1
  import { StatusCode } from './index';
2
+ import { isErrorStatusCode } from './isErrorStatusCode';
3
3
  export function isAuthError(error) {
4
4
  return isErrorStatusCode(StatusCode.UNAUTHORIZED, error) || isErrorStatusCode(StatusCode.FORBIDDEN, error);
5
5
  }
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @deprecated Use `import { sortMembersByType } from '@atlaskit/teams-client/sort-teams'` instead.
4
4
  */
5
+
5
6
  export { sortMembersByType } from './sort-teams';
6
7
  /**
7
8
  * @deprecated Use `import { isInvited } from '@atlaskit/teams-client/is-invited'` instead.
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @deprecated Use `import { hasPermissionForAction } from '@atlaskit/teams-client/has-permission-for-action'` instead.
4
4
  */
5
+
5
6
  export { hasPermissionForAction } from './has-permission-for-action';
6
7
  /**
7
8
  * @deprecated Use `import { hasPermission } from '@atlaskit/teams-client/has-permission'` instead.
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @deprecated Use `import { isInvited } from '@atlaskit/teams-client/is-invited'` instead.
4
4
  */
5
+
5
6
  export { isInvited } from './is-invited';
6
7
  /**
7
8
  * @deprecated Use `import { isNonMember } from '@atlaskit/teams-client/is-non-member'` instead.
@@ -31,7 +31,7 @@ export class TeamsUFOExperience extends UFOExperience {
31
31
  return super.failure({
32
32
  metadata: {
33
33
  error: createErrorMetadata(error),
34
- packageVersion: "5.3.0",
34
+ packageVersion: "5.5.0",
35
35
  packageName: "@atlaskit/teams-client"
36
36
  }
37
37
  });
@@ -39,7 +39,7 @@ export class TeamsUFOExperience extends UFOExperience {
39
39
  return super.failure({
40
40
  metadata: {
41
41
  error: 'unknown error',
42
- packageVersion: "5.3.0",
42
+ packageVersion: "5.5.0",
43
43
  packageName: "@atlaskit/teams-client"
44
44
  }
45
45
  });
@@ -7,7 +7,8 @@ export { useTeamsClientSetupNext } from './services/hooks/use-teams-client-setup
7
7
  export { useTeamsClientSetup } from './services/hooks/use-teams-client-setup';
8
8
 
9
9
  // /permissions
10
- export { AllTeamActions, hasPermission } from './common/utils/permissions';
10
+ export { AllTeamActions } from './common/utils/permissions/types';
11
+ export { hasPermission } from './common/utils/permissions/has-permission';
11
12
  // /sentry
12
13
  export { initialiseSentry } from './services/sentry/utils/initialise-sentry';
13
14
  export { logException } from './services/sentry/logException';
@@ -16,9 +17,15 @@ export { logInfoMessage } from './services/sentry/logInfoMessage';
16
17
  export { userInfoProvider, UserInfoProvider } from './services/user-info-provider/main';
17
18
 
18
19
  // /utils
19
- export { sortMembersByType, isInvited, isMember, isNonMember, isRequestingJoin } from './common/utils';
20
+ export { sortMembersByType } from './common/utils/sort-teams';
21
+ export { isInvited } from './common/utils/is-invited';
22
+ export { isMember } from './common/utils/is-member';
23
+ export { isNonMember } from './common/utils/is-non-member';
24
+ export { isRequestingJoin } from './common/utils/is-requesting-join';
20
25
  export { toTeamARI } from './common/utils/to-team-ari';
21
26
  export { toTeamId } from './common/utils/to-team-id';
22
27
  export { toUserARI } from './common/utils/to-user-ari';
23
28
  export { toUserId } from './common/utils/to-user-id';
24
- export { useLazyQueryLight, useQueryLight, UseQueryLightError } from './services/use-query-light';
29
+ export { useLazyQueryLight } from './services/use-query-light/useLazyQueryLight';
30
+ export { useQueryLight } from './services/use-query-light/useQueryLight';
31
+ export { UseQueryLightError } from './services/use-query-light/UseQueryLightError';
@@ -3,6 +3,7 @@
3
3
  /**
4
4
  * @deprecated Use `import { mockTeamsClientEndpoints } from '@atlaskit/teams-client/mock-teams-client-endpoints'` instead.
5
5
  */
6
+
6
7
  export { mockTeamsClientEndpoints } from './mock-teams-client-endpoints';
7
8
  /**
8
9
  * @deprecated Use `import { mockTeamsClientRequestingToJoinEndpoints } from '@atlaskit/teams-client/mock-teams-client-requesting-to-join-endpoints'` instead.
@@ -3,6 +3,7 @@
3
3
  /**
4
4
  * @deprecated Use `import { randomTeamMembership } from '@atlaskit/teams-client/random-team-membership'` instead.
5
5
  */
6
+
6
7
  export { randomTeamMembership } from './random-team-membership';
7
8
  /**
8
9
  * @deprecated Use `import { randomTeamMemberships } from '@atlaskit/teams-client/random-team-memberships'` instead.
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @deprecated Use `import { mockTeamsClientAdminEndpoints } from '@atlaskit/teams-client/mock-teams-client-admin-endpoints'` instead.
4
4
  */
5
+
5
6
  export { mockTeamsClientAdminEndpoints } from './mock-teams-client-admin-endpoints';
6
7
  /**
7
8
  * @deprecated Use `import { mockTeamsClientEndpoints } from '@atlaskit/teams-client/mock-teams-client-endpoints'` instead.
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
2
+
2
3
  import { toTeamARI } from '../../common/utils/to-team-ari';
3
4
  import { toUserId } from '../../common/utils/to-user-id';
4
5
  import { DEFAULT_CONFIG } from '../constants';
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import { logException } from '../sentry';
2
+ import { logException } from '../sentry/logException';
3
3
  export class BaseClient {
4
4
  constructor(config) {
5
5
  _defineProperty(this, "cache", {});
@@ -3,5 +3,6 @@ export const DEFAULT_CONFIG = {
3
3
  permsServiceUrl: '/gateway/api/permissions',
4
4
  publicApiRoot: '/gateway/api/public',
5
5
  invitationsServiceUrl: '/gateway/api/invitations',
6
- collaborationGraphUrl: '/gateway/api/collaboration'
6
+ collaborationGraphUrl: '/gateway/api/collaboration',
7
+ teamsInSlackServiceUrl: 'https://teams-slack-app.services.atlassian.com/api/team'
7
8
  };
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
2
+
2
3
  import { useTeamsClientSetupNext } from './use-teams-client-setup-next';
3
4
 
4
5
  /**
@@ -1,6 +1,6 @@
1
1
  import { RestClient } from '../rest-client';
2
- import { removeDuplicateRecommendations } from './utils';
3
2
  import { PRODUCT_JOIN_OR_REQUEST_BULK, PRODUCT_RECCOMENDATIONS } from './index';
3
+ import { removeDuplicateRecommendations } from './utils';
4
4
  const ALL_SUPPORTED_PRODUCTS = ['confluence', 'jira', 'jira-core', 'jira-servicedesk', 'jira-software', 'jira-incident-manager', 'jira-product-discovery', 'opsgenie', 'statuspage', 'avocado', 'townsquare', 'compass', 'avp', 'beacon', 'mercury'];
5
5
  export class InvitationsClient extends RestClient {
6
6
  constructor(serviceUrl, config) {
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
2
+
2
3
  import { DEFAULT_CONFIG } from '../constants';
3
4
  import { PublicApiClient } from './PublicApiClient';
4
5
 
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @deprecated Use `import { addBreadcrumb } from '@atlaskit/teams-client/add-breadcrumb'` instead.
4
4
  */
5
+
5
6
  export { addBreadcrumb } from './addBreadcrumb';
6
7
  /**
7
8
  * @deprecated Use `import { createErrorHandler } from '@atlaskit/teams-client/create-error-handler'` instead.
@@ -4,6 +4,7 @@
4
4
  /**
5
5
  * @deprecated Use `import { logException } from '@atlaskit/teams-client/log-exception'` instead.
6
6
  */
7
+
7
8
  export { logException } from './logException';
8
9
  /**
9
10
  * @deprecated Use `import { logErrorMessage } from '@atlaskit/teams-client/log-error-message'` instead.