@jetbrains/ring-ui-built 6.0.31 → 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 (225) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +1 -567
  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/tab-trap/tab-trap.js +122 -153
  191. package/components/table/cell.js +14 -26
  192. package/components/table/disable-hover-hoc.js +33 -51
  193. package/components/table/header-cell.js +64 -89
  194. package/components/table/header.js +104 -132
  195. package/components/table/multitable.js +107 -125
  196. package/components/table/row-with-focus-sensor.js +25 -69
  197. package/components/table/row.js +175 -216
  198. package/components/table/selection-adapter.js +1 -3
  199. package/components/table/selection-shortcuts-hoc.js +180 -181
  200. package/components/table/selection.js +156 -226
  201. package/components/table/smart-table.js +50 -88
  202. package/components/table/table.js +289 -358
  203. package/components/tabs/collapsible-more.js +46 -79
  204. package/components/tabs/collapsible-tab.js +31 -38
  205. package/components/tabs/collapsible-tabs.js +88 -153
  206. package/components/tabs/custom-item.js +4 -2
  207. package/components/tabs/dumb-tabs.js +74 -117
  208. package/components/tabs/smart-tabs.js +29 -69
  209. package/components/tabs/tab-link.js +1 -5
  210. package/components/tabs/tab.js +19 -31
  211. package/components/tabs/tabs.js +0 -31
  212. package/components/tag/tag.js +133 -173
  213. package/components/tags-input/tags-input.js +329 -427
  214. package/components/tags-list/tags-list.js +57 -78
  215. package/components/text/text.js +28 -39
  216. package/components/toggle/toggle.js +56 -70
  217. package/components/tooltip/tooltip.js +146 -190
  218. package/components/user-agreement/service.js +228 -371
  219. package/components/user-agreement/toolbox.eula.js +160 -1
  220. package/components/user-agreement/user-agreement.js +85 -120
  221. package/components/user-card/card.js +0 -29
  222. package/components/user-card/smart-user-card-tooltip.js +51 -111
  223. package/components/user-card/tooltip.js +47 -84
  224. package/components/user-card/user-card.js +0 -29
  225. package/package.json +1 -1
@@ -1,23 +1,11 @@
1
- import { b as _createClass, f as _classCallCheck, _ as _defineProperty, h as _asyncToGenerator, i as _regeneratorRuntime } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.filter.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.array.map.js';
6
- import 'core-js/modules/es.array.reduce.js';
7
- import 'core-js/modules/es.array.sort.js';
8
- import 'core-js/modules/es.object.to-string.js';
9
- import 'core-js/modules/es.promise.js';
10
- import 'core-js/modules/web.dom-collections.iterator.js';
11
1
  import ActualStorage from '../storage/storage.js';
12
2
  import '../storage/storage__local.js';
13
3
  import '../alert-service/alert-service.js';
14
- import 'core-js/modules/es.array.concat.js';
4
+ import '../_helpers/_rollupPluginBabelHelpers.js';
15
5
  import 'react';
16
6
  import 'react-dom/client';
17
7
  import '../global/get-uid.js';
18
- import 'core-js/modules/es.regexp.to-string.js';
19
8
  import '../alert/alert.js';
20
- import 'core-js/modules/es.object.values.js';
21
9
  import 'classnames';
22
10
  import 'prop-types';
23
11
  import '@jetbrains/icons/exception';
@@ -28,20 +16,10 @@ import '../icon/icon.js';
28
16
  import 'util-deprecate';
29
17
  import '../icon/icon__constants.js';
30
18
  import '../_helpers/icon__svg.js';
31
- import 'core-js/modules/es.regexp.exec.js';
32
- import 'core-js/modules/es.string.replace.js';
33
- import 'core-js/modules/es.string.starts-with.js';
34
19
  import '../global/memoize.js';
35
- import 'core-js/modules/es.map.js';
36
- import 'core-js/modules/es.weak-map.js';
37
20
  import '../loader-inline/loader-inline.js';
38
21
  import '../global/data-tests.js';
39
- import 'core-js/modules/es.object.entries.js';
40
22
  import '../global/dom.js';
41
- import 'core-js/modules/es.object.assign.js';
42
- import 'core-js/modules/es.set.js';
43
- import 'core-js/modules/es.string.split.js';
44
- import 'core-js/modules/web.dom-collections.for-each.js';
45
23
  import '../button/button.js';
46
24
  import '@jetbrains/icons/chevron-10px';
47
25
  import '../link/clickableLink.js';
@@ -54,12 +32,6 @@ import '../popup/popup.js';
54
32
  import '../global/schedule-raf.js';
55
33
  import '../shortcuts/shortcuts.js';
56
34
  import '../shortcuts/core.js';
57
- import 'core-js/modules/es.array.find-index.js';
58
- import 'core-js/modules/es.array.includes.js';
59
- import 'core-js/modules/es.array.slice.js';
60
- import 'core-js/modules/es.array.splice.js';
61
- import 'core-js/modules/es.string.includes.js';
62
- import 'core-js/modules/es.string.match.js';
63
35
  import 'combokeys';
64
36
  import '../global/sniffer.js';
65
37
  import 'sniffr';
@@ -68,7 +40,6 @@ import '../popup/position.js';
68
40
  import '../popup/popup.consts.js';
69
41
  import '../alert/container.js';
70
42
  import '../storage/storage__fallback.js';
71
- import 'core-js/modules/es.reflect.delete-property.js';
72
43
  import 'deep-equal';
73
44
 
74
45
  /**
@@ -83,35 +54,34 @@ import 'deep-equal';
83
54
  * @property {string} restoreLocation
84
55
  * @property {string[]} scopes
85
56
  */
86
- var DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
57
+ const DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
87
58
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
88
- var DEFAULT_STATE_TTL = 1000 * 60 * 60 * 24; // nobody will need auth state after a day
89
- var UPDATE_USER_TIMEOUT = 1000;
90
- var AuthStorage = /*#__PURE__*/function () {
59
+ const DEFAULT_STATE_TTL = 1000 * 60 * 60 * 24; // nobody will need auth state after a day
60
+ const UPDATE_USER_TIMEOUT = 1000;
61
+ class AuthStorage {
62
+ messagePrefix;
63
+ stateKeyPrefix;
64
+ tokenKey;
65
+ userKey;
66
+ stateTTL;
67
+ stateQuota;
68
+ _lastMessage;
69
+ _stateStorage;
70
+ _tokenStorage;
71
+ _messagesStorage;
72
+ _currentUserStorage;
91
73
  /**
92
74
  * Custom storage for Auth
93
75
  * @param {{stateKeyPrefix: string, tokenKey: string, onTokenRemove: Function}} config
94
76
  */
95
- function AuthStorage(config) {
96
- _classCallCheck(this, AuthStorage);
97
- _defineProperty(this, "messagePrefix", void 0);
98
- _defineProperty(this, "stateKeyPrefix", void 0);
99
- _defineProperty(this, "tokenKey", void 0);
100
- _defineProperty(this, "userKey", void 0);
101
- _defineProperty(this, "stateTTL", void 0);
102
- _defineProperty(this, "stateQuota", void 0);
103
- _defineProperty(this, "_lastMessage", void 0);
104
- _defineProperty(this, "_stateStorage", void 0);
105
- _defineProperty(this, "_tokenStorage", void 0);
106
- _defineProperty(this, "_messagesStorage", void 0);
107
- _defineProperty(this, "_currentUserStorage", void 0);
77
+ constructor(config) {
108
78
  this.messagePrefix = config.messagePrefix || '';
109
79
  this.stateKeyPrefix = config.stateKeyPrefix || '';
110
80
  this.tokenKey = config.tokenKey || '';
111
81
  this.userKey = config.userKey || 'user-key';
112
82
  this.stateTTL = config.stateTTL || DEFAULT_STATE_TTL;
113
83
  this._lastMessage = null;
114
- var StorageConstructor = config.storage || ActualStorage;
84
+ const StorageConstructor = config.storage || ActualStorage;
115
85
  this.stateQuota = Math.min(config.stateQuota || DEFAULT_STATE_QUOTA, StorageConstructor.QUOTA || Infinity);
116
86
  this._stateStorage = new StorageConstructor({
117
87
  cookieName: 'ring-state'
@@ -131,298 +101,165 @@ var AuthStorage = /*#__PURE__*/function () {
131
101
  * @param {function(string)} fn Token change listener
132
102
  * @return {function()} remove listener function
133
103
  */
134
- return _createClass(AuthStorage, [{
135
- key: "onTokenChange",
136
- value: function onTokenChange(fn) {
137
- return this._tokenStorage.on(this.tokenKey, fn);
138
- }
139
- /**
140
- * Add state change listener
141
- * @param {string} stateKey State key
142
- * @param {function(string)} fn State change listener
143
- * @return {function()} remove listener function
144
- */
145
- }, {
146
- key: "onStateChange",
147
- value: function onStateChange(stateKey, fn) {
148
- return this._stateStorage.on(this.stateKeyPrefix + stateKey, fn);
149
- }
150
- /**
151
- * Add state change listener
152
- * @param {string} key State key
153
- * @param {function(string)} fn State change listener
154
- * @return {function()} remove listener function
155
- */
156
- }, {
157
- key: "onMessage",
158
- value: function onMessage(key, fn) {
159
- return this._messagesStorage.on(this.messagePrefix + key, function (message) {
160
- return fn(message);
161
- });
162
- }
163
- }, {
164
- key: "sendMessage",
165
- value: function sendMessage(key) {
166
- var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
167
- this._lastMessage = message;
168
- this._messagesStorage.set(this.messagePrefix + key, message);
104
+ onTokenChange(fn) {
105
+ return this._tokenStorage.on(this.tokenKey, fn);
106
+ }
107
+ /**
108
+ * Add state change listener
109
+ * @param {string} stateKey State key
110
+ * @param {function(string)} fn State change listener
111
+ * @return {function()} remove listener function
112
+ */
113
+ onStateChange(stateKey, fn) {
114
+ return this._stateStorage.on(this.stateKeyPrefix + stateKey, fn);
115
+ }
116
+ /**
117
+ * Add state change listener
118
+ * @param {string} key State key
119
+ * @param {function(string)} fn State change listener
120
+ * @return {function()} remove listener function
121
+ */
122
+ onMessage(key, fn) {
123
+ return this._messagesStorage.on(this.messagePrefix + key, message => fn(message));
124
+ }
125
+ sendMessage(key) {
126
+ let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
127
+ this._lastMessage = message;
128
+ this._messagesStorage.set(this.messagePrefix + key, message);
129
+ }
130
+ /**
131
+ * Save authentication request state.
132
+ *
133
+ * @param {string} id Unique state identifier
134
+ * @param {StoredState} state State to store
135
+ * @param {boolean=} dontCleanAndRetryOnFail If falsy then remove all stored states and try again to save state
136
+ */
137
+ async saveState(id, state, dontCleanAndRetryOnFail) {
138
+ state.created = Date.now();
139
+ try {
140
+ await this._stateStorage.set(this.stateKeyPrefix + id, state);
141
+ } catch (e) {
142
+ if (!dontCleanAndRetryOnFail) {
143
+ await this.cleanStates();
144
+ return this.saveState(id, state, true);
145
+ } else {
146
+ throw e;
147
+ }
169
148
  }
170
- /**
171
- * Save authentication request state.
172
- *
173
- * @param {string} id Unique state identifier
174
- * @param {StoredState} state State to store
175
- * @param {boolean=} dontCleanAndRetryOnFail If falsy then remove all stored states and try again to save state
176
- */
177
- }, {
178
- key: "saveState",
179
- value: (function () {
180
- var _saveState = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(id, state, dontCleanAndRetryOnFail) {
181
- return _regeneratorRuntime().wrap(function _callee$(_context) {
182
- while (1) switch (_context.prev = _context.next) {
183
- case 0:
184
- state.created = Date.now();
185
- _context.prev = 1;
186
- _context.next = 4;
187
- return this._stateStorage.set(this.stateKeyPrefix + id, state);
188
- case 4:
189
- _context.next = 15;
190
- break;
191
- case 6:
192
- _context.prev = 6;
193
- _context.t0 = _context["catch"](1);
194
- if (dontCleanAndRetryOnFail) {
195
- _context.next = 14;
196
- break;
197
- }
198
- _context.next = 11;
199
- return this.cleanStates();
200
- case 11:
201
- return _context.abrupt("return", this.saveState(id, state, true));
202
- case 14:
203
- throw _context.t0;
204
- case 15:
205
- return _context.abrupt("return", undefined);
206
- case 16:
207
- case "end":
208
- return _context.stop();
209
- }
210
- }, _callee, this, [[1, 6]]);
211
- }));
212
- function saveState(_x, _x2, _x3) {
213
- return _saveState.apply(this, arguments);
149
+ return undefined;
150
+ }
151
+ /**
152
+ * Remove all stored states
153
+ *
154
+ * @return {Promise} promise that is resolved when OLD states [and some selected] are removed
155
+ */
156
+ async cleanStates(removeStateId) {
157
+ const now = Date.now();
158
+ const removalResult = await this._stateStorage.each((key, value) => {
159
+ if (value == null) {
160
+ return undefined;
214
161
  }
215
- return saveState;
216
- }()
217
- /**
218
- * Remove all stored states
219
- *
220
- * @return {Promise} promise that is resolved when OLD states [and some selected] are removed
221
- */
222
- )
223
- }, {
224
- key: "cleanStates",
225
- value: (function () {
226
- var _cleanStates = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(removeStateId) {
227
- var _this = this;
228
- var now, removalResult, currentStates, stateStorageSize, removalPromises;
229
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
230
- while (1) switch (_context2.prev = _context2.next) {
231
- case 0:
232
- now = Date.now();
233
- _context2.next = 3;
234
- return this._stateStorage.each(function (key, value) {
235
- if (value == null) {
236
- return undefined;
237
- }
238
- // Remove requested state
239
- if (key === _this.stateKeyPrefix + removeStateId) {
240
- return _this._stateStorage.remove(key);
241
- }
242
- if (key.indexOf(_this.stateKeyPrefix) === 0) {
243
- var _state$created;
244
- // Clean old states
245
- var state = value;
246
- var created = (_state$created = state.created) !== null && _state$created !== void 0 ? _state$created : Date.now();
247
- if (created + _this.stateTTL < now) {
248
- return _this._stateStorage.remove(key);
249
- }
250
- // Data to clean up due quota
251
- return {
252
- key,
253
- created,
254
- size: JSON.stringify(state).length
255
- };
256
- }
257
- return undefined;
258
- });
259
- case 3:
260
- removalResult = _context2.sent;
261
- currentStates = removalResult.filter(function (state) {
262
- return state != null;
263
- });
264
- stateStorageSize = currentStates.reduce(function (overallSize, state) {
265
- return state.size + overallSize;
266
- }, 0);
267
- if (!(stateStorageSize > this.stateQuota)) {
268
- _context2.next = 10;
269
- break;
270
- }
271
- currentStates.sort(function (a, b) {
272
- return a.created - b.created;
273
- });
274
- removalPromises = currentStates.filter(function (state) {
275
- if (stateStorageSize > _this.stateQuota) {
276
- stateStorageSize -= state.size;
277
- return true;
278
- }
279
- return false;
280
- }).map(function (state) {
281
- return _this._stateStorage.remove(state.key);
282
- });
283
- return _context2.abrupt("return", removalPromises.length && Promise.all(removalPromises));
284
- case 10:
285
- return _context2.abrupt("return", undefined);
286
- case 11:
287
- case "end":
288
- return _context2.stop();
289
- }
290
- }, _callee2, this);
291
- }));
292
- function cleanStates(_x4) {
293
- return _cleanStates.apply(this, arguments);
162
+ // Remove requested state
163
+ if (key === this.stateKeyPrefix + removeStateId) {
164
+ return this._stateStorage.remove(key);
294
165
  }
295
- return cleanStates;
296
- }()
297
- /**
298
- * Get state by id and remove stored states from the storage.
299
- *
300
- * @param {string} id unique state identifier
301
- * @return {Promise.<StoredState>}
302
- */
303
- )
304
- }, {
305
- key: "getState",
306
- value: (function () {
307
- var _getState = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(id) {
308
- var result;
309
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
310
- while (1) switch (_context3.prev = _context3.next) {
311
- case 0:
312
- _context3.prev = 0;
313
- _context3.next = 3;
314
- return this._stateStorage.get(this.stateKeyPrefix + id);
315
- case 3:
316
- result = _context3.sent;
317
- _context3.next = 6;
318
- return this.cleanStates(id);
319
- case 6:
320
- return _context3.abrupt("return", result);
321
- case 9:
322
- _context3.prev = 9;
323
- _context3.t0 = _context3["catch"](0);
324
- _context3.next = 13;
325
- return this.cleanStates(id);
326
- case 13:
327
- throw _context3.t0;
328
- case 14:
329
- case "end":
330
- return _context3.stop();
331
- }
332
- }, _callee3, this, [[0, 9]]);
333
- }));
334
- function getState(_x5) {
335
- return _getState.apply(this, arguments);
166
+ if (key.indexOf(this.stateKeyPrefix) === 0) {
167
+ var _state$created;
168
+ // Clean old states
169
+ const state = value;
170
+ const created = (_state$created = state.created) !== null && _state$created !== void 0 ? _state$created : Date.now();
171
+ if (created + this.stateTTL < now) {
172
+ return this._stateStorage.remove(key);
173
+ }
174
+ // Data to clean up due quota
175
+ return {
176
+ key,
177
+ created,
178
+ size: JSON.stringify(state).length
179
+ };
336
180
  }
337
- return getState;
338
- }()
339
- /**
340
- * @param {StoredToken} token
341
- * @return {Promise} promise that is resolved when the token is saved
342
- */
343
- )
344
- }, {
345
- key: "saveToken",
346
- value: function saveToken(token) {
347
- return this._tokenStorage.set(this.tokenKey, token);
348
- }
349
- /**
350
- * @return {Promise.<StoredToken>} promise that is resolved to the stored token
351
- */
352
- }, {
353
- key: "getToken",
354
- value: function getToken() {
355
- return this._tokenStorage.get(this.tokenKey);
356
- }
357
- /**
358
- * Remove stored token if any.
359
- * @return {Promise} promise that is resolved when the token is wiped.
360
- */
361
- }, {
362
- key: "wipeToken",
363
- value: function wipeToken() {
364
- return this._tokenStorage.remove(this.tokenKey);
181
+ return undefined;
182
+ });
183
+ const currentStates = removalResult.filter(state => state != null);
184
+ let stateStorageSize = currentStates.reduce((overallSize, state) => state.size + overallSize, 0);
185
+ if (stateStorageSize > this.stateQuota) {
186
+ currentStates.sort((a, b) => a.created - b.created);
187
+ const removalPromises = currentStates.filter(state => {
188
+ if (stateStorageSize > this.stateQuota) {
189
+ stateStorageSize -= state.size;
190
+ return true;
191
+ }
192
+ return false;
193
+ }).map(state => this._stateStorage.remove(state.key));
194
+ return removalPromises.length && Promise.all(removalPromises);
365
195
  }
366
- /**
367
- * @param {function} loadUser user loader
368
- * @return {Promise.<object>>} promise that is resolved to stored current user
369
- */
370
- }, {
371
- key: "getCachedUser",
372
- value: (function () {
373
- var _getCachedUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(loadUser) {
374
- var _this2 = this;
375
- var user, loadAndCache;
376
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
377
- while (1) switch (_context4.prev = _context4.next) {
378
- case 0:
379
- _context4.next = 2;
380
- return this._currentUserStorage.get(this.userKey);
381
- case 2:
382
- user = _context4.sent;
383
- loadAndCache = function loadAndCache() {
384
- return loadUser().then(function (response) {
385
- _this2._currentUserStorage.set(_this2.userKey, response);
386
- return response;
387
- });
388
- };
389
- if (!(user && user.id)) {
390
- _context4.next = 9;
391
- break;
392
- }
393
- setTimeout(loadAndCache, UPDATE_USER_TIMEOUT);
394
- return _context4.abrupt("return", user);
395
- case 9:
396
- return _context4.abrupt("return", loadAndCache());
397
- case 10:
398
- case "end":
399
- return _context4.stop();
400
- }
401
- }, _callee4, this);
402
- }));
403
- function getCachedUser(_x6) {
404
- return _getCachedUser.apply(this, arguments);
405
- }
406
- return getCachedUser;
407
- }()
408
- /**
409
- * Remove cached user if any
410
- */
411
- )
412
- }, {
413
- key: "wipeCachedCurrentUser",
414
- value: function wipeCachedCurrentUser() {
415
- return this._currentUserStorage.remove(this.userKey);
196
+ return undefined;
197
+ }
198
+ /**
199
+ * Get state by id and remove stored states from the storage.
200
+ *
201
+ * @param {string} id unique state identifier
202
+ * @return {Promise.<StoredState>}
203
+ */
204
+ async getState(id) {
205
+ try {
206
+ const result = await this._stateStorage.get(this.stateKeyPrefix + id);
207
+ await this.cleanStates(id);
208
+ return result;
209
+ } catch (e) {
210
+ await this.cleanStates(id);
211
+ throw e;
416
212
  }
417
- /**
418
- * Wipes cache if user has changed
419
- */
420
- }, {
421
- key: "onUserChanged",
422
- value: function onUserChanged() {
423
- this.wipeCachedCurrentUser();
213
+ }
214
+ /**
215
+ * @param {StoredToken} token
216
+ * @return {Promise} promise that is resolved when the token is saved
217
+ */
218
+ saveToken(token) {
219
+ return this._tokenStorage.set(this.tokenKey, token);
220
+ }
221
+ /**
222
+ * @return {Promise.<StoredToken>} promise that is resolved to the stored token
223
+ */
224
+ getToken() {
225
+ return this._tokenStorage.get(this.tokenKey);
226
+ }
227
+ /**
228
+ * Remove stored token if any.
229
+ * @return {Promise} promise that is resolved when the token is wiped.
230
+ */
231
+ wipeToken() {
232
+ return this._tokenStorage.remove(this.tokenKey);
233
+ }
234
+ /**
235
+ * @param {function} loadUser user loader
236
+ * @return {Promise.<object>>} promise that is resolved to stored current user
237
+ */
238
+ async getCachedUser(loadUser) {
239
+ const user = await this._currentUserStorage.get(this.userKey);
240
+ const loadAndCache = () => loadUser().then(response => {
241
+ this._currentUserStorage.set(this.userKey, response);
242
+ return response;
243
+ });
244
+ if (user && user.id) {
245
+ setTimeout(loadAndCache, UPDATE_USER_TIMEOUT);
246
+ return user;
247
+ } else {
248
+ return loadAndCache();
424
249
  }
425
- }]);
426
- }();
250
+ }
251
+ /**
252
+ * Remove cached user if any
253
+ */
254
+ wipeCachedCurrentUser() {
255
+ return this._currentUserStorage.remove(this.userKey);
256
+ }
257
+ /**
258
+ * Wipes cache if user has changed
259
+ */
260
+ onUserChanged() {
261
+ this.wipeCachedCurrentUser();
262
+ }
263
+ }
427
264
 
428
265
  export { AuthStorage as default };