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

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 (336) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +1 -504
  2. package/components/_helpers/anchor.js +7 -10
  3. package/components/_helpers/button__classes.js +15 -13
  4. package/components/_helpers/caption.js +11 -21
  5. package/components/_helpers/card.js +91 -123
  6. package/components/_helpers/dialog__body-scroll-preventer.js +10 -17
  7. package/components/_helpers/icon__svg.js +27 -29
  8. package/components/_helpers/input.js +150 -192
  9. package/components/_helpers/query-assist__suggestions.js +78 -93
  10. package/components/_helpers/select__filter.js +56 -75
  11. package/components/_helpers/services-link.js +23 -39
  12. package/components/_helpers/sidebar.js +91 -102
  13. package/components/_helpers/tab-link.js +8 -12
  14. package/components/_helpers/theme.js +42 -51
  15. package/components/_helpers/title.js +59 -84
  16. package/components/alert/alert.d.ts +7 -24
  17. package/components/alert/alert.js +111 -179
  18. package/components/alert/container.d.ts +0 -5
  19. package/components/alert/container.js +32 -44
  20. package/components/alert-service/alert-service.js +104 -162
  21. package/components/analytics/analytics.js +12 -20
  22. package/components/analytics/analytics__custom-plugin.js +52 -68
  23. package/components/auth/auth.js +2 -28
  24. package/components/auth/auth__core.d.ts +4 -4
  25. package/components/auth/auth__core.js +753 -1431
  26. package/components/auth/background-flow.js +84 -121
  27. package/components/auth/down-notification.js +31 -78
  28. package/components/auth/iframe-flow.js +70 -124
  29. package/components/auth/request-builder.js +46 -77
  30. package/components/auth/response-parser.js +84 -112
  31. package/components/auth/storage.js +160 -319
  32. package/components/auth/token-validator.js +132 -227
  33. package/components/auth/window-flow.js +84 -121
  34. package/components/auth-dialog/auth-dialog.d.ts +0 -18
  35. package/components/auth-dialog/auth-dialog.js +106 -175
  36. package/components/auth-dialog-service/auth-dialog-service.js +10 -31
  37. package/components/avatar/avatar-example-datauri.js +1 -1
  38. package/components/avatar/avatar.d.ts +0 -13
  39. package/components/avatar/avatar.js +94 -136
  40. package/components/avatar/fallback-avatar.d.ts +1 -10
  41. package/components/avatar/fallback-avatar.js +20 -40
  42. package/components/badge/badge.d.ts +0 -10
  43. package/components/badge/badge.js +32 -48
  44. package/components/breadcrumbs/breadcrumbs.js +13 -17
  45. package/components/button/button.d.ts +0 -21
  46. package/components/button/button.js +67 -101
  47. package/components/button-group/button-group.d.ts +0 -5
  48. package/components/button-group/button-group.js +27 -41
  49. package/components/button-group/caption.d.ts +0 -4
  50. package/components/button-group/caption.js +0 -1
  51. package/components/button-set/button-set.d.ts +0 -6
  52. package/components/button-set/button-set.js +19 -33
  53. package/components/button-toolbar/button-toolbar.d.ts +0 -6
  54. package/components/button-toolbar/button-toolbar.js +17 -31
  55. package/components/caret/caret.js +184 -211
  56. package/components/checkbox/checkbox.d.ts +0 -19
  57. package/components/checkbox/checkbox.js +69 -104
  58. package/components/clipboard/clipboard-fallback.js +7 -7
  59. package/components/clipboard/clipboard.js +36 -129
  60. package/components/code/code.d.ts +0 -12
  61. package/components/code/code.js +83 -163
  62. package/components/collapse/collapse-content.js +42 -60
  63. package/components/collapse/collapse-context.js +2 -2
  64. package/components/collapse/collapse-control.js +12 -12
  65. package/components/collapse/collapse.js +12 -17
  66. package/components/collapse/consts.js +4 -4
  67. package/components/collapse/utils.js +1 -3
  68. package/components/confirm/confirm.d.ts +0 -14
  69. package/components/confirm/confirm.js +67 -111
  70. package/components/confirm-service/confirm-service.js +23 -45
  71. package/components/content-layout/content-layout.d.ts +0 -7
  72. package/components/content-layout/content-layout.js +41 -63
  73. package/components/content-layout/sidebar.d.ts +0 -9
  74. package/components/content-layout/sidebar.js +1 -2
  75. package/components/contenteditable/contenteditable.d.ts +1 -22
  76. package/components/contenteditable/contenteditable.js +37 -60
  77. package/components/control-help/control-help.js +5 -3
  78. package/components/control-label/control-label.js +9 -14
  79. package/components/data-list/data-list.d.ts +0 -2
  80. package/components/data-list/data-list.js +115 -179
  81. package/components/data-list/data-list.mock.js +3 -6
  82. package/components/data-list/item.js +118 -164
  83. package/components/data-list/selection.js +77 -135
  84. package/components/data-list/title.d.ts +2 -2
  85. package/components/data-list/title.js +2 -12
  86. package/components/date-picker/consts.d.ts +0 -2
  87. package/components/date-picker/consts.js +16 -24
  88. package/components/date-picker/date-input.d.ts +0 -20
  89. package/components/date-picker/date-input.js +99 -147
  90. package/components/date-picker/date-picker.d.ts +0 -29
  91. package/components/date-picker/date-picker.js +143 -224
  92. package/components/date-picker/date-popup.d.ts +0 -22
  93. package/components/date-picker/date-popup.js +281 -351
  94. package/components/date-picker/day.d.ts +0 -14
  95. package/components/date-picker/day.js +72 -109
  96. package/components/date-picker/month-names.d.ts +1 -11
  97. package/components/date-picker/month-names.js +42 -72
  98. package/components/date-picker/month-slider.d.ts +0 -9
  99. package/components/date-picker/month-slider.js +43 -71
  100. package/components/date-picker/month.d.ts +1 -9
  101. package/components/date-picker/month.js +18 -30
  102. package/components/date-picker/months.d.ts +1 -9
  103. package/components/date-picker/months.js +45 -55
  104. package/components/date-picker/weekdays.d.ts +2 -8
  105. package/components/date-picker/weekdays.js +12 -25
  106. package/components/date-picker/years.d.ts +0 -6
  107. package/components/date-picker/years.js +77 -104
  108. package/components/dialog/dialog.d.ts +0 -20
  109. package/components/dialog/dialog.js +152 -210
  110. package/components/dialog/dialog__body-scroll-preventer.js +0 -3
  111. package/components/dropdown/anchor.d.ts +1 -8
  112. package/components/dropdown/anchor.js +0 -7
  113. package/components/dropdown/dropdown.d.ts +4 -22
  114. package/components/dropdown/dropdown.js +134 -176
  115. package/components/dropdown-menu/dropdown-menu.js +51 -103
  116. package/components/editable-heading/editable-heading.js +69 -118
  117. package/components/error-bubble/error-bubble.d.ts +0 -6
  118. package/components/error-bubble/error-bubble.js +29 -60
  119. package/components/error-message/error-message.d.ts +0 -10
  120. package/components/error-message/error-message.js +34 -59
  121. package/components/footer/footer.js +27 -43
  122. package/components/global/compose.js +1 -8
  123. package/components/global/composeRefs.d.ts +0 -3
  124. package/components/global/composeRefs.js +8 -15
  125. package/components/global/controls-height.js +2 -2
  126. package/components/global/create-stateful-context.d.ts +0 -4
  127. package/components/global/create-stateful-context.js +14 -17
  128. package/components/global/data-tests.js +7 -12
  129. package/components/global/dom.js +49 -82
  130. package/components/global/focus-sensor-hoc.js +95 -122
  131. package/components/global/fuzzy-highlight.js +23 -34
  132. package/components/global/get-event-key.js +8 -8
  133. package/components/global/get-uid.js +3 -7
  134. package/components/global/inject-styles.js +7 -14
  135. package/components/global/listeners.js +28 -47
  136. package/components/global/memoize.js +6 -10
  137. package/components/global/normalize-indent.js +19 -46
  138. package/components/global/promise-with-timeout.js +6 -8
  139. package/components/global/react-dom-renderer.d.ts +0 -5
  140. package/components/global/react-dom-renderer.js +29 -45
  141. package/components/global/rerender-hoc.js +16 -32
  142. package/components/global/schedule-raf.js +4 -4
  143. package/components/global/sniffer.js +1 -1
  144. package/components/global/theme.d.ts +1 -0
  145. package/components/global/theme.js +2 -20
  146. package/components/global/trivial-template-tag.js +4 -9
  147. package/components/global/typescript-utils.js +2 -6
  148. package/components/global/url.js +20 -23
  149. package/components/global/use-event-callback.js +7 -4
  150. package/components/grid/col.d.ts +0 -14
  151. package/components/grid/col.js +26 -53
  152. package/components/grid/grid.d.ts +0 -5
  153. package/components/grid/grid.js +18 -32
  154. package/components/grid/row.d.ts +0 -18
  155. package/components/grid/row.js +22 -47
  156. package/components/group/group.d.ts +0 -5
  157. package/components/group/group.js +16 -27
  158. package/components/header/header-icon.d.ts +0 -22
  159. package/components/header/header-icon.js +19 -36
  160. package/components/header/header.d.ts +0 -7
  161. package/components/header/header.js +30 -71
  162. package/components/header/links.js +6 -3
  163. package/components/header/logo.d.ts +0 -4
  164. package/components/header/logo.js +15 -30
  165. package/components/header/profile.d.ts +1 -39
  166. package/components/header/profile.js +125 -190
  167. package/components/header/services-link.d.ts +0 -10
  168. package/components/header/services-link.js +1 -4
  169. package/components/header/services.d.ts +0 -14
  170. package/components/header/services.js +65 -110
  171. package/components/header/smart-profile.d.ts +0 -9
  172. package/components/header/smart-profile.js +119 -205
  173. package/components/header/smart-services.d.ts +0 -4
  174. package/components/header/smart-services.js +72 -141
  175. package/components/header/tray.d.ts +0 -5
  176. package/components/header/tray.js +21 -35
  177. package/components/heading/heading.js +21 -26
  178. package/components/http/http.js +162 -319
  179. package/components/http/http.mock.js +50 -98
  180. package/components/hub-source/hub-source.js +77 -182
  181. package/components/hub-source/hub-source__user.js +9 -37
  182. package/components/hub-source/hub-source__users-groups.js +34 -60
  183. package/components/i18n/i18n-context.js +7 -8
  184. package/components/i18n/i18n.js +3 -6
  185. package/components/icon/icon.d.ts +0 -11
  186. package/components/icon/icon.js +60 -85
  187. package/components/icon/icon__svg.d.ts +0 -8
  188. package/components/icon/icon__svg.js +0 -6
  189. package/components/icon/index.js +0 -6
  190. package/components/input/input.js +1 -13
  191. package/components/island/adaptive-island-hoc.d.ts +0 -1
  192. package/components/island/adaptive-island-hoc.js +30 -39
  193. package/components/island/content.d.ts +0 -10
  194. package/components/island/content.js +99 -119
  195. package/components/island/header.js +55 -73
  196. package/components/island/island.d.ts +0 -9
  197. package/components/island/island.js +25 -41
  198. package/components/island-legacy/content-legacy.d.ts +0 -5
  199. package/components/island-legacy/content-legacy.js +16 -27
  200. package/components/island-legacy/header-legacy.d.ts +0 -5
  201. package/components/island-legacy/header-legacy.js +19 -30
  202. package/components/island-legacy/island-legacy.d.ts +0 -5
  203. package/components/island-legacy/island-legacy.js +16 -27
  204. package/components/link/clickableLink.d.ts +0 -9
  205. package/components/link/clickableLink.js +33 -51
  206. package/components/link/link.d.ts +0 -25
  207. package/components/link/link.js +47 -68
  208. package/components/list/consts.js +2 -2
  209. package/components/list/list.d.ts +0 -32
  210. package/components/list/list.js +399 -516
  211. package/components/list/list__custom.js +51 -78
  212. package/components/list/list__hint.d.ts +0 -4
  213. package/components/list/list__hint.js +8 -21
  214. package/components/list/list__item.js +147 -211
  215. package/components/list/list__link.js +39 -59
  216. package/components/list/list__separator.js +15 -30
  217. package/components/list/list__title.js +25 -41
  218. package/components/list/list__users-groups-source.js +55 -123
  219. package/components/loader/loader.d.ts +0 -10
  220. package/components/loader/loader.js +38 -70
  221. package/components/loader/loader__core.js +123 -184
  222. package/components/loader-inline/loader-inline.d.ts +0 -6
  223. package/components/loader-inline/loader-inline.js +24 -38
  224. package/components/loader-screen/loader-screen.d.ts +0 -6
  225. package/components/loader-screen/loader-screen.js +24 -46
  226. package/components/login-dialog/login-dialog.d.ts +0 -11
  227. package/components/login-dialog/login-dialog.js +93 -144
  228. package/components/login-dialog/service.js +9 -31
  229. package/components/markdown/markdown.js +16 -29
  230. package/components/message/message.js +170 -217
  231. package/components/old-browsers-message/old-browsers-message.js +11 -14
  232. package/components/old-browsers-message/old-browsers-message__stop.js +1 -4
  233. package/components/old-browsers-message/white-list.js +8 -13
  234. package/components/pager/pager.js +212 -277
  235. package/components/panel/panel.d.ts +0 -5
  236. package/components/panel/panel.js +16 -27
  237. package/components/permissions/permissions.js +118 -161
  238. package/components/permissions/permissions__cache.js +191 -218
  239. package/components/popup/popup.consts.js +1 -1
  240. package/components/popup/popup.js +237 -329
  241. package/components/popup/popup.target.js +9 -12
  242. package/components/popup/position.js +94 -101
  243. package/components/popup-menu/popup-menu.js +31 -76
  244. package/components/progress-bar/progress-bar.d.ts +19 -33
  245. package/components/progress-bar/progress-bar.js +55 -99
  246. package/components/query-assist/query-assist.d.ts +63 -93
  247. package/components/query-assist/query-assist.js +583 -746
  248. package/components/query-assist/query-assist__suggestions.js +2 -28
  249. package/components/radio/radio.d.ts +0 -8
  250. package/components/radio/radio.js +15 -35
  251. package/components/radio/radio__item.d.ts +0 -9
  252. package/components/radio/radio__item.js +52 -72
  253. package/components/scrollable-section/scrollable-section.js +22 -32
  254. package/components/select/select.js +693 -858
  255. package/components/select/select__filter.js +1 -28
  256. package/components/select/select__popup.js +317 -465
  257. package/components/shortcuts/core.js +147 -195
  258. package/components/shortcuts/shortcut-title.js +6 -10
  259. package/components/shortcuts/shortcuts-hoc.d.ts +0 -5
  260. package/components/shortcuts/shortcuts-hoc.js +23 -46
  261. package/components/shortcuts/shortcuts.d.ts +0 -8
  262. package/components/shortcuts/shortcuts.js +41 -72
  263. package/components/slider/slider.js +93 -113
  264. package/components/slider/slider.utils.js +16 -23
  265. package/components/storage/storage.js +3 -28
  266. package/components/storage/storage__fallback.js +137 -210
  267. package/components/storage/storage__local.js +89 -148
  268. package/components/style.css +1 -1
  269. package/components/tab-trap/tab-trap.js +35 -61
  270. package/components/table/cell.d.ts +0 -6
  271. package/components/table/cell.js +11 -27
  272. package/components/table/disable-hover-hoc.d.ts +0 -1
  273. package/components/table/disable-hover-hoc.js +27 -42
  274. package/components/table/header-cell.d.ts +0 -10
  275. package/components/table/header-cell.js +59 -85
  276. package/components/table/header.d.ts +0 -15
  277. package/components/table/header.js +89 -126
  278. package/components/table/multitable.d.ts +0 -4
  279. package/components/table/multitable.js +83 -93
  280. package/components/table/row-with-focus-sensor.d.ts +2 -2
  281. package/components/table/row-with-focus-sensor.js +25 -60
  282. package/components/table/row.js +169 -235
  283. package/components/table/selection-adapter.js +2 -2
  284. package/components/table/selection-shortcuts-hoc.js +102 -126
  285. package/components/table/selection.js +150 -217
  286. package/components/table/simple-table.d.ts +0 -44
  287. package/components/table/simple-table.js +17 -59
  288. package/components/table/smart-table.d.ts +0 -48
  289. package/components/table/smart-table.js +40 -83
  290. package/components/table/table.d.ts +0 -2
  291. package/components/table/table.js +268 -377
  292. package/components/tabs/collapsible-more.d.ts +1 -9
  293. package/components/tabs/collapsible-more.js +47 -97
  294. package/components/tabs/collapsible-tab.js +32 -44
  295. package/components/tabs/collapsible-tabs.d.ts +2 -29
  296. package/components/tabs/collapsible-tabs.js +89 -161
  297. package/components/tabs/custom-item.d.ts +1 -7
  298. package/components/tabs/custom-item.js +4 -7
  299. package/components/tabs/dumb-tabs.d.ts +0 -11
  300. package/components/tabs/dumb-tabs.js +60 -104
  301. package/components/tabs/smart-tabs.d.ts +0 -6
  302. package/components/tabs/smart-tabs.js +29 -68
  303. package/components/tabs/tab-link.d.ts +0 -8
  304. package/components/tabs/tab-link.js +1 -4
  305. package/components/tabs/tab.d.ts +0 -8
  306. package/components/tabs/tab.js +14 -32
  307. package/components/tabs/tabs.js +1 -28
  308. package/components/tag/tag.d.ts +0 -19
  309. package/components/tag/tag.js +120 -179
  310. package/components/tags-input/tags-input.d.ts +7 -33
  311. package/components/tags-input/tags-input.js +223 -338
  312. package/components/tags-list/tags-list.d.ts +0 -13
  313. package/components/tags-list/tags-list.js +45 -74
  314. package/components/text/text.d.ts +0 -7
  315. package/components/text/text.js +27 -43
  316. package/components/toggle/toggle.d.ts +0 -15
  317. package/components/toggle/toggle.js +51 -76
  318. package/components/tooltip/tooltip.d.ts +0 -9
  319. package/components/tooltip/tooltip.js +109 -150
  320. package/components/user-agreement/service.js +259 -401
  321. package/components/user-agreement/user-agreement.d.ts +0 -18
  322. package/components/user-agreement/user-agreement.js +91 -137
  323. package/components/user-card/card.d.ts +0 -35
  324. package/components/user-card/card.js +1 -26
  325. package/components/user-card/smart-user-card-tooltip.d.ts +0 -5
  326. package/components/user-card/smart-user-card-tooltip.js +52 -108
  327. package/components/user-card/tooltip.d.ts +0 -9
  328. package/components/user-card/tooltip.js +35 -74
  329. package/components/user-card/user-card.js +1 -26
  330. package/package.json +1 -2
  331. package/components/global/prop-types.d.ts +0 -4
  332. package/components/global/prop-types.js +0 -9
  333. package/components/global/react-render-adapter.d.ts +0 -1
  334. package/components/global/react-render-adapter.js +0 -6
  335. package/components/header/tray-icon.d.ts +0 -1
  336. package/components/header/tray-icon.js +0 -26
@@ -1,25 +1,15 @@
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
- import 'prop-types';
23
13
  import '@jetbrains/icons/exception';
24
14
  import '@jetbrains/icons/checkmark';
25
15
  import '@jetbrains/icons/warning';
@@ -30,19 +20,11 @@ import '../icon/icon__constants.js';
30
20
  import '../_helpers/icon__svg.js';
31
21
  import 'core-js/modules/es.regexp.exec.js';
32
22
  import 'core-js/modules/es.string.replace.js';
33
- import 'core-js/modules/es.string.starts-with.js';
34
23
  import '../global/memoize.js';
35
- import 'core-js/modules/es.map.js';
36
- import 'core-js/modules/es.weak-map.js';
37
24
  import 'react/jsx-runtime';
38
25
  import '../loader-inline/loader-inline.js';
39
26
  import '../global/data-tests.js';
40
- import 'core-js/modules/es.object.entries.js';
41
27
  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
28
  import '../button/button.js';
47
29
  import '@jetbrains/icons/chevron-down';
48
30
  import '../link/clickableLink.js';
@@ -55,12 +37,6 @@ import '../popup/popup.js';
55
37
  import '../global/schedule-raf.js';
56
38
  import '../shortcuts/shortcuts.js';
57
39
  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
40
  import 'combokeys';
65
41
  import '../global/sniffer.js';
66
42
  import 'sniffr';
@@ -69,7 +45,6 @@ import '../popup/position.js';
69
45
  import '../popup/popup.consts.js';
70
46
  import '../alert/container.js';
71
47
  import '../storage/storage__fallback.js';
72
- import 'core-js/modules/es.reflect.delete-property.js';
73
48
  import 'deep-equal';
74
49
 
75
50
  /**
@@ -84,17 +59,16 @@ import 'deep-equal';
84
59
  * @property {string} restoreLocation
85
60
  * @property {string[]} scopes
86
61
  */
87
- var DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
62
+ const DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
88
63
  // 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 () {
64
+ const DEFAULT_STATE_TTL = 1000 * 60 * 60 * 24; // nobody will need auth state after a day
65
+ const UPDATE_USER_TIMEOUT = 1000;
66
+ class AuthStorage {
92
67
  /**
93
68
  * Custom storage for Auth
94
69
  * @param {{stateKeyPrefix: string, tokenKey: string, onTokenRemove: Function}} config
95
70
  */
96
- function AuthStorage(config) {
97
- _classCallCheck(this, AuthStorage);
71
+ constructor(config) {
98
72
  _defineProperty(this, "messagePrefix", void 0);
99
73
  _defineProperty(this, "stateKeyPrefix", void 0);
100
74
  _defineProperty(this, "tokenKey", void 0);
@@ -112,7 +86,7 @@ var AuthStorage = /*#__PURE__*/function () {
112
86
  this.userKey = config.userKey || 'user-key';
113
87
  this.stateTTL = config.stateTTL || DEFAULT_STATE_TTL;
114
88
  this._lastMessage = null;
115
- var StorageConstructor = config.storage || ActualStorage;
89
+ const StorageConstructor = config.storage || ActualStorage;
116
90
  this.stateQuota = Math.min(config.stateQuota || DEFAULT_STATE_QUOTA, StorageConstructor.QUOTA || Infinity);
117
91
  this._stateStorage = new StorageConstructor({
118
92
  cookieName: 'ring-state'
@@ -132,298 +106,165 @@ var AuthStorage = /*#__PURE__*/function () {
132
106
  * @param {function(string)} fn Token change listener
133
107
  * @return {function()} remove listener function
134
108
  */
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);
109
+ onTokenChange(fn) {
110
+ return this._tokenStorage.on(this.tokenKey, fn);
111
+ }
112
+ /**
113
+ * Add state change listener
114
+ * @param {string} stateKey State key
115
+ * @param {function(string)} fn State change listener
116
+ * @return {function()} remove listener function
117
+ */
118
+ onStateChange(stateKey, fn) {
119
+ return this._stateStorage.on(this.stateKeyPrefix + stateKey, fn);
120
+ }
121
+ /**
122
+ * Add state change listener
123
+ * @param {string} key State key
124
+ * @param {function(string)} fn State change listener
125
+ * @return {function()} remove listener function
126
+ */
127
+ onMessage(key, fn) {
128
+ return this._messagesStorage.on(this.messagePrefix + key, message => fn(message));
129
+ }
130
+ sendMessage(key) {
131
+ let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
132
+ this._lastMessage = message;
133
+ this._messagesStorage.set(this.messagePrefix + key, message);
134
+ }
135
+ /**
136
+ * Save authentication request state.
137
+ *
138
+ * @param {string} id Unique state identifier
139
+ * @param {StoredState} state State to store
140
+ * @param {boolean=} dontCleanAndRetryOnFail If falsy then remove all stored states and try again to save state
141
+ */
142
+ async saveState(id, state, dontCleanAndRetryOnFail) {
143
+ state.created = Date.now();
144
+ try {
145
+ await this._stateStorage.set(this.stateKeyPrefix + id, state);
146
+ } catch (e) {
147
+ if (!dontCleanAndRetryOnFail) {
148
+ await this.cleanStates();
149
+ return this.saveState(id, state, true);
150
+ } else {
151
+ throw e;
152
+ }
170
153
  }
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);
154
+ return undefined;
155
+ }
156
+ /**
157
+ * Remove all stored states
158
+ *
159
+ * @return {Promise} promise that is resolved when OLD states [and some selected] are removed
160
+ */
161
+ async cleanStates(removeStateId) {
162
+ const now = Date.now();
163
+ const removalResult = await this._stateStorage.each((key, value) => {
164
+ if (value == null) {
165
+ return undefined;
215
166
  }
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);
167
+ // Remove requested state
168
+ if (key === this.stateKeyPrefix + removeStateId) {
169
+ return this._stateStorage.remove(key);
295
170
  }
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);
171
+ if (key.indexOf(this.stateKeyPrefix) === 0) {
172
+ var _state$created;
173
+ // Clean old states
174
+ const state = value;
175
+ const created = (_state$created = state.created) !== null && _state$created !== void 0 ? _state$created : Date.now();
176
+ if (created + this.stateTTL < now) {
177
+ return this._stateStorage.remove(key);
178
+ }
179
+ // Data to clean up due quota
180
+ return {
181
+ key,
182
+ created,
183
+ size: JSON.stringify(state).length
184
+ };
337
185
  }
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);
186
+ return undefined;
187
+ });
188
+ const currentStates = removalResult.filter(state => state != null);
189
+ let stateStorageSize = currentStates.reduce((overallSize, state) => state.size + overallSize, 0);
190
+ if (stateStorageSize > this.stateQuota) {
191
+ currentStates.sort((a, b) => a.created - b.created);
192
+ const removalPromises = currentStates.filter(state => {
193
+ if (stateStorageSize > this.stateQuota) {
194
+ stateStorageSize -= state.size;
195
+ return true;
196
+ }
197
+ return false;
198
+ }).map(state => this._stateStorage.remove(state.key));
199
+ return removalPromises.length && Promise.all(removalPromises);
366
200
  }
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);
201
+ return undefined;
202
+ }
203
+ /**
204
+ * Get state by id and remove stored states from the storage.
205
+ *
206
+ * @param {string} id unique state identifier
207
+ * @return {Promise.<StoredState>}
208
+ */
209
+ async getState(id) {
210
+ try {
211
+ const result = await this._stateStorage.get(this.stateKeyPrefix + id);
212
+ await this.cleanStates(id);
213
+ return result;
214
+ } catch (e) {
215
+ await this.cleanStates(id);
216
+ throw e;
417
217
  }
418
- /**
419
- * Wipes cache if user has changed
420
- */
421
- }, {
422
- key: "onUserChanged",
423
- value: function onUserChanged() {
424
- this.wipeCachedCurrentUser();
218
+ }
219
+ /**
220
+ * @param {StoredToken} token
221
+ * @return {Promise} promise that is resolved when the token is saved
222
+ */
223
+ saveToken(token) {
224
+ return this._tokenStorage.set(this.tokenKey, token);
225
+ }
226
+ /**
227
+ * @return {Promise.<StoredToken>} promise that is resolved to the stored token
228
+ */
229
+ getToken() {
230
+ return this._tokenStorage.get(this.tokenKey);
231
+ }
232
+ /**
233
+ * Remove stored token if any.
234
+ * @return {Promise} promise that is resolved when the token is wiped.
235
+ */
236
+ wipeToken() {
237
+ return this._tokenStorage.remove(this.tokenKey);
238
+ }
239
+ /**
240
+ * @param {function} loadUser user loader
241
+ * @return {Promise.<object>>} promise that is resolved to stored current user
242
+ */
243
+ async getCachedUser(loadUser) {
244
+ const user = await this._currentUserStorage.get(this.userKey);
245
+ const loadAndCache = () => loadUser().then(response => {
246
+ this._currentUserStorage.set(this.userKey, response);
247
+ return response;
248
+ });
249
+ if (user && user.id) {
250
+ setTimeout(loadAndCache, UPDATE_USER_TIMEOUT);
251
+ return user;
252
+ } else {
253
+ return loadAndCache();
425
254
  }
426
- }]);
427
- }();
255
+ }
256
+ /**
257
+ * Remove cached user if any
258
+ */
259
+ wipeCachedCurrentUser() {
260
+ return this._currentUserStorage.remove(this.userKey);
261
+ }
262
+ /**
263
+ * Wipes cache if user has changed
264
+ */
265
+ onUserChanged() {
266
+ this.wipeCachedCurrentUser();
267
+ }
268
+ }
428
269
 
429
270
  export { AuthStorage as default };