@bravobit/bb-foundation 0.20.0 → 0.20.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 (424) hide show
  1. package/README.md +47 -47
  2. package/auth/bravobit-bb-foundation-auth.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/bravobit-bb-foundation.d.ts +5 -5
  24. package/collections/bravobit-bb-foundation-collections.d.ts +5 -5
  25. package/collections/lib/collection.d.ts +43 -43
  26. package/collections/lib/collections.module.d.ts +10 -10
  27. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +34 -34
  28. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +12 -12
  29. package/collections/lib/components/collections.directive.d.ts +17 -17
  30. package/collections/lib/interfaces/collection.interface.d.ts +26 -26
  31. package/collections/lib/providers/api-collection.provider.d.ts +19 -17
  32. package/collections/lib/providers/collection.provider.d.ts +6 -6
  33. package/collections/lib/providers/local-collection.provider.d.ts +8 -8
  34. package/collections/public_api.d.ts +9 -9
  35. package/controls/bravobit-bb-foundation-controls.d.ts +5 -5
  36. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +47 -47
  37. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +18 -18
  38. package/controls/lib/checkbox/checkbox.module.d.ts +9 -9
  39. package/controls/lib/controls.module.d.ts +7 -7
  40. package/controls/public_api.d.ts +4 -4
  41. package/dashboard/bravobit-bb-foundation-dashboard.d.ts +5 -5
  42. package/dashboard/lib/dashboard/dashboard.component.d.ts +19 -19
  43. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +11 -11
  44. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +9 -9
  45. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +11 -11
  46. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +21 -21
  47. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +27 -27
  48. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +16 -16
  49. package/dashboard/lib/dashboard.module.d.ts +16 -16
  50. package/dashboard/public_api.d.ts +8 -8
  51. package/dialog/bravobit-bb-foundation-dialog.d.ts +5 -5
  52. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +5 -5
  53. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +16 -16
  54. package/dialog/lib/dialog-container/dialog-container.component.d.ts +24 -24
  55. package/dialog/lib/dialog-header/dialog-header.component.d.ts +9 -9
  56. package/dialog/lib/dialog-link/dialog-link.component.d.ts +5 -5
  57. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +12 -12
  58. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +22 -22
  59. package/dialog/lib/dialog.injector.d.ts +8 -8
  60. package/dialog/lib/dialog.insertion.d.ts +8 -8
  61. package/dialog/lib/dialog.interfaces.d.ts +3 -3
  62. package/dialog/lib/dialog.module.d.ts +19 -19
  63. package/dialog/lib/dialog.ref.d.ts +8 -8
  64. package/dialog/lib/dialog.service.d.ts +19 -19
  65. package/dialog/public_api.d.ts +9 -9
  66. package/elements/bravobit-bb-foundation-elements.d.ts +5 -5
  67. package/elements/lib/avatar/avatar.component.d.ts +25 -25
  68. package/elements/lib/button/button.component.d.ts +23 -23
  69. package/elements/lib/checkbox/checkbox.component.d.ts +27 -27
  70. package/elements/lib/date-picker/date-picker.component.d.ts +69 -69
  71. package/elements/lib/directives/addon.directive.d.ts +9 -9
  72. package/elements/lib/directives/autosize.directive.d.ts +18 -18
  73. package/elements/lib/directives/focus-trap.directive.d.ts +17 -17
  74. package/elements/lib/directives/focus.directive.d.ts +14 -14
  75. package/elements/lib/directives/form-submit.directive.d.ts +17 -17
  76. package/elements/lib/directives/input.directive.d.ts +38 -38
  77. package/elements/lib/directives/template.directive.d.ts +10 -10
  78. package/elements/lib/dropdown/dropdown.component.d.ts +21 -21
  79. package/elements/lib/elements.interfaces.d.ts +25 -25
  80. package/elements/lib/elements.module.d.ts +116 -116
  81. package/elements/lib/file-picker/file-picker.component.d.ts +49 -49
  82. package/elements/lib/form-control/form-control.component.d.ts +21 -21
  83. package/elements/lib/form-error/form-error.component.d.ts +29 -29
  84. package/elements/lib/form-group/form-group.component.d.ts +10 -10
  85. package/elements/lib/icon/icon.component.d.ts +22 -22
  86. package/elements/lib/image-picker/image-picker.component.d.ts +38 -38
  87. package/elements/lib/pipes/file-image.pipe.d.ts +13 -13
  88. package/elements/lib/pipes/file-size.pipe.d.ts +8 -8
  89. package/elements/lib/pipes/relative-time.pipe.d.ts +19 -19
  90. package/elements/lib/spinner/spinner.component.d.ts +12 -12
  91. package/elements/lib/tag/tag.component.d.ts +7 -7
  92. package/elements/public_api.d.ts +25 -25
  93. package/esm2020/auth/bravobit-bb-foundation-auth.mjs +4 -4
  94. package/esm2020/auth/lib/auth.interceptor.mjs +93 -93
  95. package/esm2020/auth/lib/auth.module.mjs +54 -54
  96. package/esm2020/auth/lib/auth.service.mjs +281 -281
  97. package/esm2020/auth/lib/auth.session.mjs +131 -131
  98. package/esm2020/auth/lib/directives/authenticated.directive.mjs +31 -31
  99. package/esm2020/auth/lib/directives/permission.directive.mjs +80 -80
  100. package/esm2020/auth/lib/directives/role.directive.mjs +37 -37
  101. package/esm2020/auth/lib/guards/anonymous.guard.mjs +34 -34
  102. package/esm2020/auth/lib/guards/authenticated.guard.mjs +35 -35
  103. package/esm2020/auth/lib/helpers/jwt.helper.mjs +69 -69
  104. package/esm2020/auth/lib/helpers/mapper.helper.mjs +35 -35
  105. package/esm2020/auth/lib/interfaces/config.interface.mjs +3 -3
  106. package/esm2020/auth/lib/interfaces/mapper.interface.mjs +2 -2
  107. package/esm2020/auth/lib/interfaces/provider.interface.mjs +2 -2
  108. package/esm2020/auth/lib/interfaces/token.interface.mjs +2 -2
  109. package/esm2020/auth/lib/permissions.service.mjs +56 -56
  110. package/esm2020/auth/lib/providers/email.provider.mjs +25 -25
  111. package/esm2020/auth/lib/providers/verify.provider.mjs +19 -19
  112. package/esm2020/auth/lib/tokens/use-authorization.token.mjs +3 -3
  113. package/esm2020/auth/public_api.mjs +19 -19
  114. package/esm2020/bravobit-bb-foundation.mjs +4 -4
  115. package/esm2020/collections/bravobit-bb-foundation-collections.mjs +4 -4
  116. package/esm2020/collections/lib/collection.mjs +102 -102
  117. package/esm2020/collections/lib/collections.module.mjs +54 -54
  118. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +123 -123
  119. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +31 -31
  120. package/esm2020/collections/lib/components/collections.directive.mjs +43 -43
  121. package/esm2020/collections/lib/interfaces/collection.interface.mjs +2 -2
  122. package/esm2020/collections/lib/providers/api-collection.provider.mjs +71 -71
  123. package/esm2020/collections/lib/providers/collection.provider.mjs +13 -13
  124. package/esm2020/collections/lib/providers/local-collection.provider.mjs +16 -16
  125. package/esm2020/collections/public_api.mjs +10 -10
  126. package/esm2020/controls/bravobit-bb-foundation-controls.mjs +4 -4
  127. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +153 -153
  128. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +48 -48
  129. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +19 -19
  130. package/esm2020/controls/lib/controls.module.mjs +16 -16
  131. package/esm2020/controls/public_api.mjs +5 -5
  132. package/esm2020/dashboard/bravobit-bb-foundation-dashboard.mjs +4 -4
  133. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +56 -56
  134. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +30 -30
  135. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +31 -31
  136. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +29 -29
  137. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +75 -75
  138. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +99 -99
  139. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +62 -62
  140. package/esm2020/dashboard/lib/dashboard.module.mjs +47 -47
  141. package/esm2020/dashboard/public_api.mjs +9 -9
  142. package/esm2020/dialog/bravobit-bb-foundation-dialog.mjs +4 -4
  143. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +12 -12
  144. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +37 -37
  145. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +153 -153
  146. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +25 -25
  147. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +11 -11
  148. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +46 -46
  149. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +134 -134
  150. package/esm2020/dialog/lib/dialog.injector.mjs +18 -18
  151. package/esm2020/dialog/lib/dialog.insertion.mjs +16 -16
  152. package/esm2020/dialog/lib/dialog.interfaces.mjs +3 -3
  153. package/esm2020/dialog/lib/dialog.module.mjs +70 -70
  154. package/esm2020/dialog/lib/dialog.ref.mjs +22 -22
  155. package/esm2020/dialog/lib/dialog.service.mjs +77 -77
  156. package/esm2020/dialog/public_api.mjs +10 -10
  157. package/esm2020/elements/bravobit-bb-foundation-elements.mjs +4 -4
  158. package/esm2020/elements/lib/avatar/avatar.component.mjs +145 -145
  159. package/esm2020/elements/lib/button/button.component.mjs +61 -61
  160. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +73 -73
  161. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +304 -304
  162. package/esm2020/elements/lib/directives/addon.directive.mjs +29 -29
  163. package/esm2020/elements/lib/directives/autosize.directive.mjs +72 -72
  164. package/esm2020/elements/lib/directives/focus-trap.directive.mjs +77 -77
  165. package/esm2020/elements/lib/directives/focus.directive.mjs +39 -39
  166. package/esm2020/elements/lib/directives/form-submit.directive.mjs +50 -50
  167. package/esm2020/elements/lib/directives/input.directive.mjs +136 -136
  168. package/esm2020/elements/lib/directives/template.directive.mjs +28 -28
  169. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +100 -100
  170. package/esm2020/elements/lib/elements.interfaces.mjs +4 -4
  171. package/esm2020/elements/lib/elements.module.mjs +177 -177
  172. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +236 -236
  173. package/esm2020/elements/lib/form-control/form-control.component.mjs +49 -49
  174. package/esm2020/elements/lib/form-error/form-error.component.mjs +108 -108
  175. package/esm2020/elements/lib/form-group/form-group.component.mjs +18 -18
  176. package/esm2020/elements/lib/icon/icon.component.mjs +102 -102
  177. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +106 -106
  178. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +42 -42
  179. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +28 -28
  180. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +94 -94
  181. package/esm2020/elements/lib/spinner/spinner.component.mjs +25 -25
  182. package/esm2020/elements/lib/tag/tag.component.mjs +18 -18
  183. package/esm2020/elements/public_api.mjs +26 -26
  184. package/esm2020/http/bravobit-bb-foundation-http.mjs +4 -4
  185. package/esm2020/http/lib/classes/http.config.mjs +29 -29
  186. package/esm2020/http/lib/classes/http.error.mjs +20 -20
  187. package/esm2020/http/lib/http.interfaces.mjs +2 -2
  188. package/esm2020/http/lib/http.module.mjs +43 -43
  189. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +50 -50
  190. package/esm2020/http/lib/interceptors/error.interceptor.mjs +32 -32
  191. package/esm2020/http/public_api.mjs +7 -7
  192. package/esm2020/lib/core/miscellaneous/regex.mjs +5 -5
  193. package/esm2020/lib/core/miscellaneous/validator.mjs +85 -85
  194. package/esm2020/lib/core/mixins/can-disable.mjs +16 -16
  195. package/esm2020/lib/core/mixins/can-hide-errors.mjs +16 -16
  196. package/esm2020/lib/core/mixins/can-load.mjs +16 -16
  197. package/esm2020/lib/core/mixins/constructor.mjs +2 -2
  198. package/esm2020/lib/core/mixins/has-error.mjs +16 -16
  199. package/esm2020/lib/core/mixins/is-focused.mjs +16 -16
  200. package/esm2020/lib/core/mixins/is-grouped.mjs +16 -16
  201. package/esm2020/lib/core/mixins/is-readonly.mjs +16 -16
  202. package/esm2020/lib/core/mixins/is-required.mjs +16 -16
  203. package/esm2020/lib/core/services/clipboard.service.mjs +70 -70
  204. package/esm2020/lib/core/services/exif.service.mjs +163 -163
  205. package/esm2020/lib/core/services/file-loader.service.mjs +87 -87
  206. package/esm2020/lib/core/services/image-converter.service.mjs +123 -123
  207. package/esm2020/lib/core/services/languages.service.mjs +74 -74
  208. package/esm2020/lib/core/services/network.service.mjs +55 -55
  209. package/esm2020/lib/core/services/patch.service.mjs +63 -63
  210. package/esm2020/lib/core/services/platform.service.mjs +42 -42
  211. package/esm2020/lib/core/tokens/accept-language.token.mjs +3 -3
  212. package/esm2020/lib/core/tokens/base-url.token.mjs +3 -3
  213. package/esm2020/lib/core/tokens/cookie.token.mjs +3 -3
  214. package/esm2020/lib/core/tokens/location.token.mjs +6 -6
  215. package/esm2020/lib/core/tokens/navigator.token.mjs +6 -6
  216. package/esm2020/lib/core/tokens/window.token.mjs +12 -12
  217. package/esm2020/localize/bravobit-bb-foundation-localize.mjs +4 -4
  218. package/esm2020/localize/lib/functions/date.function.mjs +18 -18
  219. package/esm2020/localize/lib/functions/lowercase.function.mjs +13 -13
  220. package/esm2020/localize/lib/functions/uppercase.function.mjs +13 -13
  221. package/esm2020/localize/lib/handlers/missing.handler.mjs +15 -15
  222. package/esm2020/localize/lib/interfaces/config.interfaces.mjs +7 -7
  223. package/esm2020/localize/lib/interfaces/functions.interfaces.mjs +8 -8
  224. package/esm2020/localize/lib/interfaces/handlers.interfaces.mjs +2 -2
  225. package/esm2020/localize/lib/interfaces/options.interfaces.mjs +6 -6
  226. package/esm2020/localize/lib/localizations/dutch.localization.mjs +45 -45
  227. package/esm2020/localize/lib/localizations/english.localization.mjs +45 -45
  228. package/esm2020/localize/lib/localize.dictionary.mjs +26 -26
  229. package/esm2020/localize/lib/localize.module.mjs +71 -71
  230. package/esm2020/localize/lib/localize.pipe.mjs +49 -49
  231. package/esm2020/localize/lib/localize.service.mjs +207 -205
  232. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +88 -88
  233. package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +28 -28
  234. package/esm2020/localize/lib/views/localize-template.directive.mjs +21 -21
  235. package/esm2020/localize/public_api.mjs +17 -17
  236. package/esm2020/notifications/bravobit-bb-foundation-notifications.mjs +4 -4
  237. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +100 -100
  238. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +47 -47
  239. package/esm2020/notifications/lib/notifications.animations.mjs +28 -28
  240. package/esm2020/notifications/lib/notifications.injector.mjs +18 -18
  241. package/esm2020/notifications/lib/notifications.interfaces.mjs +20 -20
  242. package/esm2020/notifications/lib/notifications.module.mjs +30 -30
  243. package/esm2020/notifications/lib/notifications.service.mjs +145 -145
  244. package/esm2020/notifications/public_api.mjs +4 -4
  245. package/esm2020/public_api.mjs +29 -29
  246. package/esm2020/recaptcha/bravobit-bb-foundation-recaptcha.mjs +4 -4
  247. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +185 -185
  248. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +90 -90
  249. package/esm2020/recaptcha/lib/recaptcha.interface.mjs +3 -3
  250. package/esm2020/recaptcha/lib/recaptcha.module.mjs +27 -27
  251. package/esm2020/recaptcha/public_api.mjs +5 -5
  252. package/esm2020/rxjs/bravobit-bb-foundation-rxjs.mjs +4 -4
  253. package/esm2020/rxjs/lib/operators/combine-latest-map.operator.mjs +10 -10
  254. package/esm2020/rxjs/lib/operators/filter-nil.operator.mjs +5 -5
  255. package/esm2020/rxjs/public_api.mjs +3 -3
  256. package/esm2020/storage/bravobit-bb-foundation-storage.mjs +4 -4
  257. package/esm2020/storage/lib/interfaces/attributes.interface.mjs +2 -2
  258. package/esm2020/storage/lib/interfaces/memory.interface.mjs +2 -2
  259. package/esm2020/storage/lib/interfaces/strategy.interface.mjs +2 -2
  260. package/esm2020/storage/lib/storage.service.mjs +109 -109
  261. package/esm2020/storage/lib/strategies/cookie-storage.strategy.mjs +142 -142
  262. package/esm2020/storage/lib/strategies/memory-storage.strategy.mjs +56 -56
  263. package/esm2020/storage/lib/strategies/polyfill-storage.strategy.mjs +102 -102
  264. package/esm2020/storage/public_api.mjs +8 -8
  265. package/esm2020/table/bravobit-bb-foundation-table.mjs +4 -4
  266. package/esm2020/table/lib/components/table/table.component.mjs +191 -191
  267. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +11 -11
  268. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +131 -131
  269. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +136 -136
  270. package/esm2020/table/lib/data/datasource.data.mjs +32 -32
  271. package/esm2020/table/lib/data/generic.data.mjs +72 -72
  272. package/esm2020/table/lib/interfaces/datasource.interface.mjs +2 -2
  273. package/esm2020/table/lib/interfaces/table.interfaces.mjs +2 -2
  274. package/esm2020/table/lib/table.module.mjs +42 -42
  275. package/esm2020/table/public_api.mjs +10 -10
  276. package/fesm2015/bravobit-bb-foundation-auth.mjs +930 -930
  277. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  278. package/fesm2015/bravobit-bb-foundation-collections.mjs +423 -423
  279. package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
  280. package/fesm2015/bravobit-bb-foundation-controls.mjs +216 -216
  281. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
  282. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +382 -382
  283. package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  284. package/fesm2015/bravobit-bb-foundation-dialog.mjs +542 -542
  285. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
  286. package/fesm2015/bravobit-bb-foundation-elements.mjs +1970 -1970
  287. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  288. package/fesm2015/bravobit-bb-foundation-http.mjs +156 -156
  289. package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
  290. package/fesm2015/bravobit-bb-foundation-localize.mjs +608 -606
  291. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
  292. package/fesm2015/bravobit-bb-foundation-notifications.mjs +348 -348
  293. package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
  294. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +290 -290
  295. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  296. package/fesm2015/bravobit-bb-foundation-rxjs.mjs +7 -7
  297. package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  298. package/fesm2015/bravobit-bb-foundation-storage.mjs +401 -401
  299. package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
  300. package/fesm2015/bravobit-bb-foundation-table.mjs +571 -571
  301. package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
  302. package/fesm2015/bravobit-bb-foundation.mjs +859 -859
  303. package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
  304. package/fesm2020/bravobit-bb-foundation-auth.mjs +882 -882
  305. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  306. package/fesm2020/bravobit-bb-foundation-collections.mjs +413 -413
  307. package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
  308. package/fesm2020/bravobit-bb-foundation-controls.mjs +214 -214
  309. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
  310. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +370 -370
  311. package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  312. package/fesm2020/bravobit-bb-foundation-dialog.mjs +541 -541
  313. package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
  314. package/fesm2020/bravobit-bb-foundation-elements.mjs +1927 -1927
  315. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  316. package/fesm2020/bravobit-bb-foundation-http.mjs +148 -148
  317. package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
  318. package/fesm2020/bravobit-bb-foundation-localize.mjs +587 -585
  319. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
  320. package/fesm2020/bravobit-bb-foundation-notifications.mjs +346 -346
  321. package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
  322. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +280 -280
  323. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  324. package/fesm2020/bravobit-bb-foundation-rxjs.mjs +10 -10
  325. package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  326. package/fesm2020/bravobit-bb-foundation-storage.mjs +396 -396
  327. package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
  328. package/fesm2020/bravobit-bb-foundation-table.mjs +560 -560
  329. package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
  330. package/fesm2020/bravobit-bb-foundation.mjs +831 -831
  331. package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
  332. package/http/bravobit-bb-foundation-http.d.ts +5 -5
  333. package/http/lib/classes/http.config.d.ts +9 -9
  334. package/http/lib/classes/http.error.d.ts +7 -7
  335. package/http/lib/http.interfaces.d.ts +12 -12
  336. package/http/lib/http.module.d.ts +15 -15
  337. package/http/lib/interceptors/base-url.interceptor.d.ts +15 -15
  338. package/http/lib/interceptors/error.interceptor.d.ts +11 -11
  339. package/http/public_api.d.ts +6 -6
  340. package/lib/core/miscellaneous/regex.d.ts +4 -4
  341. package/lib/core/miscellaneous/validator.d.ts +13 -13
  342. package/lib/core/mixins/can-disable.d.ts +6 -6
  343. package/lib/core/mixins/can-hide-errors.d.ts +6 -6
  344. package/lib/core/mixins/can-load.d.ts +6 -6
  345. package/lib/core/mixins/constructor.d.ts +1 -1
  346. package/lib/core/mixins/has-error.d.ts +6 -6
  347. package/lib/core/mixins/is-focused.d.ts +6 -6
  348. package/lib/core/mixins/is-grouped.d.ts +6 -6
  349. package/lib/core/mixins/is-readonly.d.ts +6 -6
  350. package/lib/core/mixins/is-required.d.ts +6 -6
  351. package/lib/core/services/clipboard.service.d.ts +18 -18
  352. package/lib/core/services/exif.service.d.ts +15 -15
  353. package/lib/core/services/file-loader.service.d.ts +13 -13
  354. package/lib/core/services/image-converter.service.d.ts +21 -21
  355. package/lib/core/services/languages.service.d.ts +16 -16
  356. package/lib/core/services/network.service.d.ts +14 -14
  357. package/lib/core/services/patch.service.d.ts +16 -16
  358. package/lib/core/services/platform.service.d.ts +18 -18
  359. package/lib/core/tokens/accept-language.token.d.ts +2 -2
  360. package/lib/core/tokens/base-url.token.d.ts +2 -2
  361. package/lib/core/tokens/cookie.token.d.ts +2 -2
  362. package/lib/core/tokens/location.token.d.ts +2 -2
  363. package/lib/core/tokens/navigator.token.d.ts +2 -2
  364. package/lib/core/tokens/window.token.d.ts +2 -2
  365. package/localize/bravobit-bb-foundation-localize.d.ts +5 -5
  366. package/localize/lib/functions/date.function.d.ts +5 -5
  367. package/localize/lib/functions/lowercase.function.d.ts +5 -5
  368. package/localize/lib/functions/uppercase.function.d.ts +5 -5
  369. package/localize/lib/handlers/missing.handler.d.ts +6 -6
  370. package/localize/lib/interfaces/config.interfaces.d.ts +18 -18
  371. package/localize/lib/interfaces/functions.interfaces.d.ts +9 -9
  372. package/localize/lib/interfaces/handlers.interfaces.d.ts +6 -6
  373. package/localize/lib/interfaces/options.interfaces.d.ts +10 -10
  374. package/localize/lib/localizations/dutch.localization.d.ts +44 -44
  375. package/localize/lib/localizations/english.localization.d.ts +44 -44
  376. package/localize/lib/localize.dictionary.d.ts +7 -7
  377. package/localize/lib/localize.module.d.ts +17 -17
  378. package/localize/lib/localize.pipe.d.ts +12 -12
  379. package/localize/lib/localize.service.d.ts +40 -40
  380. package/localize/lib/views/localize-string/localize-string.component.d.ts +23 -23
  381. package/localize/lib/views/localize-template-or-string.directive.d.ts +10 -10
  382. package/localize/lib/views/localize-template.directive.d.ts +9 -9
  383. package/localize/public_api.d.ts +16 -16
  384. package/notifications/bravobit-bb-foundation-notifications.d.ts +5 -5
  385. package/notifications/lib/notifications-item/notifications-item.component.d.ts +34 -34
  386. package/notifications/lib/notifications-list/notifications-list.component.d.ts +16 -16
  387. package/notifications/lib/notifications.animations.d.ts +1 -1
  388. package/notifications/lib/notifications.injector.d.ts +8 -8
  389. package/notifications/lib/notifications.interfaces.d.ts +49 -49
  390. package/notifications/lib/notifications.module.d.ts +13 -13
  391. package/notifications/lib/notifications.service.d.ts +34 -34
  392. package/notifications/public_api.d.ts +3 -3
  393. package/package.json +1 -1
  394. package/public_api.d.ts +25 -25
  395. package/recaptcha/bravobit-bb-foundation-recaptcha.d.ts +5 -5
  396. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +47 -47
  397. package/recaptcha/lib/recaptcha-loader.service.d.ts +22 -22
  398. package/recaptcha/lib/recaptcha.interface.d.ts +14 -14
  399. package/recaptcha/lib/recaptcha.module.d.ts +10 -10
  400. package/recaptcha/public_api.d.ts +4 -4
  401. package/rxjs/bravobit-bb-foundation-rxjs.d.ts +5 -5
  402. package/rxjs/lib/operators/combine-latest-map.operator.d.ts +8 -8
  403. package/rxjs/lib/operators/filter-nil.operator.d.ts +1 -1
  404. package/rxjs/public_api.d.ts +2 -2
  405. package/storage/bravobit-bb-foundation-storage.d.ts +5 -5
  406. package/storage/lib/interfaces/attributes.interface.d.ts +13 -13
  407. package/storage/lib/interfaces/memory.interface.d.ts +7 -7
  408. package/storage/lib/interfaces/strategy.interface.d.ts +17 -17
  409. package/storage/lib/storage.service.d.ts +26 -26
  410. package/storage/lib/strategies/cookie-storage.strategy.d.ts +20 -20
  411. package/storage/lib/strategies/memory-storage.strategy.d.ts +11 -11
  412. package/storage/lib/strategies/polyfill-storage.strategy.d.ts +15 -15
  413. package/storage/public_api.d.ts +7 -7
  414. package/table/bravobit-bb-foundation-table.d.ts +5 -5
  415. package/table/lib/components/table/table.component.d.ts +56 -56
  416. package/table/lib/components/table-cell/table-cell.component.d.ts +5 -5
  417. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +29 -29
  418. package/table/lib/components/table-pager/table-pager.component.d.ts +41 -41
  419. package/table/lib/data/datasource.data.d.ts +14 -14
  420. package/table/lib/data/generic.data.d.ts +23 -23
  421. package/table/lib/interfaces/datasource.interface.d.ts +17 -17
  422. package/table/lib/interfaces/table.interfaces.d.ts +1 -1
  423. package/table/lib/table.module.d.ts +14 -14
  424. package/table/public_api.d.ts +9 -9
@@ -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: "13.3.6", 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: "13.3.6", ngImport: i0, type: Permissions });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", 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: "13.3.6", 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: "13.3.6", ngImport: i0, type: Permissions });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", 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,102 @@
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" /* Error */;
70
- }
71
- if (!!data?.initial) {
72
- return "initial" /* Initial */;
73
- }
74
- const count = data?.response?.data?.length ?? 0;
75
- if (count <= 0) {
76
- return "empty" /* Empty */;
77
- }
78
- return "data" /* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29sbGVjdGlvbnMvc3JjL2xpYi9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlHLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsT0FBTyxFQUFrQixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVM1RCxNQUFNLE9BQU8sVUFBVTtJQTJCbkIsWUFBNkIsU0FBZ0MsRUFDaEMsaUJBQTZDLEVBQUU7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBVG5FLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZELFNBQVM7UUFDRCxlQUFVLEdBQXlDLElBQUksQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBaUkvQyx3QkFBbUIsR0FBRyxDQUFjLE9BQXdCLEVBQUUsRUFBRTtZQUNwRSxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM1QixvQkFBb0IsRUFBSyxFQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLEtBQVUsQ0FBQyxDQUNqQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBbElFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxRQUErQztRQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sT0FBTztRQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUM3QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNuRCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxFQUN0RCxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQXFHO2dCQUN2SCxLQUFLO2dCQUNMLE9BQU87Z0JBQ1AsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLEtBQUs7YUFDakIsQ0FBQyxDQUFDLENBQ04sQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBMkQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUN2RyxDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFHLEVBQUMsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQzNDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2IsR0FBRyxRQUFRO2dCQUNYLFFBQVE7Z0JBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2FBQ2pDLENBQUMsQ0FBQyxDQUNOLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUEyQjtRQUM5QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FDckMsQ0FBQztJQUNOLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBMEI7UUFDOUMsaUZBQWlGO1FBQ2pGLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssS0FBSyxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxLQUFLLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRTtZQUN2SSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQztTQUN0RDtRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBQyxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBRWxDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBc0g7UUFDbkksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUNmLDJCQUE2QjtTQUNoQztRQUVELElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDakIsK0JBQStCO1NBQ2xDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWiwyQkFBNkI7U0FDaEM7UUFFRCx5QkFBNEI7SUFDaEMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQXVCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFZLE9BQU87UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQVMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0UsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFTLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFrRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUcsT0FBTyxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkQsVUFBVTtZQUNWLFFBQVE7WUFDUixLQUFLO1lBQ0wsV0FBVztZQUNYLElBQUk7U0FDUCxDQUFDLENBQUMsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdEMsWUFBWSxDQUFTLEdBQUcsQ0FBQyxFQUN6QixvQkFBb0IsRUFBVSxFQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFzQixDQUFDLENBQ3ZELENBQUM7SUFDTixDQUFDO0NBU0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbGxlY3Rpb25EYXRhLCBDb2xsZWN0aW9uUmVxdWVzdCwgQ29sbGVjdGlvblJlcXVlc3RTb3J0fSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Q29sbGVjdGlvblByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVycy9jb2xsZWN0aW9uLnByb3ZpZGVyJztcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBDb2xsZWN0aW9uU3RhdGUge1xyXG4gICAgSW5pdGlhbCA9ICdpbml0aWFsJyxcclxuICAgIEVycm9yID0gJ2Vycm9yJyxcclxuICAgIEVtcHR5ID0gJ2VtcHR5JyxcclxuICAgIERhdGEgPSAnZGF0YSdcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb248VD4ge1xyXG5cclxuICAgIC8vIENvbnRyb2xzLlxyXG4gICAgcmVhZG9ubHkgcXVlcnlDb250cm9sOiBGb3JtQ29udHJvbDtcclxuICAgIHJlYWRvbmx5IHF1ZXJ5RmllbGRzQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgICByZWFkb25seSBwYWdlTnVtYmVyQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgICByZWFkb25seSBwYWdlU2l6ZUNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG4gICAgcmVhZG9ubHkgc29ydENvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAgIC8vIFJlcXVlc3QuXHJcbiAgICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTx7XHJcbiAgICAgICAgcmVzcG9uc2U/OiBDb2xsZWN0aW9uRGF0YTxUPixcclxuICAgICAgICByZXF1ZXN0PzogQ29sbGVjdGlvblJlcXVlc3QsXHJcbiAgICAgICAgZXJyb3I/OiBFcnJvclxyXG4gICAgICAgIHN0YXRlOiBDb2xsZWN0aW9uU3RhdGUsXHJcbiAgICAgICAgbG9hZGluZzogYm9vbGVhbixcclxuICAgICAgICBpbml0aWFsOiBib29sZWFuXHJcbiAgICB9PjtcclxuXHJcbiAgICByZWFkb25seSByYXckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb2xsZWN0aW9uRGF0YTxUPiB8IG51bGw+KG51bGwpO1xyXG4gICAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG5cclxuICAgIC8vIFN0YXRlLlxyXG4gICAgcHJpdmF0ZSBfZm9ybWF0dGVyOiAoaXRlbTogVFtdKSA9PiBUW10gfCBPYnNlcnZhYmxlPFRbXT4gPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICBwcml2YXRlIF9yZXF1ZXN0Q2FjaGU6IENvbGxlY3Rpb25SZXF1ZXN0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfcHJvdmlkZXI6IENvbGxlY3Rpb25Qcm92aWRlcjxUPixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxWYWx1ZXM6IFBhcnRpYWw8Q29sbGVjdGlvblJlcXVlc3Q+ID0ge30pIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChfaW5pdGlhbFZhbHVlcz8ucXVlcnkgPz8gbnVsbCk7XHJcbiAgICAgICAgdGhpcy5xdWVyeUZpZWxkc0NvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woX2luaXRpYWxWYWx1ZXM/LnF1ZXJ5RmllbGRzID8/IFtdKTtcclxuICAgICAgICB0aGlzLnBhZ2VOdW1iZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKF9pbml0aWFsVmFsdWVzPy5wYWdlTnVtYmVyID8/IDEpO1xyXG4gICAgICAgIHRoaXMucGFnZVNpemVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKF9pbml0aWFsVmFsdWVzPy5wYWdlU2l6ZSA/PyAyNSk7XHJcbiAgICAgICAgdGhpcy5zb3J0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChfaW5pdGlhbFZhbHVlcz8uc29ydCA/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 { 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" /* Error */;
70
+ }
71
+ if (!!data?.initial) {
72
+ return "initial" /* Initial */;
73
+ }
74
+ const count = data?.response?.data?.length ?? 0;
75
+ if (count <= 0) {
76
+ return "empty" /* Empty */;
77
+ }
78
+ return "data" /* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29sbGVjdGlvbnMvc3JjL2xpYi9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlHLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsT0FBTyxFQUFrQixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVM1RCxNQUFNLE9BQU8sVUFBVTtJQTJCbkIsWUFBNkIsU0FBZ0MsRUFDaEMsaUJBQTZDLEVBQUU7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBVG5FLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZELFNBQVM7UUFDRCxlQUFVLEdBQXlDLElBQUksQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBaUkvQyx3QkFBbUIsR0FBRyxDQUFjLE9BQXdCLEVBQUUsRUFBRTtZQUNwRSxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM1QixvQkFBb0IsRUFBSyxFQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLEtBQVUsQ0FBQyxDQUNqQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBbElFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxF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LENBQUMsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdEMsWUFBWSxDQUFTLEdBQUcsQ0FBQyxFQUN6QixvQkFBb0IsRUFBVSxFQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFzQixDQUFDLENBQ3ZELENBQUM7SUFDTixDQUFDO0NBU0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDb2xsZWN0aW9uRGF0YSwgQ29sbGVjdGlvblJlcXVlc3QsIENvbGxlY3Rpb25SZXF1ZXN0U29ydH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29sbGVjdGlvblByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVycy9jb2xsZWN0aW9uLnByb3ZpZGVyJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgZW51bSBDb2xsZWN0aW9uU3RhdGUge1xuICAgIEluaXRpYWwgPSAnaW5pdGlhbCcsXG4gICAgRXJyb3IgPSAnZXJyb3InLFxuICAgIEVtcHR5ID0gJ2VtcHR5JyxcbiAgICBEYXRhID0gJ2RhdGEnXG59XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uPFQ+IHtcblxuICAgIC8vIENvbnRyb2xzLlxuICAgIHJlYWRvbmx5IHF1ZXJ5Q29udHJvbDogRm9ybUNvbnRyb2w7XG4gICAgcmVhZG9ubHkgcXVlcnlGaWVsZHNDb250cm9sOiBGb3JtQ29udHJvbDtcbiAgICByZWFkb25seSBwYWdlTnVtYmVyQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gICAgcmVhZG9ubHkgcGFnZVNpemVDb250cm9sOiBGb3JtQ29udHJvbDtcbiAgICByZWFkb25seSBzb3J0Q29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgICAvLyBSZXF1ZXN0LlxuICAgIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPHtcbiAgICAgICAgcmVzcG9uc2U/OiBDb2xsZWN0aW9uRGF0YTxUPixcbiAgICAgICAgcmVxdWVzdD86IENvbGxlY3Rpb25SZXF1ZXN0LFxuICAgICAgICBlcnJvcj86IEVycm9yXG4gICAgICAgIHN0YXRlOiBDb2xsZWN0aW9uU3RhdGUsXG4gICAgICAgIGxvYWRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGluaXRpYWw6IGJvb2xlYW5cbiAgICB9PjtcblxuICAgIHJlYWRvbmx5IHJhdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbGxlY3Rpb25EYXRhPFQ+IHwgbnVsbD4obnVsbCk7XG4gICAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgcHJpdmF0ZSBfZm9ybWF0dGVyOiAoaXRlbTogVFtdKSA9PiBUW10gfCBPYnNlcnZhYmxlPFRbXT4gPSBudWxsO1xuICAgIHByaXZhdGUgX3JlZnJlc2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHByaXZhdGUgX3JlcXVlc3RDYWNoZTogQ29sbGVjdGlvblJlcXVlc3QgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3Byb3ZpZGVyOiBDb2xsZWN0aW9uUHJvdmlkZXI8VD4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbFZhbHVlczogUGFydGlhbDxDb2xsZWN0aW9uUmVxdWVzdD4gPSB7fSkge1xuICAgICAgICB0aGlzLnF1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChfaW5pdGlhbFZhbHVlcz8ucXVlcnkgPz8gbnVsbCk7XG4gICAgICAgIHRoaXMucXVlcnlGaWVsZHNDb250cm9sID0gbmV3IEZvcm1Db250cm9sKF9pbml0aWFsVmFsdWVzPy5xdWVyeUZpZWxkcyA/PyBbXSk7XG4gICAgICAgIHRoaXMucGFnZU51bWJlckNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woX2luaXRpYWxWYWx1ZXM/LnBhZ2VOdW1iZXIgPz8gMSk7XG4gICAgICAgIHRoaXMucGFnZVNpemVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKF9pbml0aWFsVmFsdWVzPy5wYWdlU2l6ZSA/PyAyNSk7XG4gICAgICAgIHRoaXMuc29ydENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woX2luaXRpYWxWYWx1ZXM/LnNvcnQgPz8gbnVsbCk7XG5cbiAgICAgICAgdGhpcy5kYXRhJCA9IHRoaXMuZ2V0RGF0YSgpO1xuICAgIH1cblxuICAgIHJlZnJlc2goKSB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoMCk7XG4gICAgfVxuXG4gICAgc2V0Rm9ybWF0dGVyKGNhbGxiYWNrOiAoaXRlbXM6IFRbXSkgPT4gVFtdIHwgT2JzZXJ2YWJsZTxUW10+KSB7XG4gICAgICAgIHRoaXMuX2Zvcm1hdHRlciA9IGNhbGxiYWNrO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGEoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEkID0gdGhpcy5yZXF1ZXN0LnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICAgICAgICAgIG1hcChyZXF1ZXN0ID0+IHRoaXMudmFsaWRhdGVSZXF1ZXN0KHJlcXVlc3QpKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChyZXF1ZXN0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXIudHJhbnNmb3JtKHJlcXVlc3QpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRhcChyZXNwb25zZSA9PiB0aGlzLmNhY2hlQ29sbGVjdGlvbkRhdGEocmVzcG9uc2UpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+ICh7cmVzcG9uc2UsIHJlcXVlc3QsIGluaXRpYWw6IGZhbHNlfSkpLFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IG9mPHsgZXJyb3I6IEVycm9yLCByZXNwb25zZTogQ29sbGVjdGlvbkRhdGE8VD4gfCBudWxsLCByZXF1ZXN0OiBDb2xsZWN0aW9uUmVxdWVzdCwgaW5pdGlhbDogYm9vbGVhbiB9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aDx7IGluaXRpYWw6IGJvb2xlYW4sIHJlc3BvbnNlOiBDb2xsZWN0aW9uRGF0YTxUPiB8IG51bGwgfT4oe2luaXRpYWw6IHRydWUsIHJlc3BvbnNlOiBudWxsfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbZGF0YSQsIHRoaXMubG9hZGluZyQuYXNPYnNlcnZhYmxlKCldKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbZGF0YSwgbG9hZGluZ10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21iaW5lZCA9IHsuLi5kYXRhLCBsb2FkaW5nfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRSZXNwb25zZShkYXRhPy5yZXNwb25zZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb21iaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHRoaXMuZ2V0U3RhdGUoY29tYmluZWQpXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0UmVzcG9uc2UocmVzcG9uc2U6IENvbGxlY3Rpb25EYXRhPFQ+KSB7XG4gICAgICAgIGlmICghcmVzcG9uc2UgfHwgIXRoaXMuX2Zvcm1hdHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzcG9uc2U/LmRhdGEgPz8gW107XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9mb3JtYXR0ZXI/LihpdGVtcykgPz8gaXRlbXM7XG4gICAgICAgIGNvbnN0IGRhdGEkID0gaXNPYnNlcnZhYmxlKGRhdGEpID8gZGF0YSA6IG9mKGRhdGEpO1xuXG4gICAgICAgIHJldHVybiBkYXRhJC5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gKHsuLi5yZXNwb25zZSwgZGF0YX0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVSZXF1ZXN0KHJlcXVlc3Q6IENvbGxlY3Rpb25SZXF1ZXN0KSB7XG4gICAgICAgIC8vIFdlIHNob3VsZCByZXNldCB0aGUgcGFnZSBudW1iZXIgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBxdWVyeSBvciB0aGUgcGFnZSBzaXplLlxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdENhY2hlICYmIHJlcXVlc3QgJiYgKHRoaXMuX3JlcXVlc3RDYWNoZT8ucXVlcnkgIT09IHJlcXVlc3Q/LnF1ZXJ5IHx8IHRoaXMuX3JlcXVlc3RDYWNoZT8ucGFnZVNpemUgIT09IHJlcXVlc3Q/LnBhZ2VTaXplKSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlTnVtYmVyQ29udHJvbD8uc2V0VmFsdWUoMSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIHJlcXVlc3QucGFnZU51bWJlciA9IHRoaXMucGFnZU51bWJlckNvbnRyb2w/LnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVxdWVzdENhY2hlID0gey4uLnJlcXVlc3R9O1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3RhdGUoZGF0YTogeyByZXNwb25zZT86IENvbGxlY3Rpb25EYXRhPFQ+LCByZXF1ZXN0PzogQ29sbGVjdGlvblJlcXVlc3QsIGVycm9yPzogRXJyb3IsIGxvYWRpbmc6IGJvb2xlYW4sIGluaXRpYWw6IGJvb2xlYW4gfSkge1xuICAgICAgICBpZiAoISFkYXRhPy5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25TdGF0ZS5FcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWRhdGE/LmluaXRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9uU3RhdGUuSW5pdGlhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdW50ID0gZGF0YT8ucmVzcG9uc2U/LmRhdGE/Lmxlbmd0aCA/PyAwO1xuICAgICAgICBpZiAoY291bnQgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25TdGF0ZS5FbXB0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBDb2xsZWN0aW9uU3RhdGUuRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhY2hlQ29sbGVjdGlvbkRhdGEoZGF0YTogQ29sbGVjdGlvbkRhdGE8VD4pIHtcbiAgICAgICAgdGhpcy5yYXckLm5leHQoZGF0YSk7XG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgcmVxdWVzdCgpIHtcbiAgICAgICAgY29uc3QgcGFnZU51bWJlciQgPSB0aGlzLmNvbnRyb2xUb09ic2VydmFibGU8bnVtYmVyPih0aGlzLnBhZ2VOdW1iZXJDb250cm9sKTtcbiAgICAgICAgY29uc3QgcGFnZVNpemUkID0gdGhpcy5jb250cm9sVG9PYnNlcnZhYmxlPG51bWJlcj4odGhpcy5wYWdlU2l6ZUNvbnRyb2wpO1xuICAgICAgICBjb25zdCBxdWVyeSQgPSB0aGlzLmdldFF1ZXJ5T2JzZXJ2YWJsZSgpO1xuICAgICAgICBjb25zdCBxdWVyeUZpZWxkcyQgPSB0aGlzLmNvbnRyb2xUb09ic2VydmFibGU8c3RyaW5nW10+KHRoaXMucXVlcnlGaWVsZHNDb250cm9sKTtcbiAgICAgICAgY29uc3Qgc29ydCQgPSB0aGlzLmNvbnRyb2xUb09ic2VydmFibGU8Q29sbGVjdGlvblJlcXVlc3RTb3J0IHwgQ29sbGVjdGlvblJlcXVlc3RTb3J0W10+KHRoaXMuc29ydENvbnRyb2wpO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtwYWdlTnVtYmVyJCwgcGFnZVNpemUkLCBxdWVyeSQsIHF1ZXJ5RmllbGRzJCwgc29ydCQsIHRoaXMuX3JlZnJlc2gkLmFzT2JzZXJ2YWJsZSgpXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3BhZ2VOdW1iZXIsIHBhZ2VTaXplLCBxdWVyeSwgcXVlcnlGaWVsZHMsIHNvcnRdKSA9PiAoe1xuICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIsXG4gICAgICAgICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgcXVlcnlGaWVsZHMsXG4gICAgICAgICAgICAgICAgc29ydFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRRdWVyeU9ic2VydmFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZTxzdHJpbmc+KDQwMCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxzdHJpbmc+KCksXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy5xdWVyeUNvbnRyb2w/LnZhbHVlIGFzIHN0cmluZyB8IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb250cm9sVG9PYnNlcnZhYmxlID0gPFQgPSB1bmtub3duPihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxUPigpLFxuICAgICAgICAgICAgc3RhcnRXaXRoKGNvbnRyb2w/LnZhbHVlIGFzIFQpXG4gICAgICAgICk7XG4gICAgfTtcblxufVxuXG4iXX0=