@bravobit/bb-foundation 0.45.4 → 0.50.0
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/auth/lib/auth.config.d.ts +0 -2
- package/auth/lib/auth.service.d.ts +1 -1
- package/auth/lib/directives/authenticated.directive.d.ts +1 -1
- package/collections/lib/directives/collections-data-row.directive.d.ts +1 -1
- package/collections/lib/directives/collections-data.directive.d.ts +1 -1
- package/collections/lib/directives/collections-empty.directive.d.ts +1 -1
- package/collections/lib/directives/collections-error.directive.d.ts +1 -1
- package/collections/lib/directives/collections-initial.directive.d.ts +1 -1
- package/collections/lib/directives/collections-item.directive.d.ts +1 -1
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -0
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -0
- package/fesm2022/bravobit-bb-foundation-auth.mjs +44 -50
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +69 -75
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +21 -24
- package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +35 -35
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +63 -47
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +119 -131
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +25 -32
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +19 -22
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +15 -17
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +11 -12
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +11 -11
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +26 -30
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +16 -8
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +29 -31
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +12 -13
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +20 -24
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +21 -21
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/localize/lib/localize.config.d.ts +0 -1
- package/localize/lib/localize.service.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/lib/masking.service.d.ts +2 -2
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -2
- package/package.json +25 -63
- package/permissions/lib/directives/permission.directive.d.ts +1 -1
- package/storage/lib/interfaces/strategy.interface.d.ts +1 -1
- package/table/lib/components/table/table.component.d.ts +2 -2
- package/esm2022/auth/bravobit-bb-foundation-auth.mjs +0 -5
- package/esm2022/auth/lib/auth.config.mjs +0 -16
- package/esm2022/auth/lib/auth.interceptor.mjs +0 -87
- package/esm2022/auth/lib/auth.module.mjs +0 -25
- package/esm2022/auth/lib/auth.service.mjs +0 -261
- package/esm2022/auth/lib/auth.session.mjs +0 -142
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +0 -78
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +0 -29
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +0 -32
- package/esm2022/auth/lib/helpers/jwt.helper.mjs +0 -67
- package/esm2022/auth/lib/interfaces/config.interface.mjs +0 -4
- package/esm2022/auth/lib/interfaces/provider.interface.mjs +0 -2
- package/esm2022/auth/lib/interfaces/token.interface.mjs +0 -2
- package/esm2022/auth/lib/providers/email.provider.mjs +0 -27
- package/esm2022/auth/lib/providers/verify.provider.mjs +0 -25
- package/esm2022/auth/lib/tokens/use-authorization.token.mjs +0 -3
- package/esm2022/auth/public_api.mjs +0 -15
- package/esm2022/bravobit-bb-foundation.mjs +0 -5
- package/esm2022/collections/bravobit-bb-foundation-collections.mjs +0 -5
- package/esm2022/collections/lib/classes/array.collection.mjs +0 -85
- package/esm2022/collections/lib/collection.mjs +0 -98
- package/esm2022/collections/lib/collections.module.mjs +0 -84
- package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +0 -37
- package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +0 -52
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +0 -114
- package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +0 -86
- package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +0 -30
- package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +0 -65
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +0 -37
- package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-data.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-empty.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-error.directive.mjs +0 -29
- package/esm2022/collections/lib/directives/collections-initial.directive.mjs +0 -23
- package/esm2022/collections/lib/directives/collections-item.directive.mjs +0 -29
- package/esm2022/collections/lib/interfaces/array-collection.interface.mjs +0 -2
- package/esm2022/collections/lib/interfaces/collection.interface.mjs +0 -2
- package/esm2022/collections/lib/providers/api-collection.provider.mjs +0 -103
- package/esm2022/collections/lib/providers/collection.provider.mjs +0 -39
- package/esm2022/collections/lib/providers/local-collection.provider.mjs +0 -25
- package/esm2022/collections/public_api.mjs +0 -22
- package/esm2022/combobox/bravobit-bb-foundation-combobox.mjs +0 -5
- package/esm2022/combobox/combobox/combobox-container.directive.mjs +0 -137
- package/esm2022/combobox/combobox/combobox.component.mjs +0 -118
- package/esm2022/combobox/combobox-label.directive.mjs +0 -14
- package/esm2022/combobox/combobox-option.directive.mjs +0 -17
- package/esm2022/combobox/combobox-panel/combobox-panel.animation.mjs +0 -11
- package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +0 -42
- package/esm2022/combobox/combobox.interface.mjs +0 -2
- package/esm2022/combobox/public_api.mjs +0 -4
- package/esm2022/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -5
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +0 -50
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +0 -25
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +0 -28
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +0 -32
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +0 -75
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +0 -93
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +0 -60
- package/esm2022/dashboard/lib/dashboard.module.mjs +0 -50
- package/esm2022/dashboard/public_api.mjs +0 -9
- package/esm2022/dialog/bravobit-bb-foundation-dialog.mjs +0 -5
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +0 -12
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +0 -44
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +0 -58
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +0 -15
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +0 -11
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +0 -57
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +0 -53
- package/esm2022/dialog/lib/dialog.config.mjs +0 -8
- package/esm2022/dialog/lib/dialog.insertion.mjs +0 -18
- package/esm2022/dialog/lib/dialog.interfaces.mjs +0 -9
- package/esm2022/dialog/lib/dialog.module.mjs +0 -64
- package/esm2022/dialog/lib/dialog.ref.mjs +0 -16
- package/esm2022/dialog/lib/dialog.service.mjs +0 -75
- package/esm2022/dialog/lib/directives/confirm.directive.mjs +0 -48
- package/esm2022/dialog/public_api.mjs +0 -12
- package/esm2022/elements/bravobit-bb-foundation-elements.mjs +0 -5
- package/esm2022/elements/lib/avatar/avatar.component.mjs +0 -175
- package/esm2022/elements/lib/button/button.component.mjs +0 -68
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +0 -116
- package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +0 -34
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +0 -323
- package/esm2022/elements/lib/directives/addon.directive.mjs +0 -27
- package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +0 -41
- package/esm2022/elements/lib/directives/file-drop.directive.mjs +0 -62
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +0 -54
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +0 -24
- package/esm2022/elements/lib/directives/image-upload.directive.mjs +0 -143
- package/esm2022/elements/lib/directives/input.directive.mjs +0 -49
- package/esm2022/elements/lib/elements.config.mjs +0 -54
- package/esm2022/elements/lib/elements.interfaces.mjs +0 -5
- package/esm2022/elements/lib/elements.module.mjs +0 -146
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +0 -196
- package/esm2022/elements/lib/form-control/form-control.component.mjs +0 -46
- package/esm2022/elements/lib/form-error/form-error.component.mjs +0 -106
- package/esm2022/elements/lib/form-group/form-group.component.mjs +0 -19
- package/esm2022/elements/lib/icon/icon.component.mjs +0 -122
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +0 -126
- package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +0 -149
- package/esm2022/elements/lib/pipes/date.pipe.mjs +0 -28
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +0 -48
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +0 -27
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +0 -99
- package/esm2022/elements/lib/radio-button/radio-button.component.mjs +0 -60
- package/esm2022/elements/lib/radio-group/radio-group.component.mjs +0 -103
- package/esm2022/elements/lib/spinner/spinner.component.mjs +0 -22
- package/esm2022/elements/public_api.mjs +0 -30
- package/esm2022/http/bravobit-bb-foundation-http.mjs +0 -5
- package/esm2022/http/lib/classes/http.config.mjs +0 -32
- package/esm2022/http/lib/classes/http.error.mjs +0 -20
- package/esm2022/http/lib/http.config.mjs +0 -18
- package/esm2022/http/lib/http.interfaces.mjs +0 -4
- package/esm2022/http/lib/http.module.mjs +0 -31
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +0 -60
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +0 -31
- package/esm2022/http/public_api.mjs +0 -8
- package/esm2022/lib/core/functions/array.utils.mjs +0 -7
- package/esm2022/lib/core/functions/date.utils.mjs +0 -31
- package/esm2022/lib/core/functions/password.utils.mjs +0 -17
- package/esm2022/lib/core/functions/route-cache.utils.mjs +0 -23
- package/esm2022/lib/core/miscellaneous/coercion.mjs +0 -5
- package/esm2022/lib/core/miscellaneous/regex.mjs +0 -44
- package/esm2022/lib/core/miscellaneous/validator.mjs +0 -85
- package/esm2022/lib/core/services/exif.service.mjs +0 -165
- package/esm2022/lib/core/services/file-loader.service.mjs +0 -85
- package/esm2022/lib/core/services/files.service.mjs +0 -78
- package/esm2022/lib/core/services/image-converter.service.mjs +0 -126
- package/esm2022/lib/core/services/languages.service.mjs +0 -75
- package/esm2022/lib/core/services/network.service.mjs +0 -58
- package/esm2022/lib/core/services/patch.service.mjs +0 -66
- package/esm2022/lib/core/tokens/accept-language.token.mjs +0 -3
- package/esm2022/lib/core/tokens/base-url.token.mjs +0 -3
- package/esm2022/lib/core/tokens/cookie.token.mjs +0 -3
- package/esm2022/lib/core/tokens/global-focus-mode.token.mjs +0 -10
- package/esm2022/lib/core/tokens/location.token.mjs +0 -6
- package/esm2022/lib/core/tokens/navigator.token.mjs +0 -6
- package/esm2022/lib/core/tokens/window.token.mjs +0 -12
- package/esm2022/localize/bravobit-bb-foundation-localize.mjs +0 -5
- package/esm2022/localize/lib/dictionary/dictionary.class.mjs +0 -96
- package/esm2022/localize/lib/dictionary/dictionary.context.mjs +0 -24
- package/esm2022/localize/lib/dictionary/dictionary.data.mjs +0 -7
- package/esm2022/localize/lib/functions/date.function.mjs +0 -18
- package/esm2022/localize/lib/functions/lowercase.function.mjs +0 -13
- package/esm2022/localize/lib/functions/uppercase.function.mjs +0 -13
- package/esm2022/localize/lib/handlers/missing.handler.mjs +0 -13
- package/esm2022/localize/lib/interfaces/config.interfaces.mjs +0 -2
- package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +0 -8
- package/esm2022/localize/lib/interfaces/handlers.interfaces.mjs +0 -2
- package/esm2022/localize/lib/interfaces/options.interfaces.mjs +0 -6
- package/esm2022/localize/lib/localizations/dutch.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/english.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/papiamento.localization.mjs +0 -64
- package/esm2022/localize/lib/localizations/spanish.localization.mjs +0 -64
- package/esm2022/localize/lib/localize.config.mjs +0 -43
- package/esm2022/localize/lib/localize.module.mjs +0 -39
- package/esm2022/localize/lib/localize.pipe.mjs +0 -48
- package/esm2022/localize/lib/localize.service.mjs +0 -172
- package/esm2022/localize/lib/localize.tokens.mjs +0 -18
- package/esm2022/localize/lib/transforms/abstract.transform.mjs +0 -30
- package/esm2022/localize/lib/transforms/interpolate.transform.mjs +0 -45
- package/esm2022/localize/lib/transforms/plural.transform.mjs +0 -49
- package/esm2022/localize/lib/transforms/reference.transform.mjs +0 -19
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +0 -89
- package/esm2022/localize/lib/views/localize-template.directive.mjs +0 -23
- package/esm2022/localize/public_api.mjs +0 -27
- package/esm2022/masking/bravobit-bb-foundation-masking.mjs +0 -5
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +0 -41
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +0 -41
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +0 -126
- package/esm2022/masking/lib/input-mask.interface.mjs +0 -2
- package/esm2022/masking/lib/masking.module.mjs +0 -30
- package/esm2022/masking/lib/masking.service.mjs +0 -104
- package/esm2022/masking/public_api.mjs +0 -7
- package/esm2022/notifications/bravobit-bb-foundation-notifications.mjs +0 -5
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +0 -112
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +0 -48
- package/esm2022/notifications/lib/notifications.animations.mjs +0 -28
- package/esm2022/notifications/lib/notifications.config.mjs +0 -8
- package/esm2022/notifications/lib/notifications.interfaces.mjs +0 -31
- package/esm2022/notifications/lib/notifications.module.mjs +0 -20
- package/esm2022/notifications/lib/notifications.service.mjs +0 -161
- package/esm2022/notifications/public_api.mjs +0 -5
- package/esm2022/permissions/bravobit-bb-foundation-permissions.mjs +0 -5
- package/esm2022/permissions/lib/directives/permission.directive.mjs +0 -95
- package/esm2022/permissions/lib/guards/permission.guard.mjs +0 -25
- package/esm2022/permissions/lib/handlers/abstract.handler.mjs +0 -3
- package/esm2022/permissions/lib/handlers/local.handler.mjs +0 -29
- package/esm2022/permissions/lib/permissions.config.mjs +0 -20
- package/esm2022/permissions/lib/permissions.interface.mjs +0 -8
- package/esm2022/permissions/lib/permissions.module.mjs +0 -25
- package/esm2022/permissions/lib/permissions.service.mjs +0 -100
- package/esm2022/permissions/public_api.mjs +0 -9
- package/esm2022/public_api.mjs +0 -25
- package/esm2022/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -5
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +0 -225
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +0 -80
- package/esm2022/recaptcha/lib/recaptcha.config.mjs +0 -8
- package/esm2022/recaptcha/lib/recaptcha.interface.mjs +0 -3
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +0 -27
- package/esm2022/recaptcha/public_api.mjs +0 -6
- package/esm2022/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -5
- package/esm2022/rxjs/lib/observables/get-control-value.observable.mjs +0 -6
- package/esm2022/rxjs/lib/observables/get-route-param.observable.mjs +0 -5
- package/esm2022/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -10
- package/esm2022/rxjs/lib/operators/filter-nil.operator.mjs +0 -5
- package/esm2022/rxjs/public_api.mjs +0 -5
- package/esm2022/select/bravobit-bb-foundation-select.mjs +0 -5
- package/esm2022/select/lib/select/select.component.mjs +0 -289
- package/esm2022/select/lib/select-label.directive.mjs +0 -18
- package/esm2022/select/lib/select-multi-label.directive.mjs +0 -18
- package/esm2022/select/lib/select-option-group.directive.mjs +0 -18
- package/esm2022/select/lib/select-option.directive.mjs +0 -18
- package/esm2022/select/lib/select.config.mjs +0 -8
- package/esm2022/select/lib/select.module.mjs +0 -46
- package/esm2022/select/public_api.mjs +0 -8
- package/esm2022/storage/bravobit-bb-foundation-storage.mjs +0 -5
- package/esm2022/storage/lib/interfaces/attributes.interface.mjs +0 -2
- package/esm2022/storage/lib/interfaces/memory.interface.mjs +0 -2
- package/esm2022/storage/lib/interfaces/strategy.interface.mjs +0 -2
- package/esm2022/storage/lib/storage.service.mjs +0 -113
- package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +0 -144
- package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +0 -54
- package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -100
- package/esm2022/storage/public_api.mjs +0 -8
- package/esm2022/table/bravobit-bb-foundation-table.mjs +0 -5
- package/esm2022/table/lib/components/table/table.component.mjs +0 -200
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +0 -11
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +0 -135
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +0 -136
- package/esm2022/table/lib/data/datasource.data.mjs +0 -30
- package/esm2022/table/lib/data/generic.data.mjs +0 -84
- package/esm2022/table/lib/interfaces/datasource.interface.mjs +0 -2
- package/esm2022/table/lib/interfaces/table.interfaces.mjs +0 -2
- package/esm2022/table/lib/table.module.mjs +0 -44
- package/esm2022/table/public_api.mjs +0 -10
- package/esm2022/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -5
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +0 -23
- package/esm2022/tooltip/lib/tooltip.directive.mjs +0 -130
- package/esm2022/tooltip/lib/tooltip.interfaces.mjs +0 -4
- package/esm2022/tooltip/lib/tooltip.module.mjs +0 -16
- package/esm2022/tooltip/public_api.mjs +0 -5
- package/esm2022/utils/bravobit-bb-foundation-utils.mjs +0 -5
- package/esm2022/utils/lib/directives/autosize.directive.mjs +0 -76
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +0 -80
- package/esm2022/utils/lib/directives/focus.directive.mjs +0 -57
- package/esm2022/utils/lib/directives/template.directive.mjs +0 -33
- package/esm2022/utils/lib/utils.module.mjs +0 -35
- package/esm2022/utils/public_api.mjs +0 -6
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { HTTP_CONFIG } from '../http.interfaces';
|
|
2
|
-
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
3
|
-
import { isPlatformServer } from '@angular/common';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class BaseUrlInterceptor {
|
|
6
|
-
// Dependencies.
|
|
7
|
-
_config = inject(HTTP_CONFIG);
|
|
8
|
-
_platformId = inject(PLATFORM_ID);
|
|
9
|
-
// Aliases.
|
|
10
|
-
_aliases = this._config?.aliases;
|
|
11
|
-
_prefix = this._config?.prefix;
|
|
12
|
-
_extractRegex = new RegExp(`\\${this._prefix}[a-zA-Z]+`);
|
|
13
|
-
intercept(request, next) {
|
|
14
|
-
const url = this.getUrlBasedOnAlias(request.url);
|
|
15
|
-
const modified = request.clone({ url });
|
|
16
|
-
return next.handle(modified);
|
|
17
|
-
}
|
|
18
|
-
getUrlBasedOnAlias(url) {
|
|
19
|
-
const matches = this._extractRegex.exec(url);
|
|
20
|
-
if (!matches) {
|
|
21
|
-
return url;
|
|
22
|
-
}
|
|
23
|
-
return matches.reduce((previous, current) => {
|
|
24
|
-
const alias = this.getAlias(current);
|
|
25
|
-
const stringAlias = this.convertUrlToString(alias?.url);
|
|
26
|
-
if (!stringAlias) {
|
|
27
|
-
return previous;
|
|
28
|
-
}
|
|
29
|
-
return previous.replace(current, stringAlias);
|
|
30
|
-
}, url);
|
|
31
|
-
}
|
|
32
|
-
convertUrlToString(url) {
|
|
33
|
-
if (typeof url === 'string') {
|
|
34
|
-
return url;
|
|
35
|
-
}
|
|
36
|
-
return isPlatformServer(this._platformId)
|
|
37
|
-
? url?.server ?? url?.browser ?? null
|
|
38
|
-
: url?.browser ?? null;
|
|
39
|
-
}
|
|
40
|
-
getAlias(value) {
|
|
41
|
-
const alias = value.replace(this._prefix, '');
|
|
42
|
-
const fetched = this._aliases?.find(item => item.alias === alias) ?? null;
|
|
43
|
-
if (fetched) {
|
|
44
|
-
return fetched;
|
|
45
|
-
}
|
|
46
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
47
|
-
const available = this._aliases
|
|
48
|
-
.map(item => `\$${item?.alias}`)
|
|
49
|
-
.join(', ');
|
|
50
|
-
console?.warn?.(`[HttpModule]: Used an invalid HTTP-alias named "${value}", skipped parsing; Available aliases is one of (${available}).`);
|
|
51
|
-
}
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BaseUrlInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BaseUrlInterceptor });
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BaseUrlInterceptor, decorators: [{
|
|
58
|
-
type: Injectable
|
|
59
|
-
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS11cmwuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYmFzZS11cmwuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBeUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBS2pELE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsZ0JBQWdCO0lBQ0MsT0FBTyxHQUFlLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxXQUFXLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTNELFdBQVc7SUFDTSxRQUFRLEdBQXNCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ3BELE9BQU8sR0FBVyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUN2QyxhQUFhLEdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxXQUFXLENBQUMsQ0FBQztJQUVsRixTQUFTLENBQUMsT0FBNkIsRUFBRSxJQUFpQjtRQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDZixPQUFPLFFBQVEsQ0FBQztZQUNwQixDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBMEI7UUFDakQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDckMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE9BQU8sSUFBSSxJQUFJO1lBQ3JDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWE7UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDMUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUTtpQkFDMUIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsbURBQW1ELEtBQUssb0RBQW9ELFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDL0ksQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7d0dBNURRLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIVFRQX0NPTkZJRywgSHR0cENvbmZpZ0FsaWFzLCBIdHRwQ29uZmlnUGxhdGZvcm1Vcmx9IGZyb20gJy4uL2h0dHAuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0h0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ29uZmlnfSBmcm9tICcuLi9jbGFzc2VzL2h0dHAuY29uZmlnJztcbmltcG9ydCB7aXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZGVjbGFyZSBsZXQgbmdEZXZNb2RlO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFzZVVybEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAgIC8vIERlcGVuZGVuY2llcy5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc6IEh0dHBDb25maWcgPSBpbmplY3QoSFRUUF9DT05GSUcpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtSWQ6IE9iamVjdCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICAvLyBBbGlhc2VzLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FsaWFzZXM6IEh0dHBDb25maWdBbGlhc1tdID0gdGhpcy5fY29uZmlnPy5hbGlhc2VzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZpeDogc3RyaW5nID0gdGhpcy5fY29uZmlnPy5wcmVmaXg7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXh0cmFjdFJlZ2V4OiBSZWdFeHAgPSBuZXcgUmVnRXhwKGBcXFxcJHt0aGlzLl9wcmVmaXh9W2EtekEtWl0rYCk7XG5cbiAgICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsQmFzZWRPbkFsaWFzKHJlcXVlc3QudXJsKTtcbiAgICAgICAgY29uc3QgbW9kaWZpZWQgPSByZXF1ZXN0LmNsb25lKHt1cmx9KTtcblxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUobW9kaWZpZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXJsQmFzZWRPbkFsaWFzKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLl9leHRyYWN0UmVnZXguZXhlYyh1cmwpO1xuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGlhcyA9IHRoaXMuZ2V0QWxpYXMoY3VycmVudCk7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdBbGlhcyA9IHRoaXMuY29udmVydFVybFRvU3RyaW5nKGFsaWFzPy51cmwpO1xuICAgICAgICAgICAgaWYgKCFzdHJpbmdBbGlhcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzLnJlcGxhY2UoY3VycmVudCwgc3RyaW5nQWxpYXMpO1xuICAgICAgICB9LCB1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFVybFRvU3RyaW5nKHVybDogSHR0cENvbmZpZ1BsYXRmb3JtVXJsKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtSWQpXG4gICAgICAgICAgICA/IHVybD8uc2VydmVyID8/IHVybD8uYnJvd3NlciA/PyBudWxsXG4gICAgICAgICAgICA6IHVybD8uYnJvd3NlciA/PyBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxpYXModmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhbGlhcyA9IHZhbHVlLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJyk7XG4gICAgICAgIGNvbnN0IGZldGNoZWQgPSB0aGlzLl9hbGlhc2VzPy5maW5kKGl0ZW0gPT4gaXRlbS5hbGlhcyA9PT0gYWxpYXMpID8/IG51bGw7XG4gICAgICAgIGlmIChmZXRjaGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMuX2FsaWFzZXNcbiAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4gYFxcJCR7aXRlbT8uYWxpYXN9YClcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgICAgIGNvbnNvbGU/Lndhcm4/LihgW0h0dHBNb2R1bGVdOiBVc2VkIGFuIGludmFsaWQgSFRUUC1hbGlhcyBuYW1lZCBcIiR7dmFsdWV9XCIsIHNraXBwZWQgcGFyc2luZzsgQXZhaWxhYmxlIGFsaWFzZXMgaXMgb25lIG9mICgke2F2YWlsYWJsZX0pLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { HttpError } from '../classes/http.error';
|
|
4
|
-
import { HTTP_CONFIG } from '../http.interfaces';
|
|
5
|
-
import { catchError } from 'rxjs/operators';
|
|
6
|
-
import { throwError } from 'rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class ErrorInterceptor {
|
|
9
|
-
// Dependencies.
|
|
10
|
-
_config = inject(HTTP_CONFIG);
|
|
11
|
-
// State.
|
|
12
|
-
_disabled = this._config?.disableErrorParsing ?? false;
|
|
13
|
-
intercept(request, next) {
|
|
14
|
-
return next.handle(request).pipe(catchError(error => {
|
|
15
|
-
// If we have a matching http error response
|
|
16
|
-
// re-map it with our custom class (if not disabled).
|
|
17
|
-
if (!this._disabled && error instanceof HttpErrorResponse) {
|
|
18
|
-
const parsed = new HttpError(error);
|
|
19
|
-
return throwError(() => parsed);
|
|
20
|
-
}
|
|
21
|
-
// We did not match anything, just re-trow the error.
|
|
22
|
-
return throwError(() => error);
|
|
23
|
-
}));
|
|
24
|
-
}
|
|
25
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ErrorInterceptor });
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ErrorInterceptor, decorators: [{
|
|
29
|
-
type: Injectable
|
|
30
|
-
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9pbnRlcmNlcHRvcnMvZXJyb3IuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUE0QyxNQUFNLHNCQUFzQixDQUFDO0FBRWxHLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBR2hDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsZ0JBQWdCO0lBQ0MsT0FBTyxHQUFlLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUzRCxTQUFTO0lBQ1EsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLElBQUksS0FBSyxDQUFDO0lBRXhFLFNBQVMsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ3RELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVCLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLDRDQUE0QztZQUM1QyxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBRUQscURBQXFEO1lBQ3JELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO3dHQXRCUSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0h0dHBDb25maWd9IGZyb20gJy4uL2NsYXNzZXMvaHR0cC5jb25maWcnO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwRXJyb3J9IGZyb20gJy4uL2NsYXNzZXMvaHR0cC5lcnJvcic7XG5pbXBvcnQge0hUVFBfQ09ORklHfSBmcm9tICcuLi9odHRwLmludGVyZmFjZXMnO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3Rocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgICAvLyBEZXBlbmRlbmNpZXMuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBIdHRwQ29uZmlnID0gaW5qZWN0KEhUVFBfQ09ORklHKTtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVkID0gdGhpcy5fY29uZmlnPy5kaXNhYmxlRXJyb3JQYXJzaW5nID8/IGZhbHNlO1xuXG4gICAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBtYXRjaGluZyBodHRwIGVycm9yIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgLy8gcmUtbWFwIGl0IHdpdGggb3VyIGN1c3RvbSBjbGFzcyAoaWYgbm90IGRpc2FibGVkKS5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2Rpc2FibGVkICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gbmV3IEh0dHBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gV2UgZGlkIG5vdCBtYXRjaCBhbnl0aGluZywganVzdCByZS10cm93IHRoZSBlcnJvci5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './lib/http.interfaces';
|
|
2
|
-
export * from './lib/classes/http.config';
|
|
3
|
-
export * from './lib/classes/http.error';
|
|
4
|
-
export * from './lib/interceptors/base-url.interceptor';
|
|
5
|
-
export * from './lib/interceptors/error.interceptor';
|
|
6
|
-
export * from './lib/http.config';
|
|
7
|
-
export * from './lib/http.module';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vaHR0cC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC5pbnRlcmZhY2VzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9odHRwLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2h0dHAuZXJyb3InO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvYmFzZS11cmwuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2Vycm9yLmludGVyY2VwdG9yJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC5tb2R1bGUnO1xuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export function arrayToMap(items, value) {
|
|
2
|
-
return items.reduce((previous, current) => {
|
|
3
|
-
const key = current?.[value];
|
|
4
|
-
return { ...previous, [key]: current };
|
|
5
|
-
}, {});
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3NyYy9saWIvY29yZS9mdW5jdGlvbnMvYXJyYXkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFVBQVUsQ0FBSSxLQUFVLEVBQUUsS0FBYztJQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDdEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFXLENBQUM7UUFDdkMsT0FBTyxFQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFDLENBQUM7SUFDekMsQ0FBQyxFQUFxQixFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFycmF5VG9NYXA8VD4oaXRlbXM6IFRbXSwgdmFsdWU6IGtleW9mIFQpIHtcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBjdXJyZW50Py5bdmFsdWVdIGFzIHN0cmluZztcbiAgICAgICAgcmV0dXJuIHsuLi5wcmV2aW91cywgW2tleV06IGN1cnJlbnR9O1xuICAgIH0sIDxSZWNvcmQ8c3RyaW5nLCBUPj57fSk7XG59XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export function parseDate(value) {
|
|
2
|
-
if (value === undefined || value === null) {
|
|
3
|
-
return null;
|
|
4
|
-
}
|
|
5
|
-
if (typeof value === 'string') {
|
|
6
|
-
if (/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/.test(value)) {
|
|
7
|
-
return createDate(new Date(`${value}Z`));
|
|
8
|
-
}
|
|
9
|
-
if (/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value)) {
|
|
10
|
-
const [y, m, d] = value.split('-');
|
|
11
|
-
const year = Number(y);
|
|
12
|
-
const month = Number(m) - 1;
|
|
13
|
-
const day = Number(d);
|
|
14
|
-
return createDate(new Date(year, month, day));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return createDate(new Date(value));
|
|
18
|
-
}
|
|
19
|
-
export function createDate(date) {
|
|
20
|
-
return isValidDate(date) ? date : null;
|
|
21
|
-
}
|
|
22
|
-
export function isValidDate(date) {
|
|
23
|
-
if (!isDate(date)) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
return !isNaN(Number(date));
|
|
27
|
-
}
|
|
28
|
-
export function isDate(value) {
|
|
29
|
-
return (value instanceof Date || (typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]'));
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2xpYi9jb3JlL2Z1bmN0aW9ucy9kYXRlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBNkI7SUFDbkQsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLHlEQUF5RCxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hFLE9BQU8sVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVTtJQUNqQyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBYTtJQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBYztJQUNqQyxPQUFPLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQztBQUMvSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoL15bMC05XXs0fS1bMC05XXsyfS1bMC05XXsyfVRbMC05XXsyfTpbMC05XXsyfTpbMC05XXsyfSQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRGF0ZShuZXcgRGF0ZShgJHt2YWx1ZX1aYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKC9eWzAtOV17NH0tWzAtOV17Mn0tWzAtOV17Mn0kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgW3ksIG0sIGRdID0gdmFsdWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBOdW1iZXIoeSk7XG4gICAgICAgICAgICBjb25zdCBtb250aCA9IE51bWJlcihtKSAtIDE7XG4gICAgICAgICAgICBjb25zdCBkYXkgPSBOdW1iZXIoZCk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRGF0ZShuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlRGF0ZShuZXcgRGF0ZSh2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIGlzVmFsaWREYXRlKGRhdGUpID8gZGF0ZSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRGF0ZShkYXRlOiB1bmtub3duKSB7XG4gICAgaWYgKCFpc0RhdGUoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhaXNOYU4oTnVtYmVyKGRhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIERhdGUge1xuICAgIHJldHVybiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGVdJykpO1xufVxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export function generatePassword(length = 12) {
|
|
2
|
-
const chars = 'abcdefghijklmnopqrstuvwxyz';
|
|
3
|
-
const upperChars = chars.toUpperCase();
|
|
4
|
-
const numberChars = '0123456789';
|
|
5
|
-
const specialChars = '#?!@$%^&*-';
|
|
6
|
-
const usableChars = chars + upperChars + numberChars + specialChars;
|
|
7
|
-
let generatedPassword = '';
|
|
8
|
-
for (let index = 0; index < length - 4; index++) {
|
|
9
|
-
generatedPassword += usableChars[Math.floor(Math.random() * (usableChars.length))];
|
|
10
|
-
}
|
|
11
|
-
generatedPassword += chars[Math.floor(Math.random() * (chars.length))];
|
|
12
|
-
generatedPassword += upperChars[Math.floor(Math.random() * (upperChars.length))];
|
|
13
|
-
generatedPassword += numberChars[Math.floor(Math.random() * (numberChars.length))];
|
|
14
|
-
generatedPassword += specialChars[Math.floor(Math.random() * (specialChars.length))];
|
|
15
|
-
return generatedPassword;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3NyYy9saWIvY29yZS9mdW5jdGlvbnMvcGFzc3dvcmQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFNBQWlCLEVBQUU7SUFDaEQsTUFBTSxLQUFLLEdBQUcsNEJBQTRCLENBQUM7SUFDM0MsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztJQUNqQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxHQUFHLFVBQVUsR0FBRyxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBRXBFLElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBRTNCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDOUMsaUJBQWlCLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsaUJBQWlCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxpQkFBaUIsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGlCQUFpQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsaUJBQWlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVyRixPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQYXNzd29yZChsZW5ndGg6IG51bWJlciA9IDEyKSB7XG4gICAgY29uc3QgY2hhcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonO1xuICAgIGNvbnN0IHVwcGVyQ2hhcnMgPSBjaGFycy50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG51bWJlckNoYXJzID0gJzAxMjM0NTY3ODknO1xuICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9ICcjPyFAJCVeJiotJztcbiAgICBjb25zdCB1c2FibGVDaGFycyA9IGNoYXJzICsgdXBwZXJDaGFycyArIG51bWJlckNoYXJzICsgc3BlY2lhbENoYXJzO1xuXG4gICAgbGV0IGdlbmVyYXRlZFBhc3N3b3JkID0gJyc7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoIC0gNDsgaW5kZXgrKykge1xuICAgICAgICBnZW5lcmF0ZWRQYXNzd29yZCArPSB1c2FibGVDaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAodXNhYmxlQ2hhcnMubGVuZ3RoKSldO1xuICAgIH1cblxuICAgIGdlbmVyYXRlZFBhc3N3b3JkICs9IGNoYXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChjaGFycy5sZW5ndGgpKV07XG4gICAgZ2VuZXJhdGVkUGFzc3dvcmQgKz0gdXBwZXJDaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAodXBwZXJDaGFycy5sZW5ndGgpKV07XG4gICAgZ2VuZXJhdGVkUGFzc3dvcmQgKz0gbnVtYmVyQ2hhcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG51bWJlckNoYXJzLmxlbmd0aCkpXTtcbiAgICBnZW5lcmF0ZWRQYXNzd29yZCArPSBzcGVjaWFsQ2hhcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKHNwZWNpYWxDaGFycy5sZW5ndGgpKV07XG5cbiAgICByZXR1cm4gZ2VuZXJhdGVkUGFzc3dvcmQ7XG59XG4iXX0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { makeEnvironmentProviders } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
export class RouteCache {
|
|
4
|
-
value$;
|
|
5
|
-
constructor(initialValue) {
|
|
6
|
-
this.value$ = new BehaviorSubject(initialValue ?? null);
|
|
7
|
-
}
|
|
8
|
-
asObservable() {
|
|
9
|
-
return this.value$.asObservable();
|
|
10
|
-
}
|
|
11
|
-
get() {
|
|
12
|
-
return this.value$.getValue();
|
|
13
|
-
}
|
|
14
|
-
set(value) {
|
|
15
|
-
this.value$.next(value);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function provideRouteCache(token, value) {
|
|
19
|
-
return makeEnvironmentProviders([
|
|
20
|
-
{ provide: token, useValue: value }
|
|
21
|
-
]);
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2FjaGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3NyYy9saWIvY29yZS9mdW5jdGlvbnMvcm91dGUtY2FjaGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix3QkFBd0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE1BQU0sT0FBTyxVQUFVO0lBRUEsTUFBTSxDQUFxQjtJQUU5QyxZQUFZLFlBQWdCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVcsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxHQUFHO1FBQ0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBUTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FFSjtBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxLQUFvQyxFQUFFLEtBQW9CO0lBQzNGLE9BQU8sd0JBQXdCLENBQUM7UUFDNUIsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7S0FDcEMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW4sIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZUNhY2hlPFQ+IHtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB2YWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxUPjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXRpYWxWYWx1ZT86IFQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQgfCBudWxsPihpbml0aWFsVmFsdWUgPz8gbnVsbCk7XG4gICAgfVxuXG4gICAgYXNPYnNlcnZhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBzZXQodmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUm91dGVDYWNoZTxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48Um91dGVDYWNoZTxUPj4sIHZhbHVlOiBSb3V0ZUNhY2hlPFQ+KSB7XG4gICAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgICAgIHtwcm92aWRlOiB0b2tlbiwgdXNlVmFsdWU6IHZhbHVlfVxuICAgIF0pO1xufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { isObservable, of } from 'rxjs';
|
|
2
|
-
export function observableAttribute(value) {
|
|
3
|
-
return isObservable(value) ? value : of(value);
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3NyYy9saWIvY29yZS9taXNjZWxsYW5lb3VzL2NvZXJjaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWxELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFjO0lBQzlDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmFibGVBdHRyaWJ1dGUodmFsdWU6IHVua25vd24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBpc09ic2VydmFibGUodmFsdWUpID8gdmFsdWUgOiBvZih2YWx1ZSk7XG59XG4iXX0=
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export const BbRegex = {
|
|
2
|
-
email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
3
|
-
fullNumber: /^\d*[1-9]\d*$/,
|
|
4
|
-
url: new RegExp('^' +
|
|
5
|
-
// protocol identifier (optional)
|
|
6
|
-
// short syntax // still required
|
|
7
|
-
'(?:(?:(?:https?|ftp):)?\\/\\/)' +
|
|
8
|
-
// user:pass BasicAuth (optional)
|
|
9
|
-
'(?:\\S+(?::\\S*)?@)?' +
|
|
10
|
-
'(?:' +
|
|
11
|
-
// IP address exclusion
|
|
12
|
-
// private & local networks
|
|
13
|
-
'(?!(?:10|127)(?:\\.\\d{1,3}){3})' +
|
|
14
|
-
'(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})' +
|
|
15
|
-
'(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})' +
|
|
16
|
-
// IP address dotted notation octets
|
|
17
|
-
// excludes loopback network 0.0.0.0
|
|
18
|
-
// excludes reserved space >= 224.0.0.0
|
|
19
|
-
// excludes network & broadcast addresses
|
|
20
|
-
// (first & last IP address of each class)
|
|
21
|
-
'(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' +
|
|
22
|
-
'(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' +
|
|
23
|
-
'(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))' +
|
|
24
|
-
'|' +
|
|
25
|
-
// host & domain names, may end with dot
|
|
26
|
-
// can be replaced by a shortest alternative
|
|
27
|
-
// (?![-_])(?:[-\\w\\u00a1-\\uffff]{0,63}[^-_]\\.)+
|
|
28
|
-
'(?:' +
|
|
29
|
-
'(?:' +
|
|
30
|
-
'[a-z0-9\\u00a1-\\uffff]' +
|
|
31
|
-
'[a-z0-9\\u00a1-\\uffff_-]{0,62}' +
|
|
32
|
-
')?' +
|
|
33
|
-
'[a-z0-9\\u00a1-\\uffff]\\.' +
|
|
34
|
-
')+' +
|
|
35
|
-
// TLD identifier name, may end with dot
|
|
36
|
-
'(?:[a-z\\u00a1-\\uffff]{2,}\\.?)' +
|
|
37
|
-
')' +
|
|
38
|
-
// port number (optional)
|
|
39
|
-
'(?::\\d{2,5})?' +
|
|
40
|
-
// resource path (optional)
|
|
41
|
-
'(?:[/?#]\\S*)?' +
|
|
42
|
-
'$', 'i')
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3NyYy9saWIvY29yZS9taXNjZWxsYW5lb3VzL3JlZ2V4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNuQixLQUFLLEVBQUUsd0pBQXdKO0lBQy9KLFVBQVUsRUFBRSxlQUFlO0lBQzNCLEdBQUcsRUFBRSxJQUFJLE1BQU0sQ0FDWCxHQUFHO1FBQ0gsaUNBQWlDO1FBQ2pDLGlDQUFpQztRQUNqQyxnQ0FBZ0M7UUFDaEMsaUNBQWlDO1FBQ2pDLHNCQUFzQjtRQUN0QixLQUFLO1FBQ0wsdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQixrQ0FBa0M7UUFDbEMsK0NBQStDO1FBQy9DLG9EQUFvRDtRQUNwRCxvQ0FBb0M7UUFDcEMsb0NBQW9DO1FBQ3BDLHVDQUF1QztRQUN2Qyx5Q0FBeUM7UUFDekMsMENBQTBDO1FBQzFDLHdDQUF3QztRQUN4Qyw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELEdBQUc7UUFDSCx3Q0FBd0M7UUFDeEMsNENBQTRDO1FBQzVDLG1EQUFtRDtRQUNuRCxLQUFLO1FBQ0wsS0FBSztRQUNMLHlCQUF5QjtRQUN6QixpQ0FBaUM7UUFDakMsSUFBSTtRQUNKLDRCQUE0QjtRQUM1QixJQUFJO1FBQ0osd0NBQXdDO1FBQ3hDLGtDQUFrQztRQUNsQyxHQUFHO1FBQ0gseUJBQXlCO1FBQ3pCLGdCQUFnQjtRQUNoQiwyQkFBMkI7UUFDM0IsZ0JBQWdCO1FBQ2hCLEdBQUcsRUFBRSxHQUFHLENBQ1g7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJiUmVnZXggPSB7XG4gICAgZW1haWw6IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICAgIGZ1bGxOdW1iZXI6IC9eXFxkKlsxLTldXFxkKiQvLFxuICAgIHVybDogbmV3IFJlZ0V4cChcbiAgICAgICAgJ14nICtcbiAgICAgICAgLy8gcHJvdG9jb2wgaWRlbnRpZmllciAob3B0aW9uYWwpXG4gICAgICAgIC8vIHNob3J0IHN5bnRheCAvLyBzdGlsbCByZXF1aXJlZFxuICAgICAgICAnKD86KD86KD86aHR0cHM/fGZ0cCk6KT9cXFxcL1xcXFwvKScgK1xuICAgICAgICAvLyB1c2VyOnBhc3MgQmFzaWNBdXRoIChvcHRpb25hbClcbiAgICAgICAgJyg/OlxcXFxTKyg/OjpcXFxcUyopP0ApPycgK1xuICAgICAgICAnKD86JyArXG4gICAgICAgIC8vIElQIGFkZHJlc3MgZXhjbHVzaW9uXG4gICAgICAgIC8vIHByaXZhdGUgJiBsb2NhbCBuZXR3b3Jrc1xuICAgICAgICAnKD8hKD86MTB8MTI3KSg/OlxcXFwuXFxcXGR7MSwzfSl7M30pJyArXG4gICAgICAgICcoPyEoPzoxNjlcXFxcLjI1NHwxOTJcXFxcLjE2OCkoPzpcXFxcLlxcXFxkezEsM30pezJ9KScgK1xuICAgICAgICAnKD8hMTcyXFxcXC4oPzoxWzYtOV18MlxcXFxkfDNbMC0xXSkoPzpcXFxcLlxcXFxkezEsM30pezJ9KScgK1xuICAgICAgICAvLyBJUCBhZGRyZXNzIGRvdHRlZCBub3RhdGlvbiBvY3RldHNcbiAgICAgICAgLy8gZXhjbHVkZXMgbG9vcGJhY2sgbmV0d29yayAwLjAuMC4wXG4gICAgICAgIC8vIGV4Y2x1ZGVzIHJlc2VydmVkIHNwYWNlID49IDIyNC4wLjAuMFxuICAgICAgICAvLyBleGNsdWRlcyBuZXR3b3JrICYgYnJvYWRjYXN0IGFkZHJlc3Nlc1xuICAgICAgICAvLyAoZmlyc3QgJiBsYXN0IElQIGFkZHJlc3Mgb2YgZWFjaCBjbGFzcylcbiAgICAgICAgJyg/OlsxLTldXFxcXGQ/fDFcXFxcZFxcXFxkfDJbMDFdXFxcXGR8MjJbMC0zXSknICtcbiAgICAgICAgJyg/OlxcXFwuKD86MT9cXFxcZHsxLDJ9fDJbMC00XVxcXFxkfDI1WzAtNV0pKXsyfScgK1xuICAgICAgICAnKD86XFxcXC4oPzpbMS05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAtNF1cXFxcZHwyNVswLTRdKSknICtcbiAgICAgICAgJ3wnICtcbiAgICAgICAgLy8gaG9zdCAmIGRvbWFpbiBuYW1lcywgbWF5IGVuZCB3aXRoIGRvdFxuICAgICAgICAvLyBjYW4gYmUgcmVwbGFjZWQgYnkgYSBzaG9ydGVzdCBhbHRlcm5hdGl2ZVxuICAgICAgICAvLyAoPyFbLV9dKSg/OlstXFxcXHdcXFxcdTAwYTEtXFxcXHVmZmZmXXswLDYzfVteLV9dXFxcXC4pK1xuICAgICAgICAnKD86JyArXG4gICAgICAgICcoPzonICtcbiAgICAgICAgJ1thLXowLTlcXFxcdTAwYTEtXFxcXHVmZmZmXScgK1xuICAgICAgICAnW2EtejAtOVxcXFx1MDBhMS1cXFxcdWZmZmZfLV17MCw2Mn0nICtcbiAgICAgICAgJyk/JyArXG4gICAgICAgICdbYS16MC05XFxcXHUwMGExLVxcXFx1ZmZmZl1cXFxcLicgK1xuICAgICAgICAnKSsnICtcbiAgICAgICAgLy8gVExEIGlkZW50aWZpZXIgbmFtZSwgbWF5IGVuZCB3aXRoIGRvdFxuICAgICAgICAnKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmZdezIsfVxcXFwuPyknICtcbiAgICAgICAgJyknICtcbiAgICAgICAgLy8gcG9ydCBudW1iZXIgKG9wdGlvbmFsKVxuICAgICAgICAnKD86OlxcXFxkezIsNX0pPycgK1xuICAgICAgICAvLyByZXNvdXJjZSBwYXRoIChvcHRpb25hbClcbiAgICAgICAgJyg/OlsvPyNdXFxcXFMqKT8nICtcbiAgICAgICAgJyQnLCAnaSdcbiAgICApXG59O1xuIl19
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { formatDate } from '@angular/common';
|
|
2
|
-
import { BbRegex } from './regex';
|
|
3
|
-
export class BbValidator {
|
|
4
|
-
static email(control) {
|
|
5
|
-
if (isEmptyInputValue(control.value)) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
return BbRegex.email.test(control.value) ? null : { email: true };
|
|
9
|
-
}
|
|
10
|
-
static fullNumber(control) {
|
|
11
|
-
if (isEmptyInputValue(control.value)) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
return BbRegex.fullNumber.test(control.value) ? null : { fullNumber: true };
|
|
15
|
-
}
|
|
16
|
-
static maxFileSize(bytes) {
|
|
17
|
-
const validator = (control) => {
|
|
18
|
-
const value = control.value;
|
|
19
|
-
// Validate if the value is a file.
|
|
20
|
-
if (!(value instanceof File)) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
if (value.size <= bytes) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
let maxSize = '0 Bytes';
|
|
27
|
-
if (bytes !== 0) {
|
|
28
|
-
const k = 1024;
|
|
29
|
-
const dm = 2;
|
|
30
|
-
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
31
|
-
const index = Math.floor(Math.log(bytes) / Math.log(k));
|
|
32
|
-
maxSize = parseFloat((bytes / Math.pow(k, index)).toFixed(dm)) + ' ' + sizes[index];
|
|
33
|
-
}
|
|
34
|
-
return { maxFileSize: { maxSize } };
|
|
35
|
-
};
|
|
36
|
-
return validator;
|
|
37
|
-
}
|
|
38
|
-
static confirm(fieldName, error = 'confirm') {
|
|
39
|
-
const validator = (control) => {
|
|
40
|
-
if (isEmptyInputValue(control.value)) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const field = control?.parent?.get(fieldName);
|
|
44
|
-
return control?.value === field?.value
|
|
45
|
-
? null
|
|
46
|
-
: { [error]: true };
|
|
47
|
-
};
|
|
48
|
-
return validator;
|
|
49
|
-
}
|
|
50
|
-
static maxDate(date, error = 'maxDate') {
|
|
51
|
-
const formattedDate = date.toString() !== 'Invalid Date'
|
|
52
|
-
? formatDate(date, 'yyyy-MM-dd', 'en-US')
|
|
53
|
-
: null;
|
|
54
|
-
const validator = (control) => {
|
|
55
|
-
if (isEmptyInputValue(control.value)) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
const controlDate = new Date(control.value);
|
|
59
|
-
return controlDate.getTime() > date.getTime()
|
|
60
|
-
? { [error]: { date: formattedDate } }
|
|
61
|
-
: null;
|
|
62
|
-
};
|
|
63
|
-
return validator;
|
|
64
|
-
}
|
|
65
|
-
static minDate(date, error = 'minDate') {
|
|
66
|
-
const formattedDate = date.toString() !== 'Invalid Date'
|
|
67
|
-
? formatDate(date, 'yyyy-MM-dd', 'en-US')
|
|
68
|
-
: null;
|
|
69
|
-
const validator = (control) => {
|
|
70
|
-
if (isEmptyInputValue(control.value)) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const controlDate = new Date(control.value);
|
|
74
|
-
return controlDate.getTime() < date.getTime()
|
|
75
|
-
? { [error]: { date: formattedDate } }
|
|
76
|
-
: null;
|
|
77
|
-
};
|
|
78
|
-
return validator;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
function isEmptyInputValue(value) {
|
|
82
|
-
// We don't check for string here so it also works with arrays.
|
|
83
|
-
return value == null || value.length === 0;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zcmMvbGliL2NvcmUvbWlzY2VsbGFuZW91cy92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFaEMsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUNqQyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUF3QjtRQUN0QyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFhO1FBQzVCLE1BQU0sU0FBUyxHQUFnQixDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUN4RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBRTVCLG1D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QUMsSUFBVSxFQUFFLFFBQWdCLFNBQVM7UUFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLGNBQWM7WUFDcEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVgsTUFBTSxTQUFTLEdBQWdCLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ3hELElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUMsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDekMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUMsRUFBQztnQkFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNmLENBQUMsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FFSjtBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBVTtJQUNqQywrREFBK0Q7SUFDL0QsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QmJSZWdleH0gZnJvbSAnLi9yZWdleCc7XG5cbmV4cG9ydCBjbGFzcyBCYlZhbGlkYXRvciB7XG5cbiAgICBzdGF0aWMgZW1haWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgICAgIGlmIChpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQmJSZWdleC5lbWFpbC50ZXN0KGNvbnRyb2wudmFsdWUpID8gbnVsbCA6IHtlbWFpbDogdHJ1ZX07XG4gICAgfVxuXG4gICAgc3RhdGljIGZ1bGxOdW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgICAgIGlmIChpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQmJSZWdleC5mdWxsTnVtYmVyLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDoge2Z1bGxOdW1iZXI6IHRydWV9O1xuICAgIH1cblxuICAgIHN0YXRpYyBtYXhGaWxlU2l6ZShieXRlczogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRlIGlmIHRoZSB2YWx1ZSBpcyBhIGZpbGUuXG4gICAgICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZS5zaXplIDw9IGJ5dGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtYXhTaXplID0gJzAgQnl0ZXMnO1xuICAgICAgICAgICAgaWYgKGJ5dGVzICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgayA9IDEwMjQ7XG4gICAgICAgICAgICAgICAgY29uc3QgZG0gPSAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG4gICAgICAgICAgICAgICAgbWF4U2l6ZSA9IHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaW5kZXgpKS50b0ZpeGVkKGRtKSkgKyAnICcgKyBzaXplc1tpbmRleF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7bWF4RmlsZVNpemU6IHttYXhTaXplfX07XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgc3RhdGljIGNvbmZpcm0oZmllbGROYW1lOiBzdHJpbmcsIGVycm9yOiBzdHJpbmcgPSAnY29uZmlybScpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGNvbnRyb2w/LnBhcmVudD8uZ2V0KGZpZWxkTmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250cm9sPy52YWx1ZSA9PT0gZmllbGQ/LnZhbHVlXG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiB7W2Vycm9yXTogdHJ1ZX07XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgc3RhdGljIG1heERhdGUoZGF0ZTogRGF0ZSwgZXJyb3I6IHN0cmluZyA9ICdtYXhEYXRlJykge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZGF0ZS50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJ1xuICAgICAgICAgICAgPyBmb3JtYXREYXRlKGRhdGUsICd5eXl5LU1NLWRkJywgJ2VuLVVTJylcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xEYXRlID0gbmV3IERhdGUoY29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250cm9sRGF0ZS5nZXRUaW1lKCkgPiBkYXRlLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgID8ge1tlcnJvcl06IHtkYXRlOiBmb3JtYXR0ZWREYXRlfX1cbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgc3RhdGljIG1pbkRhdGUoZGF0ZTogRGF0ZSwgZXJyb3I6IHN0cmluZyA9ICdtaW5EYXRlJykge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZGF0ZS50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJ1xuICAgICAgICAgICAgPyBmb3JtYXREYXRlKGRhdGUsICd5eXl5LU1NLWRkJywgJ2VuLVVTJylcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xEYXRlID0gbmV3IERhdGUoY29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250cm9sRGF0ZS5nZXRUaW1lKCkgPCBkYXRlLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgID8ge1tlcnJvcl06IHtkYXRlOiBmb3JtYXR0ZWREYXRlfX1cbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3I7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGlzRW1wdHlJbnB1dFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBXZSBkb24ndCBjaGVjayBmb3Igc3RyaW5nIGhlcmUgc28gaXQgYWxzbyB3b3JrcyB3aXRoIGFycmF5cy5cbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZS5sZW5ndGggPT09IDA7XG59XG4iXX0=
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/cdk/platform";
|
|
4
|
-
import * as i2 from "./file-loader.service";
|
|
5
|
-
export class Exif {
|
|
6
|
-
_platform;
|
|
7
|
-
_fileLoader;
|
|
8
|
-
constructor(_platform, _fileLoader) {
|
|
9
|
-
this._platform = _platform;
|
|
10
|
-
this._fileLoader = _fileLoader;
|
|
11
|
-
}
|
|
12
|
-
async strip(file, quality = 100) {
|
|
13
|
-
// Validate we are on a browser.
|
|
14
|
-
if (!this._platform.isBrowser) {
|
|
15
|
-
return file;
|
|
16
|
-
}
|
|
17
|
-
// Validate the file exists and is
|
|
18
|
-
// an instance of a File object.
|
|
19
|
-
if (!file || !(file instanceof File)) {
|
|
20
|
-
return file;
|
|
21
|
-
}
|
|
22
|
-
// Only jpeg images need correction.
|
|
23
|
-
if (!['image/jpeg'].includes(file.type)) {
|
|
24
|
-
return file;
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
// Read the file as an array buffer and data url.
|
|
28
|
-
const arrayBuffer = await this._fileLoader.asArrayBuffer(file);
|
|
29
|
-
const dataUrl = await this._fileLoader.asDataUrl(file);
|
|
30
|
-
// Create an image element.
|
|
31
|
-
const imageElement = await this.createImageElement(dataUrl);
|
|
32
|
-
// Get the orientation by using the buffer.
|
|
33
|
-
const orientation = this.getOrientation(arrayBuffer);
|
|
34
|
-
// Transform the image to remove the orientation.
|
|
35
|
-
const canvasType = this.getSupportedCanvasType(file.type);
|
|
36
|
-
const imageUrl = this.transformImage(imageElement, canvasType, orientation, quality);
|
|
37
|
-
// Validate the image url exists.
|
|
38
|
-
if (!imageUrl) {
|
|
39
|
-
return file;
|
|
40
|
-
}
|
|
41
|
-
// Transform the image url to a file.
|
|
42
|
-
return this._fileLoader.fromDataUrl(imageUrl, file.name);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// When something goes wrong we
|
|
46
|
-
// just return the default file.
|
|
47
|
-
return file;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async createImageElement(dataUrl) {
|
|
51
|
-
return new Promise((resolve, reject) => {
|
|
52
|
-
const image = new Image();
|
|
53
|
-
image.src = dataUrl;
|
|
54
|
-
image.onerror = () => reject('Error image create');
|
|
55
|
-
image.onabort = () => reject('Abort image create');
|
|
56
|
-
image.onload = () => resolve(image);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
transformImage = (image, type, orientation, quality = 100) => {
|
|
60
|
-
// Create the canvas and context.
|
|
61
|
-
const canvas = document.createElement('canvas');
|
|
62
|
-
const context = canvas.getContext('2d');
|
|
63
|
-
// Validate the context exists.
|
|
64
|
-
if (!context) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
// Set the canvas size based on the image.
|
|
68
|
-
const { width, height } = image;
|
|
69
|
-
canvas.width = width;
|
|
70
|
-
canvas.height = height;
|
|
71
|
-
// Validate the orientation is correct
|
|
72
|
-
// else flip the canvas sizes.
|
|
73
|
-
if (4 < orientation && orientation < 9) {
|
|
74
|
-
canvas.width = height;
|
|
75
|
-
canvas.height = width;
|
|
76
|
-
}
|
|
77
|
-
// Transform the context based on the orientation.
|
|
78
|
-
switch (orientation) {
|
|
79
|
-
case 2:
|
|
80
|
-
context.transform(-1, 0, 0, 1, width, 0);
|
|
81
|
-
break;
|
|
82
|
-
case 3:
|
|
83
|
-
context.transform(-1, 0, 0, -1, width, height);
|
|
84
|
-
break;
|
|
85
|
-
case 4:
|
|
86
|
-
context.transform(1, 0, 0, -1, 0, height);
|
|
87
|
-
break;
|
|
88
|
-
case 5:
|
|
89
|
-
context.transform(0, 1, 1, 0, 0, 0);
|
|
90
|
-
break;
|
|
91
|
-
case 6:
|
|
92
|
-
context.transform(0, 1, -1, 0, height, 0);
|
|
93
|
-
break;
|
|
94
|
-
case 7:
|
|
95
|
-
context.transform(0, -1, -1, 0, height, width);
|
|
96
|
-
break;
|
|
97
|
-
case 8:
|
|
98
|
-
context.transform(0, -1, 1, 0, 0, width);
|
|
99
|
-
break;
|
|
100
|
-
default:
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
// Draw the image on the context and return the data URL.
|
|
104
|
-
context.drawImage(image, 0, 0, width, height);
|
|
105
|
-
return canvas.toDataURL(type, quality / 100);
|
|
106
|
-
};
|
|
107
|
-
getSupportedCanvasType = (fileType) => {
|
|
108
|
-
switch (fileType) {
|
|
109
|
-
case 'image/jpeg':
|
|
110
|
-
case 'image/jpg':
|
|
111
|
-
return 'image/jpeg';
|
|
112
|
-
case 'image/x-windows-bmp':
|
|
113
|
-
case 'image/bmp':
|
|
114
|
-
return 'image/bmp';
|
|
115
|
-
default:
|
|
116
|
-
return 'image/png';
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
getOrientation = (buffer) => {
|
|
120
|
-
// Create a new data view.
|
|
121
|
-
const view = new DataView(buffer);
|
|
122
|
-
if (view.getUint16(0, false) !== 0xFFD8) {
|
|
123
|
-
return -2;
|
|
124
|
-
}
|
|
125
|
-
const length = view.byteLength;
|
|
126
|
-
let offset = 2;
|
|
127
|
-
while (offset < length) {
|
|
128
|
-
if (view.getUint16(offset + 2, false) <= 8) {
|
|
129
|
-
return -1;
|
|
130
|
-
}
|
|
131
|
-
const marker = view.getUint16(offset, false);
|
|
132
|
-
offset += 2;
|
|
133
|
-
if (marker === 0xFFE1) {
|
|
134
|
-
if (view.getUint32(offset += 2, false) !== 0x45786966) {
|
|
135
|
-
return -1;
|
|
136
|
-
}
|
|
137
|
-
const little = view.getUint16(offset += 6, false) === 0x4949;
|
|
138
|
-
offset += view.getUint32(offset + 4, little);
|
|
139
|
-
const tags = view.getUint16(offset, little);
|
|
140
|
-
offset += 2;
|
|
141
|
-
for (let index = 0; index < tags; index++) {
|
|
142
|
-
if (view.getUint16(offset + index * 12, little) === 0x0112) {
|
|
143
|
-
return view.getUint16(offset + index * 12 + 8, little);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
else if ((marker & 0xFF00) !== 0xFF00) {
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
offset += view.getUint16(offset, false);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return -1;
|
|
155
|
-
};
|
|
156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Exif, deps: [{ token: i1.Platform }, { token: i2.FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
157
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Exif, providedIn: 'root' });
|
|
158
|
-
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Exif, decorators: [{
|
|
160
|
-
type: Injectable,
|
|
161
|
-
args: [{
|
|
162
|
-
providedIn: 'root'
|
|
163
|
-
}]
|
|
164
|
-
}], ctorParameters: () => [{ type: i1.Platform }, { type: i2.FileLoader }] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zcmMvbGliL2NvcmUvc2VydmljZXMvZXhpZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFLekMsTUFBTSxPQUFPLElBQUk7SUFFTztJQUNBO0lBRHBCLFlBQW9CLFNBQW1CLEVBQ25CLFdBQXVCO1FBRHZCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBVSxFQUFFLFVBQWtCLEdBQUc7UUFDekMsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDRCxpREFBaUQ7WUFDakQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZELDJC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LENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUM7Z0JBQzdELE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRTdDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUVaLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO3dCQUN6RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzRCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU07WUFDVixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUMsQ0FBQzt3R0E1S08sSUFBSTs0R0FBSixJQUFJLGNBRkQsTUFBTTs7NEZBRVQsSUFBSTtrQkFIaEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbGVMb2FkZXJ9IGZyb20gJy4vZmlsZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFeGlmIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9maWxlTG9hZGVyOiBGaWxlTG9hZGVyKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RyaXAoZmlsZTogRmlsZSwgcXVhbGl0eTogbnVtYmVyID0gMTAwKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHdlIGFyZSBvbiBhIGJyb3dzZXIuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBmaWxlIGV4aXN0cyBhbmQgaXNcbiAgICAgICAgLy8gYW4gaW5zdGFuY2Ugb2YgYSBGaWxlIG9iamVjdC5cbiAgICAgICAgaWYgKCFmaWxlIHx8ICEoZmlsZSBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkganBlZyBpbWFnZXMgbmVlZCBjb3JyZWN0aW9uLlxuICAgICAgICBpZiAoIVsnaW1hZ2UvanBlZyddLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGZpbGUgYXMgYW4gYXJyYXkgYnVmZmVyIGFuZCBkYXRhIHVybC5cbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgdGhpcy5fZmlsZUxvYWRlci5hc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgICAgY29uc3QgZGF0YVVybCA9IGF3YWl0IHRoaXMuX2ZpbGVMb2FkZXIuYXNEYXRhVXJsKGZpbGUpO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGNvbnN0IGltYWdlRWxlbWVudCA9IGF3YWl0IHRoaXMuY3JlYXRlSW1hZ2VFbGVtZW50KGRhdGFVcmwpO1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG9yaWVudGF0aW9uIGJ5IHVzaW5nIHRoZSBidWZmZXIuXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvbiA9IHRoaXMuZ2V0T3JpZW50YXRpb24oYXJyYXlCdWZmZXIpO1xuXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGltYWdlIHRvIHJlbW92ZSB0aGUgb3JpZW50YXRpb24uXG4gICAgICAgICAgICBjb25zdCBjYW52YXNUeXBlID0gdGhpcy5nZXRTdXBwb3J0ZWRDYW52YXNUeXBlKGZpbGUudHlwZSk7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMudHJhbnNmb3JtSW1hZ2UoaW1hZ2VFbGVtZW50LCBjYW52YXNUeXBlLCBvcmllbnRhdGlvbiwgcXVhbGl0eSk7XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbWFnZSB1cmwgZXhpc3RzLlxuICAgICAgICAgICAgaWYgKCFpbWFnZVVybCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGltYWdlIHVybCB0byBhIGZpbGUuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUxvYWRlci5mcm9tRGF0YVVybChpbWFnZVVybCwgZmlsZS5uYW1lKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBXaGVuIHNvbWV0aGluZyBnb2VzIHdyb25nIHdlXG4gICAgICAgICAgICAvLyBqdXN0IHJldHVybiB0aGUgZGVmYXVsdCBmaWxlLlxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUltYWdlRWxlbWVudChkYXRhVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSBkYXRhVXJsO1xuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9ICgpID0+IHJlamVjdCgnRXJyb3IgaW1hZ2UgY3JlYXRlJyk7XG4gICAgICAgICAgICBpbWFnZS5vbmFib3J0ID0gKCkgPT4gcmVqZWN0KCdBYm9ydCBpbWFnZSBjcmVhdGUnKTtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybUltYWdlID0gKGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50LCB0eXBlOiBzdHJpbmcsIG9yaWVudGF0aW9uOiBudW1iZXIsIHF1YWxpdHk6IG51bWJlciA9IDEwMCkgPT4ge1xuICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbnZhcyBhbmQgY29udGV4dC5cbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgY29udGV4dCBleGlzdHMuXG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIGNhbnZhcyBzaXplIGJhc2VkIG9uIHRoZSBpbWFnZS5cbiAgICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gaW1hZ2U7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBvcmllbnRhdGlvbiBpcyBjb3JyZWN0XG4gICAgICAgIC8vIGVsc2UgZmxpcCB0aGUgY2FudmFzIHNpemVzLlxuICAgICAgICBpZiAoNCA8IG9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uIDwgOSkge1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaGVpZ2h0O1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBjb250ZXh0IGJhc2VkIG9uIHRoZSBvcmllbnRhdGlvbi5cbiAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNmb3JtKC0xLCAwLCAwLCAxLCB3aWR0aCwgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2Zvcm0oLTEsIDAsIDAsIC0xLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAxLCAxLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAxLCAtMSwgMCwgaGVpZ2h0LCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAtMSwgLTEsIDAsIGhlaWdodCwgd2lkdGgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNmb3JtKDAsIC0xLCAxLCAwLCAwLCB3aWR0aCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2Ugb24gdGhlIGNvbnRleHQgYW5kIHJldHVybiB0aGUgZGF0YSBVUkwuXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwodHlwZSwgcXVhbGl0eSAvIDEwMCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0U3VwcG9ydGVkQ2FudmFzVHlwZSA9IChmaWxlVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZmlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2pwZWcnOlxuICAgICAgICAgICAgY2FzZSAnaW1hZ2UvanBnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ltYWdlL2pwZWcnO1xuICAgICAgICAgICAgY2FzZSAnaW1hZ2UveC13aW5kb3dzLWJtcCc6XG4gICAgICAgICAgICBjYXNlICdpbWFnZS9ibXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UvYm1wJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZS9wbmcnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0T3JpZW50YXRpb24gPSAoYnVmZmVyOiBBcnJheUJ1ZmZlcikgPT4ge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGF0YSB2aWV3LlxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG5cbiAgICAgICAgaWYgKHZpZXcuZ2V0VWludDE2KDAsIGZhbHNlKSAhPT0gMHhGRkQ4KSB7XG4gICAgICAgICAgICByZXR1cm4gLTI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGggPSB2aWV3LmJ5dGVMZW5ndGg7XG4gICAgICAgIGxldCBvZmZzZXQgPSAyO1xuXG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh2aWV3LmdldFVpbnQxNihvZmZzZXQgKyAyLCBmYWxzZSkgPD0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFya2VyID0gdmlldy5nZXRVaW50MTYob2Zmc2V0LCBmYWxzZSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcblxuICAgICAgICAgICAgaWYgKG1hcmtlciA9PT0gMHhGRkUxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcuZ2V0VWludDMyKG9mZnNldCArPSAyLCBmYWxzZSkgIT09IDB4NDU3ODY5NjYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGxpdHRsZSA9IHZpZXcuZ2V0VWludDE2KG9mZnNldCArPSA2LCBmYWxzZSkgPT09IDB4NDk0OTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdmlldy5nZXRVaW50MzIob2Zmc2V0ICsgNCwgbGl0dGxlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB2aWV3LmdldFVpbnQxNihvZmZzZXQsIGxpdHRsZSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGFnczsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlldy5nZXRVaW50MTYob2Zmc2V0ICsgaW5kZXggKiAxMiwgbGl0dGxlKSA9PT0gMHgwMTEyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MTYob2Zmc2V0ICsgaW5kZXggKiAxMiArIDgsIGxpdHRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChtYXJrZXIgJiAweEZGMDApICE9PSAweEZGMDApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHZpZXcuZ2V0VWludDE2KG9mZnNldCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG5cbn1cbiJdfQ==
|