@jetbrains/ring-ui 5.0.156 → 5.0.157

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 (295) hide show
  1. package/dist/_helpers/_rollupPluginBabelHelpers.js +642 -1
  2. package/dist/_helpers/anchor.js +6 -7
  3. package/dist/_helpers/button__classes.js +16 -28
  4. package/dist/_helpers/card.js +107 -95
  5. package/dist/_helpers/dialog__body-scroll-preventer.js +20 -11
  6. package/dist/_helpers/footer.js +29 -34
  7. package/dist/_helpers/query-assist__suggestions.js +91 -74
  8. package/dist/_helpers/select__filter.js +71 -48
  9. package/dist/_helpers/services-link.js +41 -29
  10. package/dist/_helpers/sidebar.js +103 -99
  11. package/dist/_helpers/theme.js +42 -35
  12. package/dist/_helpers/title.js +71 -57
  13. package/dist/alert/alert.js +199 -158
  14. package/dist/alert/container.js +43 -32
  15. package/dist/alert-service/alert-service.js +172 -104
  16. package/dist/analytics/analytics.js +92 -68
  17. package/dist/analytics/analytics__custom-plugin.js +84 -60
  18. package/dist/analytics/analytics__fus-plugin.js +28 -15
  19. package/dist/analytics/analytics__ga-plugin.js +60 -43
  20. package/dist/analytics/analytics__plugin-utils.js +28 -22
  21. package/dist/auth/auth.js +36 -4
  22. package/dist/auth/auth__core.js +1458 -732
  23. package/dist/auth/background-flow.js +129 -87
  24. package/dist/auth/down-notification.js +75 -30
  25. package/dist/auth/iframe-flow.js +136 -75
  26. package/dist/auth/landing.js +90 -30
  27. package/dist/auth/request-builder.js +82 -46
  28. package/dist/auth/response-parser.js +119 -86
  29. package/dist/auth/storage.js +333 -171
  30. package/dist/auth/token-validator.js +244 -137
  31. package/dist/auth/window-flow.js +136 -92
  32. package/dist/auth-dialog/auth-dialog.js +176 -114
  33. package/dist/auth-dialog-service/auth-dialog-service.js +32 -7
  34. package/dist/auth-ng/auth-ng.js +70 -34
  35. package/dist/auth-ng/auth-ng.mock.js +6 -6
  36. package/dist/autofocus-ng/autofocus-ng.js +23 -8
  37. package/dist/avatar/avatar-example-datauri.js +1 -23
  38. package/dist/avatar/avatar.js +155 -119
  39. package/dist/avatar/fallback-avatar.js +41 -22
  40. package/dist/avatar-editor-ng/avatar-editor-ng.js +56 -23
  41. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
  42. package/dist/avatar-ng/avatar-ng.js +23 -1
  43. package/dist/badge/badge.js +43 -35
  44. package/dist/badge-ng/badge-ng.js +13 -1
  45. package/dist/breadcrumb-ng/breadcrumb-ng.js +15 -29
  46. package/dist/button/button.js +111 -87
  47. package/dist/button/button__classes.js +1 -0
  48. package/dist/button-group/button-group.js +35 -19
  49. package/dist/button-group/caption.js +22 -14
  50. package/dist/button-group-ng/button-group-ng.js +13 -7
  51. package/dist/button-ng/button-ng.js +154 -133
  52. package/dist/button-set/button-set.js +34 -20
  53. package/dist/button-set-ng/button-set-ng.js +2 -2
  54. package/dist/button-toolbar/button-toolbar.js +33 -19
  55. package/dist/button-toolbar-ng/button-toolbar-ng.js +5 -3
  56. package/dist/caret/caret.js +225 -188
  57. package/dist/checkbox/checkbox.js +104 -76
  58. package/dist/checkbox-ng/checkbox-ng.js +18 -27
  59. package/dist/clipboard/clipboard-fallback.js +10 -10
  60. package/dist/clipboard/clipboard.js +131 -34
  61. package/dist/code/code.js +168 -92
  62. package/dist/compiler-ng/compiler-ng.js +18 -15
  63. package/dist/confirm/confirm.js +108 -66
  64. package/dist/confirm-ng/confirm-ng.js +33 -4
  65. package/dist/confirm-service/confirm-service.js +66 -42
  66. package/dist/content-layout/content-layout.js +64 -43
  67. package/dist/content-layout/sidebar.js +1 -0
  68. package/dist/contenteditable/contenteditable.js +61 -50
  69. package/dist/control-label/control-label.js +11 -15
  70. package/dist/data-list/data-list.js +184 -128
  71. package/dist/data-list/data-list.mock.js +11 -2
  72. package/dist/data-list/item.js +174 -143
  73. package/dist/data-list/selection.js +139 -76
  74. package/dist/data-list/title.js +13 -1
  75. package/dist/data-list-ng/data-list-ng.js +31 -1
  76. package/dist/date-picker/consts.js +18 -15
  77. package/dist/date-picker/date-input.js +147 -115
  78. package/dist/date-picker/date-picker.js +285 -228
  79. package/dist/date-picker/date-popup.js +397 -356
  80. package/dist/date-picker/day.js +98 -84
  81. package/dist/date-picker/month-names.js +64 -43
  82. package/dist/date-picker/month-slider.js +74 -51
  83. package/dist/date-picker/month.js +21 -15
  84. package/dist/date-picker/months.js +48 -43
  85. package/dist/date-picker/weekdays.js +18 -12
  86. package/dist/date-picker/years.js +109 -84
  87. package/dist/dialog/dialog.js +189 -141
  88. package/dist/dialog/dialog__body-scroll-preventer.js +5 -0
  89. package/dist/dialog-ng/dialog-ng.js +401 -287
  90. package/dist/dialog-ng/dialog-ng__template.js +1 -70
  91. package/dist/docked-panel-ng/docked-panel-ng.js +33 -18
  92. package/dist/dropdown/anchor.js +10 -0
  93. package/dist/dropdown/dropdown.js +214 -182
  94. package/dist/dropdown-menu/dropdown-menu.js +102 -72
  95. package/dist/editable-heading/editable-heading.js +100 -58
  96. package/dist/error-bubble/error-bubble.js +64 -31
  97. package/dist/error-message/error-message.js +61 -38
  98. package/dist/error-message-ng/error-message-ng.js +11 -22
  99. package/dist/footer/footer.js +11 -1
  100. package/dist/footer-ng/footer-ng.js +64 -36
  101. package/dist/form-ng/form-ng.js +66 -56
  102. package/dist/global/angular-component-factory.js +76 -53
  103. package/dist/global/compose.js +10 -1
  104. package/dist/global/composeRefs.js +12 -7
  105. package/dist/global/controls-height.js +2 -2
  106. package/dist/global/create-stateful-context.js +19 -19
  107. package/dist/global/data-tests.js +15 -7
  108. package/dist/global/dom.js +95 -53
  109. package/dist/global/focus-sensor-hoc.js +134 -122
  110. package/dist/global/fuzzy-highlight.js +41 -27
  111. package/dist/global/get-event-key.js +8 -8
  112. package/dist/global/get-uid.js +8 -4
  113. package/dist/global/inject-styles.js +15 -10
  114. package/dist/global/linear-function.js +2 -2
  115. package/dist/global/listeners.js +53 -27
  116. package/dist/global/memoize.js +13 -6
  117. package/dist/global/normalize-indent.js +51 -19
  118. package/dist/global/promise-with-timeout.js +8 -6
  119. package/dist/global/prop-types.js +5 -3
  120. package/dist/global/react-dom-renderer.js +47 -28
  121. package/dist/global/react-render-adapter.js +19 -13
  122. package/dist/global/rerender-hoc.js +41 -16
  123. package/dist/global/ring-angular-component.js +20 -10
  124. package/dist/global/schedule-raf.js +6 -5
  125. package/dist/global/sniffer.js +1 -1
  126. package/dist/global/theme.js +24 -0
  127. package/dist/global/trivial-template-tag.js +10 -3
  128. package/dist/global/typescript-utils.js +6 -2
  129. package/dist/global/url.js +27 -21
  130. package/dist/global/use-event-callback.js +4 -6
  131. package/dist/grid/col.js +55 -35
  132. package/dist/grid/grid.js +36 -17
  133. package/dist/grid/row.js +48 -35
  134. package/dist/group/group.js +27 -17
  135. package/dist/group-ng/group-ng.js +2 -2
  136. package/dist/header/header.js +80 -33
  137. package/dist/header/logo.js +39 -20
  138. package/dist/header/profile.js +188 -150
  139. package/dist/header/services-link.js +9 -0
  140. package/dist/header/services.js +118 -73
  141. package/dist/header/smart-profile.js +207 -111
  142. package/dist/header/smart-services.js +115 -62
  143. package/dist/header/tray-icon.js +38 -21
  144. package/dist/header/tray.js +34 -21
  145. package/dist/heading/heading.js +25 -26
  146. package/dist/heading-ng/heading-ng.js +11 -1
  147. package/dist/http/http.js +368 -215
  148. package/dist/http/http.mock.js +104 -49
  149. package/dist/hub-source/hub-source.js +191 -83
  150. package/dist/hub-source/hub-source__user.js +45 -11
  151. package/dist/hub-source/hub-source__users-groups.js +67 -37
  152. package/dist/i18n/i18n-context.js +14 -10
  153. package/dist/i18n/i18n.js +11 -7
  154. package/dist/icon/icon.js +94 -76
  155. package/dist/icon/icon__svg.js +31 -24
  156. package/dist/icon/index.js +9 -0
  157. package/dist/icon-ng/icon-ng.js +27 -15
  158. package/dist/input/input.js +184 -145
  159. package/dist/input-ng/input-ng.js +96 -118
  160. package/dist/island/adaptive-island-hoc.js +45 -30
  161. package/dist/island/content.js +130 -115
  162. package/dist/island/header.js +69 -56
  163. package/dist/island/island.js +40 -28
  164. package/dist/island-legacy/content-legacy.js +27 -17
  165. package/dist/island-legacy/header-legacy.js +29 -19
  166. package/dist/island-legacy/island-legacy.js +27 -17
  167. package/dist/island-ng/island-content-ng.js +17 -26
  168. package/dist/island-ng/island-header-ng.js +9 -12
  169. package/dist/island-ng/island-ng-class-fixer.js +3 -0
  170. package/dist/island-ng/island-ng.js +6 -10
  171. package/dist/link/clickableLink.js +61 -44
  172. package/dist/link/link.js +85 -74
  173. package/dist/link-ng/link-ng.js +3 -5
  174. package/dist/list/consts.js +1 -1
  175. package/dist/list/list.js +696 -602
  176. package/dist/list/list__custom.js +61 -44
  177. package/dist/list/list__hint.js +21 -10
  178. package/dist/list/list__item.js +167 -129
  179. package/dist/list/list__link.js +54 -37
  180. package/dist/list/list__separator.js +24 -14
  181. package/dist/list/list__title.js +32 -22
  182. package/dist/list/list__users-groups-source.js +131 -54
  183. package/dist/loader/loader.js +78 -43
  184. package/dist/loader/loader__core.js +257 -189
  185. package/dist/loader-inline/loader-inline.js +37 -23
  186. package/dist/loader-inline-ng/loader-inline-ng.js +2 -2
  187. package/dist/loader-ng/loader-ng.js +46 -19
  188. package/dist/loader-screen/loader-screen.js +48 -25
  189. package/dist/loader-screen-ng/loader-screen-ng.js +46 -30
  190. package/dist/login-dialog/login-dialog.js +162 -111
  191. package/dist/login-dialog/service.js +35 -7
  192. package/dist/markdown/code.js +31 -9
  193. package/dist/markdown/heading.js +3 -5
  194. package/dist/markdown/link.js +13 -6
  195. package/dist/markdown/markdown.js +66 -33
  196. package/dist/message/message.js +157 -125
  197. package/dist/message-bundle-ng/message-bundle-ng.js +128 -44
  198. package/dist/old-browsers-message/old-browsers-message.js +19 -11
  199. package/dist/old-browsers-message/old-browsers-message__stop.js +8 -0
  200. package/dist/old-browsers-message/white-list.js +16 -9
  201. package/dist/pager/pager.js +275 -210
  202. package/dist/pager-ng/pager-ng.js +36 -1
  203. package/dist/panel/panel.js +27 -17
  204. package/dist/panel-ng/panel-ng.js +14 -1
  205. package/dist/permissions/permissions.js +173 -127
  206. package/dist/permissions/permissions__cache.js +225 -194
  207. package/dist/permissions-ng/permissions-ng.js +86 -35
  208. package/dist/place-under-ng/place-under-ng.js +68 -45
  209. package/dist/popup/popup.consts.js +1 -1
  210. package/dist/popup/popup.js +342 -280
  211. package/dist/popup/popup.target.js +8 -9
  212. package/dist/popup/position.js +153 -153
  213. package/dist/popup-menu/popup-menu.js +86 -44
  214. package/dist/progress-bar/progress-bar.js +97 -80
  215. package/dist/progress-bar-ng/progress-bar-ng.js +11 -1
  216. package/dist/promised-click-ng/promised-click-ng.js +92 -58
  217. package/dist/proxy-attrs/proxy-attrs.js +18 -9
  218. package/dist/query-assist/query-assist.js +903 -832
  219. package/dist/query-assist/query-assist__suggestions.js +33 -1
  220. package/dist/query-assist-ng/query-assist-ng.js +38 -1
  221. package/dist/radio/radio.js +36 -19
  222. package/dist/radio/radio__item.js +71 -52
  223. package/dist/radio-ng/radio-ng.js +14 -25
  224. package/dist/save-field-ng/save-field-ng.js +86 -52
  225. package/dist/save-field-ng/save-field-ng__template.js +1 -32
  226. package/dist/select/select.js +937 -835
  227. package/dist/select/select__filter.js +33 -0
  228. package/dist/select/select__popup.js +472 -359
  229. package/dist/select-ng/select-ng.js +125 -74
  230. package/dist/select-ng/select-ng__lazy.js +101 -50
  231. package/dist/select-ng/select-ng__options.js +107 -81
  232. package/dist/shortcuts/core.js +218 -166
  233. package/dist/shortcuts/shortcut-title.js +11 -6
  234. package/dist/shortcuts/shortcuts-hoc.js +47 -19
  235. package/dist/shortcuts/shortcuts.js +77 -50
  236. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +104 -53
  237. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
  238. package/dist/shortcuts-ng/shortcuts-ng.js +86 -51
  239. package/dist/sidebar-ng/sidebar-ng.js +53 -22
  240. package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
  241. package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
  242. package/dist/storage/storage.js +35 -4
  243. package/dist/storage/storage__fallback.js +224 -149
  244. package/dist/storage/storage__local.js +156 -90
  245. package/dist/tab-trap/tab-trap.js +157 -122
  246. package/dist/table/cell.js +28 -14
  247. package/dist/table/disable-hover-hoc.js +53 -33
  248. package/dist/table/header-cell.js +87 -64
  249. package/dist/table/header.js +126 -98
  250. package/dist/table/multitable.js +127 -107
  251. package/dist/table/row-with-focus-sensor.js +73 -25
  252. package/dist/table/row.js +208 -170
  253. package/dist/table/selection-adapter.js +3 -1
  254. package/dist/table/selection-shortcuts-hoc.js +184 -181
  255. package/dist/table/selection.js +228 -156
  256. package/dist/table/smart-table.js +93 -51
  257. package/dist/table/table.js +348 -281
  258. package/dist/table-legacy-ng/table-legacy-ng.js +117 -102
  259. package/dist/table-legacy-ng/table-legacy-ng__pager.js +42 -10
  260. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +92 -69
  261. package/dist/table-legacy-ng/table-legacy-ng__selection.js +169 -119
  262. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +36 -21
  263. package/dist/table-ng/smart-table-ng.js +31 -1
  264. package/dist/table-ng/table-ng.js +31 -1
  265. package/dist/tabs/collapsible-more.js +87 -50
  266. package/dist/tabs/collapsible-tab.js +45 -38
  267. package/dist/tabs/collapsible-tabs.js +161 -94
  268. package/dist/tabs/custom-item.js +2 -4
  269. package/dist/tabs/dumb-tabs.js +122 -75
  270. package/dist/tabs/smart-tabs.js +75 -29
  271. package/dist/tabs/tab-link.js +29 -19
  272. package/dist/tabs/tab.js +33 -19
  273. package/dist/tabs/tabs.js +35 -0
  274. package/dist/tabs-ng/tabs-ng.js +38 -24
  275. package/dist/tabs-ng/tabs-ng__template.js +1 -38
  276. package/dist/tag/tag.js +170 -133
  277. package/dist/tags-input/tags-input.js +428 -327
  278. package/dist/tags-input-ng/tags-input-ng.js +37 -1
  279. package/dist/tags-list/tags-list.js +80 -56
  280. package/dist/template-ng/template-ng.js +50 -39
  281. package/dist/text/text.js +38 -28
  282. package/dist/title-ng/title-ng.js +28 -23
  283. package/dist/toggle/toggle.js +72 -56
  284. package/dist/toggle-ng/toggle-ng.js +14 -1
  285. package/dist/tooltip/tooltip.js +192 -146
  286. package/dist/tooltip-ng/tooltip-ng.js +51 -25
  287. package/dist/user-agreement/service.js +374 -227
  288. package/dist/user-agreement/toolbox.eula.js +1 -160
  289. package/dist/user-agreement/user-agreement.js +128 -86
  290. package/dist/user-card/card.js +32 -0
  291. package/dist/user-card/smart-user-card-tooltip.js +116 -51
  292. package/dist/user-card/tooltip.js +90 -48
  293. package/dist/user-card/user-card.js +32 -0
  294. package/dist/user-card-ng/user-card-ng.js +34 -2
  295. package/package.json +2 -2
@@ -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 };