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