@jetbrains/ring-ui-built 7.0.0-beta.1 → 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 (241) 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/header.js +1 -1
  8. package/components/_helpers/icon__svg.js +27 -23
  9. package/components/_helpers/input.js +150 -171
  10. package/components/_helpers/query-assist__suggestions.js +78 -93
  11. package/components/_helpers/select__filter.js +56 -67
  12. package/components/_helpers/services-link.js +23 -29
  13. package/components/_helpers/sidebar.js +91 -93
  14. package/components/_helpers/tab-link.js +8 -6
  15. package/components/_helpers/theme.js +55 -51
  16. package/components/_helpers/title.js +59 -69
  17. package/components/alert/alert.js +112 -156
  18. package/components/alert/container.js +32 -39
  19. package/components/alert-service/alert-service.js +104 -161
  20. package/components/analytics/analytics.js +12 -20
  21. package/components/analytics/analytics__custom-plugin.js +52 -68
  22. package/components/auth/auth.js +2 -27
  23. package/components/auth/auth__core.d.ts +1 -1
  24. package/components/auth/auth__core.js +742 -1428
  25. package/components/auth/background-flow.js +84 -121
  26. package/components/auth/down-notification.js +31 -69
  27. package/components/auth/iframe-flow.js +70 -123
  28. package/components/auth/request-builder.js +46 -77
  29. package/components/auth/response-parser.js +84 -112
  30. package/components/auth/storage.js +160 -318
  31. package/components/auth/token-validator.js +132 -227
  32. package/components/auth/window-flow.js +84 -121
  33. package/components/auth-dialog/auth-dialog.js +99 -150
  34. package/components/auth-dialog-service/auth-dialog-service.js +6 -26
  35. package/components/avatar/avatar-example-datauri.js +1 -1
  36. package/components/avatar/avatar.js +94 -123
  37. package/components/avatar/fallback-avatar.js +20 -34
  38. package/components/badge/badge.js +32 -38
  39. package/components/breadcrumbs/breadcrumbs.js +13 -17
  40. package/components/button/button.js +67 -80
  41. package/components/button-group/button-group.js +27 -36
  42. package/components/button-set/button-set.js +19 -27
  43. package/components/button-toolbar/button-toolbar.js +17 -25
  44. package/components/caret/caret.js +184 -211
  45. package/components/checkbox/checkbox.js +69 -86
  46. package/components/clipboard/clipboard-fallback.js +7 -7
  47. package/components/clipboard/clipboard.js +36 -128
  48. package/components/code/code.js +83 -151
  49. package/components/collapse/collapse-content.js +42 -60
  50. package/components/collapse/collapse-context.js +2 -2
  51. package/components/collapse/collapse-control.js +12 -12
  52. package/components/collapse/collapse.js +12 -17
  53. package/components/collapse/consts.js +4 -4
  54. package/components/collapse/utils.js +1 -3
  55. package/components/confirm/confirm.js +57 -87
  56. package/components/confirm-service/confirm-service.js +23 -44
  57. package/components/content-layout/content-layout.js +41 -56
  58. package/components/content-layout/sidebar.js +1 -1
  59. package/components/contenteditable/contenteditable.js +38 -46
  60. package/components/control-help/control-help.js +5 -3
  61. package/components/control-label/control-label.js +9 -8
  62. package/components/data-list/data-list.js +113 -156
  63. package/components/data-list/data-list.mock.js +3 -5
  64. package/components/data-list/item.js +120 -140
  65. package/components/data-list/selection.js +77 -135
  66. package/components/data-list/title.js +2 -10
  67. package/components/date-picker/consts.js +16 -22
  68. package/components/date-picker/date-input.js +99 -124
  69. package/components/date-picker/date-picker.js +140 -184
  70. package/components/date-picker/date-popup.js +280 -327
  71. package/components/date-picker/day.js +71 -94
  72. package/components/date-picker/month-names.js +41 -59
  73. package/components/date-picker/month-slider.js +42 -61
  74. package/components/date-picker/month.js +17 -24
  75. package/components/date-picker/months.js +44 -49
  76. package/components/date-picker/weekdays.js +12 -21
  77. package/components/date-picker/years.js +77 -98
  78. package/components/dialog/dialog.js +151 -187
  79. package/components/dialog/dialog__body-scroll-preventer.js +0 -3
  80. package/components/dropdown/anchor.js +0 -6
  81. package/components/dropdown/dropdown.js +134 -154
  82. package/components/dropdown-menu/dropdown-menu.js +59 -87
  83. package/components/editable-heading/editable-heading.js +69 -116
  84. package/components/error-bubble/error-bubble.js +29 -54
  85. package/components/error-message/error-message.js +34 -49
  86. package/components/footer/footer.js +27 -28
  87. package/components/global/compose.js +1 -8
  88. package/components/global/composeRefs.d.ts +0 -3
  89. package/components/global/composeRefs.js +8 -15
  90. package/components/global/controls-height.js +2 -2
  91. package/components/global/create-stateful-context.js +14 -13
  92. package/components/global/data-tests.js +7 -12
  93. package/components/global/dom.js +49 -82
  94. package/components/global/focus-sensor-hoc.js +99 -106
  95. package/components/global/fuzzy-highlight.js +23 -34
  96. package/components/global/get-event-key.js +8 -8
  97. package/components/global/get-uid.js +3 -7
  98. package/components/global/inject-styles.js +7 -14
  99. package/components/global/listeners.js +28 -47
  100. package/components/global/memoize.js +6 -10
  101. package/components/global/normalize-indent.js +19 -46
  102. package/components/global/promise-with-timeout.js +6 -8
  103. package/components/global/prop-types.js +3 -5
  104. package/components/global/react-dom-renderer.js +29 -40
  105. package/components/global/rerender-hoc.js +16 -32
  106. package/components/global/schedule-raf.js +4 -4
  107. package/components/global/sniffer.js +1 -1
  108. package/components/global/theme.d.ts +3 -0
  109. package/components/global/theme.js +2 -19
  110. package/components/global/trivial-template-tag.js +4 -9
  111. package/components/global/typescript-utils.js +2 -6
  112. package/components/global/url.js +20 -23
  113. package/components/global/use-event-callback.js +7 -4
  114. package/components/grid/col.js +27 -39
  115. package/components/grid/grid.js +18 -27
  116. package/components/grid/row.js +23 -30
  117. package/components/group/group.js +16 -22
  118. package/components/header/header-icon.js +19 -31
  119. package/components/header/header.d.ts +0 -1
  120. package/components/header/header.js +30 -64
  121. package/components/header/links.d.ts +2 -0
  122. package/components/header/links.js +20 -0
  123. package/components/header/logo.js +15 -26
  124. package/components/header/profile.js +124 -150
  125. package/components/header/services-link.js +1 -3
  126. package/components/header/services.js +64 -97
  127. package/components/header/smart-profile.js +101 -178
  128. package/components/header/smart-services.js +55 -90
  129. package/components/header/tray.js +21 -30
  130. package/components/heading/heading.js +21 -20
  131. package/components/http/http.js +162 -319
  132. package/components/http/http.mock.js +50 -98
  133. package/components/hub-source/hub-source.js +77 -182
  134. package/components/hub-source/hub-source__user.js +9 -37
  135. package/components/hub-source/hub-source__users-groups.js +34 -60
  136. package/components/i18n/i18n-context.js +7 -8
  137. package/components/i18n/i18n.js +3 -6
  138. package/components/icon/icon.js +60 -74
  139. package/components/icon/icon__svg.js +0 -5
  140. package/components/icon/index.js +0 -5
  141. package/components/input/input.js +1 -11
  142. package/components/island/adaptive-island-hoc.js +29 -37
  143. package/components/island/content.js +100 -110
  144. package/components/island/header.js +56 -66
  145. package/components/island/island.js +25 -33
  146. package/components/island-legacy/content-legacy.js +16 -22
  147. package/components/island-legacy/header-legacy.js +19 -25
  148. package/components/island-legacy/island-legacy.js +16 -22
  149. package/components/link/clickableLink.js +33 -42
  150. package/components/link/link.js +47 -55
  151. package/components/list/consts.js +2 -2
  152. package/components/list/list.js +399 -486
  153. package/components/list/list__custom.js +51 -61
  154. package/components/list/list__hint.js +9 -17
  155. package/components/list/list__item.js +147 -178
  156. package/components/list/list__link.js +38 -47
  157. package/components/list/list__separator.js +15 -24
  158. package/components/list/list__title.js +25 -34
  159. package/components/list/list__users-groups-source.js +55 -121
  160. package/components/loader/loader.js +38 -60
  161. package/components/loader/loader__core.js +123 -184
  162. package/components/loader-inline/loader-inline.js +24 -32
  163. package/components/loader-screen/loader-screen.js +24 -40
  164. package/components/login-dialog/login-dialog.js +81 -121
  165. package/components/login-dialog/service.js +6 -29
  166. package/components/markdown/markdown.js +16 -24
  167. package/components/message/message.js +170 -201
  168. package/components/old-browsers-message/old-browsers-message.js +11 -14
  169. package/components/old-browsers-message/old-browsers-message__stop.js +1 -4
  170. package/components/old-browsers-message/white-list.js +8 -13
  171. package/components/pager/pager.js +212 -257
  172. package/components/panel/panel.js +16 -22
  173. package/components/permissions/permissions.js +118 -161
  174. package/components/permissions/permissions__cache.js +191 -218
  175. package/components/popup/popup.consts.js +1 -1
  176. package/components/popup/popup.js +237 -288
  177. package/components/popup/popup.target.js +9 -7
  178. package/components/popup/position.js +94 -101
  179. package/components/popup-menu/popup-menu.js +33 -67
  180. package/components/progress-bar/progress-bar.js +57 -68
  181. package/components/query-assist/query-assist.js +583 -652
  182. package/components/query-assist/query-assist__suggestions.js +2 -26
  183. package/components/radio/radio.js +15 -27
  184. package/components/radio/radio__item.js +52 -62
  185. package/components/scrollable-section/scrollable-section.js +53 -0
  186. package/components/select/select.js +701 -796
  187. package/components/select/select__filter.js +1 -26
  188. package/components/select/select__popup.js +316 -413
  189. package/components/shortcuts/core.js +147 -195
  190. package/components/shortcuts/shortcut-title.js +6 -10
  191. package/components/shortcuts/shortcuts-hoc.js +23 -41
  192. package/components/shortcuts/shortcuts.js +41 -64
  193. package/components/slider/slider.js +93 -112
  194. package/components/slider/slider.utils.js +16 -23
  195. package/components/storage/storage.js +3 -27
  196. package/components/storage/storage__fallback.js +137 -210
  197. package/components/storage/storage__local.js +89 -147
  198. package/components/style.css +1 -1
  199. package/components/tab-trap/tab-trap.js +35 -53
  200. package/components/table/cell.js +11 -21
  201. package/components/table/disable-hover-hoc.js +27 -42
  202. package/components/table/header-cell.js +59 -75
  203. package/components/table/header.js +89 -110
  204. package/components/table/multitable.js +83 -89
  205. package/components/table/row-with-focus-sensor.js +25 -57
  206. package/components/table/row.js +169 -200
  207. package/components/table/selection-adapter.js +2 -2
  208. package/components/table/selection-shortcuts-hoc.js +108 -113
  209. package/components/table/selection.js +150 -217
  210. package/components/table/simple-table.js +19 -55
  211. package/components/table/smart-table.js +42 -76
  212. package/components/table/table.js +267 -327
  213. package/components/tabs/collapsible-more.js +47 -73
  214. package/components/tabs/collapsible-tab.js +32 -36
  215. package/components/tabs/collapsible-tabs.js +89 -148
  216. package/components/tabs/custom-item.js +4 -2
  217. package/components/tabs/dumb-tabs.js +60 -92
  218. package/components/tabs/smart-tabs.js +29 -61
  219. package/components/tabs/tab-link.js +1 -3
  220. package/components/tabs/tab.js +15 -24
  221. package/components/tabs/tabs.js +1 -26
  222. package/components/tag/tag.d.ts +0 -2
  223. package/components/tag/tag.js +120 -162
  224. package/components/tags-input/tags-input.js +222 -304
  225. package/components/tags-list/tags-list.js +45 -61
  226. package/components/text/text.js +28 -37
  227. package/components/toggle/toggle.js +51 -61
  228. package/components/tooltip/tooltip.js +109 -141
  229. package/components/user-agreement/service.js +259 -400
  230. package/components/user-agreement/user-agreement.js +80 -108
  231. package/components/user-card/card.js +1 -25
  232. package/components/user-card/smart-user-card-tooltip.js +52 -103
  233. package/components/user-card/tooltip.js +35 -65
  234. package/components/user-card/user-card.js +1 -25
  235. package/package.json +1 -1
  236. package/components/global/react-render-adapter.d.ts +0 -1
  237. package/components/global/react-render-adapter.js +0 -6
  238. package/components/header/scrollable-section.js +0 -47
  239. package/components/header/tray-icon.d.ts +0 -1
  240. package/components/header/tray-icon.js +0 -26
  241. /package/components/{header → scrollable-section}/scrollable-section.d.ts +0 -0
@@ -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 };