@jetbrains/ring-ui-built 6.0.32 → 6.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +567 -1
  2. package/components/_helpers/anchor.js +6 -7
  3. package/components/_helpers/button__classes.js +14 -16
  4. package/components/_helpers/caption.js +20 -14
  5. package/components/_helpers/card.js +105 -95
  6. package/components/_helpers/dialog__body-scroll-preventer.js +19 -11
  7. package/components/_helpers/icon__svg.js +25 -22
  8. package/components/_helpers/input.js +176 -146
  9. package/components/_helpers/query-assist__suggestions.js +90 -74
  10. package/components/_helpers/select__filter.js +69 -48
  11. package/components/_helpers/services-link.js +37 -29
  12. package/components/_helpers/sidebar.js +107 -99
  13. package/components/_helpers/tab-link.js +7 -7
  14. package/components/_helpers/theme.js +40 -31
  15. package/components/_helpers/title.js +72 -57
  16. package/components/alert/alert.js +202 -150
  17. package/components/alert/container.js +41 -32
  18. package/components/alert-service/alert-service.js +170 -105
  19. package/components/analytics/analytics.js +22 -12
  20. package/components/analytics/analytics__custom-plugin.js +75 -54
  21. package/components/auth/auth.js +36 -4
  22. package/components/auth/auth__core.js +1471 -746
  23. package/components/auth/background-flow.js +127 -87
  24. package/components/auth/down-notification.js +73 -30
  25. package/components/auth/iframe-flow.js +133 -75
  26. package/components/auth/request-builder.js +82 -46
  27. package/components/auth/response-parser.js +116 -86
  28. package/components/auth/storage.js +334 -171
  29. package/components/auth/token-validator.js +242 -137
  30. package/components/auth/window-flow.js +134 -92
  31. package/components/auth-dialog/auth-dialog.js +172 -114
  32. package/components/auth-dialog-service/auth-dialog-service.js +31 -8
  33. package/components/avatar/avatar-example-datauri.js +1 -23
  34. package/components/avatar/avatar.js +152 -119
  35. package/components/avatar/fallback-avatar.js +38 -22
  36. package/components/badge/badge.js +45 -35
  37. package/components/button/button.js +107 -86
  38. package/components/button-group/button-group.js +33 -19
  39. package/components/button-set/button-set.js +32 -20
  40. package/components/button-toolbar/button-toolbar.js +31 -19
  41. package/components/caret/caret.js +220 -186
  42. package/components/checkbox/checkbox.js +101 -76
  43. package/components/clipboard/clipboard-fallback.js +10 -10
  44. package/components/clipboard/clipboard.js +132 -35
  45. package/components/code/code.js +166 -92
  46. package/components/collapse/collapse-content.js +64 -42
  47. package/components/collapse/collapse-context.js +2 -2
  48. package/components/collapse/collapse-control.js +14 -12
  49. package/components/collapse/collapse.js +17 -11
  50. package/components/collapse/consts.js +4 -4
  51. package/components/collapse/utils.js +3 -1
  52. package/components/confirm/confirm.js +104 -66
  53. package/components/confirm-service/confirm-service.js +59 -37
  54. package/components/content-layout/content-layout.js +64 -43
  55. package/components/content-layout/sidebar.js +1 -0
  56. package/components/contenteditable/contenteditable.js +59 -50
  57. package/components/control-label/control-label.js +9 -9
  58. package/components/data-list/data-list.js +182 -129
  59. package/components/data-list/data-list.mock.js +6 -2
  60. package/components/data-list/item.js +170 -143
  61. package/components/data-list/selection.js +136 -76
  62. package/components/data-list/title.js +12 -1
  63. package/components/date-picker/consts.js +26 -19
  64. package/components/date-picker/date-input.js +144 -113
  65. package/components/date-picker/date-picker.js +282 -227
  66. package/components/date-picker/date-popup.js +395 -350
  67. package/components/date-picker/day.js +116 -87
  68. package/components/date-picker/month-names.js +66 -43
  69. package/components/date-picker/month-slider.js +76 -51
  70. package/components/date-picker/month.js +25 -16
  71. package/components/date-picker/months.js +50 -43
  72. package/components/date-picker/weekdays.js +22 -12
  73. package/components/date-picker/years.js +110 -83
  74. package/components/dialog/dialog.js +190 -142
  75. package/components/dialog/dialog__body-scroll-preventer.js +4 -0
  76. package/components/dropdown/anchor.js +9 -0
  77. package/components/dropdown/dropdown.js +213 -182
  78. package/components/dropdown-menu/dropdown-menu.js +97 -71
  79. package/components/editable-heading/editable-heading.js +127 -75
  80. package/components/error-bubble/error-bubble.js +60 -31
  81. package/components/error-message/error-message.js +59 -39
  82. package/components/footer/footer.js +30 -27
  83. package/components/global/compose.js +10 -1
  84. package/components/global/composeRefs.js +12 -7
  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 +14 -6
  88. package/components/global/dom.js +86 -47
  89. package/components/global/focus-sensor-hoc.js +132 -122
  90. package/components/global/fuzzy-highlight.js +36 -22
  91. package/components/global/get-event-key.js +8 -8
  92. package/components/global/get-uid.js +8 -4
  93. package/components/global/inject-styles.js +15 -10
  94. package/components/global/listeners.js +51 -27
  95. package/components/global/memoize.js +12 -6
  96. package/components/global/normalize-indent.js +50 -19
  97. package/components/global/promise-with-timeout.js +8 -6
  98. package/components/global/prop-types.js +5 -3
  99. package/components/global/react-dom-renderer.js +44 -28
  100. package/components/global/react-render-adapter.js +1 -1
  101. package/components/global/rerender-hoc.js +30 -12
  102. package/components/global/schedule-raf.js +6 -5
  103. package/components/global/sniffer.js +1 -1
  104. package/components/global/theme.js +22 -0
  105. package/components/global/trivial-template-tag.js +10 -3
  106. package/components/global/typescript-utils.js +6 -2
  107. package/components/global/url.js +26 -20
  108. package/components/global/use-event-callback.js +4 -6
  109. package/components/grid/col.js +52 -35
  110. package/components/grid/grid.js +31 -17
  111. package/components/grid/row.js +47 -35
  112. package/components/group/group.js +25 -17
  113. package/components/header/header.js +78 -33
  114. package/components/header/logo.js +36 -20
  115. package/components/header/profile.js +199 -166
  116. package/components/header/services-link.js +4 -0
  117. package/components/header/services.js +116 -73
  118. package/components/header/smart-profile.js +203 -111
  119. package/components/header/smart-services.js +113 -62
  120. package/components/header/tray-icon.js +37 -21
  121. package/components/header/tray.js +32 -21
  122. package/components/heading/heading.js +25 -24
  123. package/components/http/http.d.ts +1 -2
  124. package/components/http/http.js +345 -203
  125. package/components/http/http.mock.d.ts +1 -5
  126. package/components/http/http.mock.js +101 -49
  127. package/components/hub-source/hub-source.js +190 -83
  128. package/components/hub-source/hub-source__user.js +44 -11
  129. package/components/hub-source/hub-source__users-groups.js +65 -37
  130. package/components/i18n/i18n-context.js +10 -7
  131. package/components/i18n/i18n.js +10 -7
  132. package/components/icon/icon.js +93 -76
  133. package/components/icon/icon__svg.js +8 -0
  134. package/components/icon/index.js +8 -0
  135. package/components/input/input.js +13 -0
  136. package/components/island/adaptive-island-hoc.js +43 -30
  137. package/components/island/content.js +132 -115
  138. package/components/island/header.js +70 -57
  139. package/components/island/island.js +40 -28
  140. package/components/island-legacy/content-legacy.js +25 -17
  141. package/components/island-legacy/header-legacy.js +27 -19
  142. package/components/island-legacy/island-legacy.js +25 -17
  143. package/components/link/clickableLink.js +59 -44
  144. package/components/link/link.js +68 -57
  145. package/components/list/consts.js +2 -2
  146. package/components/list/list.js +698 -611
  147. package/components/list/list__custom.js +62 -44
  148. package/components/list/list__hint.js +19 -10
  149. package/components/list/list__item.js +174 -133
  150. package/components/list/list__link.js +50 -37
  151. package/components/list/list__separator.js +24 -14
  152. package/components/list/list__title.js +32 -22
  153. package/components/list/list__users-groups-source.js +126 -54
  154. package/components/loader/loader.js +74 -43
  155. package/components/loader/loader__core.js +263 -198
  156. package/components/loader-inline/loader-inline.js +35 -23
  157. package/components/loader-screen/loader-screen.js +46 -25
  158. package/components/login-dialog/login-dialog.js +158 -111
  159. package/components/login-dialog/service.js +34 -8
  160. package/components/markdown/markdown.js +23 -15
  161. package/components/message/message.js +203 -161
  162. package/components/old-browsers-message/old-browsers-message.js +18 -11
  163. package/components/old-browsers-message/old-browsers-message__stop.js +7 -0
  164. package/components/old-browsers-message/white-list.js +17 -9
  165. package/components/pager/pager.js +271 -212
  166. package/components/panel/panel.js +25 -17
  167. package/components/permissions/permissions.js +172 -127
  168. package/components/permissions/permissions__cache.js +224 -194
  169. package/components/popup/popup.consts.js +1 -1
  170. package/components/popup/popup.js +343 -284
  171. package/components/popup/popup.target.js +8 -9
  172. package/components/popup/position.js +106 -96
  173. package/components/popup-menu/popup-menu.js +81 -44
  174. package/components/progress-bar/progress-bar.js +104 -87
  175. package/components/query-assist/query-assist.js +916 -838
  176. package/components/query-assist/query-assist__suggestions.js +30 -1
  177. package/components/radio/radio.js +34 -19
  178. package/components/radio/radio__item.js +69 -52
  179. package/components/select/select.js +957 -852
  180. package/components/select/select__filter.js +30 -0
  181. package/components/select/select__popup.js +487 -373
  182. package/components/shortcuts/core.js +217 -166
  183. package/components/shortcuts/shortcut-title.js +11 -6
  184. package/components/shortcuts/shortcuts-hoc.js +45 -19
  185. package/components/shortcuts/shortcuts.js +75 -50
  186. package/components/slider/slider.js +122 -99
  187. package/components/slider/slider.utils.js +24 -14
  188. package/components/storage/storage.js +33 -4
  189. package/components/storage/storage__fallback.js +224 -149
  190. package/components/storage/storage__local.js +153 -90
  191. package/components/tab-trap/tab-trap.js +153 -122
  192. package/components/table/cell.js +26 -14
  193. package/components/table/disable-hover-hoc.js +51 -33
  194. package/components/table/header-cell.js +89 -64
  195. package/components/table/header.js +132 -104
  196. package/components/table/multitable.js +125 -107
  197. package/components/table/row-with-focus-sensor.js +69 -25
  198. package/components/table/row.js +216 -175
  199. package/components/table/selection-adapter.js +3 -1
  200. package/components/table/selection-shortcuts-hoc.js +181 -180
  201. package/components/table/selection.js +226 -156
  202. package/components/table/smart-table.js +88 -50
  203. package/components/table/table.js +358 -289
  204. package/components/tabs/collapsible-more.js +79 -46
  205. package/components/tabs/collapsible-tab.js +38 -31
  206. package/components/tabs/collapsible-tabs.js +153 -88
  207. package/components/tabs/custom-item.js +2 -4
  208. package/components/tabs/dumb-tabs.js +117 -74
  209. package/components/tabs/smart-tabs.js +69 -29
  210. package/components/tabs/tab-link.js +5 -1
  211. package/components/tabs/tab.js +31 -19
  212. package/components/tabs/tabs.js +31 -0
  213. package/components/tag/tag.js +173 -133
  214. package/components/tags-input/tags-input.js +427 -329
  215. package/components/tags-list/tags-list.js +78 -57
  216. package/components/text/text.js +39 -28
  217. package/components/toggle/toggle.js +70 -56
  218. package/components/tooltip/tooltip.js +190 -146
  219. package/components/user-agreement/service.js +371 -228
  220. package/components/user-agreement/toolbox.eula.js +1 -160
  221. package/components/user-agreement/user-agreement.js +120 -85
  222. package/components/user-card/card.js +29 -0
  223. package/components/user-card/smart-user-card-tooltip.js +111 -51
  224. package/components/user-card/tooltip.js +84 -47
  225. package/components/user-card/user-card.js +29 -0
  226. package/package.json +1 -2
@@ -1,11 +1,23 @@
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';
1
11
  import ActualStorage from '../storage/storage.js';
2
12
  import '../storage/storage__local.js';
3
13
  import '../alert-service/alert-service.js';
4
- import '../_helpers/_rollupPluginBabelHelpers.js';
14
+ import 'core-js/modules/es.array.concat.js';
5
15
  import 'react';
6
16
  import 'react-dom/client';
7
17
  import '../global/get-uid.js';
18
+ import 'core-js/modules/es.regexp.to-string.js';
8
19
  import '../alert/alert.js';
20
+ import 'core-js/modules/es.object.values.js';
9
21
  import 'classnames';
10
22
  import 'prop-types';
11
23
  import '@jetbrains/icons/exception';
@@ -16,10 +28,20 @@ import '../icon/icon.js';
16
28
  import 'util-deprecate';
17
29
  import '../icon/icon__constants.js';
18
30
  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';
19
34
  import '../global/memoize.js';
35
+ import 'core-js/modules/es.map.js';
36
+ import 'core-js/modules/es.weak-map.js';
20
37
  import '../loader-inline/loader-inline.js';
21
38
  import '../global/data-tests.js';
39
+ import 'core-js/modules/es.object.entries.js';
22
40
  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';
23
45
  import '../button/button.js';
24
46
  import '@jetbrains/icons/chevron-10px';
25
47
  import '../link/clickableLink.js';
@@ -32,6 +54,12 @@ import '../popup/popup.js';
32
54
  import '../global/schedule-raf.js';
33
55
  import '../shortcuts/shortcuts.js';
34
56
  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';
35
63
  import 'combokeys';
36
64
  import '../global/sniffer.js';
37
65
  import 'sniffr';
@@ -40,6 +68,7 @@ import '../popup/position.js';
40
68
  import '../popup/popup.consts.js';
41
69
  import '../alert/container.js';
42
70
  import '../storage/storage__fallback.js';
71
+ import 'core-js/modules/es.reflect.delete-property.js';
43
72
  import 'deep-equal';
44
73
 
45
74
  /**
@@ -54,34 +83,35 @@ import 'deep-equal';
54
83
  * @property {string} restoreLocation
55
84
  * @property {string[]} scopes
56
85
  */
57
- const DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
86
+ var DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
58
87
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
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;
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 () {
73
91
  /**
74
92
  * Custom storage for Auth
75
93
  * @param {{stateKeyPrefix: string, tokenKey: string, onTokenRemove: Function}} config
76
94
  */
77
- constructor(config) {
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);
78
108
  this.messagePrefix = config.messagePrefix || '';
79
109
  this.stateKeyPrefix = config.stateKeyPrefix || '';
80
110
  this.tokenKey = config.tokenKey || '';
81
111
  this.userKey = config.userKey || 'user-key';
82
112
  this.stateTTL = config.stateTTL || DEFAULT_STATE_TTL;
83
113
  this._lastMessage = null;
84
- const StorageConstructor = config.storage || ActualStorage;
114
+ var StorageConstructor = config.storage || ActualStorage;
85
115
  this.stateQuota = Math.min(config.stateQuota || DEFAULT_STATE_QUOTA, StorageConstructor.QUOTA || Infinity);
86
116
  this._stateStorage = new StorageConstructor({
87
117
  cookieName: 'ring-state'
@@ -101,165 +131,298 @@ class AuthStorage {
101
131
  * @param {function(string)} fn Token change listener
102
132
  * @return {function()} remove listener function
103
133
  */
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
- }
134
+ return _createClass(AuthStorage, [{
135
+ key: "onTokenChange",
136
+ value: function onTokenChange(fn) {
137
+ return this._tokenStorage.on(this.tokenKey, fn);
148
138
  }
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;
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);
169
+ }
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);
161
214
  }
162
- // Remove requested state
163
- if (key === this.stateKeyPrefix + removeStateId) {
164
- return this._stateStorage.remove(key);
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);
165
294
  }
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
- };
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);
180
336
  }
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);
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);
195
348
  }
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;
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);
212
356
  }
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();
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);
249
365
  }
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
- }
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);
416
+ }
417
+ /**
418
+ * Wipes cache if user has changed
419
+ */
420
+ }, {
421
+ key: "onUserChanged",
422
+ value: function onUserChanged() {
423
+ this.wipeCachedCurrentUser();
424
+ }
425
+ }]);
426
+ }();
264
427
 
265
428
  export { AuthStorage as default };