@atlaskit/util-service-support 6.3.3 → 6.3.5

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,19 @@
1
1
  # @atlaskit/util-service-support
2
2
 
3
+ ## 6.3.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`6344a66774597`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6344a66774597) -
8
+ Add optional reportTracingHeaders callback and extractTracingHeaders utility to
9
+ RequestServiceOptions for extracting tracing headers from responses
10
+
11
+ ## 6.3.4
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies
16
+
3
17
  ## 6.3.3
4
18
 
5
19
  ### Patch Changes
@@ -190,7 +204,6 @@
190
204
 
191
205
  Remove namespace imports from React, ReactDom, and PropTypes- Updated dependencies
192
206
  [6548261c9a](https://bitbucket.org/atlassian/atlassian-frontend/commits/6548261c9a):
193
-
194
207
  - @atlaskit/docs@8.3.2
195
208
 
196
209
  ## 5.0.0
@@ -373,7 +386,6 @@ Bumped dependencies.
373
386
  - [patch][18dfac7332](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/18dfac7332):
374
387
 
375
388
  In this PR, we are:
376
-
377
389
  - Re-introducing dist build folders
378
390
  - Adding back cjs
379
391
  - Replacing es5 by cjs and es2015 by esm
@@ -392,19 +404,16 @@ Bumped dependencies.
392
404
  ## 4.0.2
393
405
 
394
406
  - [patch][0a4ccaafae](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/0a4ccaafae):
395
-
396
407
  - Bump tslib
397
408
 
398
409
  ## 4.0.1
399
410
 
400
411
  - [patch][1bcaa1b991](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/1bcaa1b991):
401
-
402
412
  - Add npmignore for index.ts to prevent some jest tests from resolving that instead of index.js
403
413
 
404
414
  ## 4.0.0
405
415
 
406
416
  - [major][9d5cc39394](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/9d5cc39394):
407
-
408
417
  - Dropped ES5 distributables from the typescript packages
409
418
 
410
419
  ## 3.1.1
@@ -416,7 +425,6 @@ Bumped dependencies.
416
425
  ## 3.1.0
417
426
 
418
427
  - [minor][1d19234fbd](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/1d19234fbd):
419
-
420
428
  - Enable noImplicitAny and resolve issues for elements util packages
421
429
 
422
430
  ## 3.0.5
@@ -427,7 +435,6 @@ Bumped dependencies.
427
435
  ## 3.0.4
428
436
 
429
437
  - [patch][0a297ba](https://bitbucket.org/atlassian/atlaskit-mk-2/commits/0a297ba):
430
-
431
438
  - Packages should not be shown in the navigation, search and overview
432
439
 
433
440
  ## 3.0.3
@@ -1,11 +1,12 @@
1
1
  {
2
- "extends": "../../../../tsconfig.entry-points.confluence.json",
2
+ "extends": "../../../../tsconfig.local-consumption.json",
3
3
  "compilerOptions": {
4
4
  "declaration": true,
5
5
  "target": "es5",
6
6
  "outDir": "../../../../../confluence/tsDist/@atlaskit__util-service-support",
7
7
  "rootDir": "../",
8
- "composite": true
8
+ "composite": true,
9
+ "noCheck": true
9
10
  },
10
11
  "include": [
11
12
  "../src/**/*.ts",
@@ -30,4 +31,4 @@
30
31
  "path": "../../../react-ufo/atlaskit/afm-cc/tsconfig.json"
31
32
  }
32
33
  ]
33
- }
34
+ }
@@ -1,11 +1,12 @@
1
1
  {
2
- "extends": "../../../../tsconfig.entry-points.jira.json",
2
+ "extends": "../../../../tsconfig.local-consumption.json",
3
3
  "compilerOptions": {
4
4
  "declaration": true,
5
5
  "target": "es5",
6
- "outDir": "../../../../../tsDist/@atlaskit__util-service-support/app",
6
+ "outDir": "../../../../../jira/tsDist/@atlaskit__util-service-support/app",
7
7
  "rootDir": "../",
8
- "composite": true
8
+ "composite": true,
9
+ "noCheck": true
9
10
  },
10
11
  "include": [
11
12
  "../src/**/*.ts",
@@ -1,11 +1,12 @@
1
1
  {
2
- "extends": "../../../../tsconfig.entry-points.volt.json",
2
+ "extends": "../../../../tsconfig.local-consumption.json",
3
3
  "compilerOptions": {
4
4
  "declaration": true,
5
5
  "target": "es5",
6
- "outDir": "../../../../../volt/tsDist/@atlaskit__util-service-support/app",
6
+ "outDir": "../../../../../tsDist/@atlaskit__util-service-support/app",
7
7
  "rootDir": "../",
8
- "composite": true
8
+ "composite": true,
9
+ "noCheck": true
9
10
  },
10
11
  "include": [
11
12
  "../src/**/*.ts",
@@ -24,10 +25,10 @@
24
25
  ],
25
26
  "references": [
26
27
  {
27
- "path": "../../../platform/feature-flags/afm-volt/tsconfig.json"
28
+ "path": "../../../platform/feature-flags/afm-products/tsconfig.json"
28
29
  },
29
30
  {
30
- "path": "../../../react-ufo/atlaskit/afm-volt/tsconfig.json"
31
+ "path": "../../../react-ufo/atlaskit/afm-products/tsconfig.json"
31
32
  }
32
33
  ]
33
34
  }
@@ -11,8 +11,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
11
11
  var _browser = require("meros/browser");
12
12
  var _types = require("./types");
13
13
  var _shared = require("./shared");
14
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
- var _featureFlagsAccessed = require("@atlaskit/react-ufo/feature-flags-accessed");
16
14
  var _experienceTraceIdContext = require("@atlaskit/react-ufo/experience-trace-id-context");
17
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; }
18
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; }
@@ -41,8 +39,6 @@ var _requestServiceMultipart = exports.requestServiceMultipart = /*#__PURE__*/fu
41
39
  requestUrl,
42
40
  headers,
43
41
  credentials,
44
- TRACING_HEADER_FOR_SERVICE_UTIL,
45
- tracingHeaderEnabled,
46
42
  tracingHeaders,
47
43
  requestOptions,
48
44
  fetchResponse,
@@ -58,13 +54,7 @@ var _requestServiceMultipart = exports.requestServiceMultipart = /*#__PURE__*/fu
58
54
  requestUrl = (0, _shared.buildUrl)(url, path, queryParams, secOptions);
59
55
  headers = (0, _shared.buildHeaders)(secOptions, requestInit && requestInit.headers);
60
56
  credentials = (0, _types.buildCredentials)(secOptions); // Get tracing headers from UFO
61
- TRACING_HEADER_FOR_SERVICE_UTIL = 'platform_collab_provider_tracingheaders';
62
- tracingHeaderEnabled = (0, _platformFeatureFlags.fg)('platform_collab_provider_tracingheaders');
63
- (0, _featureFlagsAccessed.addFeatureFlagAccessed)(TRACING_HEADER_FOR_SERVICE_UTIL, tracingHeaderEnabled);
64
- tracingHeaders = {};
65
- if (tracingHeaderEnabled) {
66
- tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
67
- }
57
+ tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
68
58
  requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
69
59
  // populate headers mainly for the collab provider however
70
60
  // other components which uses this util can get the header as well.
@@ -72,38 +62,38 @@ var _requestServiceMultipart = exports.requestServiceMultipart = /*#__PURE__*/fu
72
62
  headers: _objectSpread(_objectSpread({}, headers), tracingHeaders),
73
63
  credentials: credentials
74
64
  });
75
- _context.next = 15;
65
+ _context.next = 11;
76
66
  return fetch(requestUrl, requestOptions);
77
- case 15:
67
+ case 11:
78
68
  fetchResponse = _context.sent;
79
- _context.next = 18;
69
+ _context.next = 14;
80
70
  return (0, _browser.meros)(fetchResponse);
81
- case 18:
71
+ case 14:
82
72
  parts = _context.sent;
83
73
  if (!(fetchResponse.ok && fetchResponse.status !== 204)) {
84
- _context.next = 28;
74
+ _context.next = 24;
85
75
  break;
86
76
  }
87
77
  if (!(parts[Symbol.asyncIterator] < 'u')) {
88
- _context.next = 22;
78
+ _context.next = 18;
89
79
  break;
90
80
  }
91
81
  return _context.abrupt("return", {
92
82
  isMultipart: true,
93
83
  parts: parts
94
84
  });
95
- case 22:
96
- _context.next = 24;
85
+ case 18:
86
+ _context.next = 20;
97
87
  return parts.json();
98
- case 24:
88
+ case 20:
99
89
  _context.t0 = _context.sent;
100
90
  return _context.abrupt("return", {
101
91
  isMultipart: false,
102
92
  body: _context.t0
103
93
  });
104
- case 28:
94
+ case 24:
105
95
  if (!(fetchResponse.status === 401 && refreshedSecurityProvider)) {
106
- _context.next = 30;
96
+ _context.next = 26;
107
97
  break;
108
98
  }
109
99
  return _context.abrupt("return", refreshedSecurityProvider().then(function (newSecOptions) {
@@ -115,12 +105,12 @@ var _requestServiceMultipart = exports.requestServiceMultipart = /*#__PURE__*/fu
115
105
  };
116
106
  return _requestServiceMultipart(retryServiceConfig, options);
117
107
  }));
118
- case 30:
108
+ case 26:
119
109
  return _context.abrupt("return", Promise.reject({
120
110
  code: fetchResponse.status,
121
111
  reason: fetchResponse.statusText
122
112
  }));
123
- case 31:
113
+ case 27:
124
114
  case "end":
125
115
  return _context.stop();
126
116
  }
@@ -4,15 +4,31 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.requestService = void 0;
7
+ exports.requestService = exports.extractTracingHeaders = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _experienceTraceIdContext = require("@atlaskit/react-ufo/experience-trace-id-context");
10
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
11
- var _featureFlagsAccessed = require("@atlaskit/react-ufo/feature-flags-accessed");
12
10
  var _types = require("./types");
13
11
  var _shared = require("./shared");
14
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; }
15
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
+ }
28
+ }
29
+ return headers;
30
+ };
31
+
16
32
  /**
17
33
  * @returns Promise containing the json response
18
34
  */
@@ -31,13 +47,7 @@ var _requestService = exports.requestService = function requestService(serviceCo
31
47
  var ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
32
48
 
33
49
  // Get tracing headers from UFO
34
- var TRACING_HEADER_FOR_SERVICE_UTIL = 'platform_collab_provider_tracingheaders';
35
- var tracingHeaderEnabled = (0, _platformFeatureFlags.fg)('platform_collab_provider_tracingheaders');
36
- (0, _featureFlagsAccessed.addFeatureFlagAccessed)(TRACING_HEADER_FOR_SERVICE_UTIL, tracingHeaderEnabled);
37
- var tracingHeaders = {};
38
- if (tracingHeaderEnabled) {
39
- tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
40
- }
50
+ var tracingHeaders = (0, _experienceTraceIdContext.getActiveTraceHttpRequestHeaders)(url);
41
51
  var requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
42
52
  // populate headers mainly for the collab provider however
43
53
  // other components which uses this util can get the header as well.
@@ -46,6 +56,12 @@ var _requestService = exports.requestService = function requestService(serviceCo
46
56
  credentials: credentials
47
57
  });
48
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
+ }
49
65
  if (response.status === 204) {
50
66
  return Promise.resolve();
51
67
  } else if (response.ok) {
@@ -1,8 +1,6 @@
1
1
  import { meros } from 'meros/browser';
2
2
  import { buildCredentials } from './types';
3
3
  import { buildHeaders, buildUrl, defaultRequestServiceOptions } from './shared';
4
- import { fg } from '@atlaskit/platform-feature-flags';
5
- import { addFeatureFlagAccessed } from '@atlaskit/react-ufo/feature-flags-accessed';
6
4
  import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
7
5
 
8
6
  /** Copied from meros types, as there are difficulties with resolving the type in CI */
@@ -34,13 +32,7 @@ export const requestServiceMultipart = async (serviceConfig, options = defaultRe
34
32
  const credentials = buildCredentials(secOptions);
35
33
 
36
34
  // Get tracing headers from UFO
37
- const TRACING_HEADER_FOR_SERVICE_UTIL = 'platform_collab_provider_tracingheaders';
38
- const tracingHeaderEnabled = fg('platform_collab_provider_tracingheaders');
39
- addFeatureFlagAccessed(TRACING_HEADER_FOR_SERVICE_UTIL, tracingHeaderEnabled);
40
- let tracingHeaders = {};
41
- if (tracingHeaderEnabled) {
42
- tracingHeaders = getActiveTraceHttpRequestHeaders(url);
43
- }
35
+ const tracingHeaders = getActiveTraceHttpRequestHeaders(url);
44
36
  const requestOptions = {
45
37
  ...requestInit,
46
38
  // populate headers mainly for the collab provider however
@@ -1,8 +1,22 @@
1
1
  import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
2
- import { fg } from '@atlaskit/platform-feature-flags';
3
- import { addFeatureFlagAccessed } from '@atlaskit/react-ufo/feature-flags-accessed';
4
2
  import { buildCredentials } from './types';
5
3
  import { defaultRequestServiceOptions, buildUrl, buildHeaders } from './shared';
4
+ const TRACING_RESPONSE_HEADERS = ['x-trace-id', 'atl-request-id'];
5
+
6
+ /**
7
+ * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
8
+ * Returns only headers that are present in the response.
9
+ */
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
+ };
6
20
 
7
21
  /**
8
22
  * @returns Promise containing the json response
@@ -25,13 +39,7 @@ export const requestService = (serviceConfig, options) => {
25
39
  const ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
26
40
 
27
41
  // Get tracing headers from UFO
28
- const TRACING_HEADER_FOR_SERVICE_UTIL = 'platform_collab_provider_tracingheaders';
29
- const tracingHeaderEnabled = fg('platform_collab_provider_tracingheaders');
30
- addFeatureFlagAccessed(TRACING_HEADER_FOR_SERVICE_UTIL, tracingHeaderEnabled);
31
- let tracingHeaders = {};
32
- if (tracingHeaderEnabled) {
33
- tracingHeaders = getActiveTraceHttpRequestHeaders(url);
34
- }
42
+ const tracingHeaders = getActiveTraceHttpRequestHeaders(url);
35
43
  const requestOptions = {
36
44
  ...requestInit,
37
45
  // populate headers mainly for the collab provider however
@@ -44,6 +52,12 @@ export const requestService = (serviceConfig, options) => {
44
52
  credentials
45
53
  };
46
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
+ }
47
61
  if (response.status === 204) {
48
62
  return Promise.resolve();
49
63
  } else if (response.ok) {
@@ -6,8 +6,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
6
6
  import { meros } from 'meros/browser';
7
7
  import { buildCredentials } from './types';
8
8
  import { buildHeaders, buildUrl, defaultRequestServiceOptions } from './shared';
9
- import { fg } from '@atlaskit/platform-feature-flags';
10
- import { addFeatureFlagAccessed } from '@atlaskit/react-ufo/feature-flags-accessed';
11
9
  import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
12
10
 
13
11
  /** Copied from meros types, as there are difficulties with resolving the type in CI */
@@ -35,8 +33,6 @@ var _requestServiceMultipart = /*#__PURE__*/function () {
35
33
  requestUrl,
36
34
  headers,
37
35
  credentials,
38
- TRACING_HEADER_FOR_SERVICE_UTIL,
39
- tracingHeaderEnabled,
40
36
  tracingHeaders,
41
37
  requestOptions,
42
38
  fetchResponse,
@@ -52,13 +48,7 @@ var _requestServiceMultipart = /*#__PURE__*/function () {
52
48
  requestUrl = buildUrl(url, path, queryParams, secOptions);
53
49
  headers = buildHeaders(secOptions, requestInit && requestInit.headers);
54
50
  credentials = buildCredentials(secOptions); // Get tracing headers from UFO
55
- TRACING_HEADER_FOR_SERVICE_UTIL = 'platform_collab_provider_tracingheaders';
56
- tracingHeaderEnabled = fg('platform_collab_provider_tracingheaders');
57
- addFeatureFlagAccessed(TRACING_HEADER_FOR_SERVICE_UTIL, tracingHeaderEnabled);
58
- tracingHeaders = {};
59
- if (tracingHeaderEnabled) {
60
- tracingHeaders = getActiveTraceHttpRequestHeaders(url);
61
- }
51
+ tracingHeaders = getActiveTraceHttpRequestHeaders(url);
62
52
  requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
63
53
  // populate headers mainly for the collab provider however
64
54
  // other components which uses this util can get the header as well.
@@ -66,38 +56,38 @@ var _requestServiceMultipart = /*#__PURE__*/function () {
66
56
  headers: _objectSpread(_objectSpread({}, headers), tracingHeaders),
67
57
  credentials: credentials
68
58
  });
69
- _context.next = 15;
59
+ _context.next = 11;
70
60
  return fetch(requestUrl, requestOptions);
71
- case 15:
61
+ case 11:
72
62
  fetchResponse = _context.sent;
73
- _context.next = 18;
63
+ _context.next = 14;
74
64
  return meros(fetchResponse);
75
- case 18:
65
+ case 14:
76
66
  parts = _context.sent;
77
67
  if (!(fetchResponse.ok && fetchResponse.status !== 204)) {
78
- _context.next = 28;
68
+ _context.next = 24;
79
69
  break;
80
70
  }
81
71
  if (!(parts[Symbol.asyncIterator] < 'u')) {
82
- _context.next = 22;
72
+ _context.next = 18;
83
73
  break;
84
74
  }
85
75
  return _context.abrupt("return", {
86
76
  isMultipart: true,
87
77
  parts: parts
88
78
  });
89
- case 22:
90
- _context.next = 24;
79
+ case 18:
80
+ _context.next = 20;
91
81
  return parts.json();
92
- case 24:
82
+ case 20:
93
83
  _context.t0 = _context.sent;
94
84
  return _context.abrupt("return", {
95
85
  isMultipart: false,
96
86
  body: _context.t0
97
87
  });
98
- case 28:
88
+ case 24:
99
89
  if (!(fetchResponse.status === 401 && refreshedSecurityProvider)) {
100
- _context.next = 30;
90
+ _context.next = 26;
101
91
  break;
102
92
  }
103
93
  return _context.abrupt("return", refreshedSecurityProvider().then(function (newSecOptions) {
@@ -109,12 +99,12 @@ var _requestServiceMultipart = /*#__PURE__*/function () {
109
99
  };
110
100
  return _requestServiceMultipart(retryServiceConfig, options);
111
101
  }));
112
- case 30:
102
+ case 26:
113
103
  return _context.abrupt("return", Promise.reject({
114
104
  code: fetchResponse.status,
115
105
  reason: fetchResponse.statusText
116
106
  }));
117
- case 31:
107
+ case 27:
118
108
  case "end":
119
109
  return _context.stop();
120
110
  }
@@ -2,10 +2,25 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  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; }
3
3
  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) { _defineProperty(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; }
4
4
  import { getActiveTraceHttpRequestHeaders } from '@atlaskit/react-ufo/experience-trace-id-context';
5
- import { fg } from '@atlaskit/platform-feature-flags';
6
- import { addFeatureFlagAccessed } from '@atlaskit/react-ufo/feature-flags-accessed';
7
5
  import { buildCredentials } from './types';
8
6
  import { defaultRequestServiceOptions, buildUrl, buildHeaders } from './shared';
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
+ export var 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
24
 
10
25
  /**
11
26
  * @returns Promise containing the json response
@@ -25,13 +40,7 @@ var _requestService = function requestService(serviceConfig, options) {
25
40
  var ignoreResponsePayload = (options === null || options === void 0 ? void 0 : options.ignoreResponsePayload) || false;
26
41
 
27
42
  // Get tracing headers from UFO
28
- var TRACING_HEADER_FOR_SERVICE_UTIL = 'platform_collab_provider_tracingheaders';
29
- var tracingHeaderEnabled = fg('platform_collab_provider_tracingheaders');
30
- addFeatureFlagAccessed(TRACING_HEADER_FOR_SERVICE_UTIL, tracingHeaderEnabled);
31
- var tracingHeaders = {};
32
- if (tracingHeaderEnabled) {
33
- tracingHeaders = getActiveTraceHttpRequestHeaders(url);
34
- }
43
+ var tracingHeaders = getActiveTraceHttpRequestHeaders(url);
35
44
  var requestOptions = _objectSpread(_objectSpread({}, requestInit), {}, {
36
45
  // populate headers mainly for the collab provider however
37
46
  // other components which uses this util can get the header as well.
@@ -40,6 +49,12 @@ var _requestService = function requestService(serviceConfig, options) {
40
49
  credentials: credentials
41
50
  });
42
51
  return fetch(requestUrl, requestOptions).then(function (response) {
52
+ if (options !== null && options !== void 0 && options.reportTracingHeaders) {
53
+ var _tracingHeaders = extractTracingHeaders(response);
54
+ if (Object.keys(_tracingHeaders).length > 0) {
55
+ options.reportTracingHeaders(_tracingHeaders);
56
+ }
57
+ }
43
58
  if (response.status === 204) {
44
59
  return Promise.resolve();
45
60
  } else if (response.ok) {
@@ -1,4 +1,9 @@
1
1
  import { type RequestServiceOptions, type ServiceConfig } from './types';
2
+ /**
3
+ * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
4
+ * Returns only headers that are present in the response.
5
+ */
6
+ export declare const extractTracingHeaders: (response: Response) => Record<string, string>;
2
7
  /**
3
8
  * @returns Promise containing the json response
4
9
  */
@@ -76,5 +76,10 @@ export interface RequestServiceOptions {
76
76
  ignoreResponsePayload?: boolean;
77
77
  path?: string;
78
78
  queryParams?: KeyValues;
79
+ /**
80
+ * Optional callback invoked with tracing headers extracted from the response.
81
+ * Only exposes x-trace-id and atl-request-id headers.
82
+ */
83
+ reportTracingHeaders?: (headers: Record<string, string>) => void;
79
84
  requestInit?: RequestInit;
80
85
  }
@@ -1,4 +1,9 @@
1
1
  import { type RequestServiceOptions, type ServiceConfig } from './types';
2
+ /**
3
+ * Extracts tracing headers (x-trace-id, atl-request-id) from a Response object.
4
+ * Returns only headers that are present in the response.
5
+ */
6
+ export declare const extractTracingHeaders: (response: Response) => Record<string, string>;
2
7
  /**
3
8
  * @returns Promise containing the json response
4
9
  */
@@ -76,5 +76,10 @@ export interface RequestServiceOptions {
76
76
  ignoreResponsePayload?: boolean;
77
77
  path?: string;
78
78
  queryParams?: KeyValues;
79
+ /**
80
+ * Optional callback invoked with tracing headers extracted from the response.
81
+ * Only exposes x-trace-id and atl-request-id headers.
82
+ */
83
+ reportTracingHeaders?: (headers: Record<string, string>) => void;
79
84
  requestInit?: RequestInit;
80
85
  }
package/docs/0-intro.tsx CHANGED
@@ -1,6 +1,6 @@
1
1
  import { md } from '@atlaskit/docs';
2
2
 
3
- export default md`
3
+ const _default_1: any = md`
4
4
  # Util Service Support
5
5
 
6
6
  A library of support classes for integrating React components with REST HTTP services, including
@@ -20,3 +20,4 @@ export default md`
20
20
 
21
21
  import { AbstractResource } from '@atlaskit/util-service-support';
22
22
  `;
23
+ export default _default_1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/util-service-support",
3
- "version": "6.3.3",
3
+ "version": "6.3.5",
4
4
  "description": "A library of support classes for integrating React components with REST HTTP services",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -21,12 +21,6 @@
21
21
  }
22
22
  },
23
23
  "atlaskit:src": "src/index.ts",
24
- "af:exports": {
25
- ".": "./src/index.ts",
26
- "./serviceResources": "./src/serviceResources.ts",
27
- "./serviceUtils": "./src/serviceUtils.ts",
28
- "./types": "./src/types.ts"
29
- },
30
24
  "atlassian": {
31
25
  "team": "Build Infra"
32
26
  },
@@ -35,7 +29,7 @@
35
29
  },
36
30
  "dependencies": {
37
31
  "@atlaskit/platform-feature-flags": "^1.1.0",
38
- "@atlaskit/react-ufo": "^4.4.0",
32
+ "@atlaskit/react-ufo": "^5.2.0",
39
33
  "@babel/runtime": "^7.0.0",
40
34
  "meros": "^1.3.0"
41
35
  },
@@ -54,9 +48,5 @@
54
48
  "tree-shaking": []
55
49
  }
56
50
  },
57
- "platform-feature-flags": {
58
- "platform_collab_provider_tracingheaders": {
59
- "type": "boolean"
60
- }
61
- }
51
+ "platform-feature-flags": {}
62
52
  }
package/tsconfig.json CHANGED
@@ -1,11 +1,4 @@
1
1
  {
2
- "extends": "../../../tsconfig.json",
3
- "compilerOptions": {
4
- },
5
- "include": [
6
- "./src/**/*.ts",
7
- "./src/**/*.tsx",
8
- "./docs/**/*.ts",
9
- "./docs/**/*.tsx"
10
- ]
2
+ "extends": "../../../tsconfig.json",
3
+ "include": ["./src/**/*.ts", "./src/**/*.tsx", "./docs/**/*.ts", "./docs/**/*.tsx"]
11
4
  }
@@ -1,33 +0,0 @@
1
- {
2
- "extends": "../../../../tsconfig.entry-points.dev-agents.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../dev-agents/tsDist/@atlaskit__util-service-support/app",
7
- "rootDir": "../",
8
- "composite": true
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*",
18
- "../src/**/examples.*",
19
- "../src/**/examples/*",
20
- "../src/**/examples/**/*",
21
- "../src/**/*.stories.*",
22
- "../src/**/stories/*",
23
- "../src/**/stories/**/*"
24
- ],
25
- "references": [
26
- {
27
- "path": "../../../platform/feature-flags/afm-dev-agents/tsconfig.json"
28
- },
29
- {
30
- "path": "../../../react-ufo/atlaskit/afm-dev-agents/tsconfig.json"
31
- }
32
- ]
33
- }
@@ -1,33 +0,0 @@
1
- {
2
- "extends": "../../../../tsconfig.entry-points.passionfruit.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../passionfruit/tsDist/@atlaskit__util-service-support/app",
7
- "rootDir": "../",
8
- "composite": true
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*",
18
- "../src/**/examples.*",
19
- "../src/**/examples/*",
20
- "../src/**/examples/**/*",
21
- "../src/**/*.stories.*",
22
- "../src/**/stories/*",
23
- "../src/**/stories/**/*"
24
- ],
25
- "references": [
26
- {
27
- "path": "../../../platform/feature-flags/afm-passionfruit/tsconfig.json"
28
- },
29
- {
30
- "path": "../../../react-ufo/atlaskit/afm-passionfruit/tsconfig.json"
31
- }
32
- ]
33
- }
@@ -1,33 +0,0 @@
1
- {
2
- "extends": "../../../../tsconfig.entry-points.post-office.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../post-office/tsDist/@atlaskit__util-service-support/app",
7
- "rootDir": "../",
8
- "composite": true
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*",
18
- "../src/**/examples.*",
19
- "../src/**/examples/*",
20
- "../src/**/examples/**/*",
21
- "../src/**/*.stories.*",
22
- "../src/**/stories/*",
23
- "../src/**/stories/**/*"
24
- ],
25
- "references": [
26
- {
27
- "path": "../../../platform/feature-flags/afm-post-office/tsconfig.json"
28
- },
29
- {
30
- "path": "../../../react-ufo/atlaskit/afm-post-office/tsconfig.json"
31
- }
32
- ]
33
- }
@@ -1,33 +0,0 @@
1
- {
2
- "extends": "../../../../tsconfig.entry-points.rovo-extension.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../rovo-extension/tsDist/@atlaskit__util-service-support/app",
7
- "rootDir": "../",
8
- "composite": true
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*",
18
- "../src/**/examples.*",
19
- "../src/**/examples/*",
20
- "../src/**/examples/**/*",
21
- "../src/**/*.stories.*",
22
- "../src/**/stories/*",
23
- "../src/**/stories/**/*"
24
- ],
25
- "references": [
26
- {
27
- "path": "../../../platform/feature-flags/afm-rovo-extension/tsconfig.json"
28
- },
29
- {
30
- "path": "../../../react-ufo/atlaskit/afm-rovo-extension/tsconfig.json"
31
- }
32
- ]
33
- }
@@ -1,33 +0,0 @@
1
- {
2
- "extends": "../../../../tsconfig.entry-points.townsquare.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "outDir": "../../../../../townsquare/tsDist/@atlaskit__util-service-support/app",
7
- "rootDir": "../",
8
- "composite": true
9
- },
10
- "include": [
11
- "../src/**/*.ts",
12
- "../src/**/*.tsx"
13
- ],
14
- "exclude": [
15
- "../src/**/__tests__/*",
16
- "../src/**/*.test.*",
17
- "../src/**/test.*",
18
- "../src/**/examples.*",
19
- "../src/**/examples/*",
20
- "../src/**/examples/**/*",
21
- "../src/**/*.stories.*",
22
- "../src/**/stories/*",
23
- "../src/**/stories/**/*"
24
- ],
25
- "references": [
26
- {
27
- "path": "../../../platform/feature-flags/afm-townsquare/tsconfig.json"
28
- },
29
- {
30
- "path": "../../../react-ufo/atlaskit/afm-townsquare/tsconfig.json"
31
- }
32
- ]
33
- }
@@ -1,23 +0,0 @@
1
- {
2
- "extends": "../tsconfig",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "target": "es5",
6
- "paths": {}
7
- },
8
- "include": [
9
- "../src/**/*.ts",
10
- "../src/**/*.tsx"
11
- ],
12
- "exclude": [
13
- "../src/**/__tests__/*",
14
- "../src/**/*.test.*",
15
- "../src/**/test.*",
16
- "../src/**/examples.*",
17
- "../src/**/examples/*",
18
- "../src/**/examples/**/*",
19
- "../src/**/*.stories.*",
20
- "../src/**/stories/*",
21
- "../src/**/stories/**/*"
22
- ]
23
- }