@bravobit/bb-foundation 0.16.5 → 0.20.2
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 -15
- 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 -94
- package/esm2020/auth/lib/auth.module.mjs +54 -54
- package/esm2020/auth/lib/auth.service.mjs +281 -276
- 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 -17
- package/esm2020/localize/lib/interfaces/config.interfaces.mjs +7 -10
- 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 -53
- package/esm2020/localize/lib/localizations/english.localization.mjs +45 -53
- package/esm2020/localize/lib/localize.dictionary.mjs +26 -135
- package/esm2020/localize/lib/localize.module.mjs +71 -72
- package/esm2020/localize/lib/localize.pipe.mjs +49 -49
- package/esm2020/localize/lib/localize.service.mjs +205 -280
- 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 -18
- 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 -926
- 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 +1971 -1971
- 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 +611 -812
- 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 +860 -860
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-auth.mjs +882 -878
- 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 +1928 -1928
- 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 +590 -798
- 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 +832 -832
- 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 -9
- 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 -51
- package/localize/lib/localizations/english.localization.d.ts +44 -51
- package/localize/lib/localize.dictionary.d.ts +7 -24
- package/localize/lib/localize.module.d.ts +17 -18
- package/localize/lib/localize.pipe.d.ts +12 -12
- package/localize/lib/localize.service.d.ts +40 -52
- 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 -17
- 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 +6 -6
- 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
- package/esm2020/localize/lib/interfaces/dictionary.interfaces.mjs +0 -8
- package/localize/lib/interfaces/dictionary.interfaces.d.ts +0 -12
|
@@ -1,131 +1,131 @@
|
|
|
1
|
-
import { JwtHelper } from './helpers/jwt.helper';
|
|
2
|
-
import { shareReplay } from 'rxjs/operators';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
export class AuthSession {
|
|
5
|
-
constructor(options) {
|
|
6
|
-
// Readonly data.
|
|
7
|
-
this._jwt = new JwtHelper();
|
|
8
|
-
// Token strings.
|
|
9
|
-
this._accessTokenString = null;
|
|
10
|
-
this._refreshTokenString = null;
|
|
11
|
-
// Token payloads.
|
|
12
|
-
this._accessTokenPayload = null;
|
|
13
|
-
this._refreshTokenPayload = null;
|
|
14
|
-
// Private user data.
|
|
15
|
-
this._user$ = new BehaviorSubject(null);
|
|
16
|
-
// Public user data.
|
|
17
|
-
this.user = this._user$.pipe(shareReplay(1));
|
|
18
|
-
this.generateKey = (applicationId, key) => {
|
|
19
|
-
return [applicationId, key].join('_');
|
|
20
|
-
};
|
|
21
|
-
this.isTokenValid = (token) => {
|
|
22
|
-
if (!token) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
return token?.expiresAt?.getTime() > Date.now();
|
|
26
|
-
};
|
|
27
|
-
const applicationId = options?.id ?? 'ng';
|
|
28
|
-
// Setting up the readonly storage keys.
|
|
29
|
-
this._accessTokenStorageKey = this.generateKey(applicationId, 'au_act');
|
|
30
|
-
this._refreshTokenStorageKey = this.generateKey(applicationId, 'au_rft');
|
|
31
|
-
this._userStorageKey = this.generateKey(applicationId, 'au_usr');
|
|
32
|
-
// Setting up the storage.
|
|
33
|
-
this._storage = options?.storage ?? null;
|
|
34
|
-
// Init methods.
|
|
35
|
-
this.restoreFromStorage();
|
|
36
|
-
}
|
|
37
|
-
get accessToken() {
|
|
38
|
-
return this.isTokenValid(this._accessTokenPayload)
|
|
39
|
-
? this._accessTokenString
|
|
40
|
-
: null;
|
|
41
|
-
}
|
|
42
|
-
get refreshToken() {
|
|
43
|
-
return this.isTokenValid(this.refreshTokenPayload)
|
|
44
|
-
? this._refreshTokenString
|
|
45
|
-
: null;
|
|
46
|
-
}
|
|
47
|
-
get accessTokenPayload() {
|
|
48
|
-
return this._accessTokenPayload ?? null;
|
|
49
|
-
}
|
|
50
|
-
get refreshTokenPayload() {
|
|
51
|
-
return this._refreshTokenPayload ?? null;
|
|
52
|
-
}
|
|
53
|
-
authenticated() {
|
|
54
|
-
return this.isTokenValid(this._accessTokenPayload) || this.isTokenValid(this._refreshTokenPayload);
|
|
55
|
-
}
|
|
56
|
-
setTokens(accessToken, refreshToken) {
|
|
57
|
-
this.setAccessToken(accessToken);
|
|
58
|
-
this.setRefreshToken(refreshToken);
|
|
59
|
-
this.syncTokensInStorage();
|
|
60
|
-
}
|
|
61
|
-
setUser(user) {
|
|
62
|
-
this._user$.next(user ?? null);
|
|
63
|
-
this.syncUserInStorage();
|
|
64
|
-
}
|
|
65
|
-
clear() {
|
|
66
|
-
this.setTokens(null, null);
|
|
67
|
-
this.setUser(null);
|
|
68
|
-
}
|
|
69
|
-
restoreFromStorage() {
|
|
70
|
-
if (!this._storage) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
// Set the access token.
|
|
74
|
-
const accessToken = this._storage.get(this._accessTokenStorageKey);
|
|
75
|
-
this.setAccessToken(accessToken);
|
|
76
|
-
// Set the refresh token.
|
|
77
|
-
const refreshToken = this._storage.get(this._refreshTokenStorageKey);
|
|
78
|
-
this.setRefreshToken(refreshToken);
|
|
79
|
-
// Set the user if we have any correct token payloads.
|
|
80
|
-
if (this._accessTokenPayload || this._refreshTokenPayload) {
|
|
81
|
-
const user = this._storage.get(this._userStorageKey);
|
|
82
|
-
this._user$.next(user ?? null); // Note: just settings here instead of setUser() because of syncing to the storage.
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
syncTokensInStorage() {
|
|
86
|
-
if (!this._storage) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
// Set the access token if completely valid.
|
|
90
|
-
if (!!this.accessToken) {
|
|
91
|
-
this._storage.set(this._accessTokenStorageKey, this._accessTokenString, {
|
|
92
|
-
expires: this._accessTokenPayload?.expiresAt
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this._storage.remove(this._accessTokenStorageKey);
|
|
97
|
-
}
|
|
98
|
-
// Set the refresh token if completely valid.
|
|
99
|
-
if (!!this.refreshToken) {
|
|
100
|
-
this._storage.set(this._refreshTokenStorageKey, this._refreshTokenString, {
|
|
101
|
-
expires: this._refreshTokenPayload?.expiresAt
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
this._storage.remove(this._refreshTokenStorageKey);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
syncUserInStorage() {
|
|
109
|
-
if (!this._storage) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const user = this._user$.getValue();
|
|
113
|
-
if (!user) {
|
|
114
|
-
return this._storage.remove(this._userStorageKey);
|
|
115
|
-
}
|
|
116
|
-
const date = new Date();
|
|
117
|
-
date.setFullYear(date.getFullYear() + 1);
|
|
118
|
-
this._storage.set(this._userStorageKey, user, {
|
|
119
|
-
expires: new Date(date.getTime())
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
setAccessToken(value) {
|
|
123
|
-
this._accessTokenString = value ?? null;
|
|
124
|
-
this._accessTokenPayload = this._jwt.decode(this._accessTokenString);
|
|
125
|
-
}
|
|
126
|
-
setRefreshToken(value) {
|
|
127
|
-
this._refreshTokenString = value ?? null;
|
|
128
|
-
this._refreshTokenPayload = this._jwt.decode(this._refreshTokenString);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvYXV0aC5zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxNQUFNLE9BQU8sV0FBVztJQXlCcEIsWUFBWSxPQUFvRDtRQXZCaEUsaUJBQWlCO1FBQ0EsU0FBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFNeEMsaUJBQWlCO1FBQ1QsdUJBQWtCLEdBQWtCLElBQUksQ0FBQztRQUN6Qyx3QkFBbUIsR0FBa0IsSUFBSSxDQUFDO1FBRWxELGtCQUFrQjtRQUNWLHdCQUFtQixHQUFxQixJQUFJLENBQUM7UUFDN0MseUJBQW9CLEdBQXFCLElBQUksQ0FBQztRQUV0RCxxQkFBcUI7UUFDYixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsSUFBSSxDQUFDLENBQUM7UUFFdkQsb0JBQW9CO1FBQ3BCLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBZ0lNLGdCQUFXLEdBQUcsQ0FBQyxhQUFxQixFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQ3pELE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQUVNLGlCQUFZLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDUixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELE9BQU8sS0FBSyxFQUFF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QUM7UUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBVSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRTtZQUNuRCxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBb0I7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FjSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RvcmFnZVN0cmF0ZWd5fSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9zdG9yYWdlJztcbmltcG9ydCB7QXV0aFRva2VufSBmcm9tICcuL2ludGVyZmFjZXMvdG9rZW4uaW50ZXJmYWNlJztcbmltcG9ydCB7Snd0SGVscGVyfSBmcm9tICcuL2hlbHBlcnMvand0LmhlbHBlcic7XG5pbXBvcnQge3NoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBBdXRoU2Vzc2lvbiB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2p3dCA9IG5ldyBKd3RIZWxwZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yYWdlOiBTdG9yYWdlU3RyYXRlZ3kgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FjY2Vzc1Rva2VuU3RvcmFnZUtleTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hUb2tlblN0b3JhZ2VLZXk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF91c2VyU3RvcmFnZUtleTogc3RyaW5nO1xuXG4gICAgLy8gVG9rZW4gc3RyaW5ncy5cbiAgICBwcml2YXRlIF9hY2Nlc3NUb2tlblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuU3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIFRva2VuIHBheWxvYWRzLlxuICAgIHByaXZhdGUgX2FjY2Vzc1Rva2VuUGF5bG9hZDogQXV0aFRva2VuIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuUGF5bG9hZDogQXV0aFRva2VuIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBQcml2YXRlIHVzZXIgZGF0YS5cbiAgICBwcml2YXRlIF91c2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55IHwgbnVsbD4obnVsbCk7XG5cbiAgICAvLyBQdWJsaWMgdXNlciBkYXRhLlxuICAgIHVzZXIgPSB0aGlzLl91c2VyJC5waXBlKFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzogeyBpZD86IHN0cmluZywgc3RvcmFnZT86IFN0b3JhZ2VTdHJhdGVneSB9KSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBvcHRpb25zPy5pZCA/PyAnbmcnO1xuXG4gICAgICAgIC8vIFNldHRpbmcgdXAgdGhlIHJlYWRvbmx5IHN0b3JhZ2Uga2V5cy5cbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5TdG9yYWdlS2V5ID0gdGhpcy5nZW5lcmF0ZUtleShhcHBsaWNhdGlvbklkLCAnYXVfYWN0Jyk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUb2tlblN0b3JhZ2VLZXkgPSB0aGlzLmdlbmVyYXRlS2V5KGFwcGxpY2F0aW9uSWQsICdhdV9yZnQnKTtcbiAgICAgICAgdGhpcy5fdXNlclN0b3JhZ2VLZXkgPSB0aGlzLmdlbmVyYXRlS2V5KGFwcGxpY2F0aW9uSWQsICdhdV91c3InKTtcblxuICAgICAgICAvLyBTZXR0aW5nIHVwIHRoZSBzdG9yYWdlLlxuICAgICAgICB0aGlzLl9zdG9yYWdlID0gb3B0aW9ucz8uc3RvcmFnZSA/PyBudWxsO1xuXG4gICAgICAgIC8vIEluaXQgbWV0aG9kcy5cbiAgICAgICAgdGhpcy5yZXN0b3JlRnJvbVN0b3JhZ2UoKTtcbiAgICB9XG5cbiAgICBnZXQgYWNjZXNzVG9rZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9rZW5WYWxpZCh0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQpXG4gICAgICAgICAgICA/IHRoaXMuX2FjY2Vzc1Rva2VuU3RyaW5nXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IHJlZnJlc2hUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUb2tlblZhbGlkKHRoaXMucmVmcmVzaFRva2VuUGF5bG9hZClcbiAgICAgICAgICAgID8gdGhpcy5fcmVmcmVzaFRva2VuU3RyaW5nXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGFjY2Vzc1Rva2VuUGF5bG9hZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjY2Vzc1Rva2VuUGF5bG9hZCA/PyBudWxsO1xuICAgIH1cblxuICAgIGdldCByZWZyZXNoVG9rZW5QYXlsb2FkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFRva2VuUGF5bG9hZCA/PyBudWxsO1xuICAgIH1cblxuICAgIGF1dGhlbnRpY2F0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9rZW5WYWxpZCh0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQpIHx8IHRoaXMuaXNUb2tlblZhbGlkKHRoaXMuX3JlZnJlc2hUb2tlblBheWxvYWQpO1xuICAgIH1cblxuICAgIHNldFRva2VucyhhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbCwgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuc2V0QWNjZXNzVG9rZW4oYWNjZXNzVG9rZW4pO1xuICAgICAgICB0aGlzLnNldFJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pO1xuICAgICAgICB0aGlzLnN5bmNUb2tlbnNJblN0b3JhZ2UoKTtcbiAgICB9XG5cbiAgICBzZXRVc2VyKHVzZXI6IHVua25vd24pIHtcbiAgICAgICAgdGhpcy5fdXNlciQubmV4dCh1c2VyID8/IG51bGwpO1xuICAgICAgICB0aGlzLnN5bmNVc2VySW5TdG9yYWdlKCk7XG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuc2V0VG9rZW5zKG51bGwsIG51bGwpO1xuICAgICAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlRnJvbVN0b3JhZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5fc3RvcmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBhY2Nlc3MgdG9rZW4uXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5fc3RvcmFnZS5nZXQ8c3RyaW5nPih0aGlzLl9hY2Nlc3NUb2tlblN0b3JhZ2VLZXkpO1xuICAgICAgICB0aGlzLnNldEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHJlZnJlc2ggdG9rZW4uXG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuX3N0b3JhZ2UuZ2V0PHN0cmluZz4odGhpcy5fcmVmcmVzaFRva2VuU3RvcmFnZUtleSk7XG4gICAgICAgIHRoaXMuc2V0UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbik7XG5cbiAgICAgICAgLy8gU2V0IHRoZSB1c2VyIGlmIHdlIGhhdmUgYW55IGNvcnJlY3QgdG9rZW4gcGF5bG9hZHMuXG4gICAgICAgIGlmICh0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQgfHwgdGhpcy5fcmVmcmVzaFRva2VuUGF5bG9hZCkge1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3N0b3JhZ2UuZ2V0PHVua25vd24+KHRoaXMuX3VzZXJTdG9yYWdlS2V5KTtcbiAgICAgICAgICAgIHRoaXMuX3VzZXIkLm5leHQodXNlciA/PyBudWxsKTsgLy8gTm90ZToganVzdCBzZXR0aW5ncyBoZXJlIGluc3RlYWQgb2Ygc2V0VXNlcigpIGJlY2F1c2Ugb2Ygc3luY2luZyB0byB0aGUgc3RvcmFnZS5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1Rva2Vuc0luU3RvcmFnZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zdG9yYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIGFjY2VzcyB0b2tlbiBpZiBjb21wbGV0ZWx5IHZhbGlkLlxuICAgICAgICBpZiAoISF0aGlzLmFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldDxzdHJpbmc+KHRoaXMuX2FjY2Vzc1Rva2VuU3RvcmFnZUtleSwgdGhpcy5fYWNjZXNzVG9rZW5TdHJpbmcsIHtcbiAgICAgICAgICAgICAgICBleHBpcmVzOiB0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQ/LmV4cGlyZXNBdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnJlbW92ZSh0aGlzLl9hY2Nlc3NUb2tlblN0b3JhZ2VLZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSByZWZyZXNoIHRva2VuIGlmIGNvbXBsZXRlbHkgdmFsaWQuXG4gICAgICAgIGlmICghIXRoaXMucmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldDxzdHJpbmc+KHRoaXMuX3JlZnJlc2hUb2tlblN0b3JhZ2VLZXksIHRoaXMuX3JlZnJlc2hUb2tlblN0cmluZywge1xuICAgICAgICAgICAgICAgIGV4cGlyZXM6IHRoaXMuX3JlZnJlc2hUb2tlblBheWxvYWQ/LmV4cGlyZXNBdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnJlbW92ZSh0aGlzLl9yZWZyZXNoVG9rZW5TdG9yYWdlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1VzZXJJblN0b3JhZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5fc3RvcmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIkLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghdXNlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UucmVtb3ZlKHRoaXMuX3VzZXJTdG9yYWdlS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIDEpO1xuICAgICAgICB0aGlzLl9zdG9yYWdlLnNldDx1bmtub3duPih0aGlzLl91c2VyU3RvcmFnZUtleSwgdXNlciwge1xuICAgICAgICAgICAgZXhwaXJlczogbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QWNjZXNzVG9rZW4odmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5TdHJpbmcgPSB2YWx1ZSA/PyBudWxsO1xuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQgPSB0aGlzLl9qd3QuZGVjb2RlKHRoaXMuX2FjY2Vzc1Rva2VuU3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlZnJlc2hUb2tlbih2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9yZWZyZXNoVG9rZW5TdHJpbmcgPSB2YWx1ZSA/PyBudWxsO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVG9rZW5QYXlsb2FkID0gdGhpcy5fand0LmRlY29kZSh0aGlzLl9yZWZyZXNoVG9rZW5TdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVLZXkgPSAoYXBwbGljYXRpb25JZDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gW2FwcGxpY2F0aW9uSWQsIGtleV0uam9pbignXycpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGlzVG9rZW5WYWxpZCA9ICh0b2tlbjogQXV0aFRva2VuKSA9PiB7XG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b2tlbj8uZXhwaXJlc0F0Py5nZXRUaW1lKCkgPiBEYXRlLm5vdygpO1xuICAgIH07XG5cbn1cbiJdfQ==
|
|
1
|
+
import { JwtHelper } from './helpers/jwt.helper';
|
|
2
|
+
import { shareReplay } from 'rxjs/operators';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
export class AuthSession {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
// Readonly data.
|
|
7
|
+
this._jwt = new JwtHelper();
|
|
8
|
+
// Token strings.
|
|
9
|
+
this._accessTokenString = null;
|
|
10
|
+
this._refreshTokenString = null;
|
|
11
|
+
// Token payloads.
|
|
12
|
+
this._accessTokenPayload = null;
|
|
13
|
+
this._refreshTokenPayload = null;
|
|
14
|
+
// Private user data.
|
|
15
|
+
this._user$ = new BehaviorSubject(null);
|
|
16
|
+
// Public user data.
|
|
17
|
+
this.user = this._user$.pipe(shareReplay(1));
|
|
18
|
+
this.generateKey = (applicationId, key) => {
|
|
19
|
+
return [applicationId, key].join('_');
|
|
20
|
+
};
|
|
21
|
+
this.isTokenValid = (token) => {
|
|
22
|
+
if (!token) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return token?.expiresAt?.getTime() > Date.now();
|
|
26
|
+
};
|
|
27
|
+
const applicationId = options?.id ?? 'ng';
|
|
28
|
+
// Setting up the readonly storage keys.
|
|
29
|
+
this._accessTokenStorageKey = this.generateKey(applicationId, 'au_act');
|
|
30
|
+
this._refreshTokenStorageKey = this.generateKey(applicationId, 'au_rft');
|
|
31
|
+
this._userStorageKey = this.generateKey(applicationId, 'au_usr');
|
|
32
|
+
// Setting up the storage.
|
|
33
|
+
this._storage = options?.storage ?? null;
|
|
34
|
+
// Init methods.
|
|
35
|
+
this.restoreFromStorage();
|
|
36
|
+
}
|
|
37
|
+
get accessToken() {
|
|
38
|
+
return this.isTokenValid(this._accessTokenPayload)
|
|
39
|
+
? this._accessTokenString
|
|
40
|
+
: null;
|
|
41
|
+
}
|
|
42
|
+
get refreshToken() {
|
|
43
|
+
return this.isTokenValid(this.refreshTokenPayload)
|
|
44
|
+
? this._refreshTokenString
|
|
45
|
+
: null;
|
|
46
|
+
}
|
|
47
|
+
get accessTokenPayload() {
|
|
48
|
+
return this._accessTokenPayload ?? null;
|
|
49
|
+
}
|
|
50
|
+
get refreshTokenPayload() {
|
|
51
|
+
return this._refreshTokenPayload ?? null;
|
|
52
|
+
}
|
|
53
|
+
authenticated() {
|
|
54
|
+
return this.isTokenValid(this._accessTokenPayload) || this.isTokenValid(this._refreshTokenPayload);
|
|
55
|
+
}
|
|
56
|
+
setTokens(accessToken, refreshToken) {
|
|
57
|
+
this.setAccessToken(accessToken);
|
|
58
|
+
this.setRefreshToken(refreshToken);
|
|
59
|
+
this.syncTokensInStorage();
|
|
60
|
+
}
|
|
61
|
+
setUser(user) {
|
|
62
|
+
this._user$.next(user ?? null);
|
|
63
|
+
this.syncUserInStorage();
|
|
64
|
+
}
|
|
65
|
+
clear() {
|
|
66
|
+
this.setTokens(null, null);
|
|
67
|
+
this.setUser(null);
|
|
68
|
+
}
|
|
69
|
+
restoreFromStorage() {
|
|
70
|
+
if (!this._storage) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Set the access token.
|
|
74
|
+
const accessToken = this._storage.get(this._accessTokenStorageKey);
|
|
75
|
+
this.setAccessToken(accessToken);
|
|
76
|
+
// Set the refresh token.
|
|
77
|
+
const refreshToken = this._storage.get(this._refreshTokenStorageKey);
|
|
78
|
+
this.setRefreshToken(refreshToken);
|
|
79
|
+
// Set the user if we have any correct token payloads.
|
|
80
|
+
if (this._accessTokenPayload || this._refreshTokenPayload) {
|
|
81
|
+
const user = this._storage.get(this._userStorageKey);
|
|
82
|
+
this._user$.next(user ?? null); // Note: just settings here instead of setUser() because of syncing to the storage.
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
syncTokensInStorage() {
|
|
86
|
+
if (!this._storage) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// Set the access token if completely valid.
|
|
90
|
+
if (!!this.accessToken) {
|
|
91
|
+
this._storage.set(this._accessTokenStorageKey, this._accessTokenString, {
|
|
92
|
+
expires: this._accessTokenPayload?.expiresAt
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this._storage.remove(this._accessTokenStorageKey);
|
|
97
|
+
}
|
|
98
|
+
// Set the refresh token if completely valid.
|
|
99
|
+
if (!!this.refreshToken) {
|
|
100
|
+
this._storage.set(this._refreshTokenStorageKey, this._refreshTokenString, {
|
|
101
|
+
expires: this._refreshTokenPayload?.expiresAt
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this._storage.remove(this._refreshTokenStorageKey);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
syncUserInStorage() {
|
|
109
|
+
if (!this._storage) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const user = this._user$.getValue();
|
|
113
|
+
if (!user) {
|
|
114
|
+
return this._storage.remove(this._userStorageKey);
|
|
115
|
+
}
|
|
116
|
+
const date = new Date();
|
|
117
|
+
date.setFullYear(date.getFullYear() + 1);
|
|
118
|
+
this._storage.set(this._userStorageKey, user, {
|
|
119
|
+
expires: new Date(date.getTime())
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
setAccessToken(value) {
|
|
123
|
+
this._accessTokenString = value ?? null;
|
|
124
|
+
this._accessTokenPayload = this._jwt.decode(this._accessTokenString);
|
|
125
|
+
}
|
|
126
|
+
setRefreshToken(value) {
|
|
127
|
+
this._refreshTokenString = value ?? null;
|
|
128
|
+
this._refreshTokenPayload = this._jwt.decode(this._refreshTokenString);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvYXV0aC5zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxNQUFNLE9BQU8sV0FBVztJQXlCcEIsWUFBWSxPQUFvRDtRQXZCaEUsaUJBQWlCO1FBQ0EsU0FBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFNeEMsaUJBQWlCO1FBQ1QsdUJBQWtCLEdBQWtCLElBQUksQ0FBQztRQUN6Qyx3QkFBbUIsR0FBa0IsSUFBSSxDQUFDO1FBRWxELGtCQUFrQjtRQUNWLHdCQUFtQixHQUFxQixJQUFJLENBQUM7UUFDN0MseUJBQW9CLEdBQXFCLElBQUksQ0FBQztRQUV0RCxxQkFBcUI7UUFDYixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsSUFBSSxDQUFDLENBQUM7UUFFdkQsb0JBQW9CO1FBQ3BCLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBZ0lNLGdCQUFXLEdBQUcsQ0FBQyxhQUFxQixFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQ3pELE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQUVNLGlCQUFZLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDUixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBdklFLE1BQU0sYUFBYSxHQUFHLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDO1FBRTFDLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFakUsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFFekMsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELFNBQVMsQ0FBQyxXQUEwQixFQUFFLFlBQTJCO1FBQzdELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWE7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELHdCQUF3QjtRQUN4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpDLHlCQUF5QjtRQUN6QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5DLHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQVUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLG1GQUFtRjtTQUN0SDtJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsT0FBTztTQUNWO1FBRUQsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQVMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDNUUsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxTQUFTO2FBQy9DLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNyRDtRQUVELDZDQUE2QztRQUM3QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzlFLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsU0FBUzthQUNoRCxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBVSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRTtZQUNuRCxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBb0I7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FjSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RvcmFnZVN0cmF0ZWd5fSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9zdG9yYWdlJztcclxuaW1wb3J0IHtBdXRoVG9rZW59IGZyb20gJy4vaW50ZXJmYWNlcy90b2tlbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0p3dEhlbHBlcn0gZnJvbSAnLi9oZWxwZXJzL2p3dC5oZWxwZXInO1xyXG5pbXBvcnQge3NoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2Vzc2lvbiB7XHJcblxyXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2p3dCA9IG5ldyBKd3RIZWxwZXIoKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JhZ2U6IFN0b3JhZ2VTdHJhdGVneSB8IG51bGw7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hY2Nlc3NUb2tlblN0b3JhZ2VLZXk6IHN0cmluZztcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hUb2tlblN0b3JhZ2VLZXk6IHN0cmluZztcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJTdG9yYWdlS2V5OiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVG9rZW4gc3RyaW5ncy5cclxuICAgIHByaXZhdGUgX2FjY2Vzc1Rva2VuU3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgX3JlZnJlc2hUb2tlblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLy8gVG9rZW4gcGF5bG9hZHMuXHJcbiAgICBwcml2YXRlIF9hY2Nlc3NUb2tlblBheWxvYWQ6IEF1dGhUb2tlbiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuUGF5bG9hZDogQXV0aFRva2VuIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLy8gUHJpdmF0ZSB1c2VyIGRhdGEuXHJcbiAgICBwcml2YXRlIF91c2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55IHwgbnVsbD4obnVsbCk7XHJcblxyXG4gICAgLy8gUHVibGljIHVzZXIgZGF0YS5cclxuICAgIHVzZXIgPSB0aGlzLl91c2VyJC5waXBlKFxyXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiB7IGlkPzogc3RyaW5nLCBzdG9yYWdlPzogU3RvcmFnZVN0cmF0ZWd5IH0pIHtcclxuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gb3B0aW9ucz8uaWQgPz8gJ25nJztcclxuXHJcbiAgICAgICAgLy8gU2V0dGluZyB1cCB0aGUgcmVhZG9ubHkgc3RvcmFnZSBrZXlzLlxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuU3RvcmFnZUtleSA9IHRoaXMuZ2VuZXJhdGVLZXkoYXBwbGljYXRpb25JZCwgJ2F1X2FjdCcpO1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUb2tlblN0b3JhZ2VLZXkgPSB0aGlzLmdlbmVyYXRlS2V5KGFwcGxpY2F0aW9uSWQsICdhdV9yZnQnKTtcclxuICAgICAgICB0aGlzLl91c2VyU3RvcmFnZUtleSA9IHRoaXMuZ2VuZXJhdGVLZXkoYXBwbGljYXRpb25JZCwgJ2F1X3VzcicpO1xyXG5cclxuICAgICAgICAvLyBTZXR0aW5nIHVwIHRoZSBzdG9yYWdlLlxyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UgPSBvcHRpb25zPy5zdG9yYWdlID8/IG51bGw7XHJcblxyXG4gICAgICAgIC8vIEluaXQgbWV0aG9kcy5cclxuICAgICAgICB0aGlzLnJlc3RvcmVGcm9tU3RvcmFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhY2Nlc3NUb2tlbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1Rva2VuVmFsaWQodGhpcy5fYWNjZXNzVG9rZW5QYXlsb2FkKVxyXG4gICAgICAgICAgICA/IHRoaXMuX2FjY2Vzc1Rva2VuU3RyaW5nXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9rZW5WYWxpZCh0aGlzLnJlZnJlc2hUb2tlblBheWxvYWQpXHJcbiAgICAgICAgICAgID8gdGhpcy5fcmVmcmVzaFRva2VuU3RyaW5nXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYWNjZXNzVG9rZW5QYXlsb2FkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQgPz8gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcmVmcmVzaFRva2VuUGF5bG9hZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFRva2VuUGF5bG9hZCA/PyBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGF1dGhlbnRpY2F0ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUb2tlblZhbGlkKHRoaXMuX2FjY2Vzc1Rva2VuUGF5bG9hZCkgfHwgdGhpcy5pc1Rva2VuVmFsaWQodGhpcy5fcmVmcmVzaFRva2VuUGF5bG9hZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VG9rZW5zKGFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsLCByZWZyZXNoVG9rZW46IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNldEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgICB0aGlzLnNldFJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pO1xyXG4gICAgICAgIHRoaXMuc3luY1Rva2Vuc0luU3RvcmFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFVzZXIodXNlcjogdW5rbm93bikge1xyXG4gICAgICAgIHRoaXMuX3VzZXIkLm5leHQodXNlciA/PyBudWxsKTtcclxuICAgICAgICB0aGlzLnN5bmNVc2VySW5TdG9yYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbnMobnVsbCwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5zZXRVc2VyKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVzdG9yZUZyb21TdG9yYWdlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fc3RvcmFnZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGFjY2VzcyB0b2tlbi5cclxuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRoaXMuX3N0b3JhZ2UuZ2V0PHN0cmluZz4odGhpcy5fYWNjZXNzVG9rZW5TdG9yYWdlS2V5KTtcclxuICAgICAgICB0aGlzLnNldEFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuKTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSByZWZyZXNoIHRva2VuLlxyXG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuX3N0b3JhZ2UuZ2V0PHN0cmluZz4odGhpcy5fcmVmcmVzaFRva2VuU3RvcmFnZUtleSk7XHJcbiAgICAgICAgdGhpcy5zZXRSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuKTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSB1c2VyIGlmIHdlIGhhdmUgYW55IGNvcnJlY3QgdG9rZW4gcGF5bG9hZHMuXHJcbiAgICAgICAgaWYgKHRoaXMuX2FjY2Vzc1Rva2VuUGF5bG9hZCB8fCB0aGlzLl9yZWZyZXNoVG9rZW5QYXlsb2FkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl9zdG9yYWdlLmdldDx1bmtub3duPih0aGlzLl91c2VyU3RvcmFnZUtleSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXIkLm5leHQodXNlciA/PyBudWxsKTsgLy8gTm90ZToganVzdCBzZXR0aW5ncyBoZXJlIGluc3RlYWQgb2Ygc2V0VXNlcigpIGJlY2F1c2Ugb2Ygc3luY2luZyB0byB0aGUgc3RvcmFnZS5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzeW5jVG9rZW5zSW5TdG9yYWdlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fc3RvcmFnZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGFjY2VzcyB0b2tlbiBpZiBjb21wbGV0ZWx5IHZhbGlkLlxyXG4gICAgICAgIGlmICghIXRoaXMuYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmFnZS5zZXQ8c3RyaW5nPih0aGlzLl9hY2Nlc3NUb2tlblN0b3JhZ2VLZXksIHRoaXMuX2FjY2Vzc1Rva2VuU3RyaW5nLCB7XHJcbiAgICAgICAgICAgICAgICBleHBpcmVzOiB0aGlzLl9hY2Nlc3NUb2tlblBheWxvYWQ/LmV4cGlyZXNBdFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnJlbW92ZSh0aGlzLl9hY2Nlc3NUb2tlblN0b3JhZ2VLZXkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSByZWZyZXNoIHRva2VuIGlmIGNvbXBsZXRlbHkgdmFsaWQuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5yZWZyZXNoVG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmFnZS5zZXQ8c3RyaW5nPih0aGlzLl9yZWZyZXNoVG9rZW5TdG9yYWdlS2V5LCB0aGlzLl9yZWZyZXNoVG9rZW5TdHJpbmcsIHtcclxuICAgICAgICAgICAgICAgIGV4cGlyZXM6IHRoaXMuX3JlZnJlc2hUb2tlblBheWxvYWQ/LmV4cGlyZXNBdFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnJlbW92ZSh0aGlzLl9yZWZyZXNoVG9rZW5TdG9yYWdlS2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzeW5jVXNlckluU3RvcmFnZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3N0b3JhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnJlbW92ZSh0aGlzLl91c2VyU3RvcmFnZUtleSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIDEpO1xyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2Uuc2V0PHVua25vd24+KHRoaXMuX3VzZXJTdG9yYWdlS2V5LCB1c2VyLCB7XHJcbiAgICAgICAgICAgIGV4cGlyZXM6IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QWNjZXNzVG9rZW4odmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlblN0cmluZyA9IHZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5QYXlsb2FkID0gdGhpcy5fand0LmRlY29kZSh0aGlzLl9hY2Nlc3NUb2tlblN0cmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRSZWZyZXNoVG9rZW4odmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoVG9rZW5TdHJpbmcgPSB2YWx1ZSA/PyBudWxsO1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUb2tlblBheWxvYWQgPSB0aGlzLl9qd3QuZGVjb2RlKHRoaXMuX3JlZnJlc2hUb2tlblN0cmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUtleSA9IChhcHBsaWNhdGlvbklkOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIFthcHBsaWNhdGlvbklkLCBrZXldLmpvaW4oJ18nKTtcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSBpc1Rva2VuVmFsaWQgPSAodG9rZW46IEF1dGhUb2tlbikgPT4ge1xyXG4gICAgICAgIGlmICghdG9rZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRva2VuPy5leHBpcmVzQXQ/LmdldFRpbWUoKSA+IERhdGUubm93KCk7XHJcbiAgICB9O1xyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../auth.service";
|
|
5
|
-
export class BbAuthenticated {
|
|
6
|
-
constructor(_auth, _template, _viewContainerRef) {
|
|
7
|
-
this._auth = _auth;
|
|
8
|
-
this._template = _template;
|
|
9
|
-
this._viewContainerRef = _viewContainerRef;
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this._subscription = this._auth.user.pipe(map(user => !!user), distinctUntilChanged()).subscribe(isAuthenticated => {
|
|
13
|
-
if (!isAuthenticated) {
|
|
14
|
-
return this._viewContainerRef.clear();
|
|
15
|
-
}
|
|
16
|
-
this._viewContainerRef.createEmbeddedView(this._template);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
ngOnDestroy() {
|
|
20
|
-
this._subscription?.unsubscribe();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
BbAuthenticated.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
24
|
-
BbAuthenticated.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
26
|
-
type: Directive,
|
|
27
|
-
args: [{
|
|
28
|
-
selector: '[bbAuthenticated]'
|
|
29
|
-
}]
|
|
30
|
-
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../auth.service";
|
|
5
|
+
export class BbAuthenticated {
|
|
6
|
+
constructor(_auth, _template, _viewContainerRef) {
|
|
7
|
+
this._auth = _auth;
|
|
8
|
+
this._template = _template;
|
|
9
|
+
this._viewContainerRef = _viewContainerRef;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this._subscription = this._auth.user.pipe(map(user => !!user), distinctUntilChanged()).subscribe(isAuthenticated => {
|
|
13
|
+
if (!isAuthenticated) {
|
|
14
|
+
return this._viewContainerRef.clear();
|
|
15
|
+
}
|
|
16
|
+
this._viewContainerRef.createEmbeddedView(this._template);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
ngOnDestroy() {
|
|
20
|
+
this._subscription?.unsubscribe();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
BbAuthenticated.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbAuthenticated, deps: [{ token: i1.Auth }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
+
BbAuthenticated.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.6", type: BbAuthenticated, selector: "[bbAuthenticated]", ngImport: i0 });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbAuthenticated, decorators: [{
|
|
26
|
+
type: Directive,
|
|
27
|
+
args: [{
|
|
28
|
+
selector: '[bbAuthenticated]'
|
|
29
|
+
}]
|
|
30
|
+
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dGhlbnRpY2F0ZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBT3pELE1BQU0sT0FBTyxlQUFlO0lBS3hCLFlBQW9CLEtBQVcsRUFDWCxTQUEyQixFQUMzQixpQkFBbUM7UUFGbkMsVUFBSyxHQUFMLEtBQUssQ0FBTTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7SUFDdkQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNuQixvQkFBb0IsRUFBRSxDQUN6QixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN6QztZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7NEdBekJRLGVBQWU7Z0dBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUgzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0F1dGh9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYmJBdXRoZW50aWNhdGVkXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJiQXV0aGVudGljYXRlZCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICAvLyBTdWJzY3JpcHRpb25zLlxyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXV0aDogQXV0aCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuX2F1dGgudXNlci5waXBlKFxyXG4gICAgICAgICAgICBtYXAodXNlciA9PiAhIXVzZXIpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoaXNBdXRoZW50aWNhdGVkID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { switchMap } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../permissions.service";
|
|
6
|
-
export class BbPermission {
|
|
7
|
-
constructor(_permissions, _templateRef, _viewContainerRef) {
|
|
8
|
-
this._permissions = _permissions;
|
|
9
|
-
this._templateRef = _templateRef;
|
|
10
|
-
this._viewContainerRef = _viewContainerRef;
|
|
11
|
-
// Data.
|
|
12
|
-
this._permission$ = new BehaviorSubject([]);
|
|
13
|
-
this._valid = false;
|
|
14
|
-
this._elseTemplateRef = null;
|
|
15
|
-
this._thenViewRef = null;
|
|
16
|
-
this._elseViewRef = null;
|
|
17
|
-
this.getAllowedPermissions = (value) => {
|
|
18
|
-
return Array.isArray(value) ? value : [value];
|
|
19
|
-
};
|
|
20
|
-
this.assertTemplate = (property, templateRef) => {
|
|
21
|
-
const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);
|
|
22
|
-
if (!isTemplateRefOrNull) {
|
|
23
|
-
throw new Error(`${property} must be a TemplateRef.`);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
set bbPermission(value) {
|
|
28
|
-
const permissions = this.getAllowedPermissions(value);
|
|
29
|
-
this._permission$.next(permissions);
|
|
30
|
-
this.updateView();
|
|
31
|
-
}
|
|
32
|
-
set bbPermissionElse(templateRef) {
|
|
33
|
-
this.assertTemplate('bbPermissionElse', templateRef);
|
|
34
|
-
this._elseTemplateRef = templateRef;
|
|
35
|
-
this.updateView();
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
const check$ = this._permission$.pipe(switchMap(permissions => this._permissions.has(permissions)));
|
|
39
|
-
this._subscription = check$.subscribe(valid => {
|
|
40
|
-
this._valid = valid;
|
|
41
|
-
this.updateView();
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
this._subscription?.unsubscribe();
|
|
46
|
-
}
|
|
47
|
-
updateView() {
|
|
48
|
-
if (this._valid) {
|
|
49
|
-
if (!this._thenViewRef) {
|
|
50
|
-
this._viewContainerRef.clear();
|
|
51
|
-
this._elseViewRef = null;
|
|
52
|
-
if (this._templateRef) {
|
|
53
|
-
this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (!this._elseViewRef) {
|
|
59
|
-
this._viewContainerRef.clear();
|
|
60
|
-
this._thenViewRef = null;
|
|
61
|
-
if (this._elseTemplateRef) {
|
|
62
|
-
this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
BbPermission.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
69
|
-
BbPermission.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
71
|
-
type: Directive,
|
|
72
|
-
args: [{
|
|
73
|
-
selector: '[bbPermission]'
|
|
74
|
-
}]
|
|
75
|
-
}], ctorParameters: function () { return [{ type: i1.Permissions }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { bbPermission: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], bbPermissionElse: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { switchMap } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../permissions.service";
|
|
6
|
+
export class BbPermission {
|
|
7
|
+
constructor(_permissions, _templateRef, _viewContainerRef) {
|
|
8
|
+
this._permissions = _permissions;
|
|
9
|
+
this._templateRef = _templateRef;
|
|
10
|
+
this._viewContainerRef = _viewContainerRef;
|
|
11
|
+
// Data.
|
|
12
|
+
this._permission$ = new BehaviorSubject([]);
|
|
13
|
+
this._valid = false;
|
|
14
|
+
this._elseTemplateRef = null;
|
|
15
|
+
this._thenViewRef = null;
|
|
16
|
+
this._elseViewRef = null;
|
|
17
|
+
this.getAllowedPermissions = (value) => {
|
|
18
|
+
return Array.isArray(value) ? value : [value];
|
|
19
|
+
};
|
|
20
|
+
this.assertTemplate = (property, templateRef) => {
|
|
21
|
+
const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);
|
|
22
|
+
if (!isTemplateRefOrNull) {
|
|
23
|
+
throw new Error(`${property} must be a TemplateRef.`);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
set bbPermission(value) {
|
|
28
|
+
const permissions = this.getAllowedPermissions(value);
|
|
29
|
+
this._permission$.next(permissions);
|
|
30
|
+
this.updateView();
|
|
31
|
+
}
|
|
32
|
+
set bbPermissionElse(templateRef) {
|
|
33
|
+
this.assertTemplate('bbPermissionElse', templateRef);
|
|
34
|
+
this._elseTemplateRef = templateRef;
|
|
35
|
+
this.updateView();
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
const check$ = this._permission$.pipe(switchMap(permissions => this._permissions.has(permissions)));
|
|
39
|
+
this._subscription = check$.subscribe(valid => {
|
|
40
|
+
this._valid = valid;
|
|
41
|
+
this.updateView();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this._subscription?.unsubscribe();
|
|
46
|
+
}
|
|
47
|
+
updateView() {
|
|
48
|
+
if (this._valid) {
|
|
49
|
+
if (!this._thenViewRef) {
|
|
50
|
+
this._viewContainerRef.clear();
|
|
51
|
+
this._elseViewRef = null;
|
|
52
|
+
if (this._templateRef) {
|
|
53
|
+
this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (!this._elseViewRef) {
|
|
59
|
+
this._viewContainerRef.clear();
|
|
60
|
+
this._thenViewRef = null;
|
|
61
|
+
if (this._elseTemplateRef) {
|
|
62
|
+
this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
BbPermission.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbPermission, deps: [{ token: i1.Permissions }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
|
+
BbPermission.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.6", type: BbPermission, selector: "[bbPermission]", inputs: { bbPermission: "bbPermission", bbPermissionElse: "bbPermissionElse" }, ngImport: i0 });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbPermission, decorators: [{
|
|
71
|
+
type: Directive,
|
|
72
|
+
args: [{
|
|
73
|
+
selector: '[bbPermission]'
|
|
74
|
+
}]
|
|
75
|
+
}], ctorParameters: function () { return [{ type: i1.Permissions }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { bbPermission: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], bbPermissionElse: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9kaXJlY3RpdmVzL3Blcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQW1CLEtBQUssRUFBbUQsTUFBTSxlQUFlLENBQUM7QUFFbEgsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt6QyxNQUFNLE9BQU8sWUFBWTtJQTRCckIsWUFBb0IsWUFBeUIsRUFDekIsWUFBOEIsRUFDOUIsaUJBQW1DO1FBRm5DLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBNUJ2RCxRQUFRO1FBQ0EsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRCxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLHFCQUFnQixHQUE0QixJQUFJLENBQUM7UUFFakQsaUJBQVksR0FBZ0MsSUFBSSxDQUFDO1FBQ2pELGlCQUFZLEdBQWdDLElBQUksQ0FBQztRQTJEakQsMEJBQXFCLEdBQUcsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDekQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO1FBRU0sbUJBQWMsR0FBRyxDQUFDLFFBQWdCLEVBQUUsV0FBb0MsRUFBRSxFQUFFO1lBQ2hGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsUUFBUSx5QkFBeUIsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0wsQ0FBQyxDQUFDO0lBOUNGLENBQUM7SUFwQkQsSUFDSSxZQUFZLENBQUMsS0FBd0I7UUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDSSxnQkFBZ0IsQ0FBQyxXQUFvQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFVRCxRQUFRO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2pDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQy9ELENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNwRjthQUNKO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3hGO2FBQ0o7U0FDSjtJQUNMLENBQUM7O3lHQWxFUSxZQUFZOzZGQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFIeEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3QjsySkFhTyxZQUFZO3NCQURmLEtBQUs7Z0JBUUYsZ0JBQWdCO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGVybWlzc2lvbnN9IGZyb20gJy4uL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYmJQZXJtaXNzaW9uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJiUGVybWlzc2lvbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICAvLyBEYXRhLlxyXG4gICAgcHJpdmF0ZSBfcGVybWlzc2lvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XHJcbiAgICBwcml2YXRlIF92YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX2Vsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgX3RoZW5WaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBfZWxzZVZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBiYlBlcm1pc3Npb24odmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSB0aGlzLmdldEFsbG93ZWRQZXJtaXNzaW9ucyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fcGVybWlzc2lvbiQubmV4dChwZXJtaXNzaW9ucyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBiYlBlcm1pc3Npb25FbHNlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuYXNzZXJ0VGVtcGxhdGUoJ2JiUGVybWlzc2lvbkVsc2UnLCB0ZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgdGhpcy5fZWxzZVRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3Vic2NyaXB0aW9ucy5cclxuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Blcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrJCA9IHRoaXMuX3Blcm1pc3Npb24kLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcChwZXJtaXNzaW9ucyA9PiB0aGlzLl9wZXJtaXNzaW9ucy5oYXMocGVybWlzc2lvbnMpKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IGNoZWNrJC5zdWJzY3JpYmUodmFsaWQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl92YWxpZCA9IHZhbGlkO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWxpZCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RoZW5WaWV3UmVmKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbHNlVmlld1JlZiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aGVuVmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZWxzZVZpZXdSZWYpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RoZW5WaWV3UmVmID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9lbHNlVGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbHNlVmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRBbGxvd2VkUGVybWlzc2lvbnMgPSAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGFzc2VydFRlbXBsYXRlID0gKHByb3BlcnR5OiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzVGVtcGxhdGVSZWZPck51bGwgPSAhISghdGVtcGxhdGVSZWYgfHwgdGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KTtcclxuICAgICAgICBpZiAoIWlzVGVtcGxhdGVSZWZPck51bGwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbn1cclxuIl19
|