@bravobit/bb-foundation 0.21.0 → 0.21.3

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 (462) hide show
  1. package/README.md +47 -47
  2. package/auth/index.d.ts +5 -5
  3. package/auth/lib/auth.interceptor.d.ts +21 -21
  4. package/auth/lib/auth.module.d.ts +15 -15
  5. package/auth/lib/auth.service.d.ts +59 -59
  6. package/auth/lib/auth.session.d.ts +34 -34
  7. package/auth/lib/directives/authenticated.directive.d.ts +14 -14
  8. package/auth/lib/directives/permission.directive.d.ts +24 -24
  9. package/auth/lib/directives/role.directive.d.ts +16 -16
  10. package/auth/lib/guards/anonymous.guard.d.ts +11 -11
  11. package/auth/lib/guards/authenticated.guard.d.ts +11 -11
  12. package/auth/lib/helpers/jwt.helper.d.ts +8 -8
  13. package/auth/lib/helpers/mapper.helper.d.ts +23 -23
  14. package/auth/lib/interfaces/config.interface.d.ts +12 -12
  15. package/auth/lib/interfaces/mapper.interface.d.ts +19 -19
  16. package/auth/lib/interfaces/provider.interface.d.ts +16 -16
  17. package/auth/lib/interfaces/token.interface.d.ts +11 -11
  18. package/auth/lib/permissions.service.d.ts +14 -14
  19. package/auth/lib/providers/email.provider.d.ts +15 -15
  20. package/auth/lib/providers/verify.provider.d.ts +13 -13
  21. package/auth/lib/tokens/use-authorization.token.d.ts +2 -2
  22. package/auth/public_api.d.ts +18 -18
  23. package/collections/index.d.ts +5 -5
  24. package/collections/lib/collection.d.ts +42 -43
  25. package/collections/lib/collections.module.d.ts +10 -10
  26. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +34 -34
  27. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +12 -12
  28. package/collections/lib/components/collections.directive.d.ts +17 -17
  29. package/collections/lib/interfaces/collection.interface.d.ts +27 -26
  30. package/collections/lib/providers/api-collection.provider.d.ts +18 -19
  31. package/collections/lib/providers/collection.provider.d.ts +6 -6
  32. package/collections/lib/providers/local-collection.provider.d.ts +8 -8
  33. package/collections/public_api.d.ts +9 -9
  34. package/controls/index.d.ts +5 -5
  35. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +47 -47
  36. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +22 -22
  37. package/controls/lib/checkbox/checkbox.module.d.ts +9 -9
  38. package/controls/lib/controls.module.d.ts +7 -7
  39. package/controls/public_api.d.ts +4 -4
  40. package/dashboard/index.d.ts +5 -5
  41. package/dashboard/lib/dashboard/dashboard.component.d.ts +19 -19
  42. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +11 -11
  43. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +9 -9
  44. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +11 -11
  45. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +21 -21
  46. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +27 -27
  47. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +16 -16
  48. package/dashboard/lib/dashboard.module.d.ts +16 -16
  49. package/dashboard/public_api.d.ts +8 -8
  50. package/dialog/index.d.ts +5 -5
  51. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +5 -5
  52. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +16 -16
  53. package/dialog/lib/dialog-container/dialog-container.component.d.ts +24 -24
  54. package/dialog/lib/dialog-header/dialog-header.component.d.ts +9 -9
  55. package/dialog/lib/dialog-link/dialog-link.component.d.ts +5 -5
  56. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +12 -12
  57. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +22 -22
  58. package/dialog/lib/dialog.injector.d.ts +8 -8
  59. package/dialog/lib/dialog.insertion.d.ts +8 -8
  60. package/dialog/lib/dialog.interfaces.d.ts +3 -3
  61. package/dialog/lib/dialog.module.d.ts +19 -19
  62. package/dialog/lib/dialog.ref.d.ts +8 -8
  63. package/dialog/lib/dialog.service.d.ts +19 -19
  64. package/dialog/public_api.d.ts +9 -9
  65. package/elements/index.d.ts +5 -5
  66. package/elements/lib/avatar/avatar.component.d.ts +25 -25
  67. package/elements/lib/button/button.component.d.ts +23 -23
  68. package/elements/lib/checkbox/checkbox.component.d.ts +27 -27
  69. package/elements/lib/date-picker/date-picker.component.d.ts +69 -69
  70. package/elements/lib/directives/addon.directive.d.ts +9 -9
  71. package/elements/lib/directives/autosize.directive.d.ts +18 -18
  72. package/elements/lib/directives/focus-trap.directive.d.ts +17 -17
  73. package/elements/lib/directives/focus.directive.d.ts +14 -14
  74. package/elements/lib/directives/form-submit.directive.d.ts +17 -17
  75. package/elements/lib/directives/input.directive.d.ts +38 -38
  76. package/elements/lib/directives/template.directive.d.ts +10 -10
  77. package/elements/lib/dropdown/dropdown.component.d.ts +21 -21
  78. package/elements/lib/elements.interfaces.d.ts +25 -25
  79. package/elements/lib/elements.module.d.ts +116 -116
  80. package/elements/lib/file-picker/file-picker.component.d.ts +49 -49
  81. package/elements/lib/form-control/form-control.component.d.ts +21 -21
  82. package/elements/lib/form-error/form-error.component.d.ts +29 -29
  83. package/elements/lib/form-group/form-group.component.d.ts +10 -10
  84. package/elements/lib/icon/icon.component.d.ts +22 -22
  85. package/elements/lib/image-picker/image-picker.component.d.ts +38 -38
  86. package/elements/lib/pipes/file-image.pipe.d.ts +13 -13
  87. package/elements/lib/pipes/file-size.pipe.d.ts +8 -8
  88. package/elements/lib/pipes/relative-time.pipe.d.ts +19 -19
  89. package/elements/lib/spinner/spinner.component.d.ts +12 -12
  90. package/elements/lib/tag/tag.component.d.ts +7 -7
  91. package/elements/public_api.d.ts +25 -25
  92. package/esm2020/auth/bravobit-bb-foundation-auth.mjs +4 -4
  93. package/esm2020/auth/lib/auth.interceptor.mjs +93 -93
  94. package/esm2020/auth/lib/auth.module.mjs +54 -54
  95. package/esm2020/auth/lib/auth.service.mjs +281 -281
  96. package/esm2020/auth/lib/auth.session.mjs +131 -131
  97. package/esm2020/auth/lib/directives/authenticated.directive.mjs +31 -31
  98. package/esm2020/auth/lib/directives/permission.directive.mjs +80 -80
  99. package/esm2020/auth/lib/directives/role.directive.mjs +37 -37
  100. package/esm2020/auth/lib/guards/anonymous.guard.mjs +34 -34
  101. package/esm2020/auth/lib/guards/authenticated.guard.mjs +35 -35
  102. package/esm2020/auth/lib/helpers/jwt.helper.mjs +69 -69
  103. package/esm2020/auth/lib/helpers/mapper.helper.mjs +35 -35
  104. package/esm2020/auth/lib/interfaces/config.interface.mjs +3 -3
  105. package/esm2020/auth/lib/interfaces/mapper.interface.mjs +2 -2
  106. package/esm2020/auth/lib/interfaces/provider.interface.mjs +2 -2
  107. package/esm2020/auth/lib/interfaces/token.interface.mjs +2 -2
  108. package/esm2020/auth/lib/permissions.service.mjs +56 -56
  109. package/esm2020/auth/lib/providers/email.provider.mjs +25 -25
  110. package/esm2020/auth/lib/providers/verify.provider.mjs +19 -19
  111. package/esm2020/auth/lib/tokens/use-authorization.token.mjs +3 -3
  112. package/esm2020/auth/public_api.mjs +19 -19
  113. package/esm2020/bravobit-bb-foundation.mjs +4 -4
  114. package/esm2020/collections/bravobit-bb-foundation-collections.mjs +4 -4
  115. package/esm2020/collections/lib/collection.mjs +100 -102
  116. package/esm2020/collections/lib/collections.module.mjs +54 -54
  117. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +123 -123
  118. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +31 -31
  119. package/esm2020/collections/lib/components/collections.directive.mjs +43 -43
  120. package/esm2020/collections/lib/interfaces/collection.interface.mjs +2 -2
  121. package/esm2020/collections/lib/providers/api-collection.provider.mjs +91 -71
  122. package/esm2020/collections/lib/providers/collection.provider.mjs +13 -13
  123. package/esm2020/collections/lib/providers/local-collection.provider.mjs +16 -16
  124. package/esm2020/collections/public_api.mjs +10 -10
  125. package/esm2020/controls/bravobit-bb-foundation-controls.mjs +4 -4
  126. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +153 -153
  127. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +61 -61
  128. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +19 -19
  129. package/esm2020/controls/lib/controls.module.mjs +16 -16
  130. package/esm2020/controls/public_api.mjs +5 -5
  131. package/esm2020/dashboard/bravobit-bb-foundation-dashboard.mjs +4 -4
  132. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +56 -56
  133. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +30 -30
  134. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +31 -31
  135. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +29 -29
  136. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +75 -75
  137. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +99 -99
  138. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +62 -62
  139. package/esm2020/dashboard/lib/dashboard.module.mjs +47 -47
  140. package/esm2020/dashboard/public_api.mjs +9 -9
  141. package/esm2020/dialog/bravobit-bb-foundation-dialog.mjs +4 -4
  142. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +12 -12
  143. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +37 -37
  144. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +153 -153
  145. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +25 -25
  146. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +11 -11
  147. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +46 -46
  148. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +134 -134
  149. package/esm2020/dialog/lib/dialog.injector.mjs +18 -18
  150. package/esm2020/dialog/lib/dialog.insertion.mjs +16 -16
  151. package/esm2020/dialog/lib/dialog.interfaces.mjs +3 -3
  152. package/esm2020/dialog/lib/dialog.module.mjs +68 -68
  153. package/esm2020/dialog/lib/dialog.ref.mjs +22 -22
  154. package/esm2020/dialog/lib/dialog.service.mjs +77 -77
  155. package/esm2020/dialog/public_api.mjs +10 -10
  156. package/esm2020/elements/bravobit-bb-foundation-elements.mjs +4 -4
  157. package/esm2020/elements/lib/avatar/avatar.component.mjs +145 -145
  158. package/esm2020/elements/lib/button/button.component.mjs +61 -61
  159. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +73 -73
  160. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +304 -304
  161. package/esm2020/elements/lib/directives/addon.directive.mjs +29 -29
  162. package/esm2020/elements/lib/directives/autosize.directive.mjs +72 -72
  163. package/esm2020/elements/lib/directives/focus-trap.directive.mjs +77 -77
  164. package/esm2020/elements/lib/directives/focus.directive.mjs +39 -39
  165. package/esm2020/elements/lib/directives/form-submit.directive.mjs +50 -50
  166. package/esm2020/elements/lib/directives/input.directive.mjs +136 -136
  167. package/esm2020/elements/lib/directives/template.directive.mjs +28 -28
  168. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +100 -100
  169. package/esm2020/elements/lib/elements.interfaces.mjs +4 -4
  170. package/esm2020/elements/lib/elements.module.mjs +177 -177
  171. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +236 -236
  172. package/esm2020/elements/lib/form-control/form-control.component.mjs +49 -49
  173. package/esm2020/elements/lib/form-error/form-error.component.mjs +108 -108
  174. package/esm2020/elements/lib/form-group/form-group.component.mjs +18 -18
  175. package/esm2020/elements/lib/icon/icon.component.mjs +102 -102
  176. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +106 -106
  177. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +42 -42
  178. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +28 -28
  179. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +94 -94
  180. package/esm2020/elements/lib/spinner/spinner.component.mjs +25 -25
  181. package/esm2020/elements/lib/tag/tag.component.mjs +18 -18
  182. package/esm2020/elements/public_api.mjs +26 -26
  183. package/esm2020/http/bravobit-bb-foundation-http.mjs +4 -4
  184. package/esm2020/http/lib/classes/http.config.mjs +29 -29
  185. package/esm2020/http/lib/classes/http.error.mjs +20 -20
  186. package/esm2020/http/lib/http.interfaces.mjs +2 -2
  187. package/esm2020/http/lib/http.module.mjs +43 -43
  188. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +50 -50
  189. package/esm2020/http/lib/interceptors/error.interceptor.mjs +32 -32
  190. package/esm2020/http/public_api.mjs +7 -7
  191. package/esm2020/lib/core/miscellaneous/regex.mjs +5 -5
  192. package/esm2020/lib/core/miscellaneous/validator.mjs +85 -85
  193. package/esm2020/lib/core/mixins/can-disable.mjs +16 -16
  194. package/esm2020/lib/core/mixins/can-hide-errors.mjs +16 -16
  195. package/esm2020/lib/core/mixins/can-load.mjs +16 -16
  196. package/esm2020/lib/core/mixins/constructor.mjs +2 -2
  197. package/esm2020/lib/core/mixins/has-error.mjs +16 -16
  198. package/esm2020/lib/core/mixins/is-focused.mjs +16 -16
  199. package/esm2020/lib/core/mixins/is-grouped.mjs +16 -16
  200. package/esm2020/lib/core/mixins/is-readonly.mjs +16 -16
  201. package/esm2020/lib/core/mixins/is-required.mjs +16 -16
  202. package/esm2020/lib/core/services/clipboard.service.mjs +70 -70
  203. package/esm2020/lib/core/services/exif.service.mjs +163 -163
  204. package/esm2020/lib/core/services/file-loader.service.mjs +87 -87
  205. package/esm2020/lib/core/services/image-converter.service.mjs +123 -123
  206. package/esm2020/lib/core/services/languages.service.mjs +74 -74
  207. package/esm2020/lib/core/services/network.service.mjs +55 -55
  208. package/esm2020/lib/core/services/patch.service.mjs +63 -63
  209. package/esm2020/lib/core/services/platform.service.mjs +42 -42
  210. package/esm2020/lib/core/tokens/accept-language.token.mjs +3 -3
  211. package/esm2020/lib/core/tokens/base-url.token.mjs +3 -3
  212. package/esm2020/lib/core/tokens/cookie.token.mjs +3 -3
  213. package/esm2020/lib/core/tokens/location.token.mjs +6 -6
  214. package/esm2020/lib/core/tokens/navigator.token.mjs +6 -6
  215. package/esm2020/lib/core/tokens/window.token.mjs +12 -12
  216. package/esm2020/localize/bravobit-bb-foundation-localize.mjs +4 -4
  217. package/esm2020/localize/lib/functions/date.function.mjs +18 -18
  218. package/esm2020/localize/lib/functions/lowercase.function.mjs +13 -13
  219. package/esm2020/localize/lib/functions/uppercase.function.mjs +13 -13
  220. package/esm2020/localize/lib/handlers/missing.handler.mjs +15 -15
  221. package/esm2020/localize/lib/interfaces/config.interfaces.mjs +7 -7
  222. package/esm2020/localize/lib/interfaces/functions.interfaces.mjs +8 -8
  223. package/esm2020/localize/lib/interfaces/handlers.interfaces.mjs +2 -2
  224. package/esm2020/localize/lib/interfaces/options.interfaces.mjs +6 -6
  225. package/esm2020/localize/lib/localizations/dutch.localization.mjs +45 -45
  226. package/esm2020/localize/lib/localizations/english.localization.mjs +45 -45
  227. package/esm2020/localize/lib/localize.dictionary.mjs +26 -26
  228. package/esm2020/localize/lib/localize.module.mjs +71 -71
  229. package/esm2020/localize/lib/localize.pipe.mjs +49 -49
  230. package/esm2020/localize/lib/localize.service.mjs +207 -207
  231. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +88 -88
  232. package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +28 -28
  233. package/esm2020/localize/lib/views/localize-template.directive.mjs +21 -21
  234. package/esm2020/localize/public_api.mjs +17 -17
  235. package/esm2020/masking/bravobit-bb-foundation-masking.mjs +4 -4
  236. package/esm2020/masking/lib/input-mask.directive.mjs +117 -110
  237. package/esm2020/masking/lib/input-mask.interface.mjs +2 -2
  238. package/esm2020/masking/lib/masking.module.mjs +16 -16
  239. package/esm2020/masking/lib/masking.service.mjs +103 -94
  240. package/esm2020/masking/public_api.mjs +5 -5
  241. package/esm2020/notifications/bravobit-bb-foundation-notifications.mjs +4 -4
  242. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +100 -100
  243. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +47 -47
  244. package/esm2020/notifications/lib/notifications.animations.mjs +28 -28
  245. package/esm2020/notifications/lib/notifications.injector.mjs +18 -18
  246. package/esm2020/notifications/lib/notifications.interfaces.mjs +20 -20
  247. package/esm2020/notifications/lib/notifications.module.mjs +30 -30
  248. package/esm2020/notifications/lib/notifications.service.mjs +145 -145
  249. package/esm2020/notifications/public_api.mjs +4 -4
  250. package/esm2020/public_api.mjs +29 -29
  251. package/esm2020/recaptcha/bravobit-bb-foundation-recaptcha.mjs +4 -4
  252. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +185 -185
  253. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +90 -90
  254. package/esm2020/recaptcha/lib/recaptcha.interface.mjs +3 -3
  255. package/esm2020/recaptcha/lib/recaptcha.module.mjs +27 -27
  256. package/esm2020/recaptcha/public_api.mjs +5 -5
  257. package/esm2020/rxjs/bravobit-bb-foundation-rxjs.mjs +4 -4
  258. package/esm2020/rxjs/lib/observables/get-control-value.observable.mjs +6 -0
  259. package/esm2020/rxjs/lib/operators/combine-latest-map.operator.mjs +10 -10
  260. package/esm2020/rxjs/lib/operators/filter-nil.operator.mjs +5 -5
  261. package/esm2020/rxjs/public_api.mjs +4 -3
  262. package/esm2020/storage/bravobit-bb-foundation-storage.mjs +4 -4
  263. package/esm2020/storage/lib/interfaces/attributes.interface.mjs +2 -2
  264. package/esm2020/storage/lib/interfaces/memory.interface.mjs +2 -2
  265. package/esm2020/storage/lib/interfaces/strategy.interface.mjs +2 -2
  266. package/esm2020/storage/lib/storage.service.mjs +109 -109
  267. package/esm2020/storage/lib/strategies/cookie-storage.strategy.mjs +142 -142
  268. package/esm2020/storage/lib/strategies/memory-storage.strategy.mjs +56 -56
  269. package/esm2020/storage/lib/strategies/polyfill-storage.strategy.mjs +102 -102
  270. package/esm2020/storage/public_api.mjs +8 -8
  271. package/esm2020/table/bravobit-bb-foundation-table.mjs +4 -4
  272. package/esm2020/table/lib/components/table/table.component.mjs +191 -191
  273. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +11 -11
  274. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +131 -131
  275. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +136 -136
  276. package/esm2020/table/lib/data/datasource.data.mjs +32 -32
  277. package/esm2020/table/lib/data/generic.data.mjs +72 -72
  278. package/esm2020/table/lib/interfaces/datasource.interface.mjs +2 -2
  279. package/esm2020/table/lib/interfaces/table.interfaces.mjs +2 -2
  280. package/esm2020/table/lib/table.module.mjs +42 -42
  281. package/esm2020/table/public_api.mjs +10 -10
  282. package/esm2020/theming/bravobit-bb-foundation-theming.mjs +4 -4
  283. package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +2 -2
  284. package/esm2020/theming/lib/themes/checkbox.theme.mjs +2 -2
  285. package/esm2020/theming/lib/themes/theme.mjs +34 -0
  286. package/esm2020/theming/lib/theming.interface.mjs +3 -3
  287. package/esm2020/theming/lib/theming.module.mjs +38 -38
  288. package/esm2020/theming/lib/theming.service.mjs +77 -100
  289. package/esm2020/theming/public_api.mjs +7 -4
  290. package/fesm2015/bravobit-bb-foundation-auth.mjs +930 -930
  291. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  292. package/fesm2015/bravobit-bb-foundation-collections.mjs +443 -424
  293. package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
  294. package/fesm2015/bravobit-bb-foundation-controls.mjs +229 -229
  295. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
  296. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +382 -382
  297. package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  298. package/fesm2015/bravobit-bb-foundation-dialog.mjs +540 -540
  299. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
  300. package/fesm2015/bravobit-bb-foundation-elements.mjs +1970 -1970
  301. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  302. package/fesm2015/bravobit-bb-foundation-http.mjs +156 -156
  303. package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
  304. package/fesm2015/bravobit-bb-foundation-localize.mjs +608 -608
  305. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
  306. package/fesm2015/bravobit-bb-foundation-masking.mjs +231 -214
  307. package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -1
  308. package/fesm2015/bravobit-bb-foundation-notifications.mjs +348 -348
  309. package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
  310. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +290 -290
  311. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  312. package/fesm2015/bravobit-bb-foundation-rxjs.mjs +14 -10
  313. package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  314. package/fesm2015/bravobit-bb-foundation-storage.mjs +401 -401
  315. package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
  316. package/fesm2015/bravobit-bb-foundation-table.mjs +571 -571
  317. package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
  318. package/fesm2015/bravobit-bb-foundation-theming.mjs +151 -140
  319. package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
  320. package/fesm2015/bravobit-bb-foundation.mjs +859 -859
  321. package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
  322. package/fesm2020/bravobit-bb-foundation-auth.mjs +882 -882
  323. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  324. package/fesm2020/bravobit-bb-foundation-collections.mjs +432 -414
  325. package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
  326. package/fesm2020/bravobit-bb-foundation-controls.mjs +227 -227
  327. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
  328. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +370 -370
  329. package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  330. package/fesm2020/bravobit-bb-foundation-dialog.mjs +539 -539
  331. package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
  332. package/fesm2020/bravobit-bb-foundation-elements.mjs +1927 -1927
  333. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  334. package/fesm2020/bravobit-bb-foundation-http.mjs +148 -148
  335. package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
  336. package/fesm2020/bravobit-bb-foundation-localize.mjs +587 -587
  337. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
  338. package/fesm2020/bravobit-bb-foundation-masking.mjs +219 -203
  339. package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -1
  340. package/fesm2020/bravobit-bb-foundation-notifications.mjs +346 -346
  341. package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
  342. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +280 -280
  343. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  344. package/fesm2020/bravobit-bb-foundation-rxjs.mjs +17 -13
  345. package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  346. package/fesm2020/bravobit-bb-foundation-storage.mjs +396 -396
  347. package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
  348. package/fesm2020/bravobit-bb-foundation-table.mjs +560 -560
  349. package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
  350. package/fesm2020/bravobit-bb-foundation-theming.mjs +141 -130
  351. package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
  352. package/fesm2020/bravobit-bb-foundation.mjs +831 -831
  353. package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
  354. package/http/index.d.ts +5 -5
  355. package/http/lib/classes/http.config.d.ts +9 -9
  356. package/http/lib/classes/http.error.d.ts +7 -7
  357. package/http/lib/http.interfaces.d.ts +12 -12
  358. package/http/lib/http.module.d.ts +15 -15
  359. package/http/lib/interceptors/base-url.interceptor.d.ts +15 -15
  360. package/http/lib/interceptors/error.interceptor.d.ts +11 -11
  361. package/http/public_api.d.ts +6 -6
  362. package/index.d.ts +5 -5
  363. package/lib/core/miscellaneous/regex.d.ts +4 -4
  364. package/lib/core/miscellaneous/validator.d.ts +13 -13
  365. package/lib/core/mixins/can-disable.d.ts +6 -6
  366. package/lib/core/mixins/can-hide-errors.d.ts +6 -6
  367. package/lib/core/mixins/can-load.d.ts +6 -6
  368. package/lib/core/mixins/constructor.d.ts +1 -1
  369. package/lib/core/mixins/has-error.d.ts +6 -6
  370. package/lib/core/mixins/is-focused.d.ts +6 -6
  371. package/lib/core/mixins/is-grouped.d.ts +6 -6
  372. package/lib/core/mixins/is-readonly.d.ts +6 -6
  373. package/lib/core/mixins/is-required.d.ts +6 -6
  374. package/lib/core/services/clipboard.service.d.ts +18 -18
  375. package/lib/core/services/exif.service.d.ts +15 -15
  376. package/lib/core/services/file-loader.service.d.ts +13 -13
  377. package/lib/core/services/image-converter.service.d.ts +21 -21
  378. package/lib/core/services/languages.service.d.ts +16 -16
  379. package/lib/core/services/network.service.d.ts +14 -14
  380. package/lib/core/services/patch.service.d.ts +16 -16
  381. package/lib/core/services/platform.service.d.ts +18 -18
  382. package/lib/core/tokens/accept-language.token.d.ts +2 -2
  383. package/lib/core/tokens/base-url.token.d.ts +2 -2
  384. package/lib/core/tokens/cookie.token.d.ts +2 -2
  385. package/lib/core/tokens/location.token.d.ts +2 -2
  386. package/lib/core/tokens/navigator.token.d.ts +2 -2
  387. package/lib/core/tokens/window.token.d.ts +2 -2
  388. package/localize/index.d.ts +5 -5
  389. package/localize/lib/functions/date.function.d.ts +5 -5
  390. package/localize/lib/functions/lowercase.function.d.ts +5 -5
  391. package/localize/lib/functions/uppercase.function.d.ts +5 -5
  392. package/localize/lib/handlers/missing.handler.d.ts +6 -6
  393. package/localize/lib/interfaces/config.interfaces.d.ts +18 -18
  394. package/localize/lib/interfaces/functions.interfaces.d.ts +9 -9
  395. package/localize/lib/interfaces/handlers.interfaces.d.ts +6 -6
  396. package/localize/lib/interfaces/options.interfaces.d.ts +10 -10
  397. package/localize/lib/localizations/dutch.localization.d.ts +44 -44
  398. package/localize/lib/localizations/english.localization.d.ts +44 -44
  399. package/localize/lib/localize.dictionary.d.ts +7 -7
  400. package/localize/lib/localize.module.d.ts +17 -17
  401. package/localize/lib/localize.pipe.d.ts +12 -12
  402. package/localize/lib/localize.service.d.ts +40 -40
  403. package/localize/lib/views/localize-string/localize-string.component.d.ts +23 -23
  404. package/localize/lib/views/localize-template-or-string.directive.d.ts +10 -10
  405. package/localize/lib/views/localize-template.directive.d.ts +9 -9
  406. package/localize/public_api.d.ts +16 -16
  407. package/masking/index.d.ts +5 -5
  408. package/masking/lib/input-mask.directive.d.ts +38 -36
  409. package/masking/lib/input-mask.interface.d.ts +24 -20
  410. package/masking/lib/masking.module.d.ts +7 -7
  411. package/masking/lib/masking.service.d.ts +12 -12
  412. package/masking/public_api.d.ts +4 -4
  413. package/notifications/index.d.ts +5 -5
  414. package/notifications/lib/notifications-item/notifications-item.component.d.ts +34 -34
  415. package/notifications/lib/notifications-list/notifications-list.component.d.ts +16 -16
  416. package/notifications/lib/notifications.animations.d.ts +1 -1
  417. package/notifications/lib/notifications.injector.d.ts +8 -8
  418. package/notifications/lib/notifications.interfaces.d.ts +49 -49
  419. package/notifications/lib/notifications.module.d.ts +13 -13
  420. package/notifications/lib/notifications.service.d.ts +34 -34
  421. package/notifications/public_api.d.ts +3 -3
  422. package/package.json +1 -1
  423. package/public_api.d.ts +25 -25
  424. package/recaptcha/index.d.ts +5 -5
  425. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +47 -47
  426. package/recaptcha/lib/recaptcha-loader.service.d.ts +22 -22
  427. package/recaptcha/lib/recaptcha.interface.d.ts +14 -14
  428. package/recaptcha/lib/recaptcha.module.d.ts +10 -10
  429. package/recaptcha/public_api.d.ts +4 -4
  430. package/rxjs/index.d.ts +5 -5
  431. package/rxjs/lib/observables/get-control-value.observable.d.ts +3 -0
  432. package/rxjs/lib/operators/combine-latest-map.operator.d.ts +8 -8
  433. package/rxjs/lib/operators/filter-nil.operator.d.ts +1 -1
  434. package/rxjs/public_api.d.ts +3 -2
  435. package/storage/index.d.ts +5 -5
  436. package/storage/lib/interfaces/attributes.interface.d.ts +13 -13
  437. package/storage/lib/interfaces/memory.interface.d.ts +7 -7
  438. package/storage/lib/interfaces/strategy.interface.d.ts +17 -17
  439. package/storage/lib/storage.service.d.ts +26 -26
  440. package/storage/lib/strategies/cookie-storage.strategy.d.ts +20 -20
  441. package/storage/lib/strategies/memory-storage.strategy.d.ts +11 -11
  442. package/storage/lib/strategies/polyfill-storage.strategy.d.ts +15 -15
  443. package/storage/public_api.d.ts +7 -7
  444. package/table/index.d.ts +5 -5
  445. package/table/lib/components/table/table.component.d.ts +56 -56
  446. package/table/lib/components/table-cell/table-cell.component.d.ts +5 -5
  447. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +29 -29
  448. package/table/lib/components/table-pager/table-pager.component.d.ts +41 -41
  449. package/table/lib/data/datasource.data.d.ts +14 -14
  450. package/table/lib/data/generic.data.d.ts +23 -23
  451. package/table/lib/interfaces/datasource.interface.d.ts +17 -17
  452. package/table/lib/interfaces/table.interfaces.d.ts +1 -1
  453. package/table/lib/table.module.d.ts +14 -14
  454. package/table/public_api.d.ts +9 -9
  455. package/theming/index.d.ts +5 -5
  456. package/theming/lib/themes/checkbox-group.theme.d.ts +5 -5
  457. package/theming/lib/themes/checkbox.theme.d.ts +19 -19
  458. package/theming/lib/themes/theme.d.ts +12 -0
  459. package/theming/lib/theming.interface.d.ts +15 -14
  460. package/theming/lib/theming.module.d.ts +13 -13
  461. package/theming/lib/theming.service.d.ts +22 -24
  462. package/theming/public_api.d.ts +6 -3
@@ -1,56 +1,56 @@
1
- import { distinctUntilChanged, map } from 'rxjs/operators';
2
- import { Injectable, Optional } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./auth.service";
5
- import * as i2 from "./interfaces/config.interface";
6
- export class Permissions {
7
- constructor(_auth, _config) {
8
- this._auth = _auth;
9
- this._config = _config;
10
- // Data.
11
- this._permissions = this._config?.permissions ?? {};
12
- this._role$ = this._auth.user.pipe(map(user => user?.role ?? null), distinctUntilChanged());
13
- }
14
- has(value) {
15
- const requiredPermissions = Array.isArray(value)
16
- ? value
17
- : [value];
18
- return this._role$.pipe(map(role => {
19
- if (role === null || role === undefined) {
20
- return false;
21
- }
22
- for (const requiredPermission of requiredPermissions) {
23
- const result = this.validatePermission(requiredPermission, role);
24
- if (!result) {
25
- return false;
26
- }
27
- }
28
- return true;
29
- }));
30
- }
31
- validatePermission(type, role) {
32
- const permission = this._permissions?.[type] ?? null;
33
- if (!permission) {
34
- console?.warn?.(`Permissions: Invalid permission requested "${type}".`);
35
- return false;
36
- }
37
- if (permission?.length <= 0) {
38
- console?.warn?.(`Permissions: No roles were set, please add some roles to this permission.`);
39
- return false;
40
- }
41
- // If the permission includes a "*" we allow everyone.
42
- if (permission.includes('*')) {
43
- return true;
44
- }
45
- // Validate the role against the permissions.
46
- return permission?.includes(role) ?? false;
47
- }
48
- }
49
- Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Permissions, deps: [{ token: i1.Auth }, { token: i2.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
50
- Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Permissions });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Permissions, decorators: [{
52
- type: Injectable
53
- }], ctorParameters: function () { return [{ type: i1.Auth }, { type: i2.AuthConfig, decorators: [{
54
- type: Optional
55
- }] }]; } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBSW5ELE1BQU0sT0FBTyxXQUFXO0lBU3BCLFlBQW9CLEtBQVcsRUFDQyxPQUFvQjtRQURoQyxVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQ0MsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQVJwRCxRQUFRO1FBQ1MsaUJBQVksR0FBdUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ25GLFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFjLElBQUksSUFBSSxDQUFDLEVBQ3pDLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFJRixDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQXdCO1FBQ3hCLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDNUMsQ0FBQyxDQUFDLEtBQUs7WUFDUCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNQLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUNyQyxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELEtBQUssTUFBTSxrQkFBa0IsSUFBSSxtQkFBbUIsRUFBRTtnQkFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNULE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsOENBQThDLElBQUksSUFBSSxDQUFDLENBQUM7WUFDeEUsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsNkNBQTZDO1FBQzdDLE9BQU8sVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQzs7d0dBdERRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFXTSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7QXV0aENvbmZpZ30gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0luamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBdXRofSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ucyB7XHJcblxyXG4gICAgLy8gRGF0YS5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Blcm1pc3Npb25zOiB7IFtwZXJtaXNzaW9uOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0gdGhpcy5fY29uZmlnPy5wZXJtaXNzaW9ucyA/PyB7fTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JvbGUkID0gdGhpcy5fYXV0aC51c2VyLnBpcGUoXHJcbiAgICAgICAgbWFwKHVzZXIgPT4gdXNlcj8ucm9sZSBhcyBzdHJpbmcgPz8gbnVsbCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdXRoOiBBdXRoLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29uZmlnPzogQXV0aENvbmZpZykge1xyXG4gICAgfVxyXG5cclxuICAgIGhhcyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICAgICAgICBjb25zdCByZXF1aXJlZFBlcm1pc3Npb25zID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICAgICAgPyB2YWx1ZVxyXG4gICAgICAgICAgICA6IFt2YWx1ZV07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb2xlJC5waXBlKFxyXG4gICAgICAgICAgICBtYXAocm9sZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocm9sZSA9PT0gbnVsbCB8fCByb2xlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXF1aXJlZFBlcm1pc3Npb24gb2YgcmVxdWlyZWRQZXJtaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudmFsaWRhdGVQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbiwgcm9sZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJtaXNzaW9uKHR5cGU6IHN0cmluZywgcm9sZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHRoaXMuX3Blcm1pc3Npb25zPy5bdHlwZV0gPz8gbnVsbDtcclxuICAgICAgICBpZiAoIXBlcm1pc3Npb24pIHtcclxuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBQZXJtaXNzaW9uczogSW52YWxpZCBwZXJtaXNzaW9uIHJlcXVlc3RlZCBcIiR7dHlwZX1cIi5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGVybWlzc2lvbj8ubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBQZXJtaXNzaW9uczogTm8gcm9sZXMgd2VyZSBzZXQsIHBsZWFzZSBhZGQgc29tZSByb2xlcyB0byB0aGlzIHBlcm1pc3Npb24uYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBwZXJtaXNzaW9uIGluY2x1ZGVzIGEgXCIqXCIgd2UgYWxsb3cgZXZlcnlvbmUuXHJcbiAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5jbHVkZXMoJyonKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSByb2xlIGFnYWluc3QgdGhlIHBlcm1pc3Npb25zLlxyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uPy5pbmNsdWRlcyhyb2xlKSA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
1
+ import { distinctUntilChanged, map } from 'rxjs/operators';
2
+ import { Injectable, Optional } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./auth.service";
5
+ import * as i2 from "./interfaces/config.interface";
6
+ export class Permissions {
7
+ constructor(_auth, _config) {
8
+ this._auth = _auth;
9
+ this._config = _config;
10
+ // Data.
11
+ this._permissions = this._config?.permissions ?? {};
12
+ this._role$ = this._auth.user.pipe(map(user => user?.role ?? null), distinctUntilChanged());
13
+ }
14
+ has(value) {
15
+ const requiredPermissions = Array.isArray(value)
16
+ ? value
17
+ : [value];
18
+ return this._role$.pipe(map(role => {
19
+ if (role === null || role === undefined) {
20
+ return false;
21
+ }
22
+ for (const requiredPermission of requiredPermissions) {
23
+ const result = this.validatePermission(requiredPermission, role);
24
+ if (!result) {
25
+ return false;
26
+ }
27
+ }
28
+ return true;
29
+ }));
30
+ }
31
+ validatePermission(type, role) {
32
+ const permission = this._permissions?.[type] ?? null;
33
+ if (!permission) {
34
+ console?.warn?.(`Permissions: Invalid permission requested "${type}".`);
35
+ return false;
36
+ }
37
+ if (permission?.length <= 0) {
38
+ console?.warn?.(`Permissions: No roles were set, please add some roles to this permission.`);
39
+ return false;
40
+ }
41
+ // If the permission includes a "*" we allow everyone.
42
+ if (permission.includes('*')) {
43
+ return true;
44
+ }
45
+ // Validate the role against the permissions.
46
+ return permission?.includes(role) ?? false;
47
+ }
48
+ }
49
+ Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Permissions, deps: [{ token: i1.Auth }, { token: i2.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
50
+ Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Permissions });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Permissions, decorators: [{
52
+ type: Injectable
53
+ }], ctorParameters: function () { return [{ type: i1.Auth }, { type: i2.AuthConfig, decorators: [{
54
+ type: Optional
55
+ }] }]; } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBSW5ELE1BQU0sT0FBTyxXQUFXO0lBU3BCLFlBQW9CLEtBQVcsRUFDQyxPQUFvQjtRQURoQyxVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQ0MsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQVJwRCxRQUFRO1FBQ1MsaUJBQVksR0FBdUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ25GLFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFjLElBQUksSUFBSSxDQUFDLEVBQ3pDLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFJRixDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQXdCO1FBQ3hCLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDNUMsQ0FBQyxDQUFDLEtBQUs7WUFDUCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNQLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUNyQyxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELEtBQUssTUFBTSxrQkFBa0IsSUFBSSxtQkFBbUIsRUFBRTtnQkFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNULE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsOENBQThDLElBQUksSUFBSSxDQUFDLENBQUM7WUFDeEUsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsNkNBQTZDO1FBQzdDLE9BQU8sVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQzs7d0dBdERRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFXTSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0F1dGhDb25maWd9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBdXRofSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ucyB7XG5cbiAgICAvLyBEYXRhLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Blcm1pc3Npb25zOiB7IFtwZXJtaXNzaW9uOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0gdGhpcy5fY29uZmlnPy5wZXJtaXNzaW9ucyA/PyB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yb2xlJCA9IHRoaXMuX2F1dGgudXNlci5waXBlKFxuICAgICAgICBtYXAodXNlciA9PiB1c2VyPy5yb2xlIGFzIHN0cmluZyA/PyBudWxsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdXRoOiBBdXRoLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZz86IEF1dGhDb25maWcpIHtcbiAgICB9XG5cbiAgICBoYXModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBbdmFsdWVdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9yb2xlJC5waXBlKFxuICAgICAgICAgICAgbWFwKHJvbGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBudWxsIHx8IHJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXF1aXJlZFBlcm1pc3Npb24gb2YgcmVxdWlyZWRQZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnZhbGlkYXRlUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb24sIHJvbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJtaXNzaW9uKHR5cGU6IHN0cmluZywgcm9sZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSB0aGlzLl9wZXJtaXNzaW9ucz8uW3R5cGVdID8/IG51bGw7XG4gICAgICAgIGlmICghcGVybWlzc2lvbikge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBQZXJtaXNzaW9uczogSW52YWxpZCBwZXJtaXNzaW9uIHJlcXVlc3RlZCBcIiR7dHlwZX1cIi5gKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVybWlzc2lvbj8ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGU/Lndhcm4/LihgUGVybWlzc2lvbnM6IE5vIHJvbGVzIHdlcmUgc2V0LCBwbGVhc2UgYWRkIHNvbWUgcm9sZXMgdG8gdGhpcyBwZXJtaXNzaW9uLmApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIHBlcm1pc3Npb24gaW5jbHVkZXMgYSBcIipcIiB3ZSBhbGxvdyBldmVyeW9uZS5cbiAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5jbHVkZXMoJyonKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgcm9sZSBhZ2FpbnN0IHRoZSBwZXJtaXNzaW9ucy5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb24/LmluY2x1ZGVzKHJvbGUpID8/IGZhbHNlO1xuICAgIH1cblxufVxuIl19
@@ -1,25 +1,25 @@
1
- import { firstValueFrom } from 'rxjs';
2
- export class AuthEmailProvider {
3
- constructor(_email, _password, _endpoint) {
4
- this._email = _email;
5
- this._password = _password;
6
- this._endpoint = _endpoint;
7
- }
8
- async authenticate(httpClient) {
9
- // Execute API call.
10
- const data$ = await httpClient.post(this._endpoint, {
11
- email: this._email,
12
- password: this._password
13
- });
14
- const { token, refresh_token, user, provider, verify_token } = await firstValueFrom(data$);
15
- // Map the data to the correct format.
16
- return {
17
- accessToken: token,
18
- refreshToken: refresh_token,
19
- user: user,
20
- provider: provider,
21
- verifyToken: verify_token
22
- };
23
- }
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9wcm92aWRlcnMvZW1haWwucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLE9BQU8saUJBQWlCO0lBRTFCLFlBQW9CLE1BQWMsRUFDZCxTQUFpQixFQUNqQixTQUFpQjtRQUZqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQ3JDLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekYsc0NBQXNDO1FBQ3RDLE9BQU87WUFDSCxXQUFXLEVBQUUsS0FBSztZQUNsQixZQUFZLEVBQUUsYUFBYTtZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxZQUFZO1NBQzVCLENBQUM7SUFDTixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhQcm92aWRlcn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aEVtYWlsUHJvdmlkZXIgaW1wbGVtZW50cyBBdXRoUHJvdmlkZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VtYWlsOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZykge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZShodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XHJcbiAgICAgICAgLy8gRXhlY3V0ZSBBUEkgY2FsbC5cclxuICAgICAgICBjb25zdCBkYXRhJCA9IGF3YWl0IGh0dHBDbGllbnQucG9zdDxhbnk+KHRoaXMuX2VuZHBvaW50LCB7XHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLl9lbWFpbCxcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMuX3Bhc3N3b3JkXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHt0b2tlbiwgcmVmcmVzaF90b2tlbiwgdXNlciwgcHJvdmlkZXIsIHZlcmlmeV90b2tlbn0gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShkYXRhJCk7XHJcblxyXG4gICAgICAgIC8vIE1hcCB0aGUgZGF0YSB0byB0aGUgY29ycmVjdCBmb3JtYXQuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWNjZXNzVG9rZW46IHRva2VuLFxyXG4gICAgICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sXHJcbiAgICAgICAgICAgIHVzZXI6IHVzZXIsXHJcbiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlcixcclxuICAgICAgICAgICAgdmVyaWZ5VG9rZW46IHZlcmlmeV90b2tlblxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
1
+ import { firstValueFrom } from 'rxjs';
2
+ export class AuthEmailProvider {
3
+ constructor(_email, _password, _endpoint) {
4
+ this._email = _email;
5
+ this._password = _password;
6
+ this._endpoint = _endpoint;
7
+ }
8
+ async authenticate(httpClient) {
9
+ // Execute API call.
10
+ const data$ = await httpClient.post(this._endpoint, {
11
+ email: this._email,
12
+ password: this._password
13
+ });
14
+ const { token, refresh_token, user, provider, verify_token } = await firstValueFrom(data$);
15
+ // Map the data to the correct format.
16
+ return {
17
+ accessToken: token,
18
+ refreshToken: refresh_token,
19
+ user: user,
20
+ provider: provider,
21
+ verifyToken: verify_token
22
+ };
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9wcm92aWRlcnMvZW1haWwucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLE9BQU8saUJBQWlCO0lBRTFCLFlBQW9CLE1BQWMsRUFDZCxTQUFpQixFQUNqQixTQUFpQjtRQUZqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQ3JDLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekYsc0NBQXNDO1FBQ3RDLE9BQU87WUFDSCxXQUFXLEVBQUUsS0FBSztZQUNsQixZQUFZLEVBQUUsYUFBYTtZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxZQUFZO1NBQzVCLENBQUM7SUFDTixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhQcm92aWRlcn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEF1dGhFbWFpbFByb3ZpZGVyIGltcGxlbWVudHMgQXV0aFByb3ZpZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VtYWlsOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGFzc3dvcmQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgYXV0aGVudGljYXRlKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgLy8gRXhlY3V0ZSBBUEkgY2FsbC5cbiAgICAgICAgY29uc3QgZGF0YSQgPSBhd2FpdCBodHRwQ2xpZW50LnBvc3Q8YW55Pih0aGlzLl9lbmRwb2ludCwge1xuICAgICAgICAgICAgZW1haWw6IHRoaXMuX2VtYWlsLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMuX3Bhc3N3b3JkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHt0b2tlbiwgcmVmcmVzaF90b2tlbiwgdXNlciwgcHJvdmlkZXIsIHZlcmlmeV90b2tlbn0gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShkYXRhJCk7XG5cbiAgICAgICAgLy8gTWFwIHRoZSBkYXRhIHRvIHRoZSBjb3JyZWN0IGZvcm1hdC5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbixcbiAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgIHVzZXI6IHVzZXIsXG4gICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXIsXG4gICAgICAgICAgICB2ZXJpZnlUb2tlbjogdmVyaWZ5X3Rva2VuXG4gICAgICAgIH07XG4gICAgfVxuXG59XG4iXX0=
@@ -1,19 +1,19 @@
1
- import { firstValueFrom } from 'rxjs';
2
- export class AuthVerifyProvider {
3
- constructor(_code, _verifyToken, _endpoint) {
4
- this._code = _code;
5
- this._verifyToken = _verifyToken;
6
- this._endpoint = _endpoint;
7
- }
8
- async authenticate(httpClient) {
9
- // Execute API call.
10
- const data$ = await httpClient.post(this._endpoint, {
11
- token: this._code,
12
- verify_token: this._verifyToken
13
- });
14
- const { token, refresh_token, user } = await firstValueFrom(data$);
15
- // Map the data to the correct format.
16
- return { accessToken: token, refreshToken: refresh_token, user: user };
17
- }
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvcHJvdmlkZXJzL3ZlcmlmeS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsWUFBb0IsS0FBYSxFQUNiLFlBQW9CLEVBQ3BCLFNBQWlCO1FBRmpCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQ3JDLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2xDLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBQyxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpFLHNDQUFzQztRQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUN6RSxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhQcm92aWRlcn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aFZlcmlmeVByb3ZpZGVyIGltcGxlbWVudHMgQXV0aFByb3ZpZGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb2RlOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF92ZXJpZnlUb2tlbjogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZykge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZShodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XHJcbiAgICAgICAgLy8gRXhlY3V0ZSBBUEkgY2FsbC5cclxuICAgICAgICBjb25zdCBkYXRhJCA9IGF3YWl0IGh0dHBDbGllbnQucG9zdDxhbnk+KHRoaXMuX2VuZHBvaW50LCB7XHJcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLl9jb2RlLFxyXG4gICAgICAgICAgICB2ZXJpZnlfdG9rZW46IHRoaXMuX3ZlcmlmeVRva2VuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHt0b2tlbiwgcmVmcmVzaF90b2tlbiwgdXNlcn0gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShkYXRhJCk7XHJcblxyXG4gICAgICAgIC8vIE1hcCB0aGUgZGF0YSB0byB0aGUgY29ycmVjdCBmb3JtYXQuXHJcbiAgICAgICAgcmV0dXJuIHthY2Nlc3NUb2tlbjogdG9rZW4sIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbiwgdXNlcjogdXNlcn07XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
1
+ import { firstValueFrom } from 'rxjs';
2
+ export class AuthVerifyProvider {
3
+ constructor(_code, _verifyToken, _endpoint) {
4
+ this._code = _code;
5
+ this._verifyToken = _verifyToken;
6
+ this._endpoint = _endpoint;
7
+ }
8
+ async authenticate(httpClient) {
9
+ // Execute API call.
10
+ const data$ = await httpClient.post(this._endpoint, {
11
+ token: this._code,
12
+ verify_token: this._verifyToken
13
+ });
14
+ const { token, refresh_token, user } = await firstValueFrom(data$);
15
+ // Map the data to the correct format.
16
+ return { accessToken: token, refreshToken: refresh_token, user: user };
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvcHJvdmlkZXJzL3ZlcmlmeS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsWUFBb0IsS0FBYSxFQUNiLFlBQW9CLEVBQ3BCLFNBQWlCO1FBRmpCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQ3JDLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2xDLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBQyxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpFLHNDQUFzQztRQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUN6RSxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhQcm92aWRlcn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEF1dGhWZXJpZnlQcm92aWRlciBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb2RlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmVyaWZ5VG9rZW46IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgYXV0aGVudGljYXRlKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgLy8gRXhlY3V0ZSBBUEkgY2FsbC5cbiAgICAgICAgY29uc3QgZGF0YSQgPSBhd2FpdCBodHRwQ2xpZW50LnBvc3Q8YW55Pih0aGlzLl9lbmRwb2ludCwge1xuICAgICAgICAgICAgdG9rZW46IHRoaXMuX2NvZGUsXG4gICAgICAgICAgICB2ZXJpZnlfdG9rZW46IHRoaXMuX3ZlcmlmeVRva2VuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHt0b2tlbiwgcmVmcmVzaF90b2tlbiwgdXNlcn0gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShkYXRhJCk7XG5cbiAgICAgICAgLy8gTWFwIHRoZSBkYXRhIHRvIHRoZSBjb3JyZWN0IGZvcm1hdC5cbiAgICAgICAgcmV0dXJuIHthY2Nlc3NUb2tlbjogdG9rZW4sIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbiwgdXNlcjogdXNlcn07XG4gICAgfVxuXG59XG4iXX0=
@@ -1,3 +1,3 @@
1
- import { HttpContextToken } from '@angular/common/http';
2
- export const USE_AUTHORIZATION = new HttpContextToken(() => true);
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWF1dGhvcml6YXRpb24udG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi90b2tlbnMvdXNlLWF1dGhvcml6YXRpb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENvbnRleHRUb2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVTRV9BVVRIT1JJWkFUSU9OID0gbmV3IEh0dHBDb250ZXh0VG9rZW4oKCkgPT4gdHJ1ZSk7Il19
1
+ import { HttpContextToken } from '@angular/common/http';
2
+ export const USE_AUTHORIZATION = new HttpContextToken(() => true);
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWF1dGhvcml6YXRpb24udG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi90b2tlbnMvdXNlLWF1dGhvcml6YXRpb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENvbnRleHRUb2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5leHBvcnQgY29uc3QgVVNFX0FVVEhPUklaQVRJT04gPSBuZXcgSHR0cENvbnRleHRUb2tlbigoKSA9PiB0cnVlKTsiXX0=
@@ -1,19 +1,19 @@
1
- export * from './lib/interfaces/token.interface';
2
- export * from './lib/interfaces/config.interface';
3
- export * from './lib/interfaces/mapper.interface';
4
- export * from './lib/interfaces/provider.interface';
5
- export * from './lib/tokens/use-authorization.token';
6
- export * from './lib/helpers/jwt.helper';
7
- export * from './lib/helpers/mapper.helper';
8
- export * from './lib/directives/authenticated.directive';
9
- export * from './lib/directives/role.directive';
10
- export * from './lib/directives/permission.directive';
11
- export * from './lib/guards/anonymous.guard';
12
- export * from './lib/guards/authenticated.guard';
13
- export * from './lib/providers/email.provider';
14
- export * from './lib/providers/verify.provider';
15
- export * from './lib/auth.session';
16
- export * from './lib/auth.service';
17
- export * from './lib/permissions.service';
18
- export * from './lib/auth.module';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBELGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvdG9rZW4uaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9tYXBwZXIuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zL3VzZS1hdXRob3JpemF0aW9uLnRva2VuJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMvand0LmhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMvbWFwcGVyLmhlbHBlcic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2F1dGhlbnRpY2F0ZWQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yb2xlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzL2Fub255bW91cy5ndWFyZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcy9hdXRoZW50aWNhdGVkLmd1YXJkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycy9lbWFpbC5wcm92aWRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycy92ZXJpZnkucHJvdmlkZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXNzaW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgubW9kdWxlJztcclxuIl19
1
+ export * from './lib/interfaces/token.interface';
2
+ export * from './lib/interfaces/config.interface';
3
+ export * from './lib/interfaces/mapper.interface';
4
+ export * from './lib/interfaces/provider.interface';
5
+ export * from './lib/tokens/use-authorization.token';
6
+ export * from './lib/helpers/jwt.helper';
7
+ export * from './lib/helpers/mapper.helper';
8
+ export * from './lib/directives/authenticated.directive';
9
+ export * from './lib/directives/role.directive';
10
+ export * from './lib/directives/permission.directive';
11
+ export * from './lib/guards/anonymous.guard';
12
+ export * from './lib/guards/authenticated.guard';
13
+ export * from './lib/providers/email.provider';
14
+ export * from './lib/providers/verify.provider';
15
+ export * from './lib/auth.session';
16
+ export * from './lib/auth.service';
17
+ export * from './lib/permissions.service';
18
+ export * from './lib/auth.module';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBELGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvdG9rZW4uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL21hcHBlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMvdXNlLWF1dGhvcml6YXRpb24udG9rZW4nO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2p3dC5oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9tYXBwZXIuaGVscGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hdXRoZW50aWNhdGVkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JvbGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMvYW5vbnltb3VzLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcy9hdXRoZW50aWNhdGVkLmd1YXJkJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvdmlkZXJzL2VtYWlsLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycy92ZXJpZnkucHJvdmlkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnNlc3Npb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5tb2R1bGUnO1xuIl19
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdm9iaXQtYmItZm91bmRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2JyYXZvYml0LWJiLWZvdW5kYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdm9iaXQtYmItZm91bmRhdGlvbi1jb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29sbGVjdGlvbnMvc3JjL2JyYXZvYml0LWJiLWZvdW5kYXRpb24tY29sbGVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,102 +1,100 @@
1
- import { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, tap } from 'rxjs/operators';
2
- import { BehaviorSubject, combineLatest, isObservable, of } from 'rxjs';
3
- import { FormControl } from '@angular/forms';
4
- export class Collection {
5
- constructor(_provider, _initialValues = {}) {
6
- this._provider = _provider;
7
- this._initialValues = _initialValues;
8
- this.raw$ = new BehaviorSubject(null);
9
- this.loading$ = new BehaviorSubject(true);
10
- // State.
11
- this._formatter = null;
12
- this._refresh$ = new BehaviorSubject(0);
13
- this._requestCache = null;
14
- this.controlToObservable = (control) => {
15
- return control.valueChanges.pipe(distinctUntilChanged(), startWith(control?.value));
16
- };
17
- this.queryControl = new FormControl(_initialValues?.query ?? null);
18
- this.queryFieldsControl = new FormControl(_initialValues?.queryFields ?? []);
19
- this.pageNumberControl = new FormControl(_initialValues?.pageNumber ?? 1);
20
- this.pageSizeControl = new FormControl(_initialValues?.pageSize ?? 25);
21
- this.sortControl = new FormControl(_initialValues?.sort ?? null);
22
- this.data$ = this.getData();
23
- }
24
- refresh() {
25
- this._refresh$.next(0);
26
- }
27
- setFormatter(callback) {
28
- this._formatter = callback;
29
- return this;
30
- }
31
- getData() {
32
- const data$ = this.request.pipe(tap(() => this.loading$.next(true)), map(request => this.validateRequest(request)), switchMap(request => {
33
- return this._provider.transform(request).pipe(tap(response => this.cacheCollectionData(response)), map(response => ({ response, request, initial: false })), catchError(error => of({
34
- error,
35
- request,
36
- response: null,
37
- initial: false
38
- })));
39
- }), startWith({ initial: true, response: null }));
40
- return combineLatest([data$, this.loading$.asObservable()]).pipe(switchMap(([data, loading]) => {
41
- const combined = { ...data, loading };
42
- return this.formatResponse(data?.response).pipe(map(response => ({
43
- ...combined,
44
- response,
45
- state: this.getState(combined)
46
- })));
47
- }));
48
- }
49
- formatResponse(response) {
50
- if (!response || !this._formatter) {
51
- return of(response);
52
- }
53
- const items = response?.data ?? [];
54
- const data = this._formatter?.(items) ?? items;
55
- const data$ = isObservable(data) ? data : of(data);
56
- return data$.pipe(map(data => ({ ...response, data })));
57
- }
58
- validateRequest(request) {
59
- // We should reset the page number whenever we change the query or the page size.
60
- if (this._requestCache && request && (this._requestCache?.query !== request?.query || this._requestCache?.pageSize !== request?.pageSize)) {
61
- this.pageNumberControl?.setValue(1, { emitEvent: false });
62
- request.pageNumber = this.pageNumberControl?.value;
63
- }
64
- this._requestCache = { ...request };
65
- return request;
66
- }
67
- getState(data) {
68
- if (!!data?.error) {
69
- return "error" /* CollectionState.Error */;
70
- }
71
- if (!!data?.initial) {
72
- return "initial" /* CollectionState.Initial */;
73
- }
74
- const count = data?.response?.data?.length ?? 0;
75
- if (count <= 0) {
76
- return "empty" /* CollectionState.Empty */;
77
- }
78
- return "data" /* CollectionState.Data */;
79
- }
80
- cacheCollectionData(data) {
81
- this.raw$.next(data);
82
- this.loading$.next(false);
83
- }
84
- get request() {
85
- const pageNumber$ = this.controlToObservable(this.pageNumberControl);
86
- const pageSize$ = this.controlToObservable(this.pageSizeControl);
87
- const query$ = this.getQueryObservable();
88
- const queryFields$ = this.controlToObservable(this.queryFieldsControl);
89
- const sort$ = this.controlToObservable(this.sortControl);
90
- return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(map(([pageNumber, pageSize, query, queryFields, sort]) => ({
91
- pageNumber,
92
- pageSize,
93
- query,
94
- queryFields,
95
- sort
96
- })));
97
- }
98
- getQueryObservable() {
99
- return this.queryControl.valueChanges.pipe(debounceTime(400), distinctUntilChanged(), startWith(this.queryControl?.value));
100
- }
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29sbGVjdGlvbnMvc3JjL2xpYi9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlHLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsT0FBTyxFQUFrQixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVM1RCxNQUFNLE9BQU8sVUFBVTtJQTJCbkIsWUFBNkIsU0FBZ0MsRUFDaEMsaUJBQTZDLEVBQUU7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBVG5FLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZELFNBQVM7UUFDRCxlQUFVLEdBQXlDLElBQUksQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBaUkvQyx3QkFBbUIsR0FBRyxDQUFjLE9BQXdCLEVBQUUsRUFBRTtZQUNwRSxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM1QixvQkFBb0IsRUFBSyxFQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLEtBQVUsQ0FBQyxDQUNqQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBbElFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQWdCLGNBQWMs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QUMsQ0FBQyxDQUNOLENBQUM7SUFDTixDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0QyxZQUFZLENBQVMsR0FBRyxDQUFDLEVBQ3pCLG9CQUFvQixFQUFVLEVBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQXNCLENBQUMsQ0FDdkQsQ0FBQztJQUNOLENBQUM7Q0FTSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29sbGVjdGlvbkRhdGEsIENvbGxlY3Rpb25SZXF1ZXN0LCBDb2xsZWN0aW9uUmVxdWVzdFNvcnR9IGZyb20gJy4vaW50ZXJmYWNlcy9jb2xsZWN0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDb2xsZWN0aW9uUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXJzL2NvbGxlY3Rpb24ucHJvdmlkZXInO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjb25zdCBlbnVtIENvbGxlY3Rpb25TdGF0ZSB7XHJcbiAgICBJbml0aWFsID0gJ2luaXRpYWwnLFxyXG4gICAgRXJyb3IgPSAnZXJyb3InLFxyXG4gICAgRW1wdHkgPSAnZW1wdHknLFxyXG4gICAgRGF0YSA9ICdkYXRhJ1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbjxUPiB7XHJcblxyXG4gICAgLy8gQ29udHJvbHMuXHJcbiAgICByZWFkb25seSBxdWVyeUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gICAgcmVhZG9ubHkgcXVlcnlGaWVsZHNDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmdbXT47XHJcbiAgICByZWFkb25seSBwYWdlTnVtYmVyQ29udHJvbDogRm9ybUNvbnRyb2w8bnVtYmVyPjtcclxuICAgIHJlYWRvbmx5IHBhZ2VTaXplQ29udHJvbDogRm9ybUNvbnRyb2w8bnVtYmVyPjtcclxuICAgIHJlYWRvbmx5IHNvcnRDb250cm9sOiBGb3JtQ29udHJvbDxDb2xsZWN0aW9uUmVxdWVzdFNvcnQgfCBDb2xsZWN0aW9uUmVxdWVzdFNvcnRbXT47XHJcblxyXG4gICAgLy8gUmVxdWVzdC5cclxuICAgIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPHtcclxuICAgICAgICByZXNwb25zZT86IENvbGxlY3Rpb25EYXRhPFQ+LFxyXG4gICAgICAgIHJlcXVlc3Q/OiBDb2xsZWN0aW9uUmVxdWVzdCxcclxuICAgICAgICBlcnJvcj86IEVycm9yXHJcbiAgICAgICAgc3RhdGU6IENvbGxlY3Rpb25TdGF0ZSxcclxuICAgICAgICBsb2FkaW5nOiBib29sZWFuLFxyXG4gICAgICAgIGluaXRpYWw6IGJvb2xlYW5cclxuICAgIH0+O1xyXG5cclxuICAgIHJlYWRvbmx5IHJhdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbGxlY3Rpb25EYXRhPFQ+IHwgbnVsbD4obnVsbCk7XHJcbiAgICByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgLy8gU3RhdGUuXHJcbiAgICBwcml2YXRlIF9mb3JtYXR0ZXI6IChpdGVtOiBUW10pID0+IFRbXSB8IE9ic2VydmFibGU8VFtdPiA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9yZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICAgIHByaXZhdGUgX3JlcXVlc3RDYWNoZTogQ29sbGVjdGlvblJlcXVlc3QgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9wcm92aWRlcjogQ29sbGVjdGlvblByb3ZpZGVyPFQ+LFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbFZhbHVlczogUGFydGlhbDxDb2xsZWN0aW9uUmVxdWVzdD4gPSB7fSkge1xyXG4gICAgICAgIHRoaXMucXVlcnlDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KF9pbml0aWFsVmFsdWVzPy5xdWVyeSA/PyBudWxsKTtcclxuICAgICAgICB0aGlzLnF1ZXJ5RmllbGRzQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmdbXT4oX2luaXRpYWxWYWx1ZXM/LnF1ZXJ5RmllbGRzID8/IFtdKTtcclxuICAgICAgICB0aGlzLnBhZ2VOdW1iZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sPG51bWJlcj4oX2luaXRpYWxWYWx1ZXM/LnBhZ2VOdW1iZXIgPz8gMSk7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihfaW5pdGlhbFZhbHVlcz8ucGFnZVNpemUgPz8gMjUpO1xyXG4gICAgICAgIHRoaXMuc29ydENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8Q29sbGVjdGlvblJlcXVlc3RTb3J0IHwgQ29sbGVjdGlvblJlcXVlc3RTb3J0W10gfCBudWxsPihfaW5pdGlhbFZhbHVlcz8uc29ydCA/PyBudWxsKTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhJCA9IHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2goKSB7XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgwKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRGb3JtYXR0ZXIoY2FsbGJhY2s6IChpdGVtczogVFtdKSA9PiBUW10gfCBPYnNlcnZhYmxlPFRbXT4pIHtcclxuICAgICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBjYWxsYmFjaztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGEoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSQgPSB0aGlzLnJlcXVlc3QucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dCh0cnVlKSksXHJcbiAgICAgICAgICAgIG1hcChyZXF1ZXN0ID0+IHRoaXMudmFsaWRhdGVSZXF1ZXN0KHJlcXVlc3QpKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKHJlcXVlc3QgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLnRyYW5zZm9ybShyZXF1ZXN0KS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcChyZXNwb25zZSA9PiB0aGlzLmNhY2hlQ29sbGVjdGlvbkRhdGEocmVzcG9uc2UpKSxcclxuICAgICAgICAgICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gKHtyZXNwb25zZSwgcmVxdWVzdCwgaW5pdGlhbDogZmFsc2V9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZjx7IGVycm9yOiBFcnJvciwgcmVzcG9uc2U6IENvbGxlY3Rpb25EYXRhPFQ+IHwgbnVsbCwgcmVxdWVzdDogQ29sbGVjdGlvblJlcXVlc3QsIGluaXRpYWw6IGJvb2xlYW4gfT4oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc3RhcnRXaXRoPHsgaW5pdGlhbDogYm9vbGVhbiwgcmVzcG9uc2U6IENvbGxlY3Rpb25EYXRhPFQ+IHwgbnVsbCB9Pih7aW5pdGlhbDogdHJ1ZSwgcmVzcG9uc2U6IG51bGx9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtkYXRhJCwgdGhpcy5sb2FkaW5nJC5hc09ic2VydmFibGUoKV0pLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2RhdGEsIGxvYWRpbmddKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb21iaW5lZCA9IHsuLi5kYXRhLCBsb2FkaW5nfTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFJlc3BvbnNlKGRhdGE/LnJlc3BvbnNlKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb21iaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiB0aGlzLmdldFN0YXRlKGNvbWJpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZm9ybWF0UmVzcG9uc2UocmVzcG9uc2U6IENvbGxlY3Rpb25EYXRhPFQ+KSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZSB8fCAhdGhpcy5fZm9ybWF0dGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlPy5kYXRhID8/IFtdO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9mb3JtYXR0ZXI/LihpdGVtcykgPz8gaXRlbXM7XHJcbiAgICAgICAgY29uc3QgZGF0YSQgPSBpc09ic2VydmFibGUoZGF0YSkgPyBkYXRhIDogb2YoZGF0YSk7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhJC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiAoey4uLnJlc3BvbnNlLCBkYXRhfSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHZhbGlkYXRlUmVxdWVzdChyZXF1ZXN0OiBDb2xsZWN0aW9uUmVxdWVzdCkge1xyXG4gICAgICAgIC8vIFdlIHNob3VsZCByZXNldCB0aGUgcGFnZSBudW1iZXIgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBxdWVyeSBvciB0aGUgcGFnZSBzaXplLlxyXG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Q2FjaGUgJiYgcmVxdWVzdCAmJiAodGhpcy5fcmVxdWVzdENhY2hlPy5xdWVyeSAhPT0gcmVxdWVzdD8ucXVlcnkgfHwgdGhpcy5fcmVxdWVzdENhY2hlPy5wYWdlU2l6ZSAhPT0gcmVxdWVzdD8ucGFnZVNpemUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZU51bWJlckNvbnRyb2w/LnNldFZhbHVlKDEsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgICAgIHJlcXVlc3QucGFnZU51bWJlciA9IHRoaXMucGFnZU51bWJlckNvbnRyb2w/LnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdENhY2hlID0gey4uLnJlcXVlc3R9O1xyXG5cclxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFN0YXRlKGRhdGE6IHsgcmVzcG9uc2U/OiBDb2xsZWN0aW9uRGF0YTxUPiwgcmVxdWVzdD86IENvbGxlY3Rpb25SZXF1ZXN0LCBlcnJvcj86IEVycm9yLCBsb2FkaW5nOiBib29sZWFuLCBpbml0aWFsOiBib29sZWFuIH0pIHtcclxuICAgICAgICBpZiAoISFkYXRhPy5lcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvblN0YXRlLkVycm9yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhZGF0YT8uaW5pdGlhbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvblN0YXRlLkluaXRpYWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjb3VudCA9IGRhdGE/LnJlc3BvbnNlPy5kYXRhPy5sZW5ndGggPz8gMDtcclxuICAgICAgICBpZiAoY291bnQgPD0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvblN0YXRlLkVtcHR5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25TdGF0ZS5EYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FjaGVDb2xsZWN0aW9uRGF0YShkYXRhOiBDb2xsZWN0aW9uRGF0YTxUPikge1xyXG4gICAgICAgIHRoaXMucmF3JC5uZXh0KGRhdGEpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXQgcmVxdWVzdCgpIHtcclxuICAgICAgICBjb25zdCBwYWdlTnVtYmVyJCA9IHRoaXMuY29udHJvbFRvT2JzZXJ2YWJsZTxudW1iZXI+KHRoaXMucGFnZU51bWJlckNvbnRyb2wpO1xyXG4gICAgICAgIGNvbnN0IHBhZ2VTaXplJCA9IHRoaXMuY29udHJvbFRvT2JzZXJ2YWJsZTxudW1iZXI+KHRoaXMucGFnZVNpemVDb250cm9sKTtcclxuICAgICAgICBjb25zdCBxdWVyeSQgPSB0aGlzLmdldFF1ZXJ5T2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5RmllbGRzJCA9IHRoaXMuY29udHJvbFRvT2JzZXJ2YWJsZTxzdHJpbmdbXT4odGhpcy5xdWVyeUZpZWxkc0NvbnRyb2wpO1xyXG4gICAgICAgIGNvbnN0IHNvcnQkID0gdGhpcy5jb250cm9sVG9PYnNlcnZhYmxlPENvbGxlY3Rpb25SZXF1ZXN0U29ydCB8IENvbGxlY3Rpb25SZXF1ZXN0U29ydFtdPih0aGlzLnNvcnRDb250cm9sKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3BhZ2VOdW1iZXIkLCBwYWdlU2l6ZSQsIHF1ZXJ5JCwgcXVlcnlGaWVsZHMkLCBzb3J0JCwgdGhpcy5fcmVmcmVzaCQuYXNPYnNlcnZhYmxlKCldKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKFtwYWdlTnVtYmVyLCBwYWdlU2l6ZSwgcXVlcnksIHF1ZXJ5RmllbGRzLCBzb3J0XSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZSxcclxuICAgICAgICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgcXVlcnlGaWVsZHMsXHJcbiAgICAgICAgICAgICAgICBzb3J0XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRRdWVyeU9ic2VydmFibGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWU8c3RyaW5nPig0MDApLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxzdHJpbmc+KCksXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnF1ZXJ5Q29udHJvbD8udmFsdWUgYXMgc3RyaW5nIHwgbnVsbClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29udHJvbFRvT2JzZXJ2YWJsZSA9IDxUID0gdW5rbm93bj4oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPFQ+KCksXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aChjb250cm9sPy52YWx1ZSBhcyBUKVxyXG4gICAgICAgICk7XHJcbiAgICB9O1xyXG5cclxufVxyXG5cclxuIl19
1
+ import { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, tap } from 'rxjs/operators';
2
+ import { BehaviorSubject, combineLatest, isObservable, of } from 'rxjs';
3
+ import { getControlValue } from '@bravobit/bb-foundation/rxjs';
4
+ import { FormControl } from '@angular/forms';
5
+ export class Collection {
6
+ constructor(_provider, _initialValues = {}) {
7
+ this._provider = _provider;
8
+ this._initialValues = _initialValues;
9
+ this.raw$ = new BehaviorSubject(null);
10
+ this.loading$ = new BehaviorSubject(true);
11
+ // State.
12
+ this._formatter = null;
13
+ this._refresh$ = new BehaviorSubject(0);
14
+ this._requestCache = null;
15
+ this.queryControl = new FormControl(_initialValues?.query ?? null);
16
+ this.queryFieldsControl = new FormControl(_initialValues?.queryFields ?? []);
17
+ this.pageNumberControl = new FormControl(_initialValues?.pageNumber ?? 1);
18
+ this.pageSizeControl = new FormControl(_initialValues?.pageSize ?? 25);
19
+ this.sortControl = new FormControl(_initialValues?.sort ?? null);
20
+ this.data$ = this.getData();
21
+ }
22
+ refresh() {
23
+ this._refresh$.next(0);
24
+ }
25
+ setFormatter(callback) {
26
+ this._formatter = callback;
27
+ return this;
28
+ }
29
+ getData() {
30
+ const data$ = this.request.pipe(tap(() => this.loading$.next(true)), map(request => this.validateRequest(request)), switchMap(request => {
31
+ return this._provider.transform(request).pipe(tap(response => this.cacheCollectionData(response)), map(response => ({ response, request, initial: false })), catchError(error => of({
32
+ error,
33
+ request,
34
+ response: null,
35
+ initial: false
36
+ })));
37
+ }), startWith({ initial: true, response: null }));
38
+ return combineLatest([data$, this.loading$.asObservable()]).pipe(switchMap(([data, loading]) => {
39
+ const combined = { ...data, loading };
40
+ return this.formatResponse(data?.response).pipe(map(response => ({
41
+ ...combined,
42
+ response,
43
+ state: this.getState(combined)
44
+ })));
45
+ }));
46
+ }
47
+ formatResponse(response) {
48
+ if (!response || !this._formatter) {
49
+ return of(response);
50
+ }
51
+ const items = response?.data ?? [];
52
+ const data = this._formatter?.(items) ?? items;
53
+ const data$ = isObservable(data) ? data : of(data);
54
+ return data$.pipe(map(data => ({ ...response, data })));
55
+ }
56
+ validateRequest(request) {
57
+ // We should reset the page number whenever we change the query or the page size.
58
+ if (this._requestCache && request && (this._requestCache?.query !== request?.query || this._requestCache?.pageSize !== request?.pageSize)) {
59
+ this.pageNumberControl?.setValue(1, { emitEvent: false });
60
+ request.pageNumber = this.pageNumberControl?.value;
61
+ }
62
+ this._requestCache = { ...request };
63
+ return request;
64
+ }
65
+ getState(data) {
66
+ if (!!data?.error) {
67
+ return "error" /* CollectionState.Error */;
68
+ }
69
+ if (!!data?.initial) {
70
+ return "initial" /* CollectionState.Initial */;
71
+ }
72
+ const count = data?.response?.data?.length ?? 0;
73
+ if (count <= 0) {
74
+ return "empty" /* CollectionState.Empty */;
75
+ }
76
+ return "data" /* CollectionState.Data */;
77
+ }
78
+ cacheCollectionData(data) {
79
+ this.raw$.next(data);
80
+ this.loading$.next(false);
81
+ }
82
+ get request() {
83
+ const pageNumber$ = getControlValue(this.pageNumberControl);
84
+ const pageSize$ = getControlValue(this.pageSizeControl);
85
+ const query$ = this.getQueryObservable();
86
+ const queryFields$ = getControlValue(this.queryFieldsControl);
87
+ const sort$ = getControlValue(this.sortControl);
88
+ return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(map(([pageNumber, pageSize, query, queryFields, sort]) => ({
89
+ pageNumber,
90
+ pageSize,
91
+ query,
92
+ queryFields,
93
+ sort
94
+ })));
95
+ }
96
+ getQueryObservable() {
97
+ return this.queryControl.valueChanges.pipe(debounceTime(400), distinctUntilChanged(), startWith(this.queryControl?.value));
98
+ }
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29sbGVjdGlvbnMvc3JjL2xpYi9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlHLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVMzQyxNQUFNLE9BQU8sVUFBVTtJQTJCbkIsWUFBNkIsU0FBZ0MsRUFDaEMsaUJBQTZDLEVBQUU7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBVG5FLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZELFNBQVM7UUFDRCxlQUFVLEdBQXlDLElBQUksQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBSW5ELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQWdCLGNBQWMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksV0FBVyxDQUFXLGNBQWMsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkYs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QUFFLEtBQXNCLENBQUMsQ0FDdkQsQ0FBQztJQUNOLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbGxlY3Rpb25EYXRhLCBDb2xsZWN0aW9uUmVxdWVzdCwgQ29sbGVjdGlvblJlcXVlc3RTb3J0fSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb2xsZWN0aW9uUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXJzL2NvbGxlY3Rpb24ucHJvdmlkZXInO1xuaW1wb3J0IHtnZXRDb250cm9sVmFsdWV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL3J4anMnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgZW51bSBDb2xsZWN0aW9uU3RhdGUge1xuICAgIEluaXRpYWwgPSAnaW5pdGlhbCcsXG4gICAgRXJyb3IgPSAnZXJyb3InLFxuICAgIEVtcHR5ID0gJ2VtcHR5JyxcbiAgICBEYXRhID0gJ2RhdGEnXG59XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uPFQ+IHtcblxuICAgIC8vIENvbnRyb2xzLlxuICAgIHJlYWRvbmx5IHF1ZXJ5Q29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgcmVhZG9ubHkgcXVlcnlGaWVsZHNDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmdbXT47XG4gICAgcmVhZG9ubHkgcGFnZU51bWJlckNvbnRyb2w6IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgcmVhZG9ubHkgcGFnZVNpemVDb250cm9sOiBGb3JtQ29udHJvbDxudW1iZXI+O1xuICAgIHJlYWRvbmx5IHNvcnRDb250cm9sOiBGb3JtQ29udHJvbDxDb2xsZWN0aW9uUmVxdWVzdFNvcnQgfCBDb2xsZWN0aW9uUmVxdWVzdFNvcnRbXT47XG5cbiAgICAvLyBSZXF1ZXN0LlxuICAgIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPHtcbiAgICAgICAgcmVzcG9uc2U/OiBDb2xsZWN0aW9uRGF0YTxUPixcbiAgICAgICAgcmVxdWVzdD86IENvbGxlY3Rpb25SZXF1ZXN0LFxuICAgICAgICBlcnJvcj86IEVycm9yXG4gICAgICAgIHN0YXRlOiBDb2xsZWN0aW9uU3RhdGUsXG4gICAgICAgIGxvYWRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGluaXRpYWw6IGJvb2xlYW5cbiAgICB9PjtcblxuICAgIHJlYWRvbmx5IHJhdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbGxlY3Rpb25EYXRhPFQ+IHwgbnVsbD4obnVsbCk7XG4gICAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgcHJpdmF0ZSBfZm9ybWF0dGVyOiAoaXRlbTogVFtdKSA9PiBUW10gfCBPYnNlcnZhYmxlPFRbXT4gPSBudWxsO1xuICAgIHByaXZhdGUgX3JlZnJlc2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHByaXZhdGUgX3JlcXVlc3RDYWNoZTogQ29sbGVjdGlvblJlcXVlc3QgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3Byb3ZpZGVyOiBDb2xsZWN0aW9uUHJvdmlkZXI8VD4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbFZhbHVlczogUGFydGlhbDxDb2xsZWN0aW9uUmVxdWVzdD4gPSB7fSkge1xuICAgICAgICB0aGlzLnF1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihfaW5pdGlhbFZhbHVlcz8ucXVlcnkgPz8gbnVsbCk7XG4gICAgICAgIHRoaXMucXVlcnlGaWVsZHNDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZ1tdPihfaW5pdGlhbFZhbHVlcz8ucXVlcnlGaWVsZHMgPz8gW10pO1xuICAgICAgICB0aGlzLnBhZ2VOdW1iZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sPG51bWJlcj4oX2luaXRpYWxWYWx1ZXM/LnBhZ2VOdW1iZXIgPz8gMSk7XG4gICAgICAgIHRoaXMucGFnZVNpemVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPG51bWJlcj4oX2luaXRpYWxWYWx1ZXM/LnBhZ2VTaXplID8/IDI1KTtcbiAgICAgICAgdGhpcy5zb3J0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxDb2xsZWN0aW9uUmVxdWVzdFNvcnQgfCBDb2xsZWN0aW9uUmVxdWVzdFNvcnRbXSB8IG51bGw+KF9pbml0aWFsVmFsdWVzPy5zb3J0ID8/IG51bGwpO1xuXG4gICAgICAgIHRoaXMuZGF0YSQgPSB0aGlzLmdldERhdGEoKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KDApO1xuICAgIH1cblxuICAgIHNldEZvcm1hdHRlcihjYWxsYmFjazogKGl0ZW1zOiBUW10pID0+IFRbXSB8IE9ic2VydmFibGU8VFtdPikge1xuICAgICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBjYWxsYmFjaztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRhKCkge1xuICAgICAgICBjb25zdCBkYXRhJCA9IHRoaXMucmVxdWVzdC5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgICAgICAgICBtYXAocmVxdWVzdCA9PiB0aGlzLnZhbGlkYXRlUmVxdWVzdChyZXF1ZXN0KSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAocmVxdWVzdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLnRyYW5zZm9ybShyZXF1ZXN0KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAocmVzcG9uc2UgPT4gdGhpcy5jYWNoZUNvbGxlY3Rpb25EYXRhKHJlc3BvbnNlKSksXG4gICAgICAgICAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiAoe3Jlc3BvbnNlLCByZXF1ZXN0LCBpbml0aWFsOiBmYWxzZX0pKSxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZjx7IGVycm9yOiBFcnJvciwgcmVzcG9uc2U6IENvbGxlY3Rpb25EYXRhPFQ+IHwgbnVsbCwgcmVxdWVzdDogQ29sbGVjdGlvblJlcXVlc3QsIGluaXRpYWw6IGJvb2xlYW4gfT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdGFydFdpdGg8eyBpbml0aWFsOiBib29sZWFuLCByZXNwb25zZTogQ29sbGVjdGlvbkRhdGE8VD4gfCBudWxsIH0+KHtpbml0aWFsOiB0cnVlLCByZXNwb25zZTogbnVsbH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2RhdGEkLCB0aGlzLmxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2RhdGEsIGxvYWRpbmddKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tYmluZWQgPSB7Li4uZGF0YSwgbG9hZGluZ307XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0UmVzcG9uc2UoZGF0YT8ucmVzcG9uc2UpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29tYmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiB0aGlzLmdldFN0YXRlKGNvbWJpbmVkKVxuICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFJlc3BvbnNlKHJlc3BvbnNlOiBDb2xsZWN0aW9uRGF0YTxUPikge1xuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICF0aGlzLl9mb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlPy5kYXRhID8/IFtdO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fZm9ybWF0dGVyPy4oaXRlbXMpID8/IGl0ZW1zO1xuICAgICAgICBjb25zdCBkYXRhJCA9IGlzT2JzZXJ2YWJsZShkYXRhKSA/IGRhdGEgOiBvZihkYXRhKTtcblxuICAgICAgICByZXR1cm4gZGF0YSQucGlwZShcbiAgICAgICAgICAgIG1hcChkYXRhID0+ICh7Li4ucmVzcG9uc2UsIGRhdGF9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUmVxdWVzdChyZXF1ZXN0OiBDb2xsZWN0aW9uUmVxdWVzdCkge1xuICAgICAgICAvLyBXZSBzaG91bGQgcmVzZXQgdGhlIHBhZ2UgbnVtYmVyIHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgcXVlcnkgb3IgdGhlIHBhZ2Ugc2l6ZS5cbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RDYWNoZSAmJiByZXF1ZXN0ICYmICh0aGlzLl9yZXF1ZXN0Q2FjaGU/LnF1ZXJ5ICE9PSByZXF1ZXN0Py5xdWVyeSB8fCB0aGlzLl9yZXF1ZXN0Q2FjaGU/LnBhZ2VTaXplICE9PSByZXF1ZXN0Py5wYWdlU2l6ZSkpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZU51bWJlckNvbnRyb2w/LnNldFZhbHVlKDEsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICByZXF1ZXN0LnBhZ2VOdW1iZXIgPSB0aGlzLnBhZ2VOdW1iZXJDb250cm9sPy52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlcXVlc3RDYWNoZSA9IHsuLi5yZXF1ZXN0fTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0YXRlKGRhdGE6IHsgcmVzcG9uc2U/OiBDb2xsZWN0aW9uRGF0YTxUPiwgcmVxdWVzdD86IENvbGxlY3Rpb25SZXF1ZXN0LCBlcnJvcj86IEVycm9yLCBsb2FkaW5nOiBib29sZWFuLCBpbml0aWFsOiBib29sZWFuIH0pIHtcbiAgICAgICAgaWYgKCEhZGF0YT8uZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9uU3RhdGUuRXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISFkYXRhPy5pbml0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvblN0YXRlLkluaXRpYWw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb3VudCA9IGRhdGE/LnJlc3BvbnNlPy5kYXRhPy5sZW5ndGggPz8gMDtcbiAgICAgICAgaWYgKGNvdW50IDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9uU3RhdGUuRW1wdHk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ29sbGVjdGlvblN0YXRlLkRhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWNoZUNvbGxlY3Rpb25EYXRhKGRhdGE6IENvbGxlY3Rpb25EYXRhPFQ+KSB7XG4gICAgICAgIHRoaXMucmF3JC5uZXh0KGRhdGEpO1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHJlcXVlc3QoKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VOdW1iZXIkID0gZ2V0Q29udHJvbFZhbHVlPG51bWJlcj4odGhpcy5wYWdlTnVtYmVyQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IHBhZ2VTaXplJCA9IGdldENvbnRyb2xWYWx1ZTxudW1iZXI+KHRoaXMucGFnZVNpemVDb250cm9sKTtcbiAgICAgICAgY29uc3QgcXVlcnkkID0gdGhpcy5nZXRRdWVyeU9ic2VydmFibGUoKTtcbiAgICAgICAgY29uc3QgcXVlcnlGaWVsZHMkID0gZ2V0Q29udHJvbFZhbHVlPHN0cmluZ1tdPih0aGlzLnF1ZXJ5RmllbGRzQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IHNvcnQkID0gZ2V0Q29udHJvbFZhbHVlPENvbGxlY3Rpb25SZXF1ZXN0U29ydCB8IENvbGxlY3Rpb25SZXF1ZXN0U29ydFtdPih0aGlzLnNvcnRDb250cm9sKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbcGFnZU51bWJlciQsIHBhZ2VTaXplJCwgcXVlcnkkLCBxdWVyeUZpZWxkcyQsIHNvcnQkLCB0aGlzLl9yZWZyZXNoJC5hc09ic2VydmFibGUoKV0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtwYWdlTnVtYmVyLCBwYWdlU2l6ZSwgcXVlcnksIHF1ZXJ5RmllbGRzLCBzb3J0XSkgPT4gKHtcbiAgICAgICAgICAgICAgICBwYWdlTnVtYmVyLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgIHF1ZXJ5RmllbGRzLFxuICAgICAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UXVlcnlPYnNlcnZhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWU8c3RyaW5nPig0MDApLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8c3RyaW5nPigpLFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMucXVlcnlDb250cm9sPy52YWx1ZSBhcyBzdHJpbmcgfCBudWxsKVxuICAgICAgICApO1xuICAgIH1cblxufVxuXG4iXX0=