@jetbrains/ring-ui-built 7.0.0-beta.1 → 7.0.0-beta.11

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