@jetbrains/ring-ui-built 6.0.30 → 6.0.32

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 (226) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +7 -629
  2. package/components/_helpers/anchor.js +7 -6
  3. package/components/_helpers/button__classes.js +16 -14
  4. package/components/_helpers/caption.js +14 -20
  5. package/components/_helpers/card.js +95 -105
  6. package/components/_helpers/dialog__body-scroll-preventer.js +11 -19
  7. package/components/_helpers/icon__svg.js +22 -25
  8. package/components/_helpers/input.js +146 -177
  9. package/components/_helpers/query-assist__suggestions.js +74 -90
  10. package/components/_helpers/select__filter.js +48 -69
  11. package/components/_helpers/services-link.js +29 -37
  12. package/components/_helpers/sidebar.js +99 -107
  13. package/components/_helpers/tab-link.js +7 -7
  14. package/components/_helpers/theme.js +31 -40
  15. package/components/_helpers/title.js +57 -72
  16. package/components/alert/alert.js +150 -202
  17. package/components/alert/container.js +32 -41
  18. package/components/alert-service/alert-service.js +105 -170
  19. package/components/analytics/analytics.js +12 -22
  20. package/components/analytics/analytics__custom-plugin.js +54 -75
  21. package/components/auth/auth.js +4 -36
  22. package/components/auth/auth__core.js +746 -1471
  23. package/components/auth/background-flow.js +87 -127
  24. package/components/auth/down-notification.js +30 -73
  25. package/components/auth/iframe-flow.js +75 -133
  26. package/components/auth/request-builder.js +46 -82
  27. package/components/auth/response-parser.js +86 -116
  28. package/components/auth/storage.js +171 -334
  29. package/components/auth/token-validator.js +137 -242
  30. package/components/auth/window-flow.js +92 -134
  31. package/components/auth-dialog/auth-dialog.js +114 -172
  32. package/components/auth-dialog-service/auth-dialog-service.js +8 -31
  33. package/components/avatar/avatar-example-datauri.js +23 -1
  34. package/components/avatar/avatar.js +119 -152
  35. package/components/avatar/fallback-avatar.js +22 -38
  36. package/components/badge/badge.js +35 -45
  37. package/components/button/button.js +86 -107
  38. package/components/button-group/button-group.js +19 -33
  39. package/components/button-set/button-set.js +20 -32
  40. package/components/button-toolbar/button-toolbar.js +19 -31
  41. package/components/caret/caret.js +186 -220
  42. package/components/checkbox/checkbox.js +76 -101
  43. package/components/clipboard/clipboard-fallback.js +10 -10
  44. package/components/clipboard/clipboard.js +35 -132
  45. package/components/code/code.js +92 -166
  46. package/components/collapse/collapse-content.js +42 -64
  47. package/components/collapse/collapse-context.js +2 -2
  48. package/components/collapse/collapse-control.js +12 -14
  49. package/components/collapse/collapse.js +11 -17
  50. package/components/collapse/consts.js +4 -4
  51. package/components/collapse/utils.js +1 -3
  52. package/components/confirm/confirm.js +66 -104
  53. package/components/confirm-service/confirm-service.js +37 -59
  54. package/components/content-layout/content-layout.js +43 -64
  55. package/components/content-layout/sidebar.js +0 -1
  56. package/components/contenteditable/contenteditable.js +50 -59
  57. package/components/control-label/control-label.js +9 -9
  58. package/components/data-list/data-list.js +129 -182
  59. package/components/data-list/data-list.mock.js +2 -6
  60. package/components/data-list/item.js +143 -170
  61. package/components/data-list/selection.js +76 -136
  62. package/components/data-list/title.js +1 -12
  63. package/components/date-picker/consts.js +19 -26
  64. package/components/date-picker/date-input.js +113 -144
  65. package/components/date-picker/date-picker.js +227 -282
  66. package/components/date-picker/date-popup.js +350 -395
  67. package/components/date-picker/day.js +87 -116
  68. package/components/date-picker/month-names.js +43 -66
  69. package/components/date-picker/month-slider.js +51 -76
  70. package/components/date-picker/month.js +16 -25
  71. package/components/date-picker/months.js +43 -50
  72. package/components/date-picker/weekdays.js +12 -22
  73. package/components/date-picker/years.js +83 -110
  74. package/components/dialog/dialog.js +142 -190
  75. package/components/dialog/dialog__body-scroll-preventer.js +0 -4
  76. package/components/dropdown/anchor.js +0 -9
  77. package/components/dropdown/dropdown.js +182 -213
  78. package/components/dropdown-menu/dropdown-menu.js +71 -97
  79. package/components/editable-heading/editable-heading.js +75 -127
  80. package/components/error-bubble/error-bubble.js +31 -60
  81. package/components/error-message/error-message.js +39 -59
  82. package/components/footer/footer.js +27 -30
  83. package/components/global/compose.js +1 -10
  84. package/components/global/composeRefs.js +7 -12
  85. package/components/global/controls-height.js +2 -2
  86. package/components/global/create-stateful-context.js +15 -15
  87. package/components/global/data-tests.js +6 -14
  88. package/components/global/dom.js +47 -86
  89. package/components/global/focus-sensor-hoc.js +122 -132
  90. package/components/global/fuzzy-highlight.js +22 -36
  91. package/components/global/get-event-key.js +8 -8
  92. package/components/global/get-uid.js +4 -8
  93. package/components/global/inject-styles.js +10 -15
  94. package/components/global/listeners.js +27 -51
  95. package/components/global/memoize.js +6 -12
  96. package/components/global/normalize-indent.js +19 -50
  97. package/components/global/promise-with-timeout.js +6 -8
  98. package/components/global/prop-types.js +3 -5
  99. package/components/global/react-dom-renderer.js +28 -44
  100. package/components/global/react-render-adapter.js +1 -1
  101. package/components/global/rerender-hoc.js +12 -30
  102. package/components/global/schedule-raf.js +5 -6
  103. package/components/global/sniffer.js +1 -1
  104. package/components/global/theme.js +0 -22
  105. package/components/global/trivial-template-tag.js +3 -10
  106. package/components/global/typescript-utils.js +2 -6
  107. package/components/global/url.js +20 -26
  108. package/components/global/use-event-callback.js +6 -4
  109. package/components/grid/col.js +35 -52
  110. package/components/grid/grid.js +17 -31
  111. package/components/grid/row.js +35 -47
  112. package/components/group/group.js +17 -25
  113. package/components/header/header.js +33 -78
  114. package/components/header/logo.js +20 -36
  115. package/components/header/profile.js +166 -199
  116. package/components/header/services-link.js +0 -4
  117. package/components/header/services.js +73 -116
  118. package/components/header/smart-profile.js +111 -203
  119. package/components/header/smart-services.js +62 -113
  120. package/components/header/tray-icon.js +21 -37
  121. package/components/header/tray.js +21 -32
  122. package/components/heading/heading.js +24 -25
  123. package/components/http/http.d.ts +1 -3
  124. package/components/http/http.js +203 -353
  125. package/components/http/http.mock.js +49 -101
  126. package/components/hub-source/hub-source.js +83 -190
  127. package/components/hub-source/hub-source__user.js +11 -44
  128. package/components/hub-source/hub-source__users-groups.js +37 -65
  129. package/components/i18n/i18n-context.js +7 -10
  130. package/components/i18n/i18n.js +7 -10
  131. package/components/icon/icon.js +76 -93
  132. package/components/icon/icon__svg.js +0 -8
  133. package/components/icon/index.js +0 -8
  134. package/components/input/input.js +0 -13
  135. package/components/island/adaptive-island-hoc.js +30 -43
  136. package/components/island/content.js +115 -132
  137. package/components/island/header.js +57 -70
  138. package/components/island/island.js +28 -40
  139. package/components/island-legacy/content-legacy.js +17 -25
  140. package/components/island-legacy/header-legacy.js +19 -27
  141. package/components/island-legacy/island-legacy.js +17 -25
  142. package/components/link/clickableLink.js +44 -59
  143. package/components/link/link.js +57 -68
  144. package/components/list/consts.js +2 -2
  145. package/components/list/list.js +611 -698
  146. package/components/list/list__custom.js +44 -62
  147. package/components/list/list__hint.js +10 -19
  148. package/components/list/list__item.js +133 -174
  149. package/components/list/list__link.js +37 -50
  150. package/components/list/list__separator.js +14 -24
  151. package/components/list/list__title.js +22 -32
  152. package/components/list/list__users-groups-source.js +54 -126
  153. package/components/loader/loader.js +43 -74
  154. package/components/loader/loader__core.js +198 -263
  155. package/components/loader-inline/loader-inline.js +23 -35
  156. package/components/loader-screen/loader-screen.js +25 -46
  157. package/components/login-dialog/login-dialog.js +111 -158
  158. package/components/login-dialog/service.js +8 -34
  159. package/components/markdown/markdown.js +15 -23
  160. package/components/message/message.js +161 -203
  161. package/components/old-browsers-message/old-browsers-message.js +11 -18
  162. package/components/old-browsers-message/old-browsers-message__stop.js +0 -7
  163. package/components/old-browsers-message/white-list.js +8 -16
  164. package/components/pager/pager.js +212 -271
  165. package/components/panel/panel.js +17 -25
  166. package/components/permissions/permissions.js +127 -172
  167. package/components/permissions/permissions__cache.js +194 -224
  168. package/components/popup/popup.consts.js +1 -1
  169. package/components/popup/popup.js +284 -343
  170. package/components/popup/popup.target.js +9 -8
  171. package/components/popup/position.js +96 -106
  172. package/components/popup-menu/popup-menu.js +44 -80
  173. package/components/progress-bar/progress-bar.js +87 -104
  174. package/components/query-assist/query-assist.js +838 -916
  175. package/components/query-assist/query-assist__suggestions.js +1 -30
  176. package/components/radio/radio.js +19 -34
  177. package/components/radio/radio__item.js +52 -69
  178. package/components/select/select.js +852 -957
  179. package/components/select/select__filter.js +0 -30
  180. package/components/select/select__popup.js +373 -487
  181. package/components/shortcuts/core.js +166 -217
  182. package/components/shortcuts/shortcut-title.js +6 -11
  183. package/components/shortcuts/shortcuts-hoc.js +19 -45
  184. package/components/shortcuts/shortcuts.js +50 -75
  185. package/components/slider/slider.js +99 -122
  186. package/components/slider/slider.utils.js +14 -24
  187. package/components/storage/storage.js +4 -33
  188. package/components/storage/storage__fallback.js +149 -224
  189. package/components/storage/storage__local.js +90 -153
  190. package/components/style.css +1 -1
  191. package/components/tab-trap/tab-trap.js +122 -153
  192. package/components/table/cell.js +14 -26
  193. package/components/table/disable-hover-hoc.js +33 -51
  194. package/components/table/header-cell.js +64 -89
  195. package/components/table/header.js +104 -132
  196. package/components/table/multitable.js +107 -125
  197. package/components/table/row-with-focus-sensor.js +25 -69
  198. package/components/table/row.js +175 -216
  199. package/components/table/selection-adapter.js +1 -3
  200. package/components/table/selection-shortcuts-hoc.js +180 -181
  201. package/components/table/selection.js +156 -226
  202. package/components/table/smart-table.js +50 -88
  203. package/components/table/table.js +289 -358
  204. package/components/tabs/collapsible-more.js +46 -79
  205. package/components/tabs/collapsible-tab.js +31 -38
  206. package/components/tabs/collapsible-tabs.js +88 -153
  207. package/components/tabs/custom-item.js +4 -2
  208. package/components/tabs/dumb-tabs.js +74 -117
  209. package/components/tabs/smart-tabs.js +29 -69
  210. package/components/tabs/tab-link.js +1 -5
  211. package/components/tabs/tab.js +19 -31
  212. package/components/tabs/tabs.js +0 -31
  213. package/components/tag/tag.js +133 -173
  214. package/components/tags-input/tags-input.js +329 -427
  215. package/components/tags-list/tags-list.js +57 -78
  216. package/components/text/text.js +28 -39
  217. package/components/toggle/toggle.js +56 -70
  218. package/components/tooltip/tooltip.js +146 -190
  219. package/components/user-agreement/service.js +228 -371
  220. package/components/user-agreement/toolbox.eula.js +160 -1
  221. package/components/user-agreement/user-agreement.js +85 -120
  222. package/components/user-card/card.js +0 -29
  223. package/components/user-card/smart-user-card-tooltip.js +51 -111
  224. package/components/user-card/tooltip.js +47 -84
  225. package/components/user-card/user-card.js +0 -29
  226. package/package.json +1 -1
@@ -1,384 +1,234 @@
1
- import { a as _inherits, b as _createClass, c as _objectWithoutProperties, d as _objectSpread2, j as _slicedToArray, f as _classCallCheck, g as _callSuper, _ as _defineProperty, h as _asyncToGenerator, i as _regeneratorRuntime } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.concat.js';
3
- import 'core-js/modules/es.array.index-of.js';
4
- import 'core-js/modules/es.array.iterator.js';
5
- import 'core-js/modules/es.object.entries.js';
6
- import 'core-js/modules/es.object.to-string.js';
7
- import 'core-js/modules/es.promise.js';
8
- import 'core-js/modules/es.reflect.delete-property.js';
9
- import 'core-js/modules/es.weak-map.js';
10
- import 'core-js/modules/web.dom-collections.for-each.js';
11
- import 'core-js/modules/web.dom-collections.iterator.js';
12
1
  import ExtendableError from 'es6-error';
13
2
  import { encodeURL, joinBaseURLAndPath } from '../global/url.js';
14
- import 'core-js/modules/es.regexp.exec.js';
15
- import 'core-js/modules/es.string.match.js';
16
- import 'core-js/modules/es.string.replace.js';
17
3
 
18
- var _excluded = ["body", "query"],
19
- _excluded2 = ["headers"],
20
- _excluded3 = ["headers", "body", "query", "sendRawBody"];
21
4
  /**
22
5
  * @name HTTP
23
6
  */
24
- var TOKEN_TYPE = 'Bearer';
25
- var STATUS_OK_IF_MORE_THAN = 200;
26
- var STATUS_BAD_IF_MORE_THAN = 300;
27
- var defaultFetchConfig = {
7
+ const TOKEN_TYPE = 'Bearer';
8
+ const STATUS_OK_IF_MORE_THAN = 200;
9
+ const STATUS_BAD_IF_MORE_THAN = 300;
10
+ const defaultFetchConfig = {
28
11
  headers: {
29
12
  'Content-Type': 'application/json',
30
13
  Accept: 'application/json'
31
14
  },
32
15
  credentials: 'same-origin'
33
16
  };
34
- var HTTPError = /*#__PURE__*/function (_ExtendableError) {
35
- function HTTPError(response) {
36
- var _this;
37
- var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
- _classCallCheck(this, HTTPError);
39
- _this = _callSuper(this, HTTPError, ["".concat(response.status, " ").concat(response.statusText || '')]);
40
- _defineProperty(_this, "data", void 0);
41
- _defineProperty(_this, "status", void 0);
42
- _this.data = data;
43
- _this.status = response.status;
44
- return _this;
17
+ class HTTPError extends ExtendableError {
18
+ data;
19
+ status;
20
+ constructor(response) {
21
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
22
+ super(`${response.status} ${response.statusText || ''}`);
23
+ this.data = data;
24
+ this.status = response.status;
45
25
  }
46
- _inherits(HTTPError, _ExtendableError);
47
- return _createClass(HTTPError);
48
- }(ExtendableError);
49
- var CODE = {
26
+ }
27
+ const CODE = {
50
28
  UNAUTHORIZED: 401
51
29
  };
52
30
  function isRawBody(params) {
53
31
  return params.sendRawBody === true;
54
32
  }
55
- var HTTP = /*#__PURE__*/function () {
56
- function HTTP(_auth, _baseUrl) {
57
- var _this2 = this;
58
- var _fetchConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
59
- _classCallCheck(this, HTTP);
60
- _defineProperty(this, "baseUrl", null);
61
- _defineProperty(this, "_requestsMeta", new WeakMap());
62
- _defineProperty(this, "fetchConfig", void 0);
63
- _defineProperty(this, "requestToken", void 0);
64
- _defineProperty(this, "shouldRefreshToken", void 0);
65
- _defineProperty(this, "forceTokenUpdate", void 0);
66
- _defineProperty(this, "setAuth", function (auth) {
67
- _this2.requestToken = function () {
68
- return auth.requestToken();
69
- };
70
- _this2.shouldRefreshToken = auth.constructor.shouldRefreshToken;
71
- _this2.forceTokenUpdate = function () {
72
- return auth.forceTokenUpdate();
73
- };
74
- });
75
- _defineProperty(this, "setBaseUrl", function (baseUrl) {
76
- _this2.baseUrl = baseUrl;
77
- });
78
- _defineProperty(this, "fetch", /*#__PURE__*/function () {
79
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url) {
80
- var params,
81
- body,
82
- _params$query,
83
- query,
84
- fetchConfig,
85
- response,
86
- _args = arguments;
87
- return _regeneratorRuntime().wrap(function _callee$(_context) {
88
- while (1) switch (_context.prev = _context.next) {
89
- case 0:
90
- params = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
91
- body = params.body, _params$query = params.query, query = _params$query === void 0 ? {} : _params$query, fetchConfig = _objectWithoutProperties(params, _excluded);
92
- _context.next = 4;
93
- return _this2._fetch(_this2._makeRequestUrl(url, query), _objectSpread2(_objectSpread2({}, fetchConfig), {}, {
94
- headers: fetchConfig.headers,
95
- body: body !== null && body !== undefined && body !== '' ? JSON.stringify(body) : body
96
- }));
97
- case 4:
98
- response = _context.sent;
99
- return _context.abrupt("return", _this2._processResponse(response));
100
- case 6:
101
- case "end":
102
- return _context.stop();
103
- }
104
- }, _callee);
105
- }));
106
- return function (_x) {
107
- return _ref.apply(this, arguments);
108
- };
109
- }());
110
- _defineProperty(this, "request", /*#__PURE__*/function () {
111
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(url, params) {
112
- var _this2$requestToken;
113
- var token, response, _this2$shouldRefreshT, shouldRefreshToken, _this2$forceTokenUpda;
114
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
115
- while (1) switch (_context2.prev = _context2.next) {
116
- case 0:
117
- _context2.next = 2;
118
- return (_this2$requestToken = _this2.requestToken) === null || _this2$requestToken === void 0 ? void 0 : _this2$requestToken.call(_this2);
119
- case 2:
120
- token = _context2.sent;
121
- _context2.next = 5;
122
- return _this2._performRequest(url, token, params);
123
- case 5:
124
- response = _context2.sent;
125
- _context2.prev = 6;
126
- _context2.next = 9;
127
- return _this2._processResponse(response);
128
- case 9:
129
- return _context2.abrupt("return", _context2.sent);
130
- case 12:
131
- _context2.prev = 12;
132
- _context2.t0 = _context2["catch"](6);
133
- if (_context2.t0 instanceof HTTPError) {
134
- _context2.next = 16;
135
- break;
136
- }
137
- throw _context2.t0;
138
- case 16:
139
- shouldRefreshToken = _context2.t0.data.error !== undefined ? (_this2$shouldRefreshT = _this2.shouldRefreshToken) === null || _this2$shouldRefreshT === void 0 ? void 0 : _this2$shouldRefreshT.call(_this2, _context2.t0.data.error) : false;
140
- if (!shouldRefreshToken) {
141
- _context2.next = 25;
142
- break;
143
- }
144
- _context2.next = 20;
145
- return (_this2$forceTokenUpda = _this2.forceTokenUpdate) === null || _this2$forceTokenUpda === void 0 ? void 0 : _this2$forceTokenUpda.call(_this2);
146
- case 20:
147
- token = _context2.sent;
148
- _context2.next = 23;
149
- return _this2._performRequest(url, token, params);
150
- case 23:
151
- response = _context2.sent;
152
- return _context2.abrupt("return", _this2._processResponse(response));
153
- case 25:
154
- throw _context2.t0;
155
- case 26:
156
- case "end":
157
- return _context2.stop();
158
- }
159
- }, _callee2, null, [[6, 12]]);
160
- }));
161
- return function (_x2, _x3) {
162
- return _ref2.apply(this, arguments);
163
- };
164
- }());
165
- _defineProperty(this, "getMetaForResponse", function (response) {
166
- return _this2._requestsMeta.get(response);
167
- });
168
- _defineProperty(this, "get", function (url, params) {
169
- return _this2.request(url, _objectSpread2(_objectSpread2({}, params), {}, {
170
- method: 'GET'
171
- }));
172
- });
173
- _defineProperty(this, "post", function (url, params) {
174
- return _this2.request(url, _objectSpread2(_objectSpread2({}, params), {}, {
175
- method: 'POST'
176
- }));
177
- });
178
- _defineProperty(this, "delete", function (url, params) {
179
- return _this2.request(url, _objectSpread2(_objectSpread2({}, params), {}, {
180
- method: 'DELETE'
181
- }));
182
- });
183
- _defineProperty(this, "put", function (url, params) {
184
- return _this2.request(url, _objectSpread2(_objectSpread2({}, params), {}, {
185
- method: 'PUT'
186
- }));
187
- });
188
- /**
189
- * Usage: const {promise, abort} = http.abortify(http.get<{id: string}>)('http://test.com');
190
- * @param method
191
- */
192
- _defineProperty(this, "abortify", function (method) {
193
- return function () {
194
- for (var _len = arguments.length, _ref3 = new Array(_len), _key = 0; _key < _len; _key++) {
195
- _ref3[_key] = arguments[_key];
196
- }
197
- var url = _ref3[0],
198
- params = _ref3[1];
199
- var ctrl = new AbortController();
200
- if (params && !('signal' in params)) {
201
- params.signal = ctrl.signal;
202
- }
203
- return {
204
- promise: method.call(_this2, url, params),
205
- abort: function abort() {
206
- return ctrl.abort();
207
- }
208
- };
209
- };
33
+ class HTTP {
34
+ baseUrl = null;
35
+ _requestsMeta = new WeakMap();
36
+ fetchConfig;
37
+ requestToken;
38
+ shouldRefreshToken;
39
+ forceTokenUpdate;
40
+ constructor(auth, baseUrl) {
41
+ let fetchConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
42
+ if (auth) {
43
+ this.setAuth(auth);
44
+ }
45
+ this.setBaseUrl(baseUrl);
46
+ const {
47
+ headers,
48
+ ...defaultConfig
49
+ } = defaultFetchConfig;
50
+ this.fetchConfig = {
51
+ ...defaultConfig,
52
+ ...fetchConfig,
53
+ headers: {
54
+ ...headers,
55
+ ...fetchConfig.headers
56
+ }
57
+ };
58
+ }
59
+ setAuth = auth => {
60
+ this.requestToken = () => auth.requestToken();
61
+ this.shouldRefreshToken = auth.constructor.shouldRefreshToken;
62
+ this.forceTokenUpdate = () => auth.forceTokenUpdate();
63
+ };
64
+ setBaseUrl = baseUrl => {
65
+ this.baseUrl = baseUrl;
66
+ };
67
+ _fetch() {
68
+ return fetch(...arguments);
69
+ }
70
+ _makeRequestUrl(url, queryObject) {
71
+ const urlWithQuery = encodeURL(url, queryObject);
72
+ return joinBaseURLAndPath(this.baseUrl, urlWithQuery);
73
+ }
74
+ _performRequest(url, token) {
75
+ let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
76
+ const {
77
+ headers,
78
+ body,
79
+ query = {},
80
+ sendRawBody,
81
+ ...fetchConfig
82
+ } = params;
83
+ const combinedHeaders = {
84
+ ...this.fetchConfig.headers,
85
+ ...(token ? {
86
+ Authorization: `${TOKEN_TYPE} ${token}`
87
+ } : {}),
88
+ ...headers
89
+ };
90
+ Object.entries(combinedHeaders).forEach(_ref => {
91
+ let [key, header] = _ref;
92
+ if (header === null || header === undefined) {
93
+ Reflect.deleteProperty(combinedHeaders, key);
94
+ }
210
95
  });
211
- if (_auth) {
212
- this.setAuth(_auth);
96
+ let bodyToSend;
97
+ if (isRawBody(params)) {
98
+ bodyToSend = params.body;
99
+ } else {
100
+ bodyToSend = params.body === null || params.body === undefined || params.body === '' ? params.body : JSON.stringify(body);
213
101
  }
214
- this.setBaseUrl(_baseUrl);
215
- var headers = defaultFetchConfig.headers,
216
- defaultConfig = _objectWithoutProperties(defaultFetchConfig, _excluded2);
217
- this.fetchConfig = _objectSpread2(_objectSpread2(_objectSpread2({}, defaultConfig), _fetchConfig), {}, {
218
- headers: _objectSpread2(_objectSpread2({}, headers), _fetchConfig.headers)
102
+ return this._fetch(this._makeRequestUrl(url, query), {
103
+ ...this.fetchConfig,
104
+ headers: combinedHeaders,
105
+ ...fetchConfig,
106
+ body: bodyToSend
219
107
  });
220
108
  }
221
- return _createClass(HTTP, [{
222
- key: "_fetch",
223
- value: function _fetch() {
224
- return fetch.apply(void 0, arguments);
225
- }
226
- }, {
227
- key: "_makeRequestUrl",
228
- value: function _makeRequestUrl(url, queryObject) {
229
- var urlWithQuery = encodeURL(url, queryObject);
230
- return joinBaseURLAndPath(this.baseUrl, urlWithQuery);
231
- }
232
- }, {
233
- key: "_performRequest",
234
- value: function _performRequest(url, token) {
235
- var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
236
- var headers = params.headers,
237
- body = params.body,
238
- _params$query2 = params.query,
239
- query = _params$query2 === void 0 ? {} : _params$query2;
240
- params.sendRawBody;
241
- var fetchConfig = _objectWithoutProperties(params, _excluded3);
242
- var combinedHeaders = _objectSpread2(_objectSpread2(_objectSpread2({}, this.fetchConfig.headers), token ? {
243
- Authorization: "".concat(TOKEN_TYPE, " ").concat(token)
244
- } : {}), headers);
245
- Object.entries(combinedHeaders).forEach(function (_ref4) {
246
- var _ref5 = _slicedToArray(_ref4, 2),
247
- key = _ref5[0],
248
- header = _ref5[1];
249
- if (header === null || header === undefined) {
250
- Reflect.deleteProperty(combinedHeaders, key);
251
- }
252
- });
253
- var bodyToSend;
254
- if (isRawBody(params)) {
255
- bodyToSend = params.body;
256
- } else {
257
- bodyToSend = params.body === null || params.body === undefined || params.body === '' ? params.body : JSON.stringify(body);
109
+ _storeRequestMeta(parsedResponse, rawResponse) {
110
+ const {
111
+ headers,
112
+ ok,
113
+ redirected,
114
+ status,
115
+ statusText,
116
+ type,
117
+ url
118
+ } = rawResponse;
119
+ this._requestsMeta.set(parsedResponse, {
120
+ headers,
121
+ ok,
122
+ redirected,
123
+ status,
124
+ statusText,
125
+ type,
126
+ url
127
+ });
128
+ }
129
+ async _processResponse(response) {
130
+ const contentType = response.headers?.get('content-type');
131
+ const isJson = contentType && contentType.indexOf('application/json') !== -1;
132
+ if (response.status != null && HTTP._isErrorStatus(response.status)) {
133
+ let resJson;
134
+ try {
135
+ resJson = await (isJson ? response.json?.() : response.text?.());
136
+ } catch (err) {
137
+ // noop
258
138
  }
259
- return this._fetch(this._makeRequestUrl(url, query), _objectSpread2(_objectSpread2(_objectSpread2({}, this.fetchConfig), {}, {
260
- headers: combinedHeaders
261
- }, fetchConfig), {}, {
262
- body: bodyToSend
263
- }));
139
+ throw new HTTPError(response, resJson);
264
140
  }
265
- }, {
266
- key: "_storeRequestMeta",
267
- value: function _storeRequestMeta(parsedResponse, rawResponse) {
268
- var headers = rawResponse.headers,
269
- ok = rawResponse.ok,
270
- redirected = rawResponse.redirected,
271
- status = rawResponse.status,
272
- statusText = rawResponse.statusText,
273
- type = rawResponse.type,
274
- url = rawResponse.url;
275
- this._requestsMeta.set(parsedResponse, {
276
- headers,
277
- ok,
278
- redirected,
279
- status,
280
- statusText,
281
- type,
282
- url
141
+ try {
142
+ const parsedResponse = await (isJson ? response.json?.() : {
143
+ data: await response.text?.()
283
144
  });
145
+ this._storeRequestMeta(parsedResponse, response);
146
+ return parsedResponse;
147
+ } catch (err) {
148
+ return response;
284
149
  }
285
- }, {
286
- key: "_processResponse",
287
- value: function () {
288
- var _processResponse2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(response) {
289
- var _response$headers;
290
- var contentType, isJson, resJson, _response$json, _response$text, _response$json2, _response$text2, parsedResponse;
291
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
292
- while (1) switch (_context3.prev = _context3.next) {
293
- case 0:
294
- contentType = (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.get('content-type');
295
- isJson = contentType && contentType.indexOf('application/json') !== -1;
296
- if (!(response.status != null && HTTP._isErrorStatus(response.status))) {
297
- _context3.next = 12;
298
- break;
299
- }
300
- _context3.prev = 3;
301
- _context3.next = 6;
302
- return isJson ? (_response$json = response.json) === null || _response$json === void 0 ? void 0 : _response$json.call(response) : (_response$text = response.text) === null || _response$text === void 0 ? void 0 : _response$text.call(response);
303
- case 6:
304
- resJson = _context3.sent;
305
- _context3.next = 11;
306
- break;
307
- case 9:
308
- _context3.prev = 9;
309
- _context3.t0 = _context3["catch"](3);
310
- case 11:
311
- throw new HTTPError(response, resJson);
312
- case 12:
313
- _context3.prev = 12;
314
- if (!isJson) {
315
- _context3.next = 17;
316
- break;
317
- }
318
- _context3.t1 = (_response$json2 = response.json) === null || _response$json2 === void 0 ? void 0 : _response$json2.call(response);
319
- _context3.next = 21;
320
- break;
321
- case 17:
322
- _context3.next = 19;
323
- return (_response$text2 = response.text) === null || _response$text2 === void 0 ? void 0 : _response$text2.call(response);
324
- case 19:
325
- _context3.t2 = _context3.sent;
326
- _context3.t1 = {
327
- data: _context3.t2
328
- };
329
- case 21:
330
- _context3.next = 23;
331
- return _context3.t1;
332
- case 23:
333
- parsedResponse = _context3.sent;
334
- this._storeRequestMeta(parsedResponse, response);
335
- return _context3.abrupt("return", parsedResponse);
336
- case 28:
337
- _context3.prev = 28;
338
- _context3.t3 = _context3["catch"](12);
339
- return _context3.abrupt("return", response);
340
- case 31:
341
- case "end":
342
- return _context3.stop();
343
- }
344
- }, _callee3, this, [[3, 9], [12, 28]]);
345
- }));
346
- function _processResponse(_x4) {
347
- return _processResponse2.apply(this, arguments);
150
+ }
151
+ static _isErrorStatus(status) {
152
+ return status < STATUS_OK_IF_MORE_THAN || status >= STATUS_BAD_IF_MORE_THAN;
153
+ }
154
+ fetch = (() => {
155
+ var _this = this;
156
+ return async function (url) {
157
+ let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
158
+ const {
159
+ body,
160
+ query = {},
161
+ ...fetchConfig
162
+ } = params;
163
+ const response = await _this._fetch(_this._makeRequestUrl(url, query), {
164
+ ...fetchConfig,
165
+ headers: fetchConfig.headers,
166
+ body: body !== null && body !== undefined && body !== '' ? JSON.stringify(body) : body
167
+ });
168
+ return _this._processResponse(response);
169
+ };
170
+ })();
171
+ async authorizedFetch() {
172
+ const response = await this._performRequest(...arguments);
173
+ return this._processResponse(response);
174
+ }
175
+ request = async (url, params) => {
176
+ let token = await this.requestToken?.();
177
+ let response = await this._performRequest(url, token, params);
178
+ try {
179
+ // Wait for result to catch an HTTP error
180
+ return await this._processResponse(response);
181
+ } catch (error) {
182
+ if (!(error instanceof HTTPError)) {
183
+ throw error;
348
184
  }
349
- return _processResponse;
350
- }()
351
- }, {
352
- key: "authorizedFetch",
353
- value: function () {
354
- var _authorizedFetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
355
- var response,
356
- _args4 = arguments;
357
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
358
- while (1) switch (_context4.prev = _context4.next) {
359
- case 0:
360
- _context4.next = 2;
361
- return this._performRequest.apply(this, _args4);
362
- case 2:
363
- response = _context4.sent;
364
- return _context4.abrupt("return", this._processResponse(response));
365
- case 4:
366
- case "end":
367
- return _context4.stop();
368
- }
369
- }, _callee4, this);
370
- }));
371
- function authorizedFetch() {
372
- return _authorizedFetch.apply(this, arguments);
185
+ const shouldRefreshToken = typeof error.data.error === 'string' ? this.shouldRefreshToken?.(error.data.error) : false;
186
+ if (shouldRefreshToken) {
187
+ token = await this.forceTokenUpdate?.();
188
+ response = await this._performRequest(url, token, params);
189
+ return this._processResponse(response);
373
190
  }
374
- return authorizedFetch;
375
- }()
376
- }], [{
377
- key: "_isErrorStatus",
378
- value: function _isErrorStatus(status) {
379
- return status < STATUS_OK_IF_MORE_THAN || status >= STATUS_BAD_IF_MORE_THAN;
191
+ throw error;
380
192
  }
381
- }]);
382
- }();
193
+ };
194
+ getMetaForResponse = response => this._requestsMeta.get(response);
195
+ get = (url, params) => this.request(url, {
196
+ ...params,
197
+ method: 'GET'
198
+ });
199
+ post = (url, params) => this.request(url, {
200
+ ...params,
201
+ method: 'POST'
202
+ });
203
+ delete = (url, params) => this.request(url, {
204
+ ...params,
205
+ method: 'DELETE'
206
+ });
207
+ put = (url, params) => this.request(url, {
208
+ ...params,
209
+ method: 'PUT'
210
+ });
211
+ /**
212
+ * Usage: const {promise, abort} = http.abortify(http.get<{id: string}>)('http://test.com');
213
+ * @param method
214
+ */
215
+ abortify = method => {
216
+ var _this2 = this;
217
+ return function () {
218
+ for (var _len = arguments.length, _ref2 = new Array(_len), _key = 0; _key < _len; _key++) {
219
+ _ref2[_key] = arguments[_key];
220
+ }
221
+ let [url, params] = _ref2;
222
+ const ctrl = new AbortController();
223
+ if (params && !('signal' in params)) {
224
+ params.signal = ctrl.signal;
225
+ }
226
+ return {
227
+ promise: method.call(_this2, url, params),
228
+ abort: () => ctrl.abort()
229
+ };
230
+ };
231
+ };
232
+ }
383
233
 
384
234
  export { CODE, HTTPError, HTTP as default, defaultFetchConfig };