@atlaskit/util-service-support 7.2.1 → 7.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/util-service-support
2
2
 
3
+ ## 7.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`a8a0effc7b45c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a8a0effc7b45c) -
8
+ Update @atlaskit/util-service-support to conform to Volt Component standards
9
+
10
+ ## 7.3.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [`bd2c5b0112185`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/bd2c5b0112185) -
15
+ Remove stale API report artifacts from published Platform packages.
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+
3
21
  ## 7.2.1
4
22
 
5
23
  ### Patch Changes
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildHeaders = void 0;
7
+ var addToHeaders = function addToHeaders(headers, keyValues) {
8
+ if (keyValues) {
9
+ for (var key in keyValues) {
10
+ if ({}.hasOwnProperty.call(keyValues, key)) {
11
+ var values = keyValues[key];
12
+ if (Array.isArray(values)) {
13
+ for (var i = 0; i < values.length; i++) {
14
+ headers[key] = values[i];
15
+ }
16
+ } else {
17
+ headers[key] = values;
18
+ }
19
+ }
20
+ }
21
+ }
22
+ };
23
+ var buildHeaders = exports.buildHeaders = function buildHeaders(secOptions, extraHeaders) {
24
+ var headers = {};
25
+ addToHeaders(headers, extraHeaders);
26
+ if (secOptions) {
27
+ addToHeaders(headers, secOptions.headers);
28
+ }
29
+ return headers;
30
+ };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildUrl = void 0;
7
+ var buildUrl = exports.buildUrl = function buildUrl(baseUrl) {
8
+ var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
9
+ var queryParams = arguments.length > 2 ? arguments[2] : undefined;
10
+ var secOptions = arguments.length > 3 ? arguments[3] : undefined;
11
+ var searchParam = new URLSearchParams(
12
+ // For relative urls, the URL class requires base to be set. It's ignored if a url is not relative.
13
+ // Since we only care about search params it is fine to have any base url here.
14
+ new URL(baseUrl, 'https://BASE_FALLBACK').search || undefined);
15
+ baseUrl = baseUrl.split('?')[0];
16
+ if (queryParams) {
17
+ for (var key in queryParams) {
18
+ if ({}.hasOwnProperty.call(queryParams, key)) {
19
+ searchParam.append(key, queryParams[key]);
20
+ }
21
+ }
22
+ }
23
+ if (secOptions && secOptions.params) {
24
+ for (var _key in secOptions.params) {
25
+ if ({}.hasOwnProperty.call(secOptions.params, _key)) {
26
+ var values = secOptions.params[_key];
27
+ if (Array.isArray(values)) {
28
+ for (var i = 0; i < values.length; i++) {
29
+ searchParam.append(_key, values[i]);
30
+ }
31
+ } else {
32
+ searchParam.append(_key, values);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ var separator = '';
38
+ if (path && baseUrl.substr(-1) !== '/' && !path.startsWith('/')) {
39
+ separator = '/';
40
+ }
41
+ var params = searchParam.toString();
42
+ if (params) {
43
+ params = '?' + params;
44
+ }
45
+ return "".concat(baseUrl).concat(separator).concat(path).concat(params);
46
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.extractTracingHeaders = void 0;
7
+ var TRACING_RESPONSE_HEADERS = ['x-trace-id', 'atl-request-id'];
8
+
9
+ /**
10
+ * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
11
+ * Returns only headers that are present in the response.
12
+ */
13
+ var extractTracingHeaders = exports.extractTracingHeaders = function extractTracingHeaders(response) {
14
+ var headers = {};
15
+ for (var _i = 0, _TRACING_RESPONSE_HEA = TRACING_RESPONSE_HEADERS; _i < _TRACING_RESPONSE_HEA.length; _i++) {
16
+ var name = _TRACING_RESPONSE_HEA[_i];
17
+ var value = response.headers.get(name);
18
+ if (value) {
19
+ headers[name] = value;
20
+ }
21
+ }
22
+ return headers;
23
+ };
@@ -9,9 +9,11 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _browser = require("meros/browser");
12
- var _types = require("./types");
13
- var _shared = require("./shared");
14
12
  var _experienceTraceIdContext = require("@atlaskit/react-ufo/experience-trace-id-context");
13
+ var _buildHeaders = require("./buildHeaders");
14
+ var _buildUrl = require("./buildUrl");
15
+ var _shared = require("./shared");
16
+ var _types = require("./types");
15
17
  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; }
16
18
  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; }
17
19
  /** Copied from meros types, as there are difficulties with resolving the type in CI */
@@ -52,8 +54,8 @@ var _requestServiceMultipart = exports.requestServiceMultipart = /*#__PURE__*/fu
52
54
  url = serviceConfig.url, securityProvider = serviceConfig.securityProvider, refreshedSecurityProvider = serviceConfig.refreshedSecurityProvider;
53
55
  path = options.path, queryParams = options.queryParams, requestInit = options.requestInit;
54
56
  secOptions = securityProvider && securityProvider();
55
- requestUrl = (0, _shared.buildUrl)(url, path, queryParams, secOptions);
56
- headers = (0, _shared.buildHeaders)(secOptions, requestInit && requestInit.headers);
57
+ requestUrl = (0, _buildUrl.buildUrl)(url, path, queryParams, secOptions);
58
+ headers = (0, _buildHeaders.buildHeaders)(secOptions, requestInit && requestInit.headers);
57
59
  credentials = (0, _types.buildCredentials)(secOptions); // Get tracing headers from UFO
58
60
  tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
59
61
  requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.requestService = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _experienceTraceIdContext = require("@atlaskit/react-ufo/experience-trace-id-context");
10
+ var _buildHeaders = require("./buildHeaders");
11
+ var _buildUrl = require("./buildUrl");
12
+ var _extractTracingHeaders = require("./extractTracingHeaders");
13
+ var _shared = require("./shared");
14
+ var _types = require("./types");
15
+ 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; }
16
+ 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; }
17
+ /**
18
+ * @returns Promise containing the json response
19
+ */
20
+ var _requestService = exports.requestService = function requestService(serviceConfig, options) {
21
+ var url = serviceConfig.url,
22
+ securityProvider = serviceConfig.securityProvider,
23
+ refreshedSecurityProvider = serviceConfig.refreshedSecurityProvider;
24
+ var _ref = options || _shared.defaultRequestServiceOptions,
25
+ path = _ref.path,
26
+ queryParams = _ref.queryParams,
27
+ requestInit = _ref.requestInit;
28
+ var secOptions = securityProvider && securityProvider();
29
+ var requestUrl = (0, _buildUrl.buildUrl)(url, path, queryParams, secOptions);
30
+ var headers = (0, _buildHeaders.buildHeaders)(secOptions, requestInit && requestInit.headers);
31
+ var credentials = (0, _types.buildCredentials)(secOptions);
32
+ var ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
33
+
34
+ // Get tracing headers from UFO
35
+ var tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
36
+ var requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
37
+ // populate headers mainly for the collab provider however
38
+ // other components which uses this util can get the header as well.
39
+ // Those tracing headers shall not incur any issues as long as backends handle them properly
40
+ headers: _objectSpread(_objectSpread({}, headers), tracingHeaders),
41
+ credentials: credentials
42
+ });
43
+ return fetch(requestUrl, requestOptions).then(function (response) {
44
+ if (options !== null && options !== void 0 && options.reportTracingHeaders) {
45
+ var _tracingHeaders = (0, _extractTracingHeaders.extractTracingHeaders)(response);
46
+ if (Object.keys(_tracingHeaders).length > 0) {
47
+ options.reportTracingHeaders(_tracingHeaders);
48
+ }
49
+ }
50
+ if (response.status === 204) {
51
+ return Promise.resolve();
52
+ } else if (response.ok) {
53
+ return ignoreResponsePayload ? Promise.resolve() : response.json();
54
+ } else if (response.status === 401 && refreshedSecurityProvider) {
55
+ // auth issue - try once
56
+ return refreshedSecurityProvider().then(function (newSecOptions) {
57
+ var retryServiceConfig = {
58
+ url: url,
59
+ securityProvider: function securityProvider() {
60
+ return newSecOptions;
61
+ }
62
+ };
63
+ return _requestService(retryServiceConfig, options);
64
+ });
65
+ }
66
+ return Promise.reject({
67
+ code: response.status,
68
+ reason: response.statusText
69
+ });
70
+ });
71
+ };
@@ -1,86 +1,19 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.requestService = exports.extractTracingHeaders = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _experienceTraceIdContext = require("@atlaskit/react-ufo/experience-trace-id-context");
10
- var _types = require("./types");
11
- var _shared = require("./shared");
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
- 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
- var TRACING_RESPONSE_HEADERS = ['x-trace-id', 'atl-request-id'];
15
-
16
- /**
17
- * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
18
- * Returns only headers that are present in the response.
19
- */
20
- var extractTracingHeaders = exports.extractTracingHeaders = function extractTracingHeaders(response) {
21
- var headers = {};
22
- for (var _i = 0, _TRACING_RESPONSE_HEA = TRACING_RESPONSE_HEADERS; _i < _TRACING_RESPONSE_HEA.length; _i++) {
23
- var name = _TRACING_RESPONSE_HEA[_i];
24
- var value = response.headers.get(name);
25
- if (value) {
26
- headers[name] = value;
27
- }
6
+ Object.defineProperty(exports, "extractTracingHeaders", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _extractTracingHeaders.extractTracingHeaders;
28
10
  }
29
- return headers;
30
- };
31
-
32
- /**
33
- * @returns Promise containing the json response
34
- */
35
- var _requestService = exports.requestService = function requestService(serviceConfig, options) {
36
- var url = serviceConfig.url,
37
- securityProvider = serviceConfig.securityProvider,
38
- refreshedSecurityProvider = serviceConfig.refreshedSecurityProvider;
39
- var _ref = options || _shared.defaultRequestServiceOptions,
40
- path = _ref.path,
41
- queryParams = _ref.queryParams,
42
- requestInit = _ref.requestInit;
43
- var secOptions = securityProvider && securityProvider();
44
- var requestUrl = (0, _shared.buildUrl)(url, path, queryParams, secOptions);
45
- var headers = (0, _shared.buildHeaders)(secOptions, requestInit && requestInit.headers);
46
- var credentials = (0, _types.buildCredentials)(secOptions);
47
- var ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
48
-
49
- // Get tracing headers from UFO
50
- var tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
51
- var requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
52
- // populate headers mainly for the collab provider however
53
- // other components which uses this util can get the header as well.
54
- // Those tracing headers shall not incur any issues as long as backends handle them properly
55
- headers: _objectSpread(_objectSpread({}, headers), tracingHeaders),
56
- credentials: credentials
57
- });
58
- return fetch(requestUrl, requestOptions).then(function (response) {
59
- if (options !== null && options !== void 0 && options.reportTracingHeaders) {
60
- var _tracingHeaders = extractTracingHeaders(response);
61
- if (Object.keys(_tracingHeaders).length > 0) {
62
- options.reportTracingHeaders(_tracingHeaders);
63
- }
64
- }
65
- if (response.status === 204) {
66
- return Promise.resolve();
67
- } else if (response.ok) {
68
- return ignoreResponsePayload ? Promise.resolve() : response.json();
69
- } else if (response.status === 401 && refreshedSecurityProvider) {
70
- // auth issue - try once
71
- return refreshedSecurityProvider().then(function (newSecOptions) {
72
- var retryServiceConfig = {
73
- url: url,
74
- securityProvider: function securityProvider() {
75
- return newSecOptions;
76
- }
77
- };
78
- return _requestService(retryServiceConfig, options);
79
- });
80
- }
81
- return Promise.reject({
82
- code: response.status,
83
- reason: response.statusText
84
- });
85
- });
86
- };
11
+ });
12
+ Object.defineProperty(exports, "requestService", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _requestService.requestService;
16
+ }
17
+ });
18
+ var _extractTracingHeaders = require("./extractTracingHeaders");
19
+ var _requestService = require("./requestService");
@@ -3,69 +3,5 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.defaultRequestServiceOptions = exports.buildUrl = exports.buildHeaders = void 0;
7
- var defaultRequestServiceOptions = exports.defaultRequestServiceOptions = {};
8
- var buildUrl = exports.buildUrl = function buildUrl(baseUrl) {
9
- var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
10
- var queryParams = arguments.length > 2 ? arguments[2] : undefined;
11
- var secOptions = arguments.length > 3 ? arguments[3] : undefined;
12
- var searchParam = new URLSearchParams(
13
- // For relative urls, the URL class requires base to be set. It's ignored if a url is not relative.
14
- // Since we only care about search params it is fine to have any base url here.
15
- new URL(baseUrl, 'https://BASE_FALLBACK').search || undefined);
16
- baseUrl = baseUrl.split('?')[0];
17
- if (queryParams) {
18
- for (var key in queryParams) {
19
- if ({}.hasOwnProperty.call(queryParams, key)) {
20
- searchParam.append(key, queryParams[key]);
21
- }
22
- }
23
- }
24
- if (secOptions && secOptions.params) {
25
- for (var _key in secOptions.params) {
26
- if ({}.hasOwnProperty.call(secOptions.params, _key)) {
27
- var values = secOptions.params[_key];
28
- if (Array.isArray(values)) {
29
- for (var i = 0; i < values.length; i++) {
30
- searchParam.append(_key, values[i]);
31
- }
32
- } else {
33
- searchParam.append(_key, values);
34
- }
35
- }
36
- }
37
- }
38
- var separator = '';
39
- if (path && baseUrl.substr(-1) !== '/' && !path.startsWith('/')) {
40
- separator = '/';
41
- }
42
- var params = searchParam.toString();
43
- if (params) {
44
- params = '?' + params;
45
- }
46
- return "".concat(baseUrl).concat(separator).concat(path).concat(params);
47
- };
48
- var addToHeaders = function addToHeaders(headers, keyValues) {
49
- if (keyValues) {
50
- for (var key in keyValues) {
51
- if ({}.hasOwnProperty.call(keyValues, key)) {
52
- var values = keyValues[key];
53
- if (Array.isArray(values)) {
54
- for (var i = 0; i < values.length; i++) {
55
- headers[key] = values[i];
56
- }
57
- } else {
58
- headers[key] = values;
59
- }
60
- }
61
- }
62
- }
63
- };
64
- var buildHeaders = exports.buildHeaders = function buildHeaders(secOptions, extraHeaders) {
65
- var headers = {};
66
- addToHeaders(headers, extraHeaders);
67
- if (secOptions) {
68
- addToHeaders(headers, secOptions.headers);
69
- }
70
- return headers;
71
- };
6
+ exports.defaultRequestServiceOptions = void 0;
7
+ var defaultRequestServiceOptions = exports.defaultRequestServiceOptions = {};
@@ -0,0 +1,24 @@
1
+ const addToHeaders = (headers, keyValues) => {
2
+ if (keyValues) {
3
+ for (const key in keyValues) {
4
+ if ({}.hasOwnProperty.call(keyValues, key)) {
5
+ const values = keyValues[key];
6
+ if (Array.isArray(values)) {
7
+ for (let i = 0; i < values.length; i++) {
8
+ headers[key] = values[i];
9
+ }
10
+ } else {
11
+ headers[key] = values;
12
+ }
13
+ }
14
+ }
15
+ }
16
+ };
17
+ export const buildHeaders = (secOptions, extraHeaders) => {
18
+ const headers = {};
19
+ addToHeaders(headers, extraHeaders);
20
+ if (secOptions) {
21
+ addToHeaders(headers, secOptions.headers);
22
+ }
23
+ return headers;
24
+ };
@@ -0,0 +1,37 @@
1
+ export const buildUrl = (baseUrl, path = '', queryParams, secOptions) => {
2
+ const searchParam = new URLSearchParams(
3
+ // For relative urls, the URL class requires base to be set. It's ignored if a url is not relative.
4
+ // Since we only care about search params it is fine to have any base url here.
5
+ new URL(baseUrl, 'https://BASE_FALLBACK').search || undefined);
6
+ baseUrl = baseUrl.split('?')[0];
7
+ if (queryParams) {
8
+ for (const key in queryParams) {
9
+ if ({}.hasOwnProperty.call(queryParams, key)) {
10
+ searchParam.append(key, queryParams[key]);
11
+ }
12
+ }
13
+ }
14
+ if (secOptions && secOptions.params) {
15
+ for (const key in secOptions.params) {
16
+ if ({}.hasOwnProperty.call(secOptions.params, key)) {
17
+ const values = secOptions.params[key];
18
+ if (Array.isArray(values)) {
19
+ for (let i = 0; i < values.length; i++) {
20
+ searchParam.append(key, values[i]);
21
+ }
22
+ } else {
23
+ searchParam.append(key, values);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ let separator = '';
29
+ if (path && baseUrl.substr(-1) !== '/' && !path.startsWith('/')) {
30
+ separator = '/';
31
+ }
32
+ let params = searchParam.toString();
33
+ if (params) {
34
+ params = '?' + params;
35
+ }
36
+ return `${baseUrl}${separator}${path}${params}`;
37
+ };
@@ -0,0 +1,16 @@
1
+ const TRACING_RESPONSE_HEADERS = ['x-trace-id', 'atl-request-id'];
2
+
3
+ /**
4
+ * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
5
+ * Returns only headers that are present in the response.
6
+ */
7
+ export const extractTracingHeaders = response => {
8
+ const headers = {};
9
+ for (const name of TRACING_RESPONSE_HEADERS) {
10
+ const value = response.headers.get(name);
11
+ if (value) {
12
+ headers[name] = value;
13
+ }
14
+ }
15
+ return headers;
16
+ };
@@ -1,7 +1,9 @@
1
1
  import { meros } from 'meros/browser';
2
- import { buildCredentials } from './types';
3
- import { buildHeaders, buildUrl, defaultRequestServiceOptions } from './shared';
4
2
  import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
3
+ import { buildHeaders } from './buildHeaders';
4
+ import { buildUrl } from './buildUrl';
5
+ import { defaultRequestServiceOptions } from './shared';
6
+ import { buildCredentials } from './types';
5
7
 
6
8
  /** Copied from meros types, as there are difficulties with resolving the type in CI */
7
9
 
@@ -0,0 +1,67 @@
1
+ import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
2
+ import { buildHeaders } from './buildHeaders';
3
+ import { buildUrl } from './buildUrl';
4
+ import { extractTracingHeaders } from './extractTracingHeaders';
5
+ import { defaultRequestServiceOptions } from './shared';
6
+ import { buildCredentials } from './types';
7
+
8
+ /**
9
+ * @returns Promise containing the json response
10
+ */
11
+ export const requestService = (serviceConfig, options) => {
12
+ const {
13
+ url,
14
+ securityProvider,
15
+ refreshedSecurityProvider
16
+ } = serviceConfig;
17
+ const {
18
+ path,
19
+ queryParams,
20
+ requestInit
21
+ } = options || defaultRequestServiceOptions;
22
+ const secOptions = securityProvider && securityProvider();
23
+ const requestUrl = buildUrl(url, path, queryParams, secOptions);
24
+ const headers = buildHeaders(secOptions, requestInit && requestInit.headers);
25
+ const credentials = buildCredentials(secOptions);
26
+ const ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
27
+
28
+ // Get tracing headers from UFO
29
+ const tracingHeaders = getActiveTraceHttpRequestHeaders(url);
30
+ const requestOptions = {
31
+ ...requestInit,
32
+ // populate headers mainly for the collab provider however
33
+ // other components which uses this util can get the header as well.
34
+ // Those tracing headers shall not incur any issues as long as backends handle them properly
35
+ headers: {
36
+ ...headers,
37
+ ...tracingHeaders
38
+ },
39
+ credentials
40
+ };
41
+ return fetch(requestUrl, requestOptions).then(response => {
42
+ if (options !== null && options !== void 0 && options.reportTracingHeaders) {
43
+ const tracingHeaders = extractTracingHeaders(response);
44
+ if (Object.keys(tracingHeaders).length > 0) {
45
+ options.reportTracingHeaders(tracingHeaders);
46
+ }
47
+ }
48
+ if (response.status === 204) {
49
+ return Promise.resolve();
50
+ } else if (response.ok) {
51
+ return ignoreResponsePayload ? Promise.resolve() : response.json();
52
+ } else if (response.status === 401 && refreshedSecurityProvider) {
53
+ // auth issue - try once
54
+ return refreshedSecurityProvider().then(newSecOptions => {
55
+ const retryServiceConfig = {
56
+ url,
57
+ securityProvider: () => newSecOptions
58
+ };
59
+ return requestService(retryServiceConfig, options);
60
+ });
61
+ }
62
+ return Promise.reject({
63
+ code: response.status,
64
+ reason: response.statusText
65
+ });
66
+ });
67
+ };
@@ -1,80 +1,9 @@
1
- import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
2
- import { buildCredentials } from './types';
3
- import { defaultRequestServiceOptions, buildUrl, buildHeaders } from './shared';
4
- const TRACING_RESPONSE_HEADERS = ['x-trace-id', 'atl-request-id'];
5
-
1
+ /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
6
2
  /**
7
- * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
8
- * Returns only headers that are present in the response.
3
+ * @deprecated Use `import { extractTracingHeaders } from '@atlaskit/util-service-support/extractTracingHeaders'` instead.
9
4
  */
10
- export const extractTracingHeaders = response => {
11
- const headers = {};
12
- for (const name of TRACING_RESPONSE_HEADERS) {
13
- const value = response.headers.get(name);
14
- if (value) {
15
- headers[name] = value;
16
- }
17
- }
18
- return headers;
19
- };
20
-
5
+ export { extractTracingHeaders } from './extractTracingHeaders';
21
6
  /**
22
- * @returns Promise containing the json response
7
+ * @deprecated Use `import { requestService } from '@atlaskit/util-service-support/requestService'` instead.
23
8
  */
24
- export const requestService = (serviceConfig, options) => {
25
- const {
26
- url,
27
- securityProvider,
28
- refreshedSecurityProvider
29
- } = serviceConfig;
30
- const {
31
- path,
32
- queryParams,
33
- requestInit
34
- } = options || defaultRequestServiceOptions;
35
- const secOptions = securityProvider && securityProvider();
36
- const requestUrl = buildUrl(url, path, queryParams, secOptions);
37
- const headers = buildHeaders(secOptions, requestInit && requestInit.headers);
38
- const credentials = buildCredentials(secOptions);
39
- const ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
40
-
41
- // Get tracing headers from UFO
42
- const tracingHeaders = getActiveTraceHttpRequestHeaders(url);
43
- const requestOptions = {
44
- ...requestInit,
45
- // populate headers mainly for the collab provider however
46
- // other components which uses this util can get the header as well.
47
- // Those tracing headers shall not incur any issues as long as backends handle them properly
48
- headers: {
49
- ...headers,
50
- ...tracingHeaders
51
- },
52
- credentials
53
- };
54
- return fetch(requestUrl, requestOptions).then(response => {
55
- if (options !== null && options !== void 0 && options.reportTracingHeaders) {
56
- const tracingHeaders = extractTracingHeaders(response);
57
- if (Object.keys(tracingHeaders).length > 0) {
58
- options.reportTracingHeaders(tracingHeaders);
59
- }
60
- }
61
- if (response.status === 204) {
62
- return Promise.resolve();
63
- } else if (response.ok) {
64
- return ignoreResponsePayload ? Promise.resolve() : response.json();
65
- } else if (response.status === 401 && refreshedSecurityProvider) {
66
- // auth issue - try once
67
- return refreshedSecurityProvider().then(newSecOptions => {
68
- const retryServiceConfig = {
69
- url,
70
- securityProvider: () => newSecOptions
71
- };
72
- return requestService(retryServiceConfig, options);
73
- });
74
- }
75
- return Promise.reject({
76
- code: response.status,
77
- reason: response.statusText
78
- });
79
- });
80
- };
9
+ export { requestService } from './requestService';