@jetbrains/ring-ui-built 7.0.0-beta.2 → 7.0.0-beta.3

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 (236) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +1 -504
  2. package/components/_helpers/anchor.js +7 -5
  3. package/components/_helpers/button__classes.js +15 -13
  4. package/components/_helpers/caption.js +11 -17
  5. package/components/_helpers/card.js +92 -96
  6. package/components/_helpers/dialog__body-scroll-preventer.js +10 -17
  7. package/components/_helpers/icon__svg.js +27 -23
  8. package/components/_helpers/input.js +150 -171
  9. package/components/_helpers/query-assist__suggestions.js +78 -93
  10. package/components/_helpers/select__filter.js +56 -67
  11. package/components/_helpers/services-link.js +23 -29
  12. package/components/_helpers/sidebar.js +91 -93
  13. package/components/_helpers/tab-link.js +8 -6
  14. package/components/_helpers/theme.js +41 -50
  15. package/components/_helpers/title.js +59 -69
  16. package/components/alert/alert.js +112 -156
  17. package/components/alert/container.js +32 -39
  18. package/components/alert-service/alert-service.js +104 -161
  19. package/components/analytics/analytics.js +12 -20
  20. package/components/analytics/analytics__custom-plugin.js +52 -68
  21. package/components/auth/auth.js +2 -27
  22. package/components/auth/auth__core.d.ts +1 -1
  23. package/components/auth/auth__core.js +742 -1428
  24. package/components/auth/background-flow.js +84 -121
  25. package/components/auth/down-notification.js +31 -69
  26. package/components/auth/iframe-flow.js +70 -123
  27. package/components/auth/request-builder.js +46 -77
  28. package/components/auth/response-parser.js +84 -112
  29. package/components/auth/storage.js +160 -318
  30. package/components/auth/token-validator.js +132 -227
  31. package/components/auth/window-flow.js +84 -121
  32. package/components/auth-dialog/auth-dialog.js +99 -150
  33. package/components/auth-dialog-service/auth-dialog-service.js +6 -26
  34. package/components/avatar/avatar-example-datauri.js +1 -1
  35. package/components/avatar/avatar.js +94 -123
  36. package/components/avatar/fallback-avatar.js +20 -34
  37. package/components/badge/badge.js +32 -38
  38. package/components/breadcrumbs/breadcrumbs.js +13 -17
  39. package/components/button/button.js +67 -80
  40. package/components/button-group/button-group.js +27 -36
  41. package/components/button-set/button-set.js +19 -27
  42. package/components/button-toolbar/button-toolbar.js +17 -25
  43. package/components/caret/caret.js +184 -211
  44. package/components/checkbox/checkbox.js +69 -86
  45. package/components/clipboard/clipboard-fallback.js +7 -7
  46. package/components/clipboard/clipboard.js +36 -128
  47. package/components/code/code.js +83 -151
  48. package/components/collapse/collapse-content.js +42 -60
  49. package/components/collapse/collapse-context.js +2 -2
  50. package/components/collapse/collapse-control.js +12 -12
  51. package/components/collapse/collapse.js +12 -17
  52. package/components/collapse/consts.js +4 -4
  53. package/components/collapse/utils.js +1 -3
  54. package/components/confirm/confirm.js +57 -87
  55. package/components/confirm-service/confirm-service.js +23 -44
  56. package/components/content-layout/content-layout.js +41 -56
  57. package/components/content-layout/sidebar.js +1 -1
  58. package/components/contenteditable/contenteditable.js +38 -46
  59. package/components/control-help/control-help.js +5 -3
  60. package/components/control-label/control-label.js +9 -8
  61. package/components/data-list/data-list.js +113 -156
  62. package/components/data-list/data-list.mock.js +3 -5
  63. package/components/data-list/item.js +120 -140
  64. package/components/data-list/selection.js +77 -135
  65. package/components/data-list/title.js +2 -10
  66. package/components/date-picker/consts.js +16 -22
  67. package/components/date-picker/date-input.js +99 -124
  68. package/components/date-picker/date-picker.js +140 -184
  69. package/components/date-picker/date-popup.js +280 -327
  70. package/components/date-picker/day.js +71 -94
  71. package/components/date-picker/month-names.js +41 -59
  72. package/components/date-picker/month-slider.js +42 -61
  73. package/components/date-picker/month.js +17 -24
  74. package/components/date-picker/months.js +44 -49
  75. package/components/date-picker/weekdays.js +12 -21
  76. package/components/date-picker/years.js +77 -98
  77. package/components/dialog/dialog.js +151 -187
  78. package/components/dialog/dialog__body-scroll-preventer.js +0 -3
  79. package/components/dropdown/anchor.js +0 -6
  80. package/components/dropdown/dropdown.js +134 -154
  81. package/components/dropdown-menu/dropdown-menu.js +59 -87
  82. package/components/editable-heading/editable-heading.js +69 -116
  83. package/components/error-bubble/error-bubble.js +29 -54
  84. package/components/error-message/error-message.js +34 -49
  85. package/components/footer/footer.js +27 -28
  86. package/components/global/compose.js +1 -8
  87. package/components/global/composeRefs.d.ts +0 -3
  88. package/components/global/composeRefs.js +8 -15
  89. package/components/global/controls-height.js +2 -2
  90. package/components/global/create-stateful-context.js +14 -13
  91. package/components/global/data-tests.js +7 -12
  92. package/components/global/dom.js +49 -82
  93. package/components/global/focus-sensor-hoc.js +99 -106
  94. package/components/global/fuzzy-highlight.js +23 -34
  95. package/components/global/get-event-key.js +8 -8
  96. package/components/global/get-uid.js +3 -7
  97. package/components/global/inject-styles.js +7 -14
  98. package/components/global/listeners.js +28 -47
  99. package/components/global/memoize.js +6 -10
  100. package/components/global/normalize-indent.js +19 -46
  101. package/components/global/promise-with-timeout.js +6 -8
  102. package/components/global/prop-types.js +3 -5
  103. package/components/global/react-dom-renderer.js +29 -40
  104. package/components/global/rerender-hoc.js +16 -32
  105. package/components/global/schedule-raf.js +4 -4
  106. package/components/global/sniffer.js +1 -1
  107. package/components/global/theme.js +1 -18
  108. package/components/global/trivial-template-tag.js +4 -9
  109. package/components/global/typescript-utils.js +2 -6
  110. package/components/global/url.js +20 -23
  111. package/components/global/use-event-callback.js +7 -4
  112. package/components/grid/col.js +27 -39
  113. package/components/grid/grid.js +18 -27
  114. package/components/grid/row.js +23 -30
  115. package/components/group/group.js +16 -22
  116. package/components/header/header-icon.js +19 -31
  117. package/components/header/header.d.ts +0 -1
  118. package/components/header/header.js +30 -64
  119. package/components/header/links.js +6 -3
  120. package/components/header/logo.js +15 -26
  121. package/components/header/profile.js +124 -150
  122. package/components/header/services-link.js +1 -3
  123. package/components/header/services.js +64 -97
  124. package/components/header/smart-profile.js +101 -178
  125. package/components/header/smart-services.js +55 -90
  126. package/components/header/tray.js +21 -30
  127. package/components/heading/heading.js +21 -20
  128. package/components/http/http.js +162 -319
  129. package/components/http/http.mock.js +50 -98
  130. package/components/hub-source/hub-source.js +77 -182
  131. package/components/hub-source/hub-source__user.js +9 -37
  132. package/components/hub-source/hub-source__users-groups.js +34 -60
  133. package/components/i18n/i18n-context.js +7 -8
  134. package/components/i18n/i18n.js +3 -6
  135. package/components/icon/icon.js +60 -74
  136. package/components/icon/icon__svg.js +0 -5
  137. package/components/icon/index.js +0 -5
  138. package/components/input/input.js +1 -11
  139. package/components/island/adaptive-island-hoc.js +29 -37
  140. package/components/island/content.js +100 -110
  141. package/components/island/header.js +56 -66
  142. package/components/island/island.js +25 -33
  143. package/components/island-legacy/content-legacy.js +16 -22
  144. package/components/island-legacy/header-legacy.js +19 -25
  145. package/components/island-legacy/island-legacy.js +16 -22
  146. package/components/link/clickableLink.js +33 -42
  147. package/components/link/link.js +47 -55
  148. package/components/list/consts.js +2 -2
  149. package/components/list/list.js +399 -486
  150. package/components/list/list__custom.js +51 -61
  151. package/components/list/list__hint.js +9 -17
  152. package/components/list/list__item.js +147 -178
  153. package/components/list/list__link.js +38 -47
  154. package/components/list/list__separator.js +15 -24
  155. package/components/list/list__title.js +25 -34
  156. package/components/list/list__users-groups-source.js +55 -121
  157. package/components/loader/loader.js +38 -60
  158. package/components/loader/loader__core.js +123 -184
  159. package/components/loader-inline/loader-inline.js +24 -32
  160. package/components/loader-screen/loader-screen.js +24 -40
  161. package/components/login-dialog/login-dialog.js +81 -121
  162. package/components/login-dialog/service.js +6 -29
  163. package/components/markdown/markdown.js +16 -24
  164. package/components/message/message.js +170 -201
  165. package/components/old-browsers-message/old-browsers-message.js +11 -14
  166. package/components/old-browsers-message/old-browsers-message__stop.js +1 -4
  167. package/components/old-browsers-message/white-list.js +8 -13
  168. package/components/pager/pager.js +212 -257
  169. package/components/panel/panel.js +16 -22
  170. package/components/permissions/permissions.js +118 -161
  171. package/components/permissions/permissions__cache.js +191 -218
  172. package/components/popup/popup.consts.js +1 -1
  173. package/components/popup/popup.js +237 -288
  174. package/components/popup/popup.target.js +9 -7
  175. package/components/popup/position.js +94 -101
  176. package/components/popup-menu/popup-menu.js +33 -67
  177. package/components/progress-bar/progress-bar.js +57 -68
  178. package/components/query-assist/query-assist.js +583 -652
  179. package/components/query-assist/query-assist__suggestions.js +2 -26
  180. package/components/radio/radio.js +15 -27
  181. package/components/radio/radio__item.js +52 -62
  182. package/components/scrollable-section/scrollable-section.js +22 -32
  183. package/components/select/select.js +693 -793
  184. package/components/select/select__filter.js +1 -26
  185. package/components/select/select__popup.js +316 -413
  186. package/components/shortcuts/core.js +147 -195
  187. package/components/shortcuts/shortcut-title.js +6 -10
  188. package/components/shortcuts/shortcuts-hoc.js +23 -41
  189. package/components/shortcuts/shortcuts.js +41 -64
  190. package/components/slider/slider.js +93 -112
  191. package/components/slider/slider.utils.js +16 -23
  192. package/components/storage/storage.js +3 -27
  193. package/components/storage/storage__fallback.js +137 -210
  194. package/components/storage/storage__local.js +89 -147
  195. package/components/style.css +1 -1
  196. package/components/tab-trap/tab-trap.js +35 -53
  197. package/components/table/cell.js +11 -21
  198. package/components/table/disable-hover-hoc.js +27 -42
  199. package/components/table/header-cell.js +59 -75
  200. package/components/table/header.js +89 -110
  201. package/components/table/multitable.js +83 -89
  202. package/components/table/row-with-focus-sensor.js +25 -57
  203. package/components/table/row.js +169 -200
  204. package/components/table/selection-adapter.js +2 -2
  205. package/components/table/selection-shortcuts-hoc.js +108 -113
  206. package/components/table/selection.js +150 -217
  207. package/components/table/simple-table.js +19 -55
  208. package/components/table/smart-table.js +42 -76
  209. package/components/table/table.js +267 -327
  210. package/components/tabs/collapsible-more.js +47 -73
  211. package/components/tabs/collapsible-tab.js +32 -36
  212. package/components/tabs/collapsible-tabs.js +89 -148
  213. package/components/tabs/custom-item.js +4 -2
  214. package/components/tabs/dumb-tabs.js +60 -92
  215. package/components/tabs/smart-tabs.js +29 -61
  216. package/components/tabs/tab-link.js +1 -3
  217. package/components/tabs/tab.js +15 -24
  218. package/components/tabs/tabs.js +1 -26
  219. package/components/tag/tag.d.ts +0 -2
  220. package/components/tag/tag.js +120 -162
  221. package/components/tags-input/tags-input.js +222 -304
  222. package/components/tags-list/tags-list.js +45 -61
  223. package/components/text/text.js +28 -37
  224. package/components/toggle/toggle.js +51 -61
  225. package/components/tooltip/tooltip.js +109 -141
  226. package/components/user-agreement/service.js +259 -400
  227. package/components/user-agreement/user-agreement.js +80 -108
  228. package/components/user-card/card.js +1 -25
  229. package/components/user-card/smart-user-card-tooltip.js +52 -103
  230. package/components/user-card/tooltip.js +35 -65
  231. package/components/user-card/user-card.js +1 -25
  232. package/package.json +1 -1
  233. package/components/global/react-render-adapter.d.ts +0 -1
  234. package/components/global/react-render-adapter.js +0 -6
  235. package/components/header/tray-icon.d.ts +0 -1
  236. package/components/header/tray-icon.js +0 -26
@@ -1,15 +1,10 @@
1
- import { _ as _defineProperty, b as _createClass, e as _classCallCheck, g as _asyncToGenerator, h as _regeneratorRuntime } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.map.js';
3
- import 'core-js/modules/es.object.assign.js';
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
4
2
  import uuid from 'simply-uuid';
5
3
  import { encodeURL } from '../global/url.js';
6
- import 'core-js/modules/es.array.concat.js';
7
- import 'core-js/modules/es.array.index-of.js';
8
4
  import 'core-js/modules/es.regexp.exec.js';
9
- import 'core-js/modules/es.string.match.js';
10
5
  import 'core-js/modules/es.string.replace.js';
11
6
 
12
- var AuthRequestBuilder = /*#__PURE__*/function () {
7
+ class AuthRequestBuilder {
13
8
  /**
14
9
  * @param {{
15
10
  * authorization: string,
@@ -20,8 +15,7 @@ var AuthRequestBuilder = /*#__PURE__*/function () {
20
15
  * }} config
21
16
  * @param {AuthStorage} storage
22
17
  */
23
- function AuthRequestBuilder(config, storage) {
24
- _classCallCheck(this, AuthRequestBuilder);
18
+ constructor(config, storage) {
25
19
  _defineProperty(this, "config", void 0);
26
20
  _defineProperty(this, "storage", void 0);
27
21
  this.config = config;
@@ -30,74 +24,49 @@ var AuthRequestBuilder = /*#__PURE__*/function () {
30
24
  /**
31
25
  * @return {string} random string used for state
32
26
  */
33
- return _createClass(AuthRequestBuilder, [{
34
- key: "prepareAuthRequest",
35
- value: (
36
- /**
37
- * Save state and build an auth server redirect URL.
38
- *
39
- * @param {object=} extraParams additional query parameters for auth request
40
- * @param {object=} extraState additional state parameters to save
41
- * @return {Promise.<string>} promise that is resolved to authURL
42
- */
43
- function () {
44
- var _prepareAuthRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(extraParams, extraState) {
45
- var stateId, scopes, request, authURL, state;
46
- return _regeneratorRuntime().wrap(function _callee$(_context) {
47
- while (1) switch (_context.prev = _context.next) {
48
- case 0:
49
- stateId = AuthRequestBuilder._uuid();
50
- scopes = this.config.scopes.map(function (scope) {
51
- return encodeURIComponent(scope);
52
- });
53
- /* eslint-disable camelcase */
54
- request = Object.assign({
55
- response_type: 'token',
56
- state: stateId,
57
- redirect_uri: this.config.redirectUri,
58
- request_credentials: this.config.requestCredentials,
59
- client_id: this.config.clientId,
60
- scope: scopes.join(' ')
61
- }, extraParams || {});
62
- /* eslint-enable camelcase */
63
- authURL = encodeURL(this.config.authorization, request);
64
- state = Object.assign({
65
- restoreLocation: window.location.href,
66
- scopes: this.config.scopes
67
- }, extraState || {});
68
- _context.next = 7;
69
- return this._saveState(stateId, state);
70
- case 7:
71
- return _context.abrupt("return", {
72
- url: authURL,
73
- stateId
74
- });
75
- case 8:
76
- case "end":
77
- return _context.stop();
78
- }
79
- }, _callee, this);
80
- }));
81
- function prepareAuthRequest(_x, _x2) {
82
- return _prepareAuthRequest.apply(this, arguments);
83
- }
84
- return prepareAuthRequest;
85
- }()
86
- /**
87
- * @param {string} id
88
- * @param {StoredState} storedState
89
- * @return {Promise}
90
- * @private
91
- */
92
- )
93
- }, {
94
- key: "_saveState",
95
- value: function _saveState(id, storedState) {
96
- var _this$storage;
97
- return (_this$storage = this.storage) === null || _this$storage === void 0 ? void 0 : _this$storage.saveState(id, storedState);
98
- }
99
- }]);
100
- }();
27
+
28
+ /**
29
+ * Save state and build an auth server redirect URL.
30
+ *
31
+ * @param {object=} extraParams additional query parameters for auth request
32
+ * @param {object=} extraState additional state parameters to save
33
+ * @return {Promise.<string>} promise that is resolved to authURL
34
+ */
35
+ async prepareAuthRequest(extraParams, extraState) {
36
+ const stateId = AuthRequestBuilder._uuid();
37
+ const scopes = this.config.scopes.map(scope => encodeURIComponent(scope));
38
+ /* eslint-disable camelcase */
39
+ const request = Object.assign({
40
+ response_type: 'token',
41
+ state: stateId,
42
+ redirect_uri: this.config.redirectUri,
43
+ request_credentials: this.config.requestCredentials,
44
+ client_id: this.config.clientId,
45
+ scope: scopes.join(' ')
46
+ }, extraParams || {});
47
+ /* eslint-enable camelcase */
48
+ const authURL = encodeURL(this.config.authorization, request);
49
+ const state = Object.assign({
50
+ restoreLocation: window.location.href,
51
+ scopes: this.config.scopes
52
+ }, extraState || {});
53
+ await this._saveState(stateId, state);
54
+ return {
55
+ url: authURL,
56
+ stateId
57
+ };
58
+ }
59
+ /**
60
+ * @param {string} id
61
+ * @param {StoredState} storedState
62
+ * @return {Promise}
63
+ * @private
64
+ */
65
+ _saveState(id, storedState) {
66
+ var _this$storage;
67
+ return (_this$storage = this.storage) === null || _this$storage === void 0 ? void 0 : _this$storage.saveState(id, storedState);
68
+ }
69
+ }
101
70
  _defineProperty(AuthRequestBuilder, "_uuid", uuid.generate);
102
71
 
103
72
  export { AuthRequestBuilder as default };
@@ -1,33 +1,22 @@
1
- import { _ as _defineProperty, a as _inherits, b as _createClass, d as _objectSpread2, e as _classCallCheck, f as _callSuper } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.index-of.js';
3
- import 'core-js/modules/es.object.to-string.js';
1
+ import { _ as _defineProperty, b as _objectSpread2 } from '../_helpers/_rollupPluginBabelHelpers.js';
4
2
  import 'core-js/modules/es.regexp.exec.js';
5
- import 'core-js/modules/es.regexp.to-string.js';
6
3
  import 'core-js/modules/es.string.replace.js';
7
- import 'core-js/modules/web.dom-collections.for-each.js';
8
4
  import ExtendableError from 'es6-error';
9
5
  import { parseQueryString } from '../global/url.js';
10
- import 'core-js/modules/es.array.concat.js';
11
- import 'core-js/modules/es.string.match.js';
12
6
 
13
- var AuthError = /*#__PURE__*/function (_ExtendableError) {
7
+ class AuthError extends ExtendableError {
14
8
  // Supports weird IE 11 failing test issue
15
- function AuthError() {
16
- var _this;
17
- var authResponse = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18
- _classCallCheck(this, AuthError);
19
- _this = _callSuper(this, AuthError, [authResponse.errorDescription]);
20
- _defineProperty(_this, "code", void 0);
21
- _defineProperty(_this, "uri", void 0);
22
- _defineProperty(_this, "stateId", void 0);
23
- _this.code = authResponse.error;
24
- _this.uri = authResponse.errorUri;
25
- _this.stateId = authResponse.state;
26
- return _this;
9
+ constructor() {
10
+ let authResponse = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
11
+ super(authResponse.errorDescription);
12
+ _defineProperty(this, "code", void 0);
13
+ _defineProperty(this, "uri", void 0);
14
+ _defineProperty(this, "stateId", void 0);
15
+ this.code = authResponse.error;
16
+ this.uri = authResponse.errorUri;
17
+ this.stateId = authResponse.state;
27
18
  }
28
- _inherits(AuthError, _ExtendableError);
29
- return _createClass(AuthError);
30
- }(ExtendableError);
19
+ }
31
20
  /**
32
21
  * @typedef {Object} AuthResponse
33
22
  * @property {?string} accessToken
@@ -37,100 +26,83 @@ var AuthError = /*#__PURE__*/function (_ExtendableError) {
37
26
  * @property {?string} scope
38
27
  * @property {?string} error
39
28
  */
40
- var AuthResponseParser = /*#__PURE__*/function () {
41
- function AuthResponseParser() {
42
- _classCallCheck(this, AuthResponseParser);
29
+ class AuthResponseParser {
30
+ constructor() {
43
31
  _defineProperty(this, "_authResponse", void 0);
44
32
  this._authResponse = this.readAuthResponseFromURL();
45
33
  }
46
- return _createClass(AuthResponseParser, [{
47
- key: "getAuthResponseFromURL",
48
- value:
49
- /**
50
- * Check if the hash contains an access token.
51
- * If it does, return auth response. Otherwise return undefined.
52
- * Always clears the hash part of the URL.
53
- *
54
- * @throws {Error} if the auth server returned an error
55
- * @return {?AuthResponse}
56
- */
57
- function getAuthResponseFromURL() {
58
- return this.validateAuthResponse(this._authResponse);
59
- }
60
- /**
61
- * Validates given authResponse.
62
- * If it contains a token - returns the token, if an error is found - throws the error,
63
- * otherwise - null
64
- * Always clears the hash part of the URL.
65
- *
66
- * @param authResponse {AuthResponse} parsed authResponse
67
- * @throws {Error} if the auth server returned an error
68
- * @return {?AuthResponse}
69
- */
70
- }, {
71
- key: "validateAuthResponse",
72
- value: function validateAuthResponse(authResponse) {
73
- // Check for errors
74
- if (authResponse.error) {
75
- throw new AuthResponseParser.AuthError(authResponse);
76
- }
77
- // If there is no token in the hash
78
- if (!authResponse.accessToken) {
79
- return null;
80
- }
81
- return _objectSpread2(_objectSpread2({}, authResponse), {}, {
82
- accessToken: authResponse.accessToken
83
- });
84
- }
85
- /**
86
- * Reads the current accessToken from the URL.
87
- * Doesn't modify URL
88
- *
89
- * @return {AuthResponse}
90
- */
91
- }, {
92
- key: "readAuthResponseFromURL",
93
- value: function readAuthResponseFromURL() {
94
- var authResponse = {};
95
- var rawAuthResponse = parseQueryString(this.getHash());
96
- Object.keys(rawAuthResponse).forEach(function (key) {
97
- if (key.indexOf('_') !== -1) {
98
- authResponse[AuthResponseParser.convertKey(key)] = rawAuthResponse[key];
99
- return;
100
- }
101
- authResponse[key] = rawAuthResponse[key];
102
- });
103
- return authResponse;
104
- }
105
- /**
106
- * @return {string} part of the URL after # sign.
107
- * @private
108
- */
109
- }, {
110
- key: "getHash",
111
- value: function getHash() {
112
- // Because of stupid Firefox bug — https://bugzilla.mozilla.org/show_bug.cgi?id=483304
113
- var location = this.getLocation();
114
- return location && location.replace(/^[^#]*#?/, '');
115
- }
116
- /**
117
- * Current page location.
118
- * @return {string}
119
- */
120
- }, {
121
- key: "getLocation",
122
- value: function getLocation() {
123
- return window.location.toString();
34
+ static convertKey(key) {
35
+ return key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
36
+ }
37
+ /**
38
+ * Check if the hash contains an access token.
39
+ * If it does, return auth response. Otherwise return undefined.
40
+ * Always clears the hash part of the URL.
41
+ *
42
+ * @throws {Error} if the auth server returned an error
43
+ * @return {?AuthResponse}
44
+ */
45
+ getAuthResponseFromURL() {
46
+ return this.validateAuthResponse(this._authResponse);
47
+ }
48
+ /**
49
+ * Validates given authResponse.
50
+ * If it contains a token - returns the token, if an error is found - throws the error,
51
+ * otherwise - null
52
+ * Always clears the hash part of the URL.
53
+ *
54
+ * @param authResponse {AuthResponse} parsed authResponse
55
+ * @throws {Error} if the auth server returned an error
56
+ * @return {?AuthResponse}
57
+ */
58
+ validateAuthResponse(authResponse) {
59
+ // Check for errors
60
+ if (authResponse.error) {
61
+ throw new AuthResponseParser.AuthError(authResponse);
124
62
  }
125
- }], [{
126
- key: "convertKey",
127
- value: function convertKey(key) {
128
- return key.replace(/_([a-z])/g, function (_, letter) {
129
- return letter.toUpperCase();
130
- });
63
+ // If there is no token in the hash
64
+ if (!authResponse.accessToken) {
65
+ return null;
131
66
  }
132
- }]);
133
- }();
67
+ return _objectSpread2(_objectSpread2({}, authResponse), {}, {
68
+ accessToken: authResponse.accessToken
69
+ });
70
+ }
71
+ /**
72
+ * Reads the current accessToken from the URL.
73
+ * Doesn't modify URL
74
+ *
75
+ * @return {AuthResponse}
76
+ */
77
+ readAuthResponseFromURL() {
78
+ const authResponse = {};
79
+ const rawAuthResponse = parseQueryString(this.getHash());
80
+ Object.keys(rawAuthResponse).forEach(key => {
81
+ if (key.indexOf('_') !== -1) {
82
+ authResponse[AuthResponseParser.convertKey(key)] = rawAuthResponse[key];
83
+ return;
84
+ }
85
+ authResponse[key] = rawAuthResponse[key];
86
+ });
87
+ return authResponse;
88
+ }
89
+ /**
90
+ * @return {string} part of the URL after # sign.
91
+ * @private
92
+ */
93
+ getHash() {
94
+ // Because of stupid Firefox bug — https://bugzilla.mozilla.org/show_bug.cgi?id=483304
95
+ const location = this.getLocation();
96
+ return location && location.replace(/^[^#]*#?/, '');
97
+ }
98
+ /**
99
+ * Current page location.
100
+ * @return {string}
101
+ */
102
+ getLocation() {
103
+ return window.location.toString();
104
+ }
105
+ }
134
106
  _defineProperty(AuthResponseParser, "AuthError", AuthError);
135
107
 
136
108
  export { AuthError, AuthResponseParser as default };