@jetbrains/ring-ui 5.0.156 → 5.0.158

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