@dsivd/prestations-ng 17.10.9 → 18.0.0-beta.10
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/CHANGELOG.md +2478 -2466
- package/CONTRIBUTING.md +66 -66
- package/ESLINT_MIGRATION_GUIDE.md +19 -33
- package/MODULES.md +88 -88
- package/MULTI_ETAPES.md +9 -9
- package/README.md +25 -24
- package/README_COMMON.md +10 -10
- package/UPGRADING_V12.md +36 -36
- package/UPGRADING_V13.md +3 -3
- package/UPGRADING_V14.md +2 -2
- package/UPGRADING_V15.md +4 -4
- package/UPGRADING_V16.md +38 -38
- package/UPGRADING_V17.md +51 -51
- package/UPGRADING_V18.md +596 -8
- package/UPGRADING_V8.md +5 -5
- package/abstract-page-component.d.ts +1 -1
- package/dsivd-prestations-ng-18.0.0-beta.10.tgz +0 -0
- package/fesm2022/dsivd-prestations-ng.mjs +903 -868
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-checkables/foehn-checkable-group.component.d.ts +1 -1
- package/foehn-checkables/foehn-checkables.module.d.ts +6 -7
- package/foehn-date-picker/date-picker.helper.d.ts +1 -1
- package/foehn-icons/abstract-icon-component.d.ts +1 -1
- package/foehn-input/foehn-input-string.component.d.ts +1 -1
- package/foehn-input/foehn-input.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
- package/foehn-navigation/abstract-foehn-navigation.component.d.ts +1 -1
- package/foehn-table/foehn-table.component.d.ts +1 -6
- package/foehn-upload/abstract-foehn-uploader.component.d.ts +1 -2
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +1 -3
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +1 -1
- package/index.d.ts +1 -1
- package/index.html +1 -1
- package/package.json +15 -17
- package/prestations-ng-core.module.d.ts +5 -4
- package/sdk-appinfo/application-info.service.d.ts +1 -0
- package/sdk-drafts/drafts.module.d.ts +7 -8
- package/sdk-support-alert/support-alert.module.d.ts +2 -3
- package/dsivd-prestations-ng-17.10.9.tgz +0 -0
- package/esm2022/abstract-page-component.mjs +0 -232
- package/esm2022/directives/currency-formatter.directive.mjs +0 -143
- package/esm2022/directives/formatter.module.mjs +0 -37
- package/esm2022/directives/iban-formatter.directive.mjs +0 -29
- package/esm2022/directives/ide-formatter.directive.mjs +0 -37
- package/esm2022/directives/ndc-formatter.directive.mjs +0 -75
- package/esm2022/dsivd-prestations-ng.mjs +0 -5
- package/esm2022/foehn-address/address.type.mjs +0 -10
- package/esm2022/foehn-address/foehn-address.module.mjs +0 -55
- package/esm2022/foehn-address/foehn-display-address.component.mjs +0 -69
- package/esm2022/foehn-address/foehn-input-address.component.mjs +0 -498
- package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +0 -66
- package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +0 -56
- package/esm2022/foehn-agenda/calendar.type.mjs +0 -3
- package/esm2022/foehn-agenda/current-week.type.mjs +0 -4
- package/esm2022/foehn-agenda/day-slots.type.mjs +0 -3
- package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +0 -75
- package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +0 -242
- package/esm2022/foehn-agenda/foehn-agenda.component.mjs +0 -95
- package/esm2022/foehn-agenda/foehn-agenda.module.mjs +0 -62
- package/esm2022/foehn-agenda/pagination-week.type.mjs +0 -3
- package/esm2022/foehn-agenda/selected-slot.type.mjs +0 -3
- package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +0 -684
- package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +0 -40
- package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +0 -28
- package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +0 -40
- package/esm2022/foehn-boolean/foehn-boolean.module.mjs +0 -33
- package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +0 -177
- package/esm2022/foehn-breadcrumb/breadcrumb.mjs +0 -5
- package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +0 -106
- package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +0 -20
- package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +0 -291
- package/esm2022/foehn-checkables/foehn-checkables.module.mjs +0 -68
- package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +0 -37
- package/esm2022/foehn-checkables/foehn-radio.component.mjs +0 -64
- package/esm2022/foehn-checkables/foehn-select.component.mjs +0 -55
- package/esm2022/foehn-checkables/form-select-option-group.mjs +0 -3
- package/esm2022/foehn-checkables/form-select-option.mjs +0 -3
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal-content.mjs +0 -7
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +0 -40
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +0 -19
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +0 -53
- package/esm2022/foehn-date-picker/date-picker-navigation.helper.mjs +0 -168
- package/esm2022/foehn-date-picker/date-picker.helper.mjs +0 -132
- package/esm2022/foehn-date-picker/day-month.type.mjs +0 -3
- package/esm2022/foehn-date-picker/focused-day.type.mjs +0 -3
- package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +0 -392
- package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +0 -40
- package/esm2022/foehn-date-picker/month-year.type.mjs +0 -3
- package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +0 -97
- package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +0 -36
- package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +0 -84
- package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +0 -20
- package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +0 -37
- package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +0 -32
- package/esm2022/foehn-dropdown-menu/dropdown-menu-group.type.mjs +0 -3
- package/esm2022/foehn-dropdown-menu/dropdown-menu-item.type.mjs +0 -6
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +0 -212
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +0 -21
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +0 -113
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +0 -32
- package/esm2022/foehn-feedback-notification/foehn-feedback-notification.type.mjs +0 -3
- package/esm2022/foehn-footer/foehn-footer.component.mjs +0 -130
- package/esm2022/foehn-footer/foehn-footer.module.mjs +0 -19
- package/esm2022/foehn-footer/footer-link.type.mjs +0 -3
- package/esm2022/foehn-form/foehn-form.component.mjs +0 -136
- package/esm2022/foehn-form/foehn-form.module.mjs +0 -32
- package/esm2022/foehn-form/register-ng-model.service.mjs +0 -23
- package/esm2022/foehn-growl/foehn-growl.component.mjs +0 -45
- package/esm2022/foehn-growl/foehn-growl.module.mjs +0 -18
- package/esm2022/foehn-growl/growl-broker.service.mjs +0 -37
- package/esm2022/foehn-growl/growl-message.mjs +0 -9
- package/esm2022/foehn-growl/growl-types.mjs +0 -7
- package/esm2022/foehn-header/foehn-header.component.mjs +0 -159
- package/esm2022/foehn-header/foehn-header.module.mjs +0 -40
- package/esm2022/foehn-header/foehn-skip-link.component.mjs +0 -51
- package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +0 -44
- package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +0 -20
- package/esm2022/foehn-help-modal/foehn-help-modal.type.mjs +0 -2
- package/esm2022/foehn-icons/abstract-icon-component.mjs +0 -12
- package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-check.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-search.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-times.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icon-user.component.mjs +0 -19
- package/esm2022/foehn-icons/foehn-icons.module.mjs +0 -139
- package/esm2022/foehn-input/foehn-input-email.component.mjs +0 -74
- package/esm2022/foehn-input/foehn-input-hidden.component.mjs +0 -54
- package/esm2022/foehn-input/foehn-input-number.component.mjs +0 -319
- package/esm2022/foehn-input/foehn-input-password.component.mjs +0 -51
- package/esm2022/foehn-input/foehn-input-phone.component.mjs +0 -99
- package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +0 -116
- package/esm2022/foehn-input/foehn-input-string.component.mjs +0 -27
- package/esm2022/foehn-input/foehn-input-text.component.mjs +0 -69
- package/esm2022/foehn-input/foehn-input-textarea.component.mjs +0 -97
- package/esm2022/foehn-input/foehn-input.component.mjs +0 -418
- package/esm2022/foehn-input/foehn-input.module.mjs +0 -98
- package/esm2022/foehn-input/pattern.const.mjs +0 -16
- package/esm2022/foehn-input-date/foehn-input-date.component.mjs +0 -163
- package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +0 -201
- package/esm2022/foehn-input-time/foehn-input-time.component.mjs +0 -89
- package/esm2022/foehn-list/foehn-list.component.mjs +0 -127
- package/esm2022/foehn-list/foehn-list.module.mjs +0 -19
- package/esm2022/foehn-list/page-change-event.mjs +0 -3
- package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +0 -122
- package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +0 -31
- package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +0 -87
- package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +0 -25
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs +0 -2
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs +0 -3
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +0 -161
- package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +0 -38
- package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +0 -58
- package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +0 -67
- package/esm2022/foehn-misc/foehn-abbr.component.mjs +0 -15
- package/esm2022/foehn-misc/foehn-misc.module.mjs +0 -17
- package/esm2022/foehn-modal/foehn-modal.component.mjs +0 -94
- package/esm2022/foehn-modal/foehn-modal.module.mjs +0 -21
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +0 -287
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +0 -40
- package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +0 -114
- package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +0 -32
- package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +0 -55
- package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +0 -67
- package/esm2022/foehn-navigation/foehn-navigation.module.mjs +0 -37
- package/esm2022/foehn-navigation/foehn-navigation.service.mjs +0 -322
- package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +0 -26
- package/esm2022/foehn-notfound/foehn-notfound.component.mjs +0 -61
- package/esm2022/foehn-notfound/foehn-notfound.module.mjs +0 -20
- package/esm2022/foehn-page/foehn-page-counter.component.mjs +0 -31
- package/esm2022/foehn-page/foehn-page-expiration-timer/current-session-expiration.mjs +0 -3
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +0 -68
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +0 -53
- package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +0 -175
- package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +0 -29
- package/esm2022/foehn-page/foehn-page-modal.component.mjs +0 -54
- package/esm2022/foehn-page/foehn-page-modal.service.mjs +0 -38
- package/esm2022/foehn-page/foehn-page.component.mjs +0 -223
- package/esm2022/foehn-page/foehn-page.module.mjs +0 -101
- package/esm2022/foehn-page/foehn-page.service.mjs +0 -54
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +0 -52
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +0 -23
- package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +0 -32
- package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +0 -98
- package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +0 -20
- package/esm2022/foehn-recap-section/foehn-recap-section.type.mjs +0 -2
- package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +0 -50
- package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +0 -18
- package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +0 -56
- package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +0 -20
- package/esm2022/foehn-table/foehn-table-column-configuration.mjs +0 -3
- package/esm2022/foehn-table/foehn-table-page-change-event.mjs +0 -3
- package/esm2022/foehn-table/foehn-table.component.mjs +0 -190
- package/esm2022/foehn-table/foehn-table.module.mjs +0 -40
- package/esm2022/foehn-table/row-element.type.mjs +0 -3
- package/esm2022/foehn-table/tableSort.mjs +0 -3
- package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +0 -242
- package/esm2022/foehn-upload/document-reference.mjs +0 -6
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +0 -116
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs +0 -6
- package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +0 -199
- package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +0 -40
- package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +0 -250
- package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +0 -40
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +0 -125
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.type.mjs +0 -6
- package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +0 -163
- package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +0 -178
- package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +0 -44
- package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +0 -83
- package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +0 -21
- package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +0 -66
- package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +0 -7
- package/esm2022/foehn-upload/page-upload-limit.service.mjs +0 -80
- package/esm2022/foehn-upload/pending-upload.type.mjs +0 -3
- package/esm2022/foehn-upload/uploader.helper.mjs +0 -329
- package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +0 -21
- package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +0 -19
- package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +0 -96
- package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +0 -19
- package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +0 -29
- package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +0 -18
- package/esm2022/form-error.mjs +0 -2
- package/esm2022/form-post-response.mjs +0 -10
- package/esm2022/gesdem/gesdem-error-handler.service.mjs +0 -85
- package/esm2022/gesdem/gesdem-event.service.mjs +0 -38
- package/esm2022/gesdem/gesdem-handler.service.mjs +0 -201
- package/esm2022/gesdem/gesdem-loader.guard.mjs +0 -25
- package/esm2022/gesdem/gesdem-statut-utils.mjs +0 -25
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +0 -170
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +0 -227
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +0 -62
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +0 -97
- package/esm2022/gesdem-action-recovery/reprise-info.mjs +0 -4
- package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +0 -241
- package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +0 -36
- package/esm2022/gesdem-error/gesdem-error.component.mjs +0 -96
- package/esm2022/gesdem-error/gesdem-error.module.mjs +0 -36
- package/esm2022/global.const.mjs +0 -5
- package/esm2022/helpers/demande.helper.mjs +0 -19
- package/esm2022/helpers/object.helper.mjs +0 -124
- package/esm2022/i18n-form.mjs +0 -7
- package/esm2022/pipes/currency.pipe.mjs +0 -18
- package/esm2022/pipes/date.pipe.mjs +0 -43
- package/esm2022/pipes/formatIde.pipe.mjs +0 -22
- package/esm2022/pipes/pipes.module.mjs +0 -18
- package/esm2022/prestations-ng-core.module.mjs +0 -31
- package/esm2022/public_api.mjs +0 -288
- package/esm2022/refinf/model/address-type-light.mjs +0 -3
- package/esm2022/refinf/model/canton.mjs +0 -3
- package/esm2022/refinf/model/district.mjs +0 -3
- package/esm2022/refinf/model/municipality.mjs +0 -3
- package/esm2022/refinf/model/place-of-origin.mjs +0 -3
- package/esm2022/refinf/model/postal-locality.mjs +0 -3
- package/esm2022/sdk-appinfo/application-info.mjs +0 -22
- package/esm2022/sdk-appinfo/application-info.service.mjs +0 -146
- package/esm2022/sdk-currency/currency.helper.mjs +0 -34
- package/esm2022/sdk-date/date.helper.mjs +0 -109
- package/esm2022/sdk-dictionary/default-dictionary.mjs +0 -312
- package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +0 -16
- package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +0 -28
- package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +0 -122
- package/esm2022/sdk-drafts/draft.model.mjs +0 -2
- package/esm2022/sdk-drafts/drafts-container.component.mjs +0 -99
- package/esm2022/sdk-drafts/drafts.module.mjs +0 -47
- package/esm2022/sdk-drafts/drafts.service.mjs +0 -51
- package/esm2022/sdk-epayment/model/EPaymentParameters.mjs +0 -2
- package/esm2022/sdk-epayment/pending-payment/pending-payment.component.mjs +0 -24
- package/esm2022/sdk-epayment/sdk-epayment.component.mjs +0 -76
- package/esm2022/sdk-epayment/sdk-epayment.module.mjs +0 -23
- package/esm2022/sdk-epayment/sdk-epayment.service.mjs +0 -51
- package/esm2022/sdk-events-logger/sdk-event-type.mjs +0 -14
- package/esm2022/sdk-events-logger/sdk-event.mjs +0 -3
- package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +0 -43
- package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +0 -113
- package/esm2022/sdk-recaptcha/recaptcha.service.mjs +0 -180
- package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +0 -75
- package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +0 -19
- package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +0 -62
- package/esm2022/sdk-redirect/redirect.component.mjs +0 -55
- package/esm2022/sdk-redirect/sdk-redirect.module.mjs +0 -19
- package/esm2022/sdk-session-info/session-info-data.mjs +0 -6
- package/esm2022/sdk-session-info/session-info-with-application.service.mjs +0 -68
- package/esm2022/sdk-session-info/session-info.service.mjs +0 -50
- package/esm2022/sdk-statistics/sdk-statistics.service.mjs +0 -74
- package/esm2022/sdk-support-alert/support-alert-container.component.mjs +0 -49
- package/esm2022/sdk-support-alert/support-alert.component.mjs +0 -32
- package/esm2022/sdk-support-alert/support-alert.model.mjs +0 -7
- package/esm2022/sdk-support-alert/support-alert.module.mjs +0 -21
- package/esm2022/sdk-support-alert/support-alert.service.mjs +0 -139
- package/esm2022/service-locator.mjs +0 -4
- package/esm2022/supported-browser.mjs +0 -2
- package/esm2022/validation/validation-handler.service.mjs +0 -44
- /package/{public_api.d.ts → public-api.d.ts} +0 -0
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import { DocumentReferenceWithFile } from './document-reference';
|
|
2
|
-
// illegal characters that cannot be overriden
|
|
3
|
-
const PERMANENT_ILLEGAL_CHARACTERS = [','];
|
|
4
|
-
const getSafeFileNameForErrorMessage = (fileName) => encodeURIComponent(fileName).replace(/%[0-9A-F]{2}(?:%[0-9A-F]{2})*/g, (match) => {
|
|
5
|
-
// Décoder la séquence complète (peut inclure plusieurs octets)
|
|
6
|
-
const decoded = decodeURIComponent(match);
|
|
7
|
-
// Vérifier si le caractère décodé est un caractère accentué, un espace ou une virgule
|
|
8
|
-
return /[àáâãäåçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝŸ ,/]/.test(decoded)
|
|
9
|
-
? decoded
|
|
10
|
-
: match;
|
|
11
|
-
});
|
|
12
|
-
export class UploaderHelper {
|
|
13
|
-
constructor(dictionaryService, applicationInfoService) {
|
|
14
|
-
this.dictionaryService = dictionaryService;
|
|
15
|
-
this.applicationInfoService = applicationInfoService;
|
|
16
|
-
this._accept = '.pdf';
|
|
17
|
-
this._maxFileNameLength = 64;
|
|
18
|
-
this._illegalCharacters = '/,\\,?,%,*,:,|,",<,>,°';
|
|
19
|
-
this._fileMinSizeInBytes = 20;
|
|
20
|
-
this.CHAR_TO_REPLACE = new RegExp('[^a-zA-Z0-9]', 'g');
|
|
21
|
-
this.applicationInfoService.data.subscribe((appInfo) => {
|
|
22
|
-
if (appInfo.configuration.document) {
|
|
23
|
-
this.accept = appInfo.configuration.document.fileExtensions;
|
|
24
|
-
this.maxFileNameLength = Number(appInfo.configuration.document.maxFileNameLength);
|
|
25
|
-
this._fileMaxSizeInBytesByFormKey =
|
|
26
|
-
appInfo.configuration.document.fileMaxSizeInBytesByFormKey;
|
|
27
|
-
this.illegalCharacters =
|
|
28
|
-
appInfo.configuration.document.illegalCharacters;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
get fileMinSizeInBytes() {
|
|
33
|
-
return this._fileMinSizeInBytes;
|
|
34
|
-
}
|
|
35
|
-
set fileMinSizeInBytes(value) {
|
|
36
|
-
this._fileMinSizeInBytes = value;
|
|
37
|
-
}
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
39
|
-
get illegalCharacters() {
|
|
40
|
-
return this._illegalCharacters;
|
|
41
|
-
}
|
|
42
|
-
set illegalCharacters(value) {
|
|
43
|
-
this._illegalCharacters = value;
|
|
44
|
-
}
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
46
|
-
get maxFileNameLength() {
|
|
47
|
-
return this._maxFileNameLength;
|
|
48
|
-
}
|
|
49
|
-
set maxFileNameLength(value) {
|
|
50
|
-
this._maxFileNameLength = value;
|
|
51
|
-
}
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
53
|
-
get accept() {
|
|
54
|
-
return this._accept;
|
|
55
|
-
}
|
|
56
|
-
set accept(value) {
|
|
57
|
-
this._accept = value;
|
|
58
|
-
}
|
|
59
|
-
getMaxFileSizeInBytesForFormKey(formKey) {
|
|
60
|
-
const byFormKey = this._fileMaxSizeInBytesByFormKey[formKey];
|
|
61
|
-
if (!isNaN(byFormKey)) {
|
|
62
|
-
return byFormKey;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const keyAsRegex = Object.keys(this._fileMaxSizeInBytesByFormKey).find(canBeARegex => formKey.match(canBeARegex));
|
|
66
|
-
return this._fileMaxSizeInBytesByFormKey[keyAsRegex];
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
isFileTooBig(formKey, fileSizeInBytes) {
|
|
70
|
-
return this.isTooBig(fileSizeInBytes, this.getMaxFileSizeInBytesForFormKey(formKey));
|
|
71
|
-
}
|
|
72
|
-
isFileTooSmall(fileSizeInBytes) {
|
|
73
|
-
if (!this.fileMinSizeInBytes) {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
return fileSizeInBytes < this.fileMinSizeInBytes;
|
|
77
|
-
}
|
|
78
|
-
isFileNameLengthValid(filename, overrideMaxFileNameLength) {
|
|
79
|
-
const maxFileLenght = overrideMaxFileNameLength || this.maxFileNameLength;
|
|
80
|
-
return filename.length <= maxFileLenght;
|
|
81
|
-
}
|
|
82
|
-
isFileNameNameValid(filename, overrideIllegalCharacters) {
|
|
83
|
-
const illegalCharacters = !!overrideIllegalCharacters
|
|
84
|
-
? overrideIllegalCharacters.split(',')
|
|
85
|
-
: this.illegalCharacters.split(',');
|
|
86
|
-
PERMANENT_ILLEGAL_CHARACTERS.forEach(c => illegalCharacters.push(c));
|
|
87
|
-
let isValid = true;
|
|
88
|
-
for (const illegalCharacter of illegalCharacters) {
|
|
89
|
-
if (filename.includes(illegalCharacter)) {
|
|
90
|
-
isValid = false;
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return isValid;
|
|
95
|
-
}
|
|
96
|
-
getFileExtension(filename) {
|
|
97
|
-
return `.${filename.split('.').pop()}`;
|
|
98
|
-
}
|
|
99
|
-
isFileExtensionValid(fileExtension, overrideAcceptedExtensions) {
|
|
100
|
-
const acceptedExtensions = overrideAcceptedExtensions || this.accept;
|
|
101
|
-
return (!!fileExtension &&
|
|
102
|
-
acceptedExtensions
|
|
103
|
-
.toUpperCase()
|
|
104
|
-
.split(',')
|
|
105
|
-
.includes(fileExtension.toUpperCase()));
|
|
106
|
-
}
|
|
107
|
-
getUniqueErrorByCode(name, errorCode, fileName, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
|
|
108
|
-
const uniqSuffix = new Date().getTime();
|
|
109
|
-
return {
|
|
110
|
-
name,
|
|
111
|
-
code: `${errorCode}_${uniqSuffix}`,
|
|
112
|
-
message: this.replaceErrorMessageKeys(name, customErrors[errorCode], fileName, errorCode, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters)
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
addCustomErrorOrDefault(name, destinationErrors, errorCode, fileName, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
|
|
116
|
-
// Check if we have a custom error to manage
|
|
117
|
-
if (customErrors[errorCode]) {
|
|
118
|
-
// Need to create unique error to ensure ability to display multiple error messages
|
|
119
|
-
destinationErrors.push(this.getUniqueErrorByCode(name, errorCode, fileName, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
destinationErrors.push({
|
|
123
|
-
name,
|
|
124
|
-
code: errorCode,
|
|
125
|
-
message: this.getDefaultUnknownErrorMessage(fileName)
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
createDefaultCustomErrors(customErrors) {
|
|
130
|
-
customErrors.IMAGE_NOT_READABLE = this.dictionaryService.getKeySync('errors.IMAGE_NOT_READABLE');
|
|
131
|
-
customErrors.FILENAME_TOO_LONG = this.dictionaryService.getKeySync('errors.FILENAME_TOO_LONG');
|
|
132
|
-
customErrors.FILE_TOO_SMALL = this.dictionaryService.getKeySync('errors.FILE_TOO_SMALL');
|
|
133
|
-
customErrors.PDF_PASSWORD_LOCKED = this.dictionaryService.getKeySync('errors.PDF_PASSWORD_LOCKED');
|
|
134
|
-
customErrors.PDF_CONTAINS_SCRIPT = this.dictionaryService.getKeySync('errors.PDF_CONTAINS_SCRIPT');
|
|
135
|
-
customErrors.PDF_HAS_ATTACHMENTS = this.dictionaryService.getKeySync('errors.PDF_HAS_ATTACHMENTS');
|
|
136
|
-
customErrors.EMPTY_PDF =
|
|
137
|
-
this.dictionaryService.getKeySync('errors.EMPTY_PDF');
|
|
138
|
-
customErrors.PDF_GENERAL_PROBLEM = this.dictionaryService.getKeySync('errors.PDF_GENERAL_PROBLEM');
|
|
139
|
-
customErrors.PDF_HAS_RESTRICTIONS = this.dictionaryService.getKeySync('errors.PDF_HAS_RESTRICTIONS');
|
|
140
|
-
customErrors.FILENAME_SHOULD_NOT_CONTAIN =
|
|
141
|
-
this.dictionaryService.getKeySync('errors.FILENAME_SHOULD_NOT_CONTAIN');
|
|
142
|
-
customErrors['406'] = this.dictionaryService.getKeySync('errors.406');
|
|
143
|
-
customErrors['413'] = this.dictionaryService.getKeySync('errors.413');
|
|
144
|
-
customErrors['415'] = this.dictionaryService.getKeySync('errors.415');
|
|
145
|
-
customErrors['422'] = this.dictionaryService.getKeySync('errors.422');
|
|
146
|
-
customErrors['500'] = this.dictionaryService.getKeySync('errors.500');
|
|
147
|
-
// MultiPartException from Zuul returns HTTP 0
|
|
148
|
-
customErrors['0'] = customErrors['413'];
|
|
149
|
-
}
|
|
150
|
-
getLocalErrors(name, files, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
|
|
151
|
-
const errors = [];
|
|
152
|
-
files.forEach(file => {
|
|
153
|
-
// File bad extension
|
|
154
|
-
const fileExtension = this.getFileExtension(file.name);
|
|
155
|
-
if (!this.isFileExtensionValid(fileExtension, overrideAcceptedExtensions)) {
|
|
156
|
-
// Default custom error 415 exist (see function 'createDefaultCustomErrors')
|
|
157
|
-
// Need to create unique error to ensure ability to display multiple error messages
|
|
158
|
-
errors.push(this.getUniqueErrorByCode(name, '415', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
|
|
159
|
-
}
|
|
160
|
-
// File name contains illegal characters
|
|
161
|
-
if (!this.isFileNameNameValid(file.name, overrideIllegalCharacters)) {
|
|
162
|
-
// Default custom error FILENAME_SHOULD_NOT_CONTAIN exist (see function 'createDefaultCustomErrors')
|
|
163
|
-
// Need to create unique error to ensure ability to display multiple error messages
|
|
164
|
-
errors.push(this.getUniqueErrorByCode(name, 'FILENAME_SHOULD_NOT_CONTAIN', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
|
|
165
|
-
}
|
|
166
|
-
// Files too big
|
|
167
|
-
if (this.isFileTooBig(name, file.size)) {
|
|
168
|
-
// Default custom error 413 exist (see function 'createDefaultCustomErrors')
|
|
169
|
-
// Need to create unique error to ensure ability to display multiple error messages
|
|
170
|
-
errors.push(this.getUniqueErrorByCode(name, '413', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
|
|
171
|
-
}
|
|
172
|
-
if (this.isFileTooSmall(file.size)) {
|
|
173
|
-
// Default custom error FILE_TOO_SMALL exist (see function 'createDefaultCustomErrors')
|
|
174
|
-
// Need to create unique error to ensure ability to display multiple error messages
|
|
175
|
-
errors.push(this.getUniqueErrorByCode(name, 'FILE_TOO_SMALL', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
|
|
176
|
-
}
|
|
177
|
-
// File name too long (64 chars max)
|
|
178
|
-
if (!this.isFileNameLengthValid(file.name, overrideMaxFileNameLength)) {
|
|
179
|
-
// Default custom error FILENAME_TOO_LONG exist (see function 'createDefaultCustomErrors')
|
|
180
|
-
// Need to create unique error to ensure ability to display multiple error messages
|
|
181
|
-
errors.push(this.getUniqueErrorByCode(name, 'FILENAME_TOO_LONG', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
return errors;
|
|
185
|
-
}
|
|
186
|
-
hasLiveUploadErrors(errors) {
|
|
187
|
-
return (!!errors &&
|
|
188
|
-
!!errors.find(e => e.code.startsWith('413') ||
|
|
189
|
-
e.code.startsWith('415') ||
|
|
190
|
-
e.code.startsWith('PDF_PASSWORD_LOCKED') ||
|
|
191
|
-
e.code.startsWith('PDF_CONTAINS_SCRIPT') ||
|
|
192
|
-
e.code.startsWith('PDF_HAS_ATTACHMENTS') ||
|
|
193
|
-
e.code.startsWith('EMPTY_PDF') ||
|
|
194
|
-
e.code.startsWith('PDF_GENERAL_PROBLEM') ||
|
|
195
|
-
e.code.startsWith('PDF_HAS_RESTRICTIONS') ||
|
|
196
|
-
e.code.startsWith('FILENAME_TOO_LONG') ||
|
|
197
|
-
e.code.startsWith('FILE_TOO_SMALL') ||
|
|
198
|
-
e.code.startsWith('FILENAME_SHOULD_NOT_CONTAIN')));
|
|
199
|
-
}
|
|
200
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
201
|
-
preventAndStop(event) {
|
|
202
|
-
event.preventDefault();
|
|
203
|
-
event.stopPropagation();
|
|
204
|
-
}
|
|
205
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
206
|
-
getAllFilesCount(data) {
|
|
207
|
-
if (!data) {
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
return `${data.length}`;
|
|
211
|
-
}
|
|
212
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
213
|
-
getAllFilesSizeInMo(data) {
|
|
214
|
-
if (!data) {
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
const fileSizeInBytes = data.reduce(
|
|
218
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
219
|
-
(totalDocSize, document) => {
|
|
220
|
-
if (document.hasOwnProperty('fileSize')) {
|
|
221
|
-
return totalDocSize + document.fileSize;
|
|
222
|
-
}
|
|
223
|
-
return totalDocSize + document.size;
|
|
224
|
-
}, 0);
|
|
225
|
-
return this.toMegaOctets(fileSizeInBytes);
|
|
226
|
-
}
|
|
227
|
-
toMegaOctets(size) {
|
|
228
|
-
return `${(size / (1024 * 1024)).toFixed(2)}`;
|
|
229
|
-
}
|
|
230
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
231
|
-
getTransfer(event) {
|
|
232
|
-
if (!!event.dataTransfer) {
|
|
233
|
-
return event.dataTransfer.files;
|
|
234
|
-
}
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
238
|
-
getGlobalInfos(data) {
|
|
239
|
-
return `${this.getAllFilesCount(data)} fichiers pour un total de ${this.getAllFilesSizeInMo(data)} <abbr title="Megaoctet">Mo</abbr>`;
|
|
240
|
-
}
|
|
241
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
242
|
-
showGlobalInfos(data, hideGlobalInfos) {
|
|
243
|
-
return !hideGlobalInfos && !!data && !!data.length && data.length > 1;
|
|
244
|
-
}
|
|
245
|
-
mapToDocumentReference(file, label, key, isMultiple, uniqPrefix, globalSequence) {
|
|
246
|
-
const document = new DocumentReferenceWithFile();
|
|
247
|
-
if (isMultiple) {
|
|
248
|
-
// Override key to ensures that GesDem can accept the document key (length of 64 char. max.)
|
|
249
|
-
key = `doc${uniqPrefix}${globalSequence}`;
|
|
250
|
-
document.key = this.normalizeKey(key);
|
|
251
|
-
}
|
|
252
|
-
document.key = key;
|
|
253
|
-
document.filename = file.name;
|
|
254
|
-
document.mimeType = file.type;
|
|
255
|
-
document.fileSize = file.size;
|
|
256
|
-
document.label = label;
|
|
257
|
-
document.file = file;
|
|
258
|
-
return document;
|
|
259
|
-
}
|
|
260
|
-
mapToFormData(documents, formKey, language) {
|
|
261
|
-
const formData = new FormData();
|
|
262
|
-
documents.forEach(({ file, key, label }) => {
|
|
263
|
-
formData.append('keys', key);
|
|
264
|
-
formData.append('labels', this.removeCommasInLabel(label));
|
|
265
|
-
formData.append('files', file, file.name);
|
|
266
|
-
});
|
|
267
|
-
formData.append('formKey', formKey);
|
|
268
|
-
formData.append('language', language);
|
|
269
|
-
return formData;
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Commas are removed to avoid a wrong interpretation as an array of string in formData.
|
|
273
|
-
* @param label to be cleaned from comma
|
|
274
|
-
* @returns string
|
|
275
|
-
*/
|
|
276
|
-
removeCommasInLabel(label) {
|
|
277
|
-
return label.split(',').join('');
|
|
278
|
-
}
|
|
279
|
-
isTooBig(fileSizeInBytes, limitInBytes) {
|
|
280
|
-
return fileSizeInBytes > limitInBytes;
|
|
281
|
-
}
|
|
282
|
-
replaceErrorMessageKeys(name, errorMsg, fileName, errorCode, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
|
|
283
|
-
const safeFileName = getSafeFileNameForErrorMessage(fileName);
|
|
284
|
-
const formattedErrorMsg = errorMsg.replace('%1$s', safeFileName);
|
|
285
|
-
if (errorCode.startsWith('413')) {
|
|
286
|
-
// REQUEST_ENTITY_TOO_LARGE_ERROR_MSG
|
|
287
|
-
const fileMaxSize = (this.getMaxFileSizeInBytesForFormKey(name) /
|
|
288
|
-
(1024 * 1024)).toString();
|
|
289
|
-
return formattedErrorMsg.replace('%2$s', fileMaxSize);
|
|
290
|
-
}
|
|
291
|
-
if (errorCode.startsWith('415')) {
|
|
292
|
-
// UNSUPPORTED_MEDIA_TYPE_ERROR_MSG
|
|
293
|
-
const fileExtensions = (overrideAcceptedExtensions
|
|
294
|
-
? overrideAcceptedExtensions
|
|
295
|
-
: this.accept)
|
|
296
|
-
.toUpperCase()
|
|
297
|
-
.replace(/,/g, ' ou ');
|
|
298
|
-
return formattedErrorMsg.replace('%2$s', fileExtensions);
|
|
299
|
-
}
|
|
300
|
-
if (errorCode.startsWith('FILENAME_TOO_LONG')) {
|
|
301
|
-
const maxFileNameLength = (overrideMaxFileNameLength || this.maxFileNameLength).toString();
|
|
302
|
-
return formattedErrorMsg.replace('%2$s', maxFileNameLength);
|
|
303
|
-
}
|
|
304
|
-
if (errorCode.startsWith('FILE_TOO_SMALL')) {
|
|
305
|
-
return formattedErrorMsg.replace('%2$s', this.fileMinSizeInBytes.toString());
|
|
306
|
-
}
|
|
307
|
-
if (errorCode.startsWith('FILENAME_SHOULD_NOT_CONTAIN')) {
|
|
308
|
-
let fileNameIllegalCharacters = (overrideIllegalCharacters || this.illegalCharacters).replace(/,/g, '');
|
|
309
|
-
fileNameIllegalCharacters += PERMANENT_ILLEGAL_CHARACTERS.join('');
|
|
310
|
-
return formattedErrorMsg.replace('%2$s', fileNameIllegalCharacters);
|
|
311
|
-
}
|
|
312
|
-
return formattedErrorMsg;
|
|
313
|
-
}
|
|
314
|
-
getDefaultUnknownErrorMessage(fileName) {
|
|
315
|
-
const msg = 'Impossible de transmettre le fichier';
|
|
316
|
-
if (!!fileName && !!fileName.length) {
|
|
317
|
-
return `${msg} ${getSafeFileNameForErrorMessage(fileName)}.`;
|
|
318
|
-
}
|
|
319
|
-
return `${msg}.`;
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* @param key to be normalized
|
|
323
|
-
* @returns string
|
|
324
|
-
*/
|
|
325
|
-
normalizeKey(key) {
|
|
326
|
-
return key ? key.toLowerCase().replace(this.CHAR_TO_REPLACE, '') : null;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC91cGxvYWRlci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakUsOENBQThDO0FBQzlDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUzQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsUUFBZ0IsRUFBVSxFQUFFLENBQ2hFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FDaEMsZ0NBQWdDLEVBQ2hDLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDZCwrREFBK0Q7SUFDL0QsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsc0ZBQXNGO0lBQ3RGLE9BQU8sK0RBQStELENBQUMsSUFBSSxDQUN2RSxPQUFPLENBQ1Y7UUFDRyxDQUFDLENBQUMsT0FBTztRQUNULENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEIsQ0FBQyxDQUNKLENBQUM7QUFFTixNQUFNLE9BQU8sY0FBYztJQVN2QixZQUNZLGlCQUF1QyxFQUN2QyxzQkFBOEM7UUFEOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVmxELFlBQU8sR0FBRyxNQUFNLENBQUM7UUFFakIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLHdCQUF3QixDQUFDO1FBQzlDLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUVoQixvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQU0vRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FD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QUFFLENBQUMsQ0FBQztZQUVwQix5QkFBeUIsSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkUsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztJQUVPLDZCQUE2QixDQUFDLFFBQWdCO1FBQ2xELE1BQU0sR0FBRyxHQUFHLHNDQUFzQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE9BQU8sR0FBRyxHQUFHLElBQUksOEJBQThCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZLENBQUMsR0FBVztRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm8gfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGUgfSBmcm9tICcuL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5cbi8vIGlsbGVnYWwgY2hhcmFjdGVycyB0aGF0IGNhbm5vdCBiZSBvdmVycmlkZW5cbmNvbnN0IFBFUk1BTkVOVF9JTExFR0FMX0NIQVJBQ1RFUlMgPSBbJywnXTtcblxuY29uc3QgZ2V0U2FmZUZpbGVOYW1lRm9yRXJyb3JNZXNzYWdlID0gKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBlbmNvZGVVUklDb21wb25lbnQoZmlsZU5hbWUpLnJlcGxhY2UoXG4gICAgICAgIC8lWzAtOUEtRl17Mn0oPzolWzAtOUEtRl17Mn0pKi9nLFxuICAgICAgICAobWF0Y2g6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gRMOpY29kZXIgbGEgc8OpcXVlbmNlIGNvbXBsw6h0ZSAocGV1dCBpbmNsdXJlIHBsdXNpZXVycyBvY3RldHMpXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoKTtcbiAgICAgICAgICAgIC8vIFbDqXJpZmllciBzaSBsZSBjYXJhY3TDqHJlIGTDqWNvZMOpIGVzdCB1biBjYXJhY3TDqHJlIGFjY2VudHXDqSwgdW4gZXNwYWNlIG91IHVuZSB2aXJndWxlXG4gICAgICAgICAgICByZXR1cm4gL1vDoMOhw6LDo8Okw6XDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO5w7rDu8O8w73Dv8OAw4HDgsODw4TDhcOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5nDmsObw5zDncW4ICwvXS8udGVzdChcbiAgICAgICAgICAgICAgICBkZWNvZGVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPyBkZWNvZGVkXG4gICAgICAgICAgICAgICAgOiBtYXRjaDtcbiAgICAgICAgfVxuICAgICk7XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWRlckhlbHBlciB7XG4gICAgcHJpdmF0ZSBfYWNjZXB0ID0gJy5wZGYnO1xuICAgIHByaXZhdGUgX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcbiAgICBwcml2YXRlIF9tYXhGaWxlTmFtZUxlbmd0aCA9IDY0O1xuICAgIHByaXZhdGUgX2lsbGVnYWxDaGFyYWN0ZXJzID0gJy8sXFxcXCw/LCUsKiw6LHwsXCIsPCw+LMKwJztcbiAgICBwcml2YXRlIF9maWxlTWluU2l6ZUluQnl0ZXMgPSAyMDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgQ0hBUl9UT19SRVBMQUNFID0gbmV3IFJlZ0V4cCgnW15hLXpBLVowLTldJywgJ2cnKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5kYXRhLnN1YnNjcmliZShcbiAgICAgICAgICAgIChhcHBJbmZvOiBBcHBsaWNhdGlvbkluZm8pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0ID0gYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50LmZpbGVFeHRlbnNpb25zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heEZpbGVOYW1lTGVuZ3RoID0gTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50Lm1heEZpbGVOYW1lTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBJbmZvLmNvbmZpZ3VyYXRpb24uZG9jdW1lbnQuZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlsbGVnYWxDaGFyYWN0ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluZm8uY29uZmlndXJhdGlvbi5kb2N1bWVudC5pbGxlZ2FsQ2hhcmFjdGVycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVNaW5TaXplSW5CeXRlcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU1pblNpemVJbkJ5dGVzO1xuICAgIH1cblxuICAgIHNldCBmaWxlTWluU2l6ZUluQnl0ZXModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9maWxlTWluU2l6ZUluQnl0ZXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBpbGxlZ2FsQ2hhcmFjdGVycygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWxsZWdhbENoYXJhY3RlcnM7XG4gICAgfVxuXG4gICAgc2V0IGlsbGVnYWxDaGFyYWN0ZXJzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faWxsZWdhbENoYXJhY3RlcnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtYXhGaWxlTmFtZUxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RmlsZU5hbWVMZW5ndGg7XG4gICAgfVxuXG4gICAgc2V0IG1heEZpbGVOYW1lTGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4RmlsZU5hbWVMZW5ndGggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBhY2NlcHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjY2VwdDtcbiAgICB9XG5cbiAgICBzZXQgYWNjZXB0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWNjZXB0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShmb3JtS2V5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBieUZvcm1LZXkgPSB0aGlzLl9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXlbZm9ybUtleV07XG5cbiAgICAgICAgaWYgKCFpc05hTihieUZvcm1LZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnlGb3JtS2V5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qga2V5QXNSZWdleCA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleVxuICAgICAgICAgICAgKS5maW5kKGNhbkJlQVJlZ2V4ID0+IGZvcm1LZXkubWF0Y2goY2FuQmVBUmVnZXgpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleVtrZXlBc1JlZ2V4XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRmlsZVRvb0JpZyhmb3JtS2V5OiBzdHJpbmcsIGZpbGVTaXplSW5CeXRlczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9vQmlnKFxuICAgICAgICAgICAgZmlsZVNpemVJbkJ5dGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRNYXhGaWxlU2l6ZUluQnl0ZXNGb3JGb3JtS2V5KGZvcm1LZXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNGaWxlVG9vU21hbGwoZmlsZVNpemVJbkJ5dGVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVNaW5TaXplSW5CeXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlU2l6ZUluQnl0ZXMgPCB0aGlzLmZpbGVNaW5TaXplSW5CeXRlcztcbiAgICB9XG5cbiAgICBpc0ZpbGVOYW1lTGVuZ3RoVmFsaWQoXG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlclxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtYXhGaWxlTGVuZ2h0ID1cbiAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGggfHwgdGhpcy5tYXhGaWxlTmFtZUxlbmd0aDtcblxuICAgICAgICByZXR1cm4gZmlsZW5hbWUubGVuZ3RoIDw9IG1heEZpbGVMZW5naHQ7XG4gICAgfVxuXG4gICAgaXNGaWxlTmFtZU5hbWVWYWxpZChcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlsbGVnYWxDaGFyYWN0ZXJzID0gISFvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICA/IG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMuc3BsaXQoJywnKVxuICAgICAgICAgICAgOiB0aGlzLmlsbGVnYWxDaGFyYWN0ZXJzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgUEVSTUFORU5UX0lMTEVHQUxfQ0hBUkFDVEVSUy5mb3JFYWNoKGMgPT4gaWxsZWdhbENoYXJhY3RlcnMucHVzaChjKSk7XG5cbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGlsbGVnYWxDaGFyYWN0ZXIgb2YgaWxsZWdhbENoYXJhY3RlcnMpIHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS5pbmNsdWRlcyhpbGxlZ2FsQ2hhcmFjdGVyKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIGdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgLiR7ZmlsZW5hbWUuc3BsaXQoJy4nKS5wb3AoKX1gO1xuICAgIH1cblxuICAgIGlzRmlsZUV4dGVuc2lvblZhbGlkKFxuICAgICAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmdcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYWNjZXB0ZWRFeHRlbnNpb25zID0gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMgfHwgdGhpcy5hY2NlcHQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhZmlsZUV4dGVuc2lvbiAmJlxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnM6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aDogbnVtYmVyLFxuICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzOiBzdHJpbmdcbiAgICApOiBGb3JtRXJyb3Ige1xuICAgICAgICBjb25zdCB1bmlxU3VmZml4ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgY29kZTogYCR7ZXJyb3JDb2RlfV8ke3VuaXFTdWZmaXh9YCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucmVwbGFjZUVycm9yTWVzc2FnZUtleXMoXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnNbZXJyb3JDb2RlXSxcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYWRkQ3VzdG9tRXJyb3JPckRlZmF1bHQoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZGVzdGluYXRpb25FcnJvcnM6IEZvcm1FcnJvcltdLFxuICAgICAgICBlcnJvckNvZGU6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uczogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnM6IHN0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY3VzdG9tIGVycm9yIHRvIG1hbmFnZVxuICAgICAgICBpZiAoY3VzdG9tRXJyb3JzW2Vycm9yQ29kZV0pIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVzdGluYXRpb25FcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5nZXREZWZhdWx0VW5rbm93bkVycm9yTWVzc2FnZShmaWxlTmFtZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRGVmYXVsdEN1c3RvbUVycm9ycyhjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgY3VzdG9tRXJyb3JzLklNQUdFX05PVF9SRUFEQUJMRSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuSU1BR0VfTk9UX1JFQURBQkxFJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRklMRU5BTUVfVE9PX0xPTkcgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLkZJTEVOQU1FX1RPT19MT05HJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRklMRV9UT09fU01BTEwgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLkZJTEVfVE9PX1NNQUxMJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX1BBU1NXT1JEX0xPQ0tFRCA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX1BBU1NXT1JEX0xPQ0tFRCdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9DT05UQUlOU19TQ1JJUFQgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLlBERl9DT05UQUlOU19TQ1JJUFQnXG4gICAgICAgICk7XG4gICAgICAgIGN1c3RvbUVycm9ycy5QREZfSEFTX0FUVEFDSE1FTlRTID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfSEFTX0FUVEFDSE1FTlRTJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRU1QVFlfUERGID1cbiAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLkVNUFRZX1BERicpO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX0dFTkVSQUxfUFJPQkxFTSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX0dFTkVSQUxfUFJPQkxFTSdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9IQVNfUkVTVFJJQ1RJT05TID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfSEFTX1JFU1RSSUNUSU9OUydcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLkZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTiA9XG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2Vycm9ycy5GSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nXG4gICAgICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQwNiddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDA2Jyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNDEzJ10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy40MTMnKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzWyc0MTUnXSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLjQxNScpO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQyMiddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDIyJyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNTAwJ10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy41MDAnKTtcblxuICAgICAgICAvLyBNdWx0aVBhcnRFeGNlcHRpb24gZnJvbSBadXVsIHJldHVybnMgSFRUUCAwXG4gICAgICAgIGN1c3RvbUVycm9yc1snMCddID0gY3VzdG9tRXJyb3JzWyc0MTMnXTtcbiAgICB9XG5cbiAgICBnZXRMb2NhbEVycm9ycyhcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlczogRmlsZVtdLFxuICAgICAgICBjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogRm9ybUVycm9yW10ge1xuICAgICAgICBjb25zdCBlcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG5cbiAgICAgICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgICAgIC8vIEZpbGUgYmFkIGV4dGVuc2lvblxuICAgICAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF0aGlzLmlzRmlsZUV4dGVuc2lvblZhbGlkKFxuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIDQxNSBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICc0MTUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbGUgbmFtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVOYW1lTmFtZVZhbGlkKGZpbGUubmFtZSwgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVycylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTiBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdGSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbGVzIHRvbyBiaWdcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVRvb0JpZyhuYW1lLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBjdXN0b20gZXJyb3IgNDEzIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJzQxMycsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlVG9vU21hbGwoZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVfVE9PX1NNQUxMIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJTEVfVE9PX1NNQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaWxlIG5hbWUgdG9vIGxvbmcgKDY0IGNoYXJzIG1heClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVOYW1lTGVuZ3RoVmFsaWQoXG4gICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVOQU1FX1RPT19MT05HIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJTEVOQU1FX1RPT19MT05HJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgaGFzTGl2ZVVwbG9hZEVycm9ycyhlcnJvcnM6IEZvcm1FcnJvcltdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIWVycm9ycyAmJlxuICAgICAgICAgICAgISEoZXJyb3JzIGFzIEZvcm1FcnJvcltdKS5maW5kKFxuICAgICAgICAgICAgICAgIGUgPT5cbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJzQxMycpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCc0MTUnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX1BBU1NXT1JEX0xPQ0tFRCcpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCdQREZfQ09OVEFJTlNfU0NSSVBUJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9IQVNfQVRUQUNITUVOVFMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRU1QVFlfUERGJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9HRU5FUkFMX1BST0JMRU0nKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX0hBU19SRVNUUklDVElPTlMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfVE9PX0xPTkcnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRV9UT09fU01BTEwnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJylcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByZXZlbnRBbmRTdG9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXRBbGxGaWxlc0NvdW50KGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7ZGF0YS5sZW5ndGh9YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldEFsbEZpbGVzU2l6ZUluTW8oZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVTaXplSW5CeXRlcyA9IGRhdGEucmVkdWNlKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICh0b3RhbERvY1NpemU6IG51bWJlciwgZG9jdW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oYXNPd25Qcm9wZXJ0eSgnZmlsZVNpemUnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxEb2NTaXplICsgZG9jdW1lbnQuZmlsZVNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbERvY1NpemUgKyBkb2N1bWVudC5zaXplO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50b01lZ2FPY3RldHMoZmlsZVNpemVJbkJ5dGVzKTtcbiAgICB9XG5cbiAgICB0b01lZ2FPY3RldHMoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAkeyhzaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKX1gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0VHJhbnNmZXIoZXZlbnQ6IGFueSk6IEZpbGVMaXN0IHtcbiAgICAgICAgaWYgKCEhZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0R2xvYmFsSW5mb3MoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0QWxsRmlsZXNDb3VudChcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKX0gZmljaGllcnMgcG91ciB1biB0b3RhbCBkZSAke3RoaXMuZ2V0QWxsRmlsZXNTaXplSW5NbyhcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKX0gPGFiYnIgdGl0bGU9XCJNZWdhb2N0ZXRcIj5NbzwvYWJicj5gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc2hvd0dsb2JhbEluZm9zKGRhdGE6IGFueSwgaGlkZUdsb2JhbEluZm9zOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhaGlkZUdsb2JhbEluZm9zICYmICEhZGF0YSAmJiAhIWRhdGEubGVuZ3RoICYmIGRhdGEubGVuZ3RoID4gMTtcbiAgICB9XG5cbiAgICBtYXBUb0RvY3VtZW50UmVmZXJlbmNlKFxuICAgICAgICBmaWxlOiBGaWxlLFxuICAgICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgICBrZXk6IHN0cmluZyxcbiAgICAgICAgaXNNdWx0aXBsZTogYm9vbGVhbixcbiAgICAgICAgdW5pcVByZWZpeDogbnVtYmVyLFxuICAgICAgICBnbG9iYWxTZXF1ZW5jZTogbnVtYmVyXG4gICAgKTogRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGUoKTtcblxuICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgLy8gT3ZlcnJpZGUga2V5IHRvIGVuc3VyZXMgdGhhdCBHZXNEZW0gY2FuIGFjY2VwdCB0aGUgZG9jdW1lbnQga2V5IChsZW5ndGggb2YgNjQgY2hhci4gbWF4LilcbiAgICAgICAgICAgIGtleSA9IGBkb2Mke3VuaXFQcmVmaXh9JHtnbG9iYWxTZXF1ZW5jZX1gO1xuICAgICAgICAgICAgZG9jdW1lbnQua2V5ID0gdGhpcy5ub3JtYWxpemVLZXkoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmtleSA9IGtleTtcbiAgICAgICAgZG9jdW1lbnQuZmlsZW5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgIGRvY3VtZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgICBkb2N1bWVudC5maWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICAgICAgZG9jdW1lbnQubGFiZWwgPSBsYWJlbDtcbiAgICAgICAgZG9jdW1lbnQuZmlsZSA9IGZpbGU7XG5cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cblxuICAgIG1hcFRvRm9ybURhdGEoXG4gICAgICAgIGRvY3VtZW50czogRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZVtdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmdcbiAgICApOiBGb3JtRGF0YSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2goKHsgZmlsZSwga2V5LCBsYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleXMnLCBrZXkpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdsYWJlbHMnLCB0aGlzLnJlbW92ZUNvbW1hc0luTGFiZWwobGFiZWwpKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2Zvcm1LZXknLCBmb3JtS2V5KTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdsYW5ndWFnZScsIGxhbmd1YWdlKTtcblxuICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWFzIGFyZSByZW1vdmVkIHRvIGF2b2lkIGEgd3JvbmcgaW50ZXJwcmV0YXRpb24gYXMgYW4gYXJyYXkgb2Ygc3RyaW5nIGluIGZvcm1EYXRhLlxuICAgICAqIEBwYXJhbSBsYWJlbCB0byBiZSBjbGVhbmVkIGZyb20gY29tbWFcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICByZW1vdmVDb21tYXNJbkxhYmVsKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbGFiZWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVG9vQmlnKGZpbGVTaXplSW5CeXRlczogbnVtYmVyLCBsaW1pdEluQnl0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsZVNpemVJbkJ5dGVzID4gbGltaXRJbkJ5dGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZUVycm9yTWVzc2FnZUtleXMoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JNc2c6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc2FmZUZpbGVOYW1lID0gZ2V0U2FmZUZpbGVOYW1lRm9yRXJyb3JNZXNzYWdlKGZpbGVOYW1lKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvck1zZyA9IGVycm9yTXNnLnJlcGxhY2UoJyUxJHMnLCBzYWZlRmlsZU5hbWUpO1xuXG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnNDEzJykpIHtcbiAgICAgICAgICAgIC8vIFJFUVVFU1RfRU5USVRZX1RPT19MQVJHRV9FUlJPUl9NU0dcbiAgICAgICAgICAgIGNvbnN0IGZpbGVNYXhTaXplID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShuYW1lKSAvXG4gICAgICAgICAgICAgICAgKDEwMjQgKiAxMDI0KVxuICAgICAgICAgICAgKS50b1N0cmluZygpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVycm9yTXNnLnJlcGxhY2UoJyUyJHMnLCBmaWxlTWF4U2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yQ29kZS5zdGFydHNXaXRoKCc0MTUnKSkge1xuICAgICAgICAgICAgLy8gVU5TVVBQT1JURURfTUVESUFfVFlQRV9FUlJPUl9NU0dcbiAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgID8gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmFjY2VwdFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJyBvdSAnKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKCclMiRzJywgZmlsZUV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfVE9PX0xPTkcnKSkge1xuICAgICAgICAgICAgY29uc3QgbWF4RmlsZU5hbWVMZW5ndGggPSAoXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCB8fCB0aGlzLm1heEZpbGVOYW1lTGVuZ3RoXG4gICAgICAgICAgICApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIG1heEZpbGVOYW1lTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JDb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVfVE9PX1NNQUxMJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICclMiRzJyxcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVNaW5TaXplSW5CeXRlcy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJykpIHtcbiAgICAgICAgICAgIGxldCBmaWxlTmFtZUlsbGVnYWxDaGFyYWN0ZXJzID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMgfHwgdGhpcy5pbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgKS5yZXBsYWNlKC8sL2csICcnKTtcblxuICAgICAgICAgICAgZmlsZU5hbWVJbGxlZ2FsQ2hhcmFjdGVycyArPSBQRVJNQU5FTlRfSUxMRUdBTF9DSEFSQUNURVJTLmpvaW4oJycpO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIGZpbGVOYW1lSWxsZWdhbENoYXJhY3RlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERlZmF1bHRVbmtub3duRXJyb3JNZXNzYWdlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtc2cgPSAnSW1wb3NzaWJsZSBkZSB0cmFuc21ldHRyZSBsZSBmaWNoaWVyJztcbiAgICAgICAgaWYgKCEhZmlsZU5hbWUgJiYgISFmaWxlTmFtZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttc2d9ICR7Z2V0U2FmZUZpbGVOYW1lRm9yRXJyb3JNZXNzYWdlKGZpbGVOYW1lKX0uYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7bXNnfS5gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBrZXkgdG8gYmUgbm9ybWFsaXplZFxuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UodGhpcy5DSEFSX1RPX1JFUExBQ0UsICcnKSA6IG51bGw7XG4gICAgfVxufVxuIl19
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { filter, map } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../sdk-session-info/session-info.service";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "../sdk-dictionary/sdk-dictionary.pipe";
|
|
7
|
-
export class FoehnUserConnectedAsComponent {
|
|
8
|
-
constructor(sessionInfo) {
|
|
9
|
-
this.sessionInfo = sessionInfo;
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this.connectedAs = this.sessionInfo.data.pipe(filter(userInfo => !!userInfo), map((userInfo) => userInfo.espaceLabel));
|
|
13
|
-
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsComponent, deps: [{ token: i1.SessionInfo }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnUserConnectedAsComponent, selector: "foehn-user-connected-as", ngImport: i0, template: "<!-- prettier-ignore -->\n<p\n *ngIf=\"(connectedAs | async) as userConnectedAs\"\n class=\"h2\"\n>\n {{'foehn-user-connected-as.label' | fromDictionary }} <em>«{{ userConnectedAs }}»</em>\n</p>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
16
|
-
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsComponent, decorators: [{
|
|
18
|
-
type: Component,
|
|
19
|
-
args: [{ selector: 'foehn-user-connected-as', template: "<!-- prettier-ignore -->\n<p\n *ngIf=\"(connectedAs | async) as userConnectedAs\"\n class=\"h2\"\n>\n {{'foehn-user-connected-as.label' | fromDictionary }} <em>«{{ userConnectedAs }}»</em>\n</p>\n" }]
|
|
20
|
-
}], ctorParameters: () => [{ type: i1.SessionInfo }] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdXNlci1jb25uZWN0ZWQtYXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11c2VyLWNvbm5lY3RlZC1hcy9mb2Vobi11c2VyLWNvbm5lY3RlZC1hcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUzdDLE1BQU0sT0FBTyw2QkFBNkI7SUFHdEMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRWhELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QixHQUFHLENBQUMsQ0FBQyxRQUF5QixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQzNELENBQUM7SUFDTixDQUFDOytHQVZRLDZCQUE2QjttR0FBN0IsNkJBQTZCLCtEQ1gxQywyTkFPQTs7NEZESWEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNJLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25JbmZvRGF0YSB9IGZyb20gJy4uL3Nkay1zZXNzaW9uLWluZm8vc2Vzc2lvbi1pbmZvLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tdXNlci1jb25uZWN0ZWQtYXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuVXNlckNvbm5lY3RlZEFzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBjb25uZWN0ZWRBczogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm8pIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRBcyA9IHRoaXMuc2Vzc2lvbkluZm8uZGF0YS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHVzZXJJbmZvID0+ICEhdXNlckluZm8pLFxuICAgICAgICAgICAgbWFwKCh1c2VySW5mbzogU2Vzc2lvbkluZm9EYXRhKSA9PiB1c2VySW5mby5lc3BhY2VMYWJlbClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8IS0tIHByZXR0aWVyLWlnbm9yZSAtLT5cbjxwXG4gICAgKm5nSWY9XCIoY29ubmVjdGVkQXMgfCBhc3luYykgYXMgdXNlckNvbm5lY3RlZEFzXCJcbiAgICBjbGFzcz1cImgyXCJcbj5cbiAgICB7eydmb2Vobi11c2VyLWNvbm5lY3RlZC1hcy5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeSB9fSA8ZW0+JmxhcXVvO3t7IHVzZXJDb25uZWN0ZWRBcyB9fSZyYXF1bzs8L2VtPlxuPC9wPlxuIl19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
|
|
4
|
-
import { FoehnUserConnectedAsComponent } from './foehn-user-connected-as.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class FoehnUserConnectedAsModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, declarations: [FoehnUserConnectedAsComponent], imports: [CommonModule, SdkDictionaryModule], exports: [FoehnUserConnectedAsComponent] }); }
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, imports: [CommonModule, SdkDictionaryModule] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, decorators: [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
imports: [CommonModule, SdkDictionaryModule],
|
|
15
|
-
declarations: [FoehnUserConnectedAsComponent],
|
|
16
|
-
exports: [FoehnUserConnectedAsComponent]
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdXNlci1jb25uZWN0ZWQtYXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFPcEYsTUFBTSxPQUFPLDBCQUEwQjsrR0FBMUIsMEJBQTBCO2dIQUExQiwwQkFBMEIsaUJBSHBCLDZCQUE2QixhQURsQyxZQUFZLEVBQUUsbUJBQW1CLGFBRWpDLDZCQUE2QjtnSEFFOUIsMEJBQTBCLFlBSnpCLFlBQVksRUFBRSxtQkFBbUI7OzRGQUlsQywwQkFBMEI7a0JBTHRDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNka0RpY3Rpb25hcnlNb2R1bGUgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5Vc2VyQ29ubmVjdGVkQXNDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2RrRGljdGlvbmFyeU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9laG5Vc2VyQ29ubmVjdGVkQXNDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtGb2VoblVzZXJDb25uZWN0ZWRBc0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5Vc2VyQ29ubmVjdGVkQXNNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../validation/validation-handler.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "../sdk-dictionary/sdk-dictionary.pipe";
|
|
6
|
-
const isAllUpperCase = (value) => value.toUpperCase() === value;
|
|
7
|
-
const formatErrorMessage = (errorMessage) => {
|
|
8
|
-
if (!errorMessage?.length) {
|
|
9
|
-
return '';
|
|
10
|
-
}
|
|
11
|
-
let firstWord = errorMessage.split(' ')[0];
|
|
12
|
-
const nextWords = errorMessage.split(' ').slice(1).join(' ');
|
|
13
|
-
if (firstWord.length === 1 || !isAllUpperCase(firstWord)) {
|
|
14
|
-
firstWord = firstWord.charAt(0).toLowerCase() + firstWord.slice(1);
|
|
15
|
-
}
|
|
16
|
-
return `${firstWord}${!!nextWords.length ? ` ${nextWords}` : ''}`;
|
|
17
|
-
};
|
|
18
|
-
// eslint-disable max-classes-per-file
|
|
19
|
-
export class FoehnValidationAlertSummaryComponent {
|
|
20
|
-
constructor(validationHandlerService) {
|
|
21
|
-
this.validationHandlerService = validationHandlerService;
|
|
22
|
-
}
|
|
23
|
-
get shouldDisplayAlertSummary() {
|
|
24
|
-
return !!this.form && this.form.shouldDisplayAlertSummary;
|
|
25
|
-
}
|
|
26
|
-
get errors() {
|
|
27
|
-
const errors = [];
|
|
28
|
-
const components = this.form.getAllComponents();
|
|
29
|
-
components.forEach(component => {
|
|
30
|
-
if (component.hasErrorsToDisplay() &&
|
|
31
|
-
!component.excludeFromErrorSummary) {
|
|
32
|
-
component.errors.forEach(error => {
|
|
33
|
-
errors.push({
|
|
34
|
-
name: error.name,
|
|
35
|
-
message: formatErrorMessage(this.validationHandlerService.getMessage(component, error)),
|
|
36
|
-
componentLabel: component.label
|
|
37
|
-
? `${component.label} : `
|
|
38
|
-
: ''
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
return errors;
|
|
44
|
-
}
|
|
45
|
-
scrollToError(event, errorId) {
|
|
46
|
-
event.preventDefault();
|
|
47
|
-
const elementContainer = document.getElementById(`${errorId}Container`);
|
|
48
|
-
if (!elementContainer) {
|
|
49
|
-
console.warn(`"${errorId
|
|
50
|
-
// eslint-disable-next-line max-len
|
|
51
|
-
}" error cannot be scrolled to nor focused. Please make sure that your HTML Foehn element tag attributs "id" and "name" are identical.`);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
// Scroll in view should be done on input container
|
|
55
|
-
elementContainer.scrollIntoView();
|
|
56
|
-
const elementChild = document.getElementById(`${errorId}Child`);
|
|
57
|
-
if (elementChild) {
|
|
58
|
-
// Focus should be on the input itself
|
|
59
|
-
elementChild.focus();
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// For more complex components such as foehn-input-date, foehn-input-time, foehn-nav13, foehn-radio, foehn-checkbox,...
|
|
63
|
-
const elementNodeListOf = elementContainer.querySelectorAll(`input[id^="${errorId}"]`);
|
|
64
|
-
if (elementNodeListOf && elementNodeListOf.length > 0) {
|
|
65
|
-
const inputElement = this.findFirstHtmlInputElementEnabled(elementNodeListOf);
|
|
66
|
-
if (inputElement) {
|
|
67
|
-
// Focus should be on the input itself
|
|
68
|
-
inputElement.focus();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
trackByError(index, e) {
|
|
74
|
-
return e.name;
|
|
75
|
-
}
|
|
76
|
-
findFirstHtmlInputElementEnabled(elementNodeListOf) {
|
|
77
|
-
for (let i = 0; i < elementNodeListOf.length; i++) {
|
|
78
|
-
const htmlInputElement = elementNodeListOf.item(i);
|
|
79
|
-
if (!htmlInputElement.disabled) {
|
|
80
|
-
return htmlInputElement;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryComponent, deps: [{ token: i1.ValidationHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnValidationAlertSummaryComponent, selector: "foehn-validation-alert-summary", inputs: { form: "form" }, ngImport: i0, template: "<div\n aria-labelledby=\"error-summary-title\"\n id=\"error-summary\"\n class=\"vd-error-summary\"\n *ngIf=\"shouldDisplayAlertSummary && errors.length\"\n role=\"alert\"\n tabindex=\"-1\"\n>\n <h2 id=\"error-summary-title\">\n {{ 'errors.summary.title' | fromDictionary }}\n </h2>\n <ul>\n <li *ngFor=\"let error of errors; trackBy: trackByError; let i = index\">\n <a\n class=\"text-danger\"\n href=\"\"\n [id]=\"'foehn-error-summary-list-item-' + i\"\n (click)=\"scrollToError($event, error.name)\"\n >\n <span [innerHTML]=\"error.componentLabel\"></span>\n <span [innerHTML]=\"error.message\"></span>\n </a>\n </li>\n </ul>\n</div>\n", styles: [".vd-error-summary{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
87
|
-
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryComponent, decorators: [{
|
|
89
|
-
type: Component,
|
|
90
|
-
args: [{ selector: 'foehn-validation-alert-summary', template: "<div\n aria-labelledby=\"error-summary-title\"\n id=\"error-summary\"\n class=\"vd-error-summary\"\n *ngIf=\"shouldDisplayAlertSummary && errors.length\"\n role=\"alert\"\n tabindex=\"-1\"\n>\n <h2 id=\"error-summary-title\">\n {{ 'errors.summary.title' | fromDictionary }}\n </h2>\n <ul>\n <li *ngFor=\"let error of errors; trackBy: trackByError; let i = index\">\n <a\n class=\"text-danger\"\n href=\"\"\n [id]=\"'foehn-error-summary-list-item-' + i\"\n (click)=\"scrollToError($event, error.name)\"\n >\n <span [innerHTML]=\"error.componentLabel\"></span>\n <span [innerHTML]=\"error.message\"></span>\n </a>\n </li>\n </ul>\n</div>\n", styles: [".vd-error-summary{margin-bottom:1rem}\n"] }]
|
|
91
|
-
}], ctorParameters: () => [{ type: i1.ValidationHandlerService }], propDecorators: { form: [{
|
|
92
|
-
type: Input
|
|
93
|
-
}] } });
|
|
94
|
-
export class ComponentError {
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkvZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkvZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUtqRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFLENBQzlDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFFbEMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFlBQW9CLEVBQVUsRUFBRTtJQUN4RCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENB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LENBQWlCO1FBQ3pDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRVMsZ0NBQWdDLENBQ3RDLGlCQUFzQztRQUV0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQzNDLENBQUMsQ0FDZ0IsQ0FBQztZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sZ0JBQWdCLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOytHQXpGUSxvQ0FBb0M7bUdBQXBDLG9DQUFvQyxnR0M1QmpELDZ5QkF5QkE7OzRGREdhLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDSSxnQ0FBZ0M7NkZBTTFDLElBQUk7c0JBREgsS0FBSzs7QUEyRlYsTUFBTSxPQUFPLGNBQWM7Q0FJMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgRm9laG5Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tZm9ybS9mb2Vobi1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24taGFuZGxlci5zZXJ2aWNlJztcblxuY29uc3QgaXNBbGxVcHBlckNhc2UgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgICB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSB2YWx1ZTtcblxuY29uc3QgZm9ybWF0RXJyb3JNZXNzYWdlID0gKGVycm9yTWVzc2FnZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIWVycm9yTWVzc2FnZT8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RXb3JkID0gZXJyb3JNZXNzYWdlLnNwbGl0KCcgJylbMF07XG4gICAgY29uc3QgbmV4dFdvcmRzID0gZXJyb3JNZXNzYWdlLnNwbGl0KCcgJykuc2xpY2UoMSkuam9pbignICcpO1xuICAgIGlmIChmaXJzdFdvcmQubGVuZ3RoID09PSAxIHx8ICFpc0FsbFVwcGVyQ2FzZShmaXJzdFdvcmQpKSB7XG4gICAgICAgIGZpcnN0V29yZCA9IGZpcnN0V29yZC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGZpcnN0V29yZC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Zmlyc3RXb3JkfSR7ISFuZXh0V29yZHMubGVuZ3RoID8gYCAke25leHRXb3Jkc31gIDogJyd9YDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlIG1heC1jbGFzc2VzLXBlci1maWxlXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLXZhbGlkYXRpb24tYWxlcnQtc3VtbWFyeScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLXZhbGlkYXRpb24tYWxlcnQtc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VoblZhbGlkYXRpb25BbGVydFN1bW1hcnlDb21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybTogRm9laG5Gb3JtQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2YWxpZGF0aW9uSGFuZGxlclNlcnZpY2U6IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSkge31cblxuICAgIGdldCBzaG91bGREaXNwbGF5QWxlcnRTdW1tYXJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLnNob3VsZERpc3BsYXlBbGVydFN1bW1hcnk7XG4gICAgfVxuXG4gICAgZ2V0IGVycm9ycygpOiBDb21wb25lbnRFcnJvcltdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBDb21wb25lbnRFcnJvcltdID0gW107XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLmZvcm0uZ2V0QWxsQ29tcG9uZW50cygpO1xuICAgICAgICBjb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuaGFzRXJyb3JzVG9EaXNwbGF5KCkgJiZcbiAgICAgICAgICAgICAgICAhY29tcG9uZW50LmV4Y2x1ZGVGcm9tRXJyb3JTdW1tYXJ5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuZXJyb3JzLmZvckVhY2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlcnJvci5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLmdldE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TGFiZWw6IGNvbXBvbmVudC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y29tcG9uZW50LmxhYmVsfSA6IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIHNjcm9sbFRvRXJyb3IoZXZlbnQ6IEV2ZW50LCBlcnJvcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgZWxlbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke2Vycm9ySWR9Q29udGFpbmVyYCk7XG4gICAgICAgIGlmICghZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBcIiR7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgICAgICB9XCIgZXJyb3IgY2Fubm90IGJlIHNjcm9sbGVkIHRvIG5vciBmb2N1c2VkLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgeW91ciBIVE1MIEZvZWhuIGVsZW1lbnQgdGFnIGF0dHJpYnV0cyBcImlkXCIgYW5kIFwibmFtZVwiIGFyZSBpZGVudGljYWwuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTY3JvbGwgaW4gdmlldyBzaG91bGQgYmUgZG9uZSBvbiBpbnB1dCBjb250YWluZXJcbiAgICAgICAgZWxlbWVudENvbnRhaW5lci5zY3JvbGxJbnRvVmlldygpO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRDaGlsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke2Vycm9ySWR9Q2hpbGRgKTtcbiAgICAgICAgaWYgKGVsZW1lbnRDaGlsZCkge1xuICAgICAgICAgICAgLy8gRm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBpbnB1dCBpdHNlbGZcbiAgICAgICAgICAgIGVsZW1lbnRDaGlsZC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRm9yIG1vcmUgY29tcGxleCBjb21wb25lbnRzIHN1Y2ggYXMgZm9laG4taW5wdXQtZGF0ZSwgZm9laG4taW5wdXQtdGltZSwgZm9laG4tbmF2MTMsIGZvZWhuLXJhZGlvLCBmb2Vobi1jaGVja2JveCwuLi5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnROb2RlTGlzdE9mID0gZWxlbWVudENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgIGBpbnB1dFtpZF49XCIke2Vycm9ySWR9XCJdYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50Tm9kZUxpc3RPZiAmJiBlbGVtZW50Tm9kZUxpc3RPZi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kRmlyc3RIdG1sSW5wdXRFbGVtZW50RW5hYmxlZChlbGVtZW50Tm9kZUxpc3RPZik7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBGb2N1cyBzaG91bGQgYmUgb24gdGhlIGlucHV0IGl0c2VsZlxuICAgICAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFja0J5RXJyb3IoaW5kZXg6IG51bWJlciwgZTogQ29tcG9uZW50RXJyb3IpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZS5uYW1lO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kRmlyc3RIdG1sSW5wdXRFbGVtZW50RW5hYmxlZChcbiAgICAgICAgZWxlbWVudE5vZGVMaXN0T2Y6IE5vZGVMaXN0T2Y8RWxlbWVudD5cbiAgICApOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50Tm9kZUxpc3RPZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaHRtbElucHV0RWxlbWVudCA9IGVsZW1lbnROb2RlTGlzdE9mLml0ZW0oXG4gICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFodG1sSW5wdXRFbGVtZW50LmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGh0bWxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RXJyb3Ige1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29tcG9uZW50TGFiZWw6IHN0cmluZztcbn1cbiIsIjxkaXZcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCJcbiAgICBpZD1cImVycm9yLXN1bW1hcnlcIlxuICAgIGNsYXNzPVwidmQtZXJyb3Itc3VtbWFyeVwiXG4gICAgKm5nSWY9XCJzaG91bGREaXNwbGF5QWxlcnRTdW1tYXJ5ICYmIGVycm9ycy5sZW5ndGhcIlxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGgyIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgICAgICB7eyAnZXJyb3JzLnN1bW1hcnkudGl0bGUnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICA8L2gyPlxuICAgIDx1bD5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlFcnJvcjsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZvZWhuLWVycm9yLXN1bW1hcnktbGlzdC1pdGVtLScgKyBpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2Nyb2xsVG9FcnJvcigkZXZlbnQsIGVycm9yLm5hbWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yLmNvbXBvbmVudExhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZXJyb3IubWVzc2FnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
|
|
4
|
-
import { FoehnValidationAlertSummaryComponent } from './foehn-validation-alert-summary.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class FoehnValidationAlertSummaryModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, declarations: [FoehnValidationAlertSummaryComponent], imports: [CommonModule, SdkDictionaryModule], exports: [FoehnValidationAlertSummaryComponent] }); }
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, imports: [CommonModule, SdkDictionaryModule] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, decorators: [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
imports: [CommonModule, SdkDictionaryModule],
|
|
15
|
-
declarations: [FoehnValidationAlertSummaryComponent],
|
|
16
|
-
exports: [FoehnValidationAlertSummaryComponent]
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkvZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFPbEcsTUFBTSxPQUFPLGlDQUFpQzsrR0FBakMsaUNBQWlDO2dIQUFqQyxpQ0FBaUMsaUJBSDNCLG9DQUFvQyxhQUR6QyxZQUFZLEVBQUUsbUJBQW1CLGFBRWpDLG9DQUFvQztnSEFFckMsaUNBQWlDLFlBSmhDLFlBQVksRUFBRSxtQkFBbUI7OzRGQUlsQyxpQ0FBaUM7a0JBTDdDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxZQUFZLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNka0RpY3Rpb25hcnlNb2R1bGUgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5WYWxpZGF0aW9uQWxlcnRTdW1tYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTZGtEaWN0aW9uYXJ5TW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtGb2VoblZhbGlkYXRpb25BbGVydFN1bW1hcnlDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtGb2VoblZhbGlkYXRpb25BbGVydFN1bW1hcnlDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuVmFsaWRhdGlvbkFsZXJ0U3VtbWFyeU1vZHVsZSB7fVxuIl19
|