@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.
- package/README.md +47 -47
- package/auth/bravobit-bb-foundation-auth.d.ts +5 -5
- package/auth/lib/auth.interceptor.d.ts +21 -21
- package/auth/lib/auth.module.d.ts +15 -15
- package/auth/lib/auth.service.d.ts +59 -59
- package/auth/lib/auth.session.d.ts +34 -34
- package/auth/lib/directives/authenticated.directive.d.ts +14 -14
- package/auth/lib/directives/permission.directive.d.ts +24 -24
- package/auth/lib/directives/role.directive.d.ts +16 -16
- package/auth/lib/guards/anonymous.guard.d.ts +11 -11
- package/auth/lib/guards/authenticated.guard.d.ts +11 -11
- package/auth/lib/helpers/jwt.helper.d.ts +8 -8
- package/auth/lib/helpers/mapper.helper.d.ts +23 -23
- package/auth/lib/interfaces/config.interface.d.ts +12 -12
- package/auth/lib/interfaces/mapper.interface.d.ts +19 -19
- package/auth/lib/interfaces/provider.interface.d.ts +16 -16
- package/auth/lib/interfaces/token.interface.d.ts +11 -11
- package/auth/lib/permissions.service.d.ts +14 -14
- package/auth/lib/providers/email.provider.d.ts +15 -15
- package/auth/lib/providers/verify.provider.d.ts +13 -13
- package/auth/lib/tokens/use-authorization.token.d.ts +2 -2
- package/auth/public_api.d.ts +18 -18
- package/bravobit-bb-foundation.d.ts +5 -5
- package/collections/bravobit-bb-foundation-collections.d.ts +5 -5
- package/collections/lib/collection.d.ts +43 -43
- package/collections/lib/collections.module.d.ts +10 -10
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +34 -34
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +12 -12
- package/collections/lib/components/collections.directive.d.ts +17 -17
- package/collections/lib/interfaces/collection.interface.d.ts +26 -26
- package/collections/lib/providers/api-collection.provider.d.ts +19 -17
- package/collections/lib/providers/collection.provider.d.ts +6 -6
- package/collections/lib/providers/local-collection.provider.d.ts +8 -8
- package/collections/public_api.d.ts +9 -9
- package/controls/bravobit-bb-foundation-controls.d.ts +5 -5
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +47 -47
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +18 -18
- package/controls/lib/checkbox/checkbox.module.d.ts +9 -9
- package/controls/lib/controls.module.d.ts +7 -7
- package/controls/public_api.d.ts +4 -4
- package/dashboard/bravobit-bb-foundation-dashboard.d.ts +5 -5
- package/dashboard/lib/dashboard/dashboard.component.d.ts +19 -19
- package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +11 -11
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +9 -9
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +11 -11
- package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +21 -21
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +27 -27
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +16 -16
- package/dashboard/lib/dashboard.module.d.ts +16 -16
- package/dashboard/public_api.d.ts +8 -8
- package/dialog/bravobit-bb-foundation-dialog.d.ts +5 -5
- package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +5 -5
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +16 -16
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +24 -24
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +9 -9
- package/dialog/lib/dialog-link/dialog-link.component.d.ts +5 -5
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +12 -12
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +22 -22
- package/dialog/lib/dialog.injector.d.ts +8 -8
- package/dialog/lib/dialog.insertion.d.ts +8 -8
- package/dialog/lib/dialog.interfaces.d.ts +3 -3
- package/dialog/lib/dialog.module.d.ts +19 -19
- package/dialog/lib/dialog.ref.d.ts +8 -8
- package/dialog/lib/dialog.service.d.ts +19 -19
- package/dialog/public_api.d.ts +9 -9
- package/elements/bravobit-bb-foundation-elements.d.ts +5 -5
- package/elements/lib/avatar/avatar.component.d.ts +25 -25
- package/elements/lib/button/button.component.d.ts +23 -23
- package/elements/lib/checkbox/checkbox.component.d.ts +27 -27
- package/elements/lib/date-picker/date-picker.component.d.ts +69 -69
- package/elements/lib/directives/addon.directive.d.ts +9 -9
- package/elements/lib/directives/autosize.directive.d.ts +18 -18
- package/elements/lib/directives/focus-trap.directive.d.ts +17 -17
- package/elements/lib/directives/focus.directive.d.ts +14 -14
- package/elements/lib/directives/form-submit.directive.d.ts +17 -17
- package/elements/lib/directives/input.directive.d.ts +38 -38
- package/elements/lib/directives/template.directive.d.ts +10 -10
- package/elements/lib/dropdown/dropdown.component.d.ts +21 -21
- package/elements/lib/elements.interfaces.d.ts +25 -25
- package/elements/lib/elements.module.d.ts +116 -116
- package/elements/lib/file-picker/file-picker.component.d.ts +49 -49
- package/elements/lib/form-control/form-control.component.d.ts +21 -21
- package/elements/lib/form-error/form-error.component.d.ts +29 -29
- package/elements/lib/form-group/form-group.component.d.ts +10 -10
- package/elements/lib/icon/icon.component.d.ts +22 -22
- package/elements/lib/image-picker/image-picker.component.d.ts +38 -38
- package/elements/lib/pipes/file-image.pipe.d.ts +13 -13
- package/elements/lib/pipes/file-size.pipe.d.ts +8 -8
- package/elements/lib/pipes/relative-time.pipe.d.ts +19 -19
- package/elements/lib/spinner/spinner.component.d.ts +12 -12
- package/elements/lib/tag/tag.component.d.ts +7 -7
- package/elements/public_api.d.ts +25 -25
- package/esm2020/auth/bravobit-bb-foundation-auth.mjs +4 -4
- package/esm2020/auth/lib/auth.interceptor.mjs +93 -93
- package/esm2020/auth/lib/auth.module.mjs +54 -54
- package/esm2020/auth/lib/auth.service.mjs +281 -281
- package/esm2020/auth/lib/auth.session.mjs +131 -131
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +31 -31
- package/esm2020/auth/lib/directives/permission.directive.mjs +80 -80
- package/esm2020/auth/lib/directives/role.directive.mjs +37 -37
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +34 -34
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +35 -35
- package/esm2020/auth/lib/helpers/jwt.helper.mjs +69 -69
- package/esm2020/auth/lib/helpers/mapper.helper.mjs +35 -35
- package/esm2020/auth/lib/interfaces/config.interface.mjs +3 -3
- package/esm2020/auth/lib/interfaces/mapper.interface.mjs +2 -2
- package/esm2020/auth/lib/interfaces/provider.interface.mjs +2 -2
- package/esm2020/auth/lib/interfaces/token.interface.mjs +2 -2
- package/esm2020/auth/lib/permissions.service.mjs +56 -56
- package/esm2020/auth/lib/providers/email.provider.mjs +25 -25
- package/esm2020/auth/lib/providers/verify.provider.mjs +19 -19
- package/esm2020/auth/lib/tokens/use-authorization.token.mjs +3 -3
- package/esm2020/auth/public_api.mjs +19 -19
- package/esm2020/bravobit-bb-foundation.mjs +4 -4
- package/esm2020/collections/bravobit-bb-foundation-collections.mjs +4 -4
- package/esm2020/collections/lib/collection.mjs +102 -102
- package/esm2020/collections/lib/collections.module.mjs +54 -54
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +123 -123
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +31 -31
- package/esm2020/collections/lib/components/collections.directive.mjs +43 -43
- package/esm2020/collections/lib/interfaces/collection.interface.mjs +2 -2
- package/esm2020/collections/lib/providers/api-collection.provider.mjs +71 -71
- package/esm2020/collections/lib/providers/collection.provider.mjs +13 -13
- package/esm2020/collections/lib/providers/local-collection.provider.mjs +16 -16
- package/esm2020/collections/public_api.mjs +10 -10
- package/esm2020/controls/bravobit-bb-foundation-controls.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +153 -153
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +48 -48
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +19 -19
- package/esm2020/controls/lib/controls.module.mjs +16 -16
- package/esm2020/controls/public_api.mjs +5 -5
- package/esm2020/dashboard/bravobit-bb-foundation-dashboard.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +56 -56
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +30 -30
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +31 -31
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +29 -29
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +75 -75
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +99 -99
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +62 -62
- package/esm2020/dashboard/lib/dashboard.module.mjs +47 -47
- package/esm2020/dashboard/public_api.mjs +9 -9
- package/esm2020/dialog/bravobit-bb-foundation-dialog.mjs +4 -4
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +12 -12
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +37 -37
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +153 -153
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +25 -25
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +11 -11
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +46 -46
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +134 -134
- package/esm2020/dialog/lib/dialog.injector.mjs +18 -18
- package/esm2020/dialog/lib/dialog.insertion.mjs +16 -16
- package/esm2020/dialog/lib/dialog.interfaces.mjs +3 -3
- package/esm2020/dialog/lib/dialog.module.mjs +70 -70
- package/esm2020/dialog/lib/dialog.ref.mjs +22 -22
- package/esm2020/dialog/lib/dialog.service.mjs +77 -77
- package/esm2020/dialog/public_api.mjs +10 -10
- package/esm2020/elements/bravobit-bb-foundation-elements.mjs +4 -4
- package/esm2020/elements/lib/avatar/avatar.component.mjs +145 -145
- package/esm2020/elements/lib/button/button.component.mjs +61 -61
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +73 -73
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +304 -304
- package/esm2020/elements/lib/directives/addon.directive.mjs +29 -29
- package/esm2020/elements/lib/directives/autosize.directive.mjs +72 -72
- package/esm2020/elements/lib/directives/focus-trap.directive.mjs +77 -77
- package/esm2020/elements/lib/directives/focus.directive.mjs +39 -39
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +50 -50
- package/esm2020/elements/lib/directives/input.directive.mjs +136 -136
- package/esm2020/elements/lib/directives/template.directive.mjs +28 -28
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +100 -100
- package/esm2020/elements/lib/elements.interfaces.mjs +4 -4
- package/esm2020/elements/lib/elements.module.mjs +177 -177
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +236 -236
- package/esm2020/elements/lib/form-control/form-control.component.mjs +49 -49
- package/esm2020/elements/lib/form-error/form-error.component.mjs +108 -108
- package/esm2020/elements/lib/form-group/form-group.component.mjs +18 -18
- package/esm2020/elements/lib/icon/icon.component.mjs +102 -102
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +106 -106
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +42 -42
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +28 -28
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +94 -94
- package/esm2020/elements/lib/spinner/spinner.component.mjs +25 -25
- package/esm2020/elements/lib/tag/tag.component.mjs +18 -18
- package/esm2020/elements/public_api.mjs +26 -26
- package/esm2020/http/bravobit-bb-foundation-http.mjs +4 -4
- package/esm2020/http/lib/classes/http.config.mjs +29 -29
- package/esm2020/http/lib/classes/http.error.mjs +20 -20
- package/esm2020/http/lib/http.interfaces.mjs +2 -2
- package/esm2020/http/lib/http.module.mjs +43 -43
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +50 -50
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +32 -32
- package/esm2020/http/public_api.mjs +7 -7
- package/esm2020/lib/core/miscellaneous/regex.mjs +5 -5
- package/esm2020/lib/core/miscellaneous/validator.mjs +85 -85
- package/esm2020/lib/core/mixins/can-disable.mjs +16 -16
- package/esm2020/lib/core/mixins/can-hide-errors.mjs +16 -16
- package/esm2020/lib/core/mixins/can-load.mjs +16 -16
- package/esm2020/lib/core/mixins/constructor.mjs +2 -2
- package/esm2020/lib/core/mixins/has-error.mjs +16 -16
- package/esm2020/lib/core/mixins/is-focused.mjs +16 -16
- package/esm2020/lib/core/mixins/is-grouped.mjs +16 -16
- package/esm2020/lib/core/mixins/is-readonly.mjs +16 -16
- package/esm2020/lib/core/mixins/is-required.mjs +16 -16
- package/esm2020/lib/core/services/clipboard.service.mjs +70 -70
- package/esm2020/lib/core/services/exif.service.mjs +163 -163
- package/esm2020/lib/core/services/file-loader.service.mjs +87 -87
- package/esm2020/lib/core/services/image-converter.service.mjs +123 -123
- package/esm2020/lib/core/services/languages.service.mjs +74 -74
- package/esm2020/lib/core/services/network.service.mjs +55 -55
- package/esm2020/lib/core/services/patch.service.mjs +63 -63
- package/esm2020/lib/core/services/platform.service.mjs +42 -42
- package/esm2020/lib/core/tokens/accept-language.token.mjs +3 -3
- package/esm2020/lib/core/tokens/base-url.token.mjs +3 -3
- package/esm2020/lib/core/tokens/cookie.token.mjs +3 -3
- package/esm2020/lib/core/tokens/location.token.mjs +6 -6
- package/esm2020/lib/core/tokens/navigator.token.mjs +6 -6
- package/esm2020/lib/core/tokens/window.token.mjs +12 -12
- package/esm2020/localize/bravobit-bb-foundation-localize.mjs +4 -4
- package/esm2020/localize/lib/functions/date.function.mjs +18 -18
- package/esm2020/localize/lib/functions/lowercase.function.mjs +13 -13
- package/esm2020/localize/lib/functions/uppercase.function.mjs +13 -13
- package/esm2020/localize/lib/handlers/missing.handler.mjs +15 -15
- package/esm2020/localize/lib/interfaces/config.interfaces.mjs +7 -7
- package/esm2020/localize/lib/interfaces/functions.interfaces.mjs +8 -8
- package/esm2020/localize/lib/interfaces/handlers.interfaces.mjs +2 -2
- package/esm2020/localize/lib/interfaces/options.interfaces.mjs +6 -6
- package/esm2020/localize/lib/localizations/dutch.localization.mjs +45 -45
- package/esm2020/localize/lib/localizations/english.localization.mjs +45 -45
- package/esm2020/localize/lib/localize.dictionary.mjs +26 -26
- package/esm2020/localize/lib/localize.module.mjs +71 -71
- package/esm2020/localize/lib/localize.pipe.mjs +49 -49
- package/esm2020/localize/lib/localize.service.mjs +207 -205
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +88 -88
- package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +28 -28
- package/esm2020/localize/lib/views/localize-template.directive.mjs +21 -21
- package/esm2020/localize/public_api.mjs +17 -17
- package/esm2020/notifications/bravobit-bb-foundation-notifications.mjs +4 -4
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +100 -100
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +47 -47
- package/esm2020/notifications/lib/notifications.animations.mjs +28 -28
- package/esm2020/notifications/lib/notifications.injector.mjs +18 -18
- package/esm2020/notifications/lib/notifications.interfaces.mjs +20 -20
- package/esm2020/notifications/lib/notifications.module.mjs +30 -30
- package/esm2020/notifications/lib/notifications.service.mjs +145 -145
- package/esm2020/notifications/public_api.mjs +4 -4
- package/esm2020/public_api.mjs +29 -29
- package/esm2020/recaptcha/bravobit-bb-foundation-recaptcha.mjs +4 -4
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +185 -185
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +90 -90
- package/esm2020/recaptcha/lib/recaptcha.interface.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +27 -27
- package/esm2020/recaptcha/public_api.mjs +5 -5
- package/esm2020/rxjs/bravobit-bb-foundation-rxjs.mjs +4 -4
- package/esm2020/rxjs/lib/operators/combine-latest-map.operator.mjs +10 -10
- package/esm2020/rxjs/lib/operators/filter-nil.operator.mjs +5 -5
- package/esm2020/rxjs/public_api.mjs +3 -3
- package/esm2020/storage/bravobit-bb-foundation-storage.mjs +4 -4
- package/esm2020/storage/lib/interfaces/attributes.interface.mjs +2 -2
- package/esm2020/storage/lib/interfaces/memory.interface.mjs +2 -2
- package/esm2020/storage/lib/interfaces/strategy.interface.mjs +2 -2
- package/esm2020/storage/lib/storage.service.mjs +109 -109
- package/esm2020/storage/lib/strategies/cookie-storage.strategy.mjs +142 -142
- package/esm2020/storage/lib/strategies/memory-storage.strategy.mjs +56 -56
- package/esm2020/storage/lib/strategies/polyfill-storage.strategy.mjs +102 -102
- package/esm2020/storage/public_api.mjs +8 -8
- package/esm2020/table/bravobit-bb-foundation-table.mjs +4 -4
- package/esm2020/table/lib/components/table/table.component.mjs +191 -191
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +11 -11
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +131 -131
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +136 -136
- package/esm2020/table/lib/data/datasource.data.mjs +32 -32
- package/esm2020/table/lib/data/generic.data.mjs +72 -72
- package/esm2020/table/lib/interfaces/datasource.interface.mjs +2 -2
- package/esm2020/table/lib/interfaces/table.interfaces.mjs +2 -2
- package/esm2020/table/lib/table.module.mjs +42 -42
- package/esm2020/table/public_api.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-auth.mjs +930 -930
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +423 -423
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +216 -216
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +382 -382
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +542 -542
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +1970 -1970
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +156 -156
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +608 -606
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +348 -348
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +290 -290
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs +7 -7
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +401 -401
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +571 -571
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation.mjs +859 -859
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-auth.mjs +882 -882
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +413 -413
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +214 -214
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +370 -370
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +541 -541
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +1927 -1927
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +148 -148
- package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-localize.mjs +587 -585
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +346 -346
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +280 -280
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-rxjs.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-storage.mjs +396 -396
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +560 -560
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation.mjs +831 -831
- package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
- package/http/bravobit-bb-foundation-http.d.ts +5 -5
- package/http/lib/classes/http.config.d.ts +9 -9
- package/http/lib/classes/http.error.d.ts +7 -7
- package/http/lib/http.interfaces.d.ts +12 -12
- package/http/lib/http.module.d.ts +15 -15
- package/http/lib/interceptors/base-url.interceptor.d.ts +15 -15
- package/http/lib/interceptors/error.interceptor.d.ts +11 -11
- package/http/public_api.d.ts +6 -6
- package/lib/core/miscellaneous/regex.d.ts +4 -4
- package/lib/core/miscellaneous/validator.d.ts +13 -13
- package/lib/core/mixins/can-disable.d.ts +6 -6
- package/lib/core/mixins/can-hide-errors.d.ts +6 -6
- package/lib/core/mixins/can-load.d.ts +6 -6
- package/lib/core/mixins/constructor.d.ts +1 -1
- package/lib/core/mixins/has-error.d.ts +6 -6
- package/lib/core/mixins/is-focused.d.ts +6 -6
- package/lib/core/mixins/is-grouped.d.ts +6 -6
- package/lib/core/mixins/is-readonly.d.ts +6 -6
- package/lib/core/mixins/is-required.d.ts +6 -6
- package/lib/core/services/clipboard.service.d.ts +18 -18
- package/lib/core/services/exif.service.d.ts +15 -15
- package/lib/core/services/file-loader.service.d.ts +13 -13
- package/lib/core/services/image-converter.service.d.ts +21 -21
- package/lib/core/services/languages.service.d.ts +16 -16
- package/lib/core/services/network.service.d.ts +14 -14
- package/lib/core/services/patch.service.d.ts +16 -16
- package/lib/core/services/platform.service.d.ts +18 -18
- package/lib/core/tokens/accept-language.token.d.ts +2 -2
- package/lib/core/tokens/base-url.token.d.ts +2 -2
- package/lib/core/tokens/cookie.token.d.ts +2 -2
- package/lib/core/tokens/location.token.d.ts +2 -2
- package/lib/core/tokens/navigator.token.d.ts +2 -2
- package/lib/core/tokens/window.token.d.ts +2 -2
- package/localize/bravobit-bb-foundation-localize.d.ts +5 -5
- package/localize/lib/functions/date.function.d.ts +5 -5
- package/localize/lib/functions/lowercase.function.d.ts +5 -5
- package/localize/lib/functions/uppercase.function.d.ts +5 -5
- package/localize/lib/handlers/missing.handler.d.ts +6 -6
- package/localize/lib/interfaces/config.interfaces.d.ts +18 -18
- package/localize/lib/interfaces/functions.interfaces.d.ts +9 -9
- package/localize/lib/interfaces/handlers.interfaces.d.ts +6 -6
- package/localize/lib/interfaces/options.interfaces.d.ts +10 -10
- package/localize/lib/localizations/dutch.localization.d.ts +44 -44
- package/localize/lib/localizations/english.localization.d.ts +44 -44
- package/localize/lib/localize.dictionary.d.ts +7 -7
- package/localize/lib/localize.module.d.ts +17 -17
- package/localize/lib/localize.pipe.d.ts +12 -12
- package/localize/lib/localize.service.d.ts +40 -40
- package/localize/lib/views/localize-string/localize-string.component.d.ts +23 -23
- package/localize/lib/views/localize-template-or-string.directive.d.ts +10 -10
- package/localize/lib/views/localize-template.directive.d.ts +9 -9
- package/localize/public_api.d.ts +16 -16
- package/notifications/bravobit-bb-foundation-notifications.d.ts +5 -5
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +34 -34
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +16 -16
- package/notifications/lib/notifications.animations.d.ts +1 -1
- package/notifications/lib/notifications.injector.d.ts +8 -8
- package/notifications/lib/notifications.interfaces.d.ts +49 -49
- package/notifications/lib/notifications.module.d.ts +13 -13
- package/notifications/lib/notifications.service.d.ts +34 -34
- package/notifications/public_api.d.ts +3 -3
- package/package.json +1 -1
- package/public_api.d.ts +25 -25
- package/recaptcha/bravobit-bb-foundation-recaptcha.d.ts +5 -5
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +47 -47
- package/recaptcha/lib/recaptcha-loader.service.d.ts +22 -22
- package/recaptcha/lib/recaptcha.interface.d.ts +14 -14
- package/recaptcha/lib/recaptcha.module.d.ts +10 -10
- package/recaptcha/public_api.d.ts +4 -4
- package/rxjs/bravobit-bb-foundation-rxjs.d.ts +5 -5
- package/rxjs/lib/operators/combine-latest-map.operator.d.ts +8 -8
- package/rxjs/lib/operators/filter-nil.operator.d.ts +1 -1
- package/rxjs/public_api.d.ts +2 -2
- package/storage/bravobit-bb-foundation-storage.d.ts +5 -5
- package/storage/lib/interfaces/attributes.interface.d.ts +13 -13
- package/storage/lib/interfaces/memory.interface.d.ts +7 -7
- package/storage/lib/interfaces/strategy.interface.d.ts +17 -17
- package/storage/lib/storage.service.d.ts +26 -26
- package/storage/lib/strategies/cookie-storage.strategy.d.ts +20 -20
- package/storage/lib/strategies/memory-storage.strategy.d.ts +11 -11
- package/storage/lib/strategies/polyfill-storage.strategy.d.ts +15 -15
- package/storage/public_api.d.ts +7 -7
- package/table/bravobit-bb-foundation-table.d.ts +5 -5
- package/table/lib/components/table/table.component.d.ts +56 -56
- package/table/lib/components/table-cell/table-cell.component.d.ts +5 -5
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +29 -29
- package/table/lib/components/table-pager/table-pager.component.d.ts +41 -41
- package/table/lib/data/datasource.data.d.ts +14 -14
- package/table/lib/data/generic.data.d.ts +23 -23
- package/table/lib/interfaces/datasource.interface.d.ts +17 -17
- package/table/lib/interfaces/table.interfaces.d.ts +1 -1
- package/table/lib/table.module.d.ts +14 -14
- 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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29sbGVjdGlvbnMvc3JjL2xpYi9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlHLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsT0FBTyxFQUFrQixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVM1RCxNQUFNLE9BQU8sVUFBVTtJQTJCbkIsWUFBNkIsU0FBZ0MsRUFDaEMsaUJBQTZDLEVBQUU7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBVG5FLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZELFNBQVM7UUFDRCxlQUFVLEdBQXlDLElBQUksQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBaUkvQyx3QkFBbUIsR0FBRyxDQUFjLE9BQXdCLEVBQUUsRUFBRTtZQUNwRSxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM1QixvQkFBb0IsRUFBSyxFQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLEtBQVUsQ0FBQyxDQUNqQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBbElFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxF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LENBQUMsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdEMsWUFBWSxDQUFTLEdBQUcsQ0FBQyxFQUN6QixvQkFBb0IsRUFBVSxFQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFzQixDQUFDLENBQ3ZELENBQUM7SUFDTixDQUFDO0NBU0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbGxlY3Rpb25EYXRhLCBDb2xsZWN0aW9uUmVxdWVzdCwgQ29sbGVjdGlvblJlcXVlc3RTb3J0fSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Q29sbGVjdGlvblByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVycy9jb2xsZWN0aW9uLnByb3ZpZGVyJztcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBDb2xsZWN0aW9uU3RhdGUge1xyXG4gICAgSW5pdGlhbCA9ICdpbml0aWFsJyxcclxuICAgIEVycm9yID0gJ2Vycm9yJyxcclxuICAgIEVtcHR5ID0gJ2VtcHR5JyxcclxuICAgIERhdGEgPSAnZGF0YSdcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb248VD4ge1xyXG5cclxuICAgIC8vIENvbnRyb2xzLlxyXG4gICAgcmVhZG9ubHkgcXVlcnlDb250cm9sOiBGb3JtQ29udHJvbDtcclxuICAgIHJlYWRvbmx5IHF1ZXJ5RmllbGRzQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgICByZWFkb25seSBwYWdlTnVtYmVyQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgICByZWFkb25seSBwYWdlU2l6ZUNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG4gICAgcmVhZG9ubHkgc29ydENvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAgIC8vIFJlcXVlc3QuXHJcbiAgICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTx7XHJcbiAgICAgICAgcmVzcG9uc2U/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=
|