@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,8 +1,4 @@
1
- import { _ as _defineProperty, b as _createClass, e as _classCallCheck } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.index-of.js';
3
- import 'core-js/modules/es.array.map.js';
4
- import 'core-js/modules/es.object.to-string.js';
5
- import 'core-js/modules/es.promise.js';
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
6
2
  import PermissionCache from './permissions__cache.js';
7
3
  import 'core-js/modules/es.array.reduce.js';
8
4
 
@@ -30,11 +26,9 @@ import 'core-js/modules/es.array.reduce.js';
30
26
  * <code>serviceId</code> if provided then permissions only for the service are loaded.
31
27
  * @constructor
32
28
  */
33
- var Permissions = /*#__PURE__*/function () {
34
- function Permissions(auth) {
35
- var _this = this;
36
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
37
- _classCallCheck(this, Permissions);
29
+ class Permissions {
30
+ constructor(auth) {
31
+ let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
32
  _defineProperty(this, "query", void 0);
39
33
  _defineProperty(this, "namesConverter", void 0);
40
34
  _defineProperty(this, "_auth", void 0);
@@ -42,14 +36,12 @@ var Permissions = /*#__PURE__*/function () {
42
36
  _defineProperty(this, "_promise", void 0);
43
37
  _defineProperty(this, "_subscribed", void 0);
44
38
  _defineProperty(this, "_permissionCache", void 0);
45
- _defineProperty(this, "_defaultDatasource", function (query) {
46
- return _this._auth.http.get(Permissions.API_PERMISSION_CACHE_PATH, {
47
- query: {
48
- fields: 'permission/key,global,projects(id)',
49
- query
50
- }
51
- });
52
- });
39
+ _defineProperty(this, "_defaultDatasource", query => this._auth.http.get(Permissions.API_PERMISSION_CACHE_PATH, {
40
+ query: {
41
+ fields: 'permission/key,global,projects(id)',
42
+ query
43
+ }
44
+ }));
53
45
  this.query = Permissions.getPermissionQuery(config.services);
54
46
  this.namesConverter = config.prefix ? Permissions.getDefaultNamesConverter(config.prefix) : config.namesConverter;
55
47
  if (!auth) {
@@ -61,157 +53,122 @@ var Permissions = /*#__PURE__*/function () {
61
53
  this._subscribed = false;
62
54
  this._permissionCache = new PermissionCache(null, this.namesConverter);
63
55
  }
64
- return _createClass(Permissions, [{
65
- key: "set",
66
- value: function set(cachedPermissions) {
67
- this._permissionCache.set(cachedPermissions);
68
- this._setCache(Promise.resolve(this._permissionCache));
69
- return this._permissionCache;
70
- }
71
- }, {
72
- key: "get",
73
- value: function get() {
74
- return this._permissionCache.get();
75
- }
76
- }, {
77
- key: "_setCache",
78
- value: function _setCache(value) {
79
- this._promise = value;
80
- }
81
- }, {
82
- key: "_getCache",
83
- value: function _getCache() {
84
- return this._promise;
85
- }
86
- }, {
87
- key: "_resetCache",
88
- value: function _resetCache() {
89
- this._setCache(null);
90
- }
91
- /**
92
- * Loads logged-in user permissions.
93
- * @param {object?} options
94
- * @return {Promise.<Permissions>} promise that is resolved when the permissions are loaded
95
- */
96
- }, {
97
- key: "load",
98
- value: function load(options) {
99
- var _this2 = this;
100
- if (this._subscribed === false) {
101
- this._auth.addListener('userChange', function () {
102
- _this2.reload();
103
- });
104
- this._subscribed = true;
105
- }
106
- var cache = this._getCache();
107
- if (!hasCacheControl('NO_CACHE', options) && cache) {
108
- return cache;
56
+ /**
57
+ * Returns function, which cuts off prefix from server-side permission name
58
+ *
59
+ * @param {string} prefix
60
+ * @returns {Function}
61
+ */
62
+ static getDefaultNamesConverter(prefix) {
63
+ return storedName => {
64
+ if (storedName.indexOf(prefix) !== 0) {
65
+ return storedName;
66
+ } else {
67
+ return storedName.substr(prefix.length);
109
68
  }
110
- if (hasCacheControl('NO_STORE', options)) {
111
- return this._loadPermissions().then(function (cachedPermissions) {
112
- return new PermissionCache(cachedPermissions, _this2.namesConverter);
113
- });
114
- }
115
- var permissions = this._loadPermissions().then(function (cachedPermissions) {
116
- return _this2.set(cachedPermissions);
117
- });
118
- this._setCache(permissions);
119
- return permissions;
120
- function hasCacheControl(value, _options) {
121
- if (_options && _options.cacheControl) {
122
- return _options.cacheControl[value];
123
- }
124
- return false;
125
- }
126
- }
127
- }, {
128
- key: "_loadPermissions",
129
- value: function _loadPermissions() {
130
- return this._datasource(this.query);
131
- }
132
- /**
133
- * Reloads permission cache from server
134
- * @returns {Promise.<Permissions>} promise that is resolved when the permissions are reloaded
135
- */
136
- }, {
137
- key: "reload",
138
- value: function reload() {
139
- this._resetCache();
140
- return this.load();
69
+ };
70
+ }
71
+ static getPermissionQuery(services) {
72
+ if (!services || !services.length) {
73
+ return undefined;
141
74
  }
142
- /**
143
- * Waits till the permission cache is loaded then checks if the current user has the
144
- * given permissions in the project with the given id.
145
- *
146
- * @param {string} permissions space separated list of permissions
147
- * @param {string=} projectId optional projectId. If absent the method checks
148
- * if the given permission is granted in any project.
149
- *
150
- * @return {Promise.<boolean>}
151
- */
152
- }, {
153
- key: "check",
154
- value: function check(permissions, projectId) {
155
- return this.load().then(function (permissionCache) {
156
- return permissionCache.has(permissions, projectId);
75
+ return services.map(service => "service:{".concat(service, "}")).join(' or ');
76
+ }
77
+ set(cachedPermissions) {
78
+ this._permissionCache.set(cachedPermissions);
79
+ this._setCache(Promise.resolve(this._permissionCache));
80
+ return this._permissionCache;
81
+ }
82
+ get() {
83
+ return this._permissionCache.get();
84
+ }
85
+ _setCache(value) {
86
+ this._promise = value;
87
+ }
88
+ _getCache() {
89
+ return this._promise;
90
+ }
91
+ _resetCache() {
92
+ this._setCache(null);
93
+ }
94
+ /**
95
+ * Loads logged-in user permissions.
96
+ * @param {object?} options
97
+ * @return {Promise.<Permissions>} promise that is resolved when the permissions are loaded
98
+ */
99
+ load(options) {
100
+ if (this._subscribed === false) {
101
+ this._auth.addListener('userChange', () => {
102
+ this.reload();
157
103
  });
104
+ this._subscribed = true;
158
105
  }
159
- /**
160
- * Binds a property with the name <code>propertyName</code> of the <code>object</code>
161
- * to a boolean value that is true if user has the permissions and false if she doesn't.
162
- *
163
- * @example
164
- * <code>
165
- * userPermissions.bindVariable($scope, 'canReadRole', 'role-read')
166
- * </code>
167
- *
168
- * @param {object} object an object which property should be bound
169
- * @param {string} propertyName a name of a property to bind
170
- * @param {string} permissions space separated list of permissions
171
- * @param {string=} projectId optional projectId. If absent the method checks
172
- * if the given permissions are granted in any project.
173
- *
174
- * @return {Promise.<boolean>}
175
- */
176
- }, {
177
- key: "bindVariable",
178
- value: function bindVariable(object, propertyName, permissions, projectId) {
179
- object[propertyName] = false;
180
- return this.check(permissions, projectId).then(function (permitted) {
181
- object[propertyName] = permitted;
182
- return permitted;
183
- });
106
+ const cache = this._getCache();
107
+ if (!hasCacheControl('NO_CACHE', options) && cache) {
108
+ return cache;
184
109
  }
185
- }], [{
186
- key: "getDefaultNamesConverter",
187
- value:
188
- /**
189
- * Returns function, which cuts off prefix from server-side permission name
190
- *
191
- * @param {string} prefix
192
- * @returns {Function}
193
- */
194
- function getDefaultNamesConverter(prefix) {
195
- return function (storedName) {
196
- if (storedName.indexOf(prefix) !== 0) {
197
- return storedName;
198
- } else {
199
- return storedName.substr(prefix.length);
200
- }
201
- };
110
+ if (hasCacheControl('NO_STORE', options)) {
111
+ return this._loadPermissions().then(cachedPermissions => new PermissionCache(cachedPermissions, this.namesConverter));
202
112
  }
203
- }, {
204
- key: "getPermissionQuery",
205
- value: function getPermissionQuery(services) {
206
- if (!services || !services.length) {
207
- return undefined;
113
+ const permissions = this._loadPermissions().then(cachedPermissions => this.set(cachedPermissions));
114
+ this._setCache(permissions);
115
+ return permissions;
116
+ function hasCacheControl(value, _options) {
117
+ if (_options && _options.cacheControl) {
118
+ return _options.cacheControl[value];
208
119
  }
209
- return services.map(function (service) {
210
- return "service:{".concat(service, "}");
211
- }).join(' or ');
120
+ return false;
212
121
  }
213
- }]);
214
- }();
122
+ }
123
+ _loadPermissions() {
124
+ return this._datasource(this.query);
125
+ }
126
+ /**
127
+ * Reloads permission cache from server
128
+ * @returns {Promise.<Permissions>} promise that is resolved when the permissions are reloaded
129
+ */
130
+ reload() {
131
+ this._resetCache();
132
+ return this.load();
133
+ }
134
+ /**
135
+ * Waits till the permission cache is loaded then checks if the current user has the
136
+ * given permissions in the project with the given id.
137
+ *
138
+ * @param {string} permissions space separated list of permissions
139
+ * @param {string=} projectId optional projectId. If absent the method checks
140
+ * if the given permission is granted in any project.
141
+ *
142
+ * @return {Promise.<boolean>}
143
+ */
144
+ check(permissions, projectId) {
145
+ return this.load().then(permissionCache => permissionCache.has(permissions, projectId));
146
+ }
147
+ /**
148
+ * Binds a property with the name <code>propertyName</code> of the <code>object</code>
149
+ * to a boolean value that is true if user has the permissions and false if she doesn't.
150
+ *
151
+ * @example
152
+ * <code>
153
+ * userPermissions.bindVariable($scope, 'canReadRole', 'role-read')
154
+ * </code>
155
+ *
156
+ * @param {object} object an object which property should be bound
157
+ * @param {string} propertyName a name of a property to bind
158
+ * @param {string} permissions space separated list of permissions
159
+ * @param {string=} projectId optional projectId. If absent the method checks
160
+ * if the given permissions are granted in any project.
161
+ *
162
+ * @return {Promise.<boolean>}
163
+ */
164
+ bindVariable(object, propertyName, permissions, projectId) {
165
+ object[propertyName] = false;
166
+ return this.check(permissions, projectId).then(permitted => {
167
+ object[propertyName] = permitted;
168
+ return permitted;
169
+ });
170
+ }
171
+ }
215
172
  /**
216
173
  * @const {string}
217
174
  */