@sumaris-net/ngx-components 2.6.26 → 2.7.0-rc10
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/esm2022/public_api.mjs +339 -0
- package/{esm2020 → esm2022}/src/app/admin/admin-routing.module.mjs +8 -8
- package/{esm2020 → esm2022}/src/app/admin/admin.module.mjs +12 -12
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +69 -0
- package/esm2022/src/app/admin/services/person.service.mjs +174 -0
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +72 -0
- package/esm2022/src/app/admin/users/users.mjs +264 -0
- package/esm2022/src/app/admin/users/users.module.mjs +58 -0
- package/{esm2020 → esm2022}/src/app/core/about/about.modal.mjs +20 -7
- package/{esm2020 → esm2022}/src/app/core/about/about.module.mjs +9 -9
- package/{esm2020 → esm2022}/src/app/core/account/account.module.mjs +22 -22
- package/esm2022/src/app/core/account/account.page.mjs +337 -0
- package/esm2022/src/app/core/account/new-token.modal.mjs +130 -0
- package/esm2022/src/app/core/account/token.table.mjs +146 -0
- package/esm2022/src/app/core/auth/auth.form.mjs +140 -0
- package/esm2022/src/app/core/auth/auth.modal.mjs +76 -0
- package/{esm2020 → esm2022}/src/app/core/auth/auth.module.mjs +16 -16
- package/{esm2020 → esm2022}/src/app/core/core.module.mjs +87 -87
- package/esm2022/src/app/core/core.testing.module.mjs +93 -0
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +109 -0
- package/{esm2020 → esm2022}/src/app/core/form/buttons/form-buttons-bar.module.mjs +10 -10
- package/esm2022/src/app/core/form/entity/editor.class.mjs +718 -0
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +436 -0
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +730 -0
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +24 -0
- package/{esm2020 → esm2022}/src/app/core/form/entity/entity.module.mjs +11 -11
- package/esm2022/src/app/core/form/form.class.mjs +353 -0
- package/{esm2020 → esm2022}/src/app/core/form/form.module.mjs +30 -30
- package/esm2022/src/app/core/form/form.utils.mjs +485 -0
- package/esm2022/src/app/core/form/list/list.form.mjs +233 -0
- package/{esm2020 → esm2022}/src/app/core/form/list/list.module.mjs +10 -10
- package/esm2022/src/app/core/form/properties/properties.form.mjs +143 -0
- package/{esm2020 → esm2022}/src/app/core/form/properties/properties.module.mjs +13 -13
- package/esm2022/src/app/core/form/properties/properties.table.mjs +269 -0
- package/esm2022/src/app/core/form/properties/property.validator.mjs +24 -0
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +95 -0
- package/{esm2020 → esm2022}/src/app/core/form/properties/testing/properties-form.testing.module.mjs +11 -11
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +73 -0
- package/{esm2020 → esm2022}/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +10 -10
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +152 -0
- package/{esm2020 → esm2022}/src/app/core/form/text-popover/text-popover.module.mjs +10 -10
- package/{esm2020 → esm2022}/src/app/core/graphql/graphql.module.mjs +6 -6
- package/esm2022/src/app/core/graphql/graphql.service.mjs +788 -0
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +118 -0
- package/esm2022/src/app/core/home/home.mjs +282 -0
- package/esm2022/src/app/core/home/home.module.mjs +51 -0
- package/esm2022/src/app/core/icon/icon.component.mjs +40 -0
- package/{esm2020 → esm2022}/src/app/core/icon/icon.module.mjs +7 -7
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +358 -0
- package/{esm2020 → esm2022}/src/app/core/install/install-upgrade-card.module.mjs +10 -10
- package/esm2022/src/app/core/menu/menu.component.mjs +264 -0
- package/esm2022/src/app/core/menu/menu.model.mjs +269 -0
- package/esm2022/src/app/core/menu/menu.module.mjs +52 -0
- package/esm2022/src/app/core/menu/menu.service.mjs +671 -0
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +109 -0
- package/{esm2020 → esm2022}/src/app/core/menu/testing/menu-other.testing.mjs +5 -5
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +122 -0
- package/{esm2020 → esm2022}/src/app/core/menu/testing/menu.testing.module.mjs +12 -12
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +29 -0
- package/{esm2020 → esm2022}/src/app/core/offline/update-offline-mode-card.module.mjs +10 -10
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +193 -0
- package/{esm2020 → esm2022}/src/app/core/peer/select-peer.module.mjs +13 -13
- package/{esm2020 → esm2022}/src/app/core/register/register-confirm.page.mjs +16 -9
- package/esm2022/src/app/core/register/register.form.mjs +194 -0
- package/esm2022/src/app/core/register/register.modal.mjs +55 -0
- package/{esm2020 → esm2022}/src/app/core/register/register.module.mjs +13 -13
- package/esm2022/src/app/core/services/account.service.mjs +1243 -0
- package/esm2022/src/app/core/services/auth-guard.service.mjs +76 -0
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +482 -0
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +224 -0
- package/esm2022/src/app/core/services/base58.mjs +79 -0
- package/esm2022/src/app/core/services/config.service.mjs +367 -0
- package/esm2022/src/app/core/services/crypto.service.mjs +107 -0
- package/{esm2020 → esm2022}/src/app/core/services/errors.mjs +3 -3
- package/esm2022/src/app/core/services/local-settings.service.mjs +468 -0
- package/esm2022/src/app/core/services/model/account.model.mjs +155 -0
- package/esm2022/src/app/core/services/model/config.model.mjs +107 -0
- package/esm2022/src/app/core/services/model/department.model.mjs +34 -0
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +97 -0
- package/esm2022/src/app/core/services/model/entity.model.mjs +228 -0
- package/{esm2020 → esm2022}/src/app/core/services/model/filter.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/peer.model.mjs +83 -0
- package/esm2022/src/app/core/services/model/person.model.mjs +110 -0
- package/esm2022/src/app/core/services/model/referential.model.mjs +189 -0
- package/esm2022/src/app/core/services/model/token.model.mjs +57 -0
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +199 -0
- package/esm2022/src/app/core/services/network.service.mjs +626 -0
- package/esm2022/src/app/core/services/network.types.mjs +20 -0
- package/esm2022/src/app/core/services/network.utils.mjs +15 -0
- package/{esm2020 → esm2022}/src/app/core/services/pipes/account.pipes.mjs +9 -9
- package/{esm2020 → esm2022}/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
- package/esm2022/src/app/core/services/platform.service.mjs +557 -0
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +434 -0
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +458 -0
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +25 -0
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +46 -0
- package/esm2022/src/app/core/services/validator/account.validator.mjs +45 -0
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +49 -0
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +67 -0
- package/{esm2020 → esm2022}/src/app/core/services/validator/user-settings.validator.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/services/validator/user-token.validator.mjs +5 -5
- package/{esm2020 → esm2022}/src/app/core/settings/settings.module.mjs +9 -9
- package/esm2022/src/app/core/settings/settings.page.mjs +328 -0
- package/esm2022/src/app/core/table/actions-column.component.mjs +115 -0
- package/esm2022/src/app/core/table/async-table.class.mjs +1740 -0
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +386 -0
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +401 -0
- package/esm2022/src/app/core/table/memory-table.class.mjs +57 -0
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +46 -0
- package/esm2022/src/app/core/table/table.class.mjs +1781 -0
- package/esm2022/src/app/core/table/table.model.mjs +16 -0
- package/{esm2020 → esm2022}/src/app/core/table/table.module.mjs +12 -12
- package/esm2022/src/app/core/table/table.utils.mjs +33 -0
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +28 -0
- package/esm2022/src/app/core/table/testing/table.testing.mjs +291 -0
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +50 -0
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +25 -0
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +250 -0
- package/esm2022/src/app/shared/alerts.mjs +239 -0
- package/esm2022/src/app/shared/audio/audio.mjs +251 -0
- package/esm2022/src/app/shared/audio/audio.testing.mjs +32 -0
- package/{esm2020 → esm2022}/src/app/shared/audio/audio.testing.module.mjs +10 -10
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +42 -0
- package/esm2022/src/app/shared/capacitor/plugins.mjs +9 -0
- package/esm2022/src/app/shared/dates.mjs +149 -0
- package/esm2022/src/app/shared/debug/debug.component.mjs +40 -0
- package/{esm2020 → esm2022}/src/app/shared/debug/debug.module.mjs +14 -14
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +98 -0
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +32 -0
- package/{esm2020 → esm2022}/src/app/shared/directives/directives.module.mjs +13 -13
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +52 -0
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +33 -0
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +62 -0
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +45 -0
- package/{esm2020 → esm2022}/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
- package/esm2022/src/app/shared/events.mjs +65 -0
- package/esm2022/src/app/shared/file/csv.utils.mjs +72 -0
- package/esm2022/src/app/shared/file/file.service.mjs +122 -0
- package/esm2022/src/app/shared/file/file.utils.mjs +113 -0
- package/esm2022/src/app/shared/file/images.utils.mjs +161 -0
- package/{esm2020 → esm2022}/src/app/shared/file/json.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/uri.utils.mjs +24 -0
- package/esm2022/src/app/shared/form/field.component.mjs +353 -0
- package/{esm2020 → esm2022}/src/app/shared/form/field.model.mjs +1 -1
- package/esm2022/src/app/shared/form/loading-spinner.mjs +35 -0
- package/esm2022/src/app/shared/forms.mjs +414 -0
- package/esm2022/src/app/shared/functions.mjs +483 -0
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +82 -0
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +46 -0
- package/{esm2020 → esm2022}/src/app/shared/graph/colors.utils.mjs +1 -1
- package/esm2022/src/app/shared/graph/graph-colors.mjs +219 -0
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +59 -0
- package/esm2022/src/app/shared/help/help.modal.mjs +63 -0
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +85 -0
- package/{esm2020 → esm2022}/src/app/shared/hotkeys/shared-hotkeys.module.mjs +13 -13
- package/esm2022/src/app/shared/http/http.utils.mjs +56 -0
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +388 -0
- package/{esm2020 → esm2022}/src/app/shared/image/gallery/image-gallery.module.mjs +22 -22
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +26 -0
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +90 -0
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +41 -0
- package/{esm2020 → esm2022}/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +16 -16
- package/{esm2020 → esm2022}/src/app/shared/image/image.module.mjs +11 -11
- package/esm2022/src/app/shared/image/image.service.mjs +104 -0
- package/esm2022/src/app/shared/inputs.mjs +231 -0
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +28 -0
- package/esm2022/src/app/shared/logging/logger.model.mjs +47 -0
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +128 -0
- package/{esm2020 → esm2022}/src/app/shared/logging/logging-service.module.mjs +8 -8
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +49 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +967 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +82 -0
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +17 -0
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +217 -0
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +209 -0
- package/{esm2020 → esm2022}/src/app/shared/material/badge/badge.module.mjs +9 -9
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +42 -0
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +67 -0
- package/esm2022/src/app/shared/material/boolean/material-boolean.mjs +262 -0
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +53 -0
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +76 -0
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +719 -0
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +148 -0
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +90 -0
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +424 -0
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +432 -0
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +612 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +132 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +123 -0
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +115 -0
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +70 -0
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +36 -0
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +273 -0
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +79 -0
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +266 -0
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +440 -0
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +72 -0
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +113 -0
- package/esm2022/src/app/shared/material/material.module.mjs +229 -0
- package/esm2022/src/app/shared/material/material.testing.module.mjs +221 -0
- package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +104 -0
- package/{esm2020 → esm2022}/src/app/shared/material/numpad/numpad.component.mjs +19 -16
- package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +203 -0
- package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +19 -0
- package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +168 -0
- package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +36 -0
- package/esm2022/src/app/shared/material/numpad/numpad.model.mjs +16 -0
- package/{esm2020 → esm2022}/src/app/shared/material/numpad/numpad.module.mjs +21 -21
- package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +48 -0
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +48 -0
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +23 -0
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +368 -0
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +56 -0
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +67 -0
- package/esm2022/src/app/shared/material/testing/common.test.mjs +105 -0
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +31 -0
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +97 -0
- package/{esm2020 → esm2022}/src/app/shared/material/text/text-form.module.mjs +24 -24
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +246 -0
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +49 -0
- package/{esm2020 → esm2022}/src/app/shared/named-filter/named-filter.module.mjs +5 -5
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +69 -0
- package/esm2022/src/app/shared/observables.mjs +104 -0
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +141 -0
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +27 -0
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +51 -0
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +72 -0
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +28 -0
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +36 -0
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +60 -0
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +194 -0
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +48 -0
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +42 -0
- package/{esm2020 → esm2022}/src/app/shared/pipes/maps.pipe.mjs +13 -13
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +69 -0
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +59 -0
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +19 -0
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +30 -0
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +252 -0
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +97 -0
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +135 -0
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +44 -0
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +58 -0
- package/esm2022/src/app/shared/platforms.mjs +43 -0
- package/esm2022/src/app/shared/rx-state.module.mjs +23 -0
- package/esm2022/src/app/shared/services/job.utils.mjs +92 -0
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +347 -0
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +31 -0
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +121 -0
- package/esm2022/src/app/shared/services/startable-service.class.mjs +113 -0
- package/esm2022/src/app/shared/services/translate-context.service.mjs +104 -0
- package/esm2022/src/app/shared/services.mjs +62 -0
- package/esm2022/src/app/shared/shared-routing.module.mjs +71 -0
- package/esm2022/src/app/shared/shared.module.mjs +231 -0
- package/{esm2020 → esm2022}/src/app/shared/shared.testing.module.mjs +40 -40
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +286 -0
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +46 -0
- package/{esm2020 → esm2022}/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +7 -7
- package/{esm2020 → esm2022}/src/app/shared/storage/storage-explorer.testing.module.mjs +6 -6
- package/esm2022/src/app/shared/storage/storage.service.mjs +134 -0
- package/{esm2020 → esm2022}/src/app/shared/storage/storage.utils.mjs +1 -1
- package/esm2022/src/app/shared/testing/observable.test.mjs +96 -0
- package/esm2022/src/app/shared/testing/tests.page.mjs +37 -0
- package/esm2022/src/app/shared/toast/toast.testing.mjs +52 -0
- package/{esm2020 → esm2022}/src/app/shared/toast/toast.testing.module.mjs +10 -10
- package/esm2022/src/app/shared/toast/toasts.mjs +144 -0
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +60 -0
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +263 -0
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +57 -0
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +59 -0
- package/{esm2020 → esm2022}/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +10 -10
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +107 -0
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +211 -0
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +27 -0
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +106 -0
- package/esm2022/src/app/shared/validator/validators.mjs +580 -0
- package/esm2022/src/app/shared/version/versions.mjs +81 -0
- package/esm2022/src/app/social/job/job.module.mjs +42 -0
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +35 -0
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +232 -0
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +50 -0
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +29 -0
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +73 -0
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +43 -0
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +53 -0
- package/{esm2020 → esm2022}/src/app/social/job/testing/job.testing.module.mjs +9 -9
- package/esm2022/src/app/social/message/message.form.mjs +140 -0
- package/esm2022/src/app/social/message/message.modal.mjs +110 -0
- package/esm2022/src/app/social/message/message.model.mjs +75 -0
- package/{esm2020 → esm2022}/src/app/social/message/message.module.mjs +5 -5
- package/esm2022/src/app/social/message/message.service.mjs +110 -0
- package/{esm2020 → esm2022}/src/app/social/social.module.mjs +19 -19
- package/{esm2020 → esm2022}/src/app/social/social.testing.module.mjs +10 -10
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +123 -0
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +263 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +233 -0
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +129 -0
- package/{esm2020 → esm2022}/src/app/social/user-event/testing/user-event.testing.module.mjs +9 -9
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +116 -0
- package/esm2022/src/app/social/user-event/user-event.module.mjs +43 -0
- package/esm2022/src/app/social/user-event/user-event.service.mjs +512 -0
- package/esm2022/src/environments/environment.class.mjs +50 -0
- package/esm2022/src/environments/environment.loader.mjs +83 -0
- package/esm2022/src/environments/environment.mjs +97 -0
- package/{fesm2020 → fesm2022}/sumaris-net.ngx-components.mjs +13100 -10864
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -0
- package/package.json +37 -17
- package/public_api.d.ts +12 -5
- package/src/app/admin/users/users.d.ts +1 -1
- package/src/app/admin/users/users.module.d.ts +2 -1
- package/src/app/core/about/about.modal.d.ts +1 -1
- package/src/app/core/account/account.page.d.ts +1 -1
- package/src/app/core/account/new-token.modal.d.ts +1 -1
- package/src/app/core/account/token.table.d.ts +1 -1
- package/src/app/core/auth/auth.form.d.ts +1 -1
- package/src/app/core/auth/auth.modal.d.ts +1 -1
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +1 -1
- package/src/app/core/form/entity/editor.class.d.ts +3 -3
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +1 -1
- package/src/app/core/form/entity/entity-editor.class.d.ts +1 -1
- package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
- package/src/app/core/form/form.class.d.ts +1 -1
- package/src/app/core/form/list/list.form.d.ts +1 -1
- package/src/app/core/form/properties/properties.form.d.ts +1 -1
- package/src/app/core/form/properties/properties.table.d.ts +2 -3
- package/src/app/core/form/properties/property.validator.d.ts +1 -1
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +1 -1
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +1 -1
- package/src/app/core/form/text-popover/text-popover.component.d.ts +1 -1
- package/src/app/core/graphql/graphql.utils.d.ts +1 -1
- package/src/app/core/home/home.d.ts +1 -1
- package/src/app/core/home/home.module.d.ts +4 -3
- package/src/app/core/icon/icon.component.d.ts +1 -1
- package/src/app/core/install/install-upgrade-card.component.d.ts +1 -1
- package/src/app/core/menu/menu.component.d.ts +2 -2
- package/src/app/core/menu/menu.model.d.ts +0 -1
- package/src/app/core/menu/menu.module.d.ts +3 -5
- package/src/app/core/menu/menu.service.d.ts +1 -1
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +1 -1
- package/src/app/core/menu/testing/menu-other.testing.d.ts +1 -1
- package/src/app/core/menu/testing/menu.testing.d.ts +1 -1
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +1 -1
- package/src/app/core/peer/select-peer.modal.d.ts +1 -1
- package/src/app/core/register/register-confirm.page.d.ts +1 -1
- package/src/app/core/register/register.form.d.ts +1 -1
- package/src/app/core/register/register.modal.d.ts +1 -1
- package/src/app/core/services/base-entity-service.class.d.ts +2 -2
- package/src/app/core/services/base-graphql-service.class.d.ts +1 -1
- package/src/app/core/services/model/person.model.d.ts +1 -1
- package/src/app/core/services/model/settings.model.d.ts +1 -1
- package/src/app/core/services/network.types.d.ts +2 -2
- package/src/app/core/services/storage/entity-store.class.d.ts +1 -1
- package/src/app/core/services/validator/base.validator.class.d.ts +1 -1
- package/src/app/core/settings/settings.page.d.ts +1 -1
- package/src/app/core/table/actions-column.component.d.ts +2 -2
- package/src/app/core/table/async-table.class.d.ts +1 -1
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +1 -1
- package/src/app/core/table/entities-table-datasource.class.d.ts +1 -1
- package/src/app/core/table/memory-table.class.d.ts +3 -3
- package/src/app/core/table/table-select-columns.component.d.ts +1 -1
- package/src/app/core/table/table.class.d.ts +4 -3
- package/src/app/core/table/table.model.d.ts +1 -1
- package/src/app/core/table/testing/table.testing.d.ts +5 -4
- package/src/app/core/table/testing/table.testing.module.d.ts +8 -5
- package/src/app/core/table/testing/table2-validator.service.d.ts +15 -0
- package/src/app/core/table/testing/table2.testing.d.ts +45 -0
- package/src/app/shared/audio/audio.d.ts +1 -1
- package/src/app/shared/audio/audio.testing.d.ts +1 -1
- package/src/app/shared/debug/debug.component.d.ts +1 -1
- package/src/app/shared/directives/autofocus.directive.d.ts +1 -1
- package/src/app/shared/directives/autotitle.directive.d.ts +1 -1
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +1 -1
- package/src/app/shared/directives/ng-var.directive.d.ts +1 -1
- package/src/app/shared/directives/resizable/resizable.component.d.ts +1 -1
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +1 -1
- package/src/app/shared/events.d.ts +1 -1
- package/src/app/shared/form/field.component.d.ts +4 -5
- package/src/app/shared/form/field.model.d.ts +2 -0
- package/src/app/shared/form/loading-spinner.d.ts +1 -1
- package/src/app/shared/functions.d.ts +2 -2
- package/src/app/shared/help/help.modal.d.ts +2 -2
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +3 -5
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +3 -3
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +3 -3
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +2 -2
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +10 -8
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +10 -9
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +1 -1
- package/src/app/shared/material/badge/badge.directive.d.ts +1 -1
- package/src/app/shared/material/badge/badge.test.d.ts +1 -1
- package/src/app/shared/material/boolean/boolean.module.d.ts +5 -5
- package/src/app/shared/material/boolean/{material.boolean.d.ts → material-boolean.d.ts} +20 -23
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +21 -0
- package/src/app/shared/material/chips/material.chips.d.ts +8 -9
- package/src/app/shared/material/chips/testing/chips.test.d.ts +2 -2
- package/src/app/shared/material/datetime/datetime.module.d.ts +2 -2
- package/src/app/shared/material/datetime/material.date.d.ts +8 -5
- package/src/app/shared/material/datetime/material.dateshort.d.ts +11 -8
- package/src/app/shared/material/datetime/material.datetime.d.ts +24 -12
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +7 -1
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +3 -1
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +3 -1
- package/src/app/shared/material/duration/duration.module.d.ts +6 -5
- package/src/app/shared/material/duration/material.duration.d.ts +6 -5
- package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +22 -0
- package/src/app/shared/material/latlong/material.latlong.d.ts +16 -9
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +9 -8
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +3 -1
- package/src/app/shared/material/material.testing.module.d.ts +23 -19
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.component.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.container.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.content.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.directive.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.dom-service.d.ts +3 -3
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +1 -1
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -3
- package/src/app/shared/material/swipe/material.swipe.d.ts +6 -6
- package/src/app/shared/material/swipe/swipe.module.d.ts +2 -1
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +1 -1
- package/src/app/shared/material/testing/common.test.d.ts +25 -0
- package/src/app/shared/material/text/testing/text-form.testing.d.ts +1 -1
- package/src/app/shared/material/text/text-form.component.d.ts +1 -1
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +4 -1
- package/src/app/shared/named-filter/named-filter.service.d.ts +1 -1
- package/src/app/shared/pipes/maskito.pipe.d.ts +9 -0
- package/src/app/shared/pipes/ng-init.pipe.d.ts +1 -1
- package/src/app/shared/pipes/pipes.module.d.ts +5 -4
- package/src/app/shared/pipes/string.pipes.d.ts +6 -0
- package/src/app/shared/pipes/types.pipes.d.ts +7 -0
- package/src/app/shared/rx-state.module.d.ts +10 -0
- package/src/app/shared/services/job.utils.d.ts +1 -1
- package/src/app/shared/services/memory-entity-service.class.d.ts +1 -1
- package/src/app/shared/services/startable-observable-service.class.d.ts +3 -0
- package/src/app/shared/services/startable-service.class.d.ts +3 -0
- package/src/app/shared/shared.module.d.ts +4 -4
- package/src/app/shared/storage/storage-explorer.component.d.ts +1 -1
- package/src/app/shared/storage/storage-explorer.module.d.ts +3 -3
- package/src/app/shared/storage/storage.service.d.ts +1 -1
- package/src/app/shared/storage/storage.utils.d.ts +1 -1
- package/src/app/shared/testing/observable.test.d.ts +1 -1
- package/src/app/shared/testing/tests.page.d.ts +1 -1
- package/src/app/shared/toast/toast.testing.d.ts +1 -1
- package/src/app/shared/toolbar/modal-toolbar.d.ts +1 -1
- package/src/app/shared/toolbar/toolbar.d.ts +1 -1
- package/src/app/shared/toolbar/toolbar.module.d.ts +4 -3
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +1 -1
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +1 -1
- package/src/app/shared/upload-file/upload-file.component.d.ts +1 -1
- package/src/app/shared/upload-file/upload-file.model.d.ts +2 -2
- package/src/app/social/job/progression/job-progression.component.d.ts +17 -3
- package/src/app/social/job/progression/job-progression.icon.d.ts +24 -10
- package/src/app/social/job/progression/job-progression.list.d.ts +3 -3
- package/src/app/social/job/progression/job-progression.model.d.ts +0 -1
- package/src/app/social/job/testing/job-progression.testing.d.ts +3 -6
- package/src/app/social/message/message.form.d.ts +1 -1
- package/src/app/social/message/message.modal.d.ts +1 -1
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -3
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +1 -1
- package/src/app/social/user-event/testing/user-event.testing.d.ts +1 -1
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -1
- package/src/app/social/user-event/user-event.model.d.ts +2 -2
- package/src/app/social/user-event/user-event.module.d.ts +3 -2
- package/src/app/social/user-event/user-event.service.d.ts +1 -1
- package/src/assets/i18n/fr.json +2 -2
- package/src/assets/img/logo/logo-eis.png +0 -0
- package/src/assets/manifest.json +1 -1
- package/src/environments/environment.loader.d.ts +1 -1
- package/src/theme/_material.globals.scss +51 -19
- package/src/theme/_material.scss +35 -19
- package/src/theme/_mixins.scss +4 -4
- package/src/theme/_ngx-components.globals.scss +6 -1
- package/src/theme/_ngx-components.scss +262 -538
- package/src/theme/_ngx-components.table.scss +597 -0
- package/src/theme/_theme.scss +1 -0
- package/esm2020/public_api.mjs +0 -332
- package/esm2020/src/app/admin/services/filter/person.filter.mjs +0 -59
- package/esm2020/src/app/admin/services/person.service.mjs +0 -170
- package/esm2020/src/app/admin/services/validator/person.validator.mjs +0 -71
- package/esm2020/src/app/admin/users/users.mjs +0 -250
- package/esm2020/src/app/admin/users/users.module.mjs +0 -54
- package/esm2020/src/app/core/account/account.page.mjs +0 -319
- package/esm2020/src/app/core/account/new-token.modal.mjs +0 -121
- package/esm2020/src/app/core/account/token.table.mjs +0 -141
- package/esm2020/src/app/core/auth/auth.form.mjs +0 -131
- package/esm2020/src/app/core/auth/auth.modal.mjs +0 -72
- package/esm2020/src/app/core/core.testing.module.mjs +0 -86
- package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -107
- package/esm2020/src/app/core/form/entity/editor.class.mjs +0 -685
- package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -422
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +0 -696
- package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
- package/esm2020/src/app/core/form/form.class.mjs +0 -345
- package/esm2020/src/app/core/form/form.utils.mjs +0 -476
- package/esm2020/src/app/core/form/list/list.form.mjs +0 -222
- package/esm2020/src/app/core/form/properties/properties.form.mjs +0 -132
- package/esm2020/src/app/core/form/properties/properties.table.mjs +0 -267
- package/esm2020/src/app/core/form/properties/property.validator.mjs +0 -23
- package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +0 -90
- package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -70
- package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +0 -146
- package/esm2020/src/app/core/graphql/graphql.service.mjs +0 -776
- package/esm2020/src/app/core/graphql/graphql.utils.mjs +0 -117
- package/esm2020/src/app/core/home/home.mjs +0 -257
- package/esm2020/src/app/core/home/home.module.mjs +0 -48
- package/esm2020/src/app/core/icon/icon.component.mjs +0 -41
- package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +0 -344
- package/esm2020/src/app/core/menu/menu.component.mjs +0 -242
- package/esm2020/src/app/core/menu/menu.model.mjs +0 -247
- package/esm2020/src/app/core/menu/menu.module.mjs +0 -57
- package/esm2020/src/app/core/menu/menu.service.mjs +0 -660
- package/esm2020/src/app/core/menu/sub-menu-tab.directive.mjs +0 -98
- package/esm2020/src/app/core/menu/testing/menu.testing.mjs +0 -121
- package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +0 -27
- package/esm2020/src/app/core/peer/select-peer.modal.mjs +0 -183
- package/esm2020/src/app/core/register/register.form.mjs +0 -183
- package/esm2020/src/app/core/register/register.modal.mjs +0 -52
- package/esm2020/src/app/core/services/account.service.mjs +0 -1235
- package/esm2020/src/app/core/services/auth-guard.service.mjs +0 -71
- package/esm2020/src/app/core/services/base-entity-service.class.mjs +0 -468
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +0 -221
- package/esm2020/src/app/core/services/base58.mjs +0 -78
- package/esm2020/src/app/core/services/config.service.mjs +0 -357
- package/esm2020/src/app/core/services/crypto.service.mjs +0 -107
- package/esm2020/src/app/core/services/local-settings.service.mjs +0 -460
- package/esm2020/src/app/core/services/model/account.model.mjs +0 -147
- package/esm2020/src/app/core/services/model/config.model.mjs +0 -92
- package/esm2020/src/app/core/services/model/department.model.mjs +0 -30
- package/esm2020/src/app/core/services/model/entity.decorators.mjs +0 -97
- package/esm2020/src/app/core/services/model/entity.model.mjs +0 -225
- package/esm2020/src/app/core/services/model/peer.model.mjs +0 -68
- package/esm2020/src/app/core/services/model/person.model.mjs +0 -97
- package/esm2020/src/app/core/services/model/referential.model.mjs +0 -167
- package/esm2020/src/app/core/services/model/token.model.mjs +0 -52
- package/esm2020/src/app/core/services/model/tree-item-entity.model.mjs +0 -199
- package/esm2020/src/app/core/services/network.service.mjs +0 -607
- package/esm2020/src/app/core/services/network.types.mjs +0 -20
- package/esm2020/src/app/core/services/network.utils.mjs +0 -15
- package/esm2020/src/app/core/services/platform.service.mjs +0 -535
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +0 -428
- package/esm2020/src/app/core/services/storage/entity-store.class.mjs +0 -449
- package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +0 -23
- package/esm2020/src/app/core/services/testing/referential.validator.mjs +0 -45
- package/esm2020/src/app/core/services/validator/account.validator.mjs +0 -41
- package/esm2020/src/app/core/services/validator/base.validator.class.mjs +0 -47
- package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +0 -66
- package/esm2020/src/app/core/settings/settings.page.mjs +0 -312
- package/esm2020/src/app/core/table/actions-column.component.mjs +0 -102
- package/esm2020/src/app/core/table/async-table.class.mjs +0 -1698
- package/esm2020/src/app/core/table/entities-async-table-datasource.class.mjs +0 -384
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +0 -399
- package/esm2020/src/app/core/table/memory-table.class.mjs +0 -53
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +0 -43
- package/esm2020/src/app/core/table/table.class.mjs +0 -1733
- package/esm2020/src/app/core/table/table.model.mjs +0 -12
- package/esm2020/src/app/core/table/table.utils.mjs +0 -33
- package/esm2020/src/app/core/table/testing/table-validator.service.mjs +0 -27
- package/esm2020/src/app/core/table/testing/table.testing.mjs +0 -281
- package/esm2020/src/app/core/table/testing/table.testing.module.mjs +0 -38
- package/esm2020/src/app/shared/alerts.mjs +0 -239
- package/esm2020/src/app/shared/audio/audio.mjs +0 -248
- package/esm2020/src/app/shared/audio/audio.testing.mjs +0 -31
- package/esm2020/src/app/shared/capacitor/keyboard.mjs +0 -40
- package/esm2020/src/app/shared/capacitor/plugins.mjs +0 -9
- package/esm2020/src/app/shared/dates.mjs +0 -149
- package/esm2020/src/app/shared/debug/debug.component.mjs +0 -39
- package/esm2020/src/app/shared/directives/autofocus.directive.mjs +0 -93
- package/esm2020/src/app/shared/directives/autotitle.directive.mjs +0 -30
- package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +0 -53
- package/esm2020/src/app/shared/directives/ng-var.directive.mjs +0 -31
- package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +0 -59
- package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +0 -40
- package/esm2020/src/app/shared/events.mjs +0 -65
- package/esm2020/src/app/shared/file/csv.utils.mjs +0 -72
- package/esm2020/src/app/shared/file/file.service.mjs +0 -117
- package/esm2020/src/app/shared/file/file.utils.mjs +0 -113
- package/esm2020/src/app/shared/file/images.utils.mjs +0 -161
- package/esm2020/src/app/shared/file/uri.utils.mjs +0 -24
- package/esm2020/src/app/shared/form/field.component.mjs +0 -332
- package/esm2020/src/app/shared/form/loading-spinner.mjs +0 -36
- package/esm2020/src/app/shared/forms.mjs +0 -414
- package/esm2020/src/app/shared/functions.mjs +0 -482
- package/esm2020/src/app/shared/geolocation/geolocation.utils.mjs +0 -80
- package/esm2020/src/app/shared/gesture/gesture-config.mjs +0 -49
- package/esm2020/src/app/shared/graph/graph-colors.mjs +0 -212
- package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +0 -57
- package/esm2020/src/app/shared/help/help.modal.mjs +0 -53
- package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
- package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +0 -84
- package/esm2020/src/app/shared/http/http.utils.mjs +0 -56
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +0 -368
- package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -27
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -90
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -39
- package/esm2020/src/app/shared/image/image.service.mjs +0 -98
- package/esm2020/src/app/shared/inputs.mjs +0 -231
- package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
- package/esm2020/src/app/shared/logging/logger.model.mjs +0 -47
- package/esm2020/src/app/shared/logging/logging-service.class.mjs +0 -121
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -47
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -920
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -78
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -17
- package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -209
- package/esm2020/src/app/shared/material/badge/badge.directive.mjs +0 -199
- package/esm2020/src/app/shared/material/badge/badge.test.mjs +0 -41
- package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +0 -68
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +0 -253
- package/esm2020/src/app/shared/material/chips/chips.module.mjs +0 -76
- package/esm2020/src/app/shared/material/chips/material.chips.mjs +0 -696
- package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +0 -143
- package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +0 -91
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +0 -376
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +0 -385
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +0 -499
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -109
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -111
- package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -103
- package/esm2020/src/app/shared/material/duration/duration.module.mjs +0 -67
- package/esm2020/src/app/shared/material/duration/duration.utils.mjs +0 -36
- package/esm2020/src/app/shared/material/duration/material.duration.mjs +0 -257
- package/esm2020/src/app/shared/material/latlong/latlong.utils.mjs +0 -266
- package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +0 -382
- package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +0 -67
- package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -102
- package/esm2020/src/app/shared/material/material.module.mjs +0 -229
- package/esm2020/src/app/shared/material/material.testing.module.mjs +0 -179
- package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -98
- package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +0 -190
- package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +0 -17
- package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +0 -162
- package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -37
- package/esm2020/src/app/shared/material/numpad/numpad.model.mjs +0 -15
- package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -46
- package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -46
- package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -22
- package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +0 -344
- package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +0 -52
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -64
- package/esm2020/src/app/shared/material/text/testing/text-form.testing.mjs +0 -29
- package/esm2020/src/app/shared/material/text/text-form.component.mjs +0 -89
- package/esm2020/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -224
- package/esm2020/src/app/shared/named-filter/named-filter.model.mjs +0 -45
- package/esm2020/src/app/shared/named-filter/named-filter.service.mjs +0 -63
- package/esm2020/src/app/shared/observables.mjs +0 -104
- package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +0 -141
- package/esm2020/src/app/shared/pipes/colors.pipe.mjs +0 -25
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -48
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +0 -66
- package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +0 -27
- package/esm2020/src/app/shared/pipes/duration.pipe.mjs +0 -34
- package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +0 -62
- package/esm2020/src/app/shared/pipes/form.pipes.mjs +0 -187
- package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +0 -48
- package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +0 -46
- package/esm2020/src/app/shared/pipes/math.pipes.mjs +0 -59
- package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +0 -21
- package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +0 -30
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +0 -239
- package/esm2020/src/app/shared/pipes/property.pipes.mjs +0 -93
- package/esm2020/src/app/shared/pipes/string.pipes.mjs +0 -121
- package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +0 -43
- package/esm2020/src/app/shared/pipes/types.pipes.mjs +0 -45
- package/esm2020/src/app/shared/platforms.mjs +0 -43
- package/esm2020/src/app/shared/services/job.utils.mjs +0 -92
- package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +0 -339
- package/esm2020/src/app/shared/services/progress-bar.service.mjs +0 -33
- package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +0 -118
- package/esm2020/src/app/shared/services/startable-service.class.mjs +0 -110
- package/esm2020/src/app/shared/services/translate-context.service.mjs +0 -103
- package/esm2020/src/app/shared/services.mjs +0 -62
- package/esm2020/src/app/shared/shared-routing.module.mjs +0 -71
- package/esm2020/src/app/shared/shared.module.mjs +0 -229
- package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +0 -268
- package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +0 -47
- package/esm2020/src/app/shared/storage/storage.service.mjs +0 -132
- package/esm2020/src/app/shared/testing/observable.test.mjs +0 -95
- package/esm2020/src/app/shared/testing/tests.page.mjs +0 -33
- package/esm2020/src/app/shared/toast/toast.testing.mjs +0 -51
- package/esm2020/src/app/shared/toast/toasts.mjs +0 -144
- package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +0 -58
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +0 -251
- package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +0 -53
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -58
- package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -97
- package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +0 -204
- package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +0 -20
- package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +0 -104
- package/esm2020/src/app/shared/validator/validators.mjs +0 -580
- package/esm2020/src/app/shared/version/versions.mjs +0 -81
- package/esm2020/src/app/social/job/job.module.mjs +0 -42
- package/esm2020/src/app/social/job/progression/job-progression.component.mjs +0 -20
- package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +0 -216
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +0 -43
- package/esm2020/src/app/social/job/progression/job-progression.model.mjs +0 -23
- package/esm2020/src/app/social/job/progression/job-progression.service.mjs +0 -71
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +0 -52
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +0 -55
- package/esm2020/src/app/social/message/message.form.mjs +0 -136
- package/esm2020/src/app/social/message/message.modal.mjs +0 -99
- package/esm2020/src/app/social/message/message.model.mjs +0 -67
- package/esm2020/src/app/social/message/message.service.mjs +0 -105
- package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -114
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -246
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +0 -227
- package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -112
- package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -111
- package/esm2020/src/app/social/user-event/user-event.module.mjs +0 -39
- package/esm2020/src/app/social/user-event/user-event.service.mjs +0 -501
- package/esm2020/src/environments/environment.class.mjs +0 -5
- package/esm2020/src/environments/environment.loader.mjs +0 -79
- package/esm2020/src/environments/environment.mjs +0 -97
- package/fesm2015/sumaris-net.ngx-components.mjs +0 -41105
- package/fesm2015/sumaris-net.ngx-components.mjs.map +0 -1
- package/fesm2020/sumaris-net.ngx-components.mjs.map +0 -1
- package/resources/README.md +0 -7
- /package/{esm2020 → esm2022}/src/app/core/services/config/core.config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/history.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/model.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/core/services/model/settings.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/debug/debug-service.class.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/focusable.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/gesture/hammer.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/image/image.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/logging/log-level.model.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/logging/logging-service.config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/material/material.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/modules.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/services/entity-service.class.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/services/validator-service.class.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/shared/types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/social/social.errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/app/social/user-event/user-event.model.mjs +0 -0
- /package/{esm2020 → esm2022}/sumaris-net.ngx-components.mjs +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { getPropertyByPath, isEmptyArray, isNil, isNilOrBlank, isNotNil, joinPropertiesPath } from '../../../shared/functions';
|
|
2
|
+
import { fromDateISOString, toDateISOString } from '../../../shared/dates';
|
|
3
|
+
import { TreeItemEntityUtils } from './tree-item-entity.model';
|
|
4
|
+
export function entityToString(obj, properties) {
|
|
5
|
+
return obj && obj.id && joinPropertiesPath(obj, properties || ['name']) || undefined;
|
|
6
|
+
}
|
|
7
|
+
//@dynamic
|
|
8
|
+
export class Entity {
|
|
9
|
+
// The GraphQL typename (injected by @EntityClass())
|
|
10
|
+
static TYPENAME;
|
|
11
|
+
id = null;
|
|
12
|
+
updateDate = null;
|
|
13
|
+
__typename;
|
|
14
|
+
constructor(__typename) {
|
|
15
|
+
this.__typename = __typename || null;
|
|
16
|
+
}
|
|
17
|
+
clone(opts) {
|
|
18
|
+
const target = new this.constructor();
|
|
19
|
+
this.copy(target, opts);
|
|
20
|
+
return target;
|
|
21
|
+
}
|
|
22
|
+
copy(target, opts) {
|
|
23
|
+
target.fromObject(this.asObject(opts), opts);
|
|
24
|
+
}
|
|
25
|
+
asObject(opts) {
|
|
26
|
+
const target = Object.assign({}, this); //= {...this};
|
|
27
|
+
if (!opts || opts.keepTypename !== true)
|
|
28
|
+
delete target.__typename;
|
|
29
|
+
target.updateDate = toDateISOString(this.updateDate);
|
|
30
|
+
if (target.id == null || (opts && opts.keepLocalId === false && target.id < 0)) {
|
|
31
|
+
delete target.id;
|
|
32
|
+
delete target.updateDate; // Make to sens to keep updateDate of a local entity to save
|
|
33
|
+
}
|
|
34
|
+
return target;
|
|
35
|
+
}
|
|
36
|
+
fromObject(source, opts) {
|
|
37
|
+
this.id = (source.id || source.id === 0) ? source.id : undefined;
|
|
38
|
+
this.updateDate = fromDateISOString(source.updateDate);
|
|
39
|
+
this.__typename = source.__typename || this.__typename; // Keep original type (can be set in constructor)
|
|
40
|
+
}
|
|
41
|
+
equals(other) {
|
|
42
|
+
return other && this.id === other.id;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated use standard instanceof instead
|
|
47
|
+
* @param obj
|
|
48
|
+
* @param constructor
|
|
49
|
+
*/
|
|
50
|
+
export function isInstanceOf(obj, constructor) {
|
|
51
|
+
if (!obj)
|
|
52
|
+
return false;
|
|
53
|
+
return obj instanceof constructor;
|
|
54
|
+
}
|
|
55
|
+
// @dynamic
|
|
56
|
+
export class EntityUtils {
|
|
57
|
+
// Check that the object has a NOT nil attribute (ID by default)
|
|
58
|
+
static isEntity(obj) {
|
|
59
|
+
return isNotNil(obj?.__typename) && (typeof obj.fromObject === 'function') && (typeof obj.asObject === 'function');
|
|
60
|
+
}
|
|
61
|
+
// Check that the object has a NOT nil attribute (ID by default)
|
|
62
|
+
static isNotEmpty(obj, checkedAttribute) {
|
|
63
|
+
return !!obj && obj[checkedAttribute] !== null && obj[checkedAttribute] !== undefined;
|
|
64
|
+
}
|
|
65
|
+
static isEmpty(obj, checkedAttribute) {
|
|
66
|
+
return !obj || obj[checkedAttribute] === null || obj[checkedAttribute] === undefined;
|
|
67
|
+
}
|
|
68
|
+
static equals(o1, o2, checkAttribute) {
|
|
69
|
+
checkAttribute = checkAttribute || 'id';
|
|
70
|
+
return (o1 === o2) || (isNil(o1) && isNil(o2)) || (o1 && o2 && o1[checkAttribute] === o2[checkAttribute]);
|
|
71
|
+
}
|
|
72
|
+
static getPropertyByPath = getPropertyByPath;
|
|
73
|
+
static getArrayAsMap(source) {
|
|
74
|
+
return (source || []).reduce((res, item) => {
|
|
75
|
+
res[item.key] = item.value;
|
|
76
|
+
return res;
|
|
77
|
+
}, {});
|
|
78
|
+
}
|
|
79
|
+
static getMapAsArray(source) {
|
|
80
|
+
if (Array.isArray(source))
|
|
81
|
+
return source;
|
|
82
|
+
return Object.getOwnPropertyNames(source || {})
|
|
83
|
+
.map(key => ({
|
|
84
|
+
key,
|
|
85
|
+
value: source[key]
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
static getPropertyArrayAsObject(source) {
|
|
89
|
+
return (source || []).reduce((res, item) => {
|
|
90
|
+
res[item.key] = item.value;
|
|
91
|
+
return res;
|
|
92
|
+
}, {});
|
|
93
|
+
}
|
|
94
|
+
static copyIdAndUpdateDate(source, target) {
|
|
95
|
+
if (!source)
|
|
96
|
+
return;
|
|
97
|
+
// Update (id and updateDate)
|
|
98
|
+
target.id = isNotNil(source.id) ? source.id : target.id;
|
|
99
|
+
target.updateDate = fromDateISOString(source.updateDate) || target.updateDate;
|
|
100
|
+
// Update creation Date, if exists
|
|
101
|
+
if (source['creationDate']) {
|
|
102
|
+
target['creationDate'] = fromDateISOString(source['creationDate']);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
static async fillLocalIds(items, sequenceFactory) {
|
|
106
|
+
const newItems = (items || []).filter(item => isNil(item.id) || item.id === 0);
|
|
107
|
+
if (isEmptyArray(newItems))
|
|
108
|
+
return;
|
|
109
|
+
// Get the sequence
|
|
110
|
+
let currentId = await sequenceFactory(newItems[0], newItems.length) + 1;
|
|
111
|
+
// Take the min (sequence, id), in case the sequence is corrupted
|
|
112
|
+
currentId = items.filter(item => isNotNil(item.id) && item.id < 0).reduce((res, item) => Math.min(res, item.id), currentId);
|
|
113
|
+
newItems.forEach(item => item.id = --currentId);
|
|
114
|
+
}
|
|
115
|
+
static cleanIdAndUpdateDate(source) {
|
|
116
|
+
if (!source)
|
|
117
|
+
return; // Skip
|
|
118
|
+
source.id = null;
|
|
119
|
+
source.updateDate = null;
|
|
120
|
+
}
|
|
121
|
+
static cleanIdsAndUpdateDates(items) {
|
|
122
|
+
(items || []).forEach(EntityUtils.cleanIdAndUpdateDate);
|
|
123
|
+
}
|
|
124
|
+
static sort(data, sortBy, sortDirection) {
|
|
125
|
+
if (!data || data.length <= 1 || !sortBy)
|
|
126
|
+
return data;
|
|
127
|
+
return data.sort(this.sortComparator(sortBy, sortDirection));
|
|
128
|
+
}
|
|
129
|
+
static sortComparator(sortBy, sortDirection) {
|
|
130
|
+
const after = (!sortDirection || sortDirection === 'asc') ? 1 : -1;
|
|
131
|
+
const property = sortBy || 'id';
|
|
132
|
+
return (a, b) => {
|
|
133
|
+
const valueA = EntityUtils.getPropertyByPath(a, property);
|
|
134
|
+
const valueB = EntityUtils.getPropertyByPath(b, property);
|
|
135
|
+
return EntityUtils.compare(valueA, valueB, after);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
static compare(value1, value2, direction, checkAttribute) {
|
|
139
|
+
checkAttribute = checkAttribute || 'id';
|
|
140
|
+
if (EntityUtils.isNotEmpty(value1, checkAttribute) && EntityUtils.isNotEmpty(value2, checkAttribute)) {
|
|
141
|
+
return EntityUtils.equals(value1, value2, checkAttribute) ? 0 : (value1[checkAttribute] > value2[checkAttribute] ? direction : (-1 * direction));
|
|
142
|
+
}
|
|
143
|
+
return value1 === value2 ? 0 : (value1 > value2 ? direction : (-1 * direction));
|
|
144
|
+
}
|
|
145
|
+
static compareValue(value1, value2, direction) {
|
|
146
|
+
return value1 === value2 ? 0 : (value1 > value2 ? direction : (-1 * direction));
|
|
147
|
+
}
|
|
148
|
+
static filter(data, searchAttribute, searchText) {
|
|
149
|
+
const filterFn = this.searchTextFilter(searchAttribute, searchText);
|
|
150
|
+
return data.filter(filterFn);
|
|
151
|
+
}
|
|
152
|
+
static searchTextFilter(searchAttribute, searchText) {
|
|
153
|
+
if (isNilOrBlank(searchAttribute) || isNilOrBlank(searchText))
|
|
154
|
+
return undefined; // filter not need
|
|
155
|
+
const searchRegexp = searchText
|
|
156
|
+
// Escape special characters
|
|
157
|
+
.replace(/[-\/\\^$+.()|[\]{}]/g, '\\$&')
|
|
158
|
+
// Interpret * as any text
|
|
159
|
+
.replace(/[*]+/g, '.*')
|
|
160
|
+
// Interpret ? as one character
|
|
161
|
+
.replace(/[?]/g, '.');
|
|
162
|
+
if (searchRegexp === '.*')
|
|
163
|
+
return undefined; // filter not need
|
|
164
|
+
const flags = 'i'; // don't use global regex search
|
|
165
|
+
const asPrefixPattern = '^' + searchRegexp;
|
|
166
|
+
const anyMatchPattern = '^.*' + searchRegexp;
|
|
167
|
+
// Only one search attributes
|
|
168
|
+
if (typeof searchAttribute === 'string') {
|
|
169
|
+
const isSimplePath = !searchAttribute || searchAttribute.indexOf('.') === -1;
|
|
170
|
+
const searchAsPrefix = searchAttribute.toLowerCase().endsWith('label') || searchAttribute.toLowerCase().endsWith('code');
|
|
171
|
+
const regexp = new RegExp(searchAsPrefix && asPrefixPattern || anyMatchPattern, flags);
|
|
172
|
+
if (isSimplePath) {
|
|
173
|
+
return a => regexp.test(a[searchAttribute]);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
return a => regexp.test(EntityUtils.getPropertyByPath(a, searchAttribute));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// many search attributes
|
|
180
|
+
else {
|
|
181
|
+
const regexps = searchAttribute.map(path => {
|
|
182
|
+
const searchAsPrefix = path.toLowerCase().endsWith('label') || path.toLowerCase().endsWith('code');
|
|
183
|
+
return new RegExp(searchAsPrefix && asPrefixPattern || anyMatchPattern, flags);
|
|
184
|
+
});
|
|
185
|
+
return a => searchAttribute.findIndex((path, index) => regexps[index].test(EntityUtils.getPropertyByPath(a, path))) !== -1;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Transform a batch entity tree into a array list. This method keep links parent/children.
|
|
190
|
+
*
|
|
191
|
+
* Method used to find batch without id (e.g. before local storage)
|
|
192
|
+
*
|
|
193
|
+
* @param source
|
|
194
|
+
*/
|
|
195
|
+
static treeToArray = TreeItemEntityUtils.treeToArray;
|
|
196
|
+
static listOfTreeToArray = TreeItemEntityUtils.listOfTreeToArray;
|
|
197
|
+
/**
|
|
198
|
+
* Fill parent attribute, of all children found in the tree
|
|
199
|
+
*
|
|
200
|
+
* @param source
|
|
201
|
+
*/
|
|
202
|
+
static treeFillParent = TreeItemEntityUtils.treeFillParent;
|
|
203
|
+
static isLocal(entity) {
|
|
204
|
+
return entity && (isNotNil(entity.id) && +entity.id < 0);
|
|
205
|
+
}
|
|
206
|
+
static isRemote(entity) {
|
|
207
|
+
return entity && !EntityUtils.isLocal(entity);
|
|
208
|
+
}
|
|
209
|
+
static isLocalId(id) {
|
|
210
|
+
return isNotNil(id) && +id < 0;
|
|
211
|
+
}
|
|
212
|
+
static isRemoteId(id) {
|
|
213
|
+
return isNotNil(id) && +id >= 0;
|
|
214
|
+
}
|
|
215
|
+
static getId(entity) {
|
|
216
|
+
return entity.id;
|
|
217
|
+
}
|
|
218
|
+
static hasId(entity) {
|
|
219
|
+
return isNotNil(entity.id);
|
|
220
|
+
}
|
|
221
|
+
static collectById(entities) {
|
|
222
|
+
return (entities || []).map(e => e.id);
|
|
223
|
+
}
|
|
224
|
+
static arrayDistinctFilterFn(item, index, values) {
|
|
225
|
+
return values.findIndex(e => e.id === item.id) === index;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJL0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTS9ELE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBc0IsRUFBRSxVQUFxQjtJQUMxRSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUN2RixDQUFDO0FBd0JELFVBQVU7QUFDVixNQUFNLE9BQWdCLE1BQU07SUFPMUIsb0RBQW9EO0lBQ3BELE1BQU0sQ0FBQyxRQUFRLENBQVM7SUFFeEIsRUFBRSxHQUFPLElBQUksQ0FBQztJQUNkLFVBQVUsR0FBVyxJQUFJLENBQUM7SUFDMUIsVUFBVSxDQUFTO0lBRW5CLFlBQVksVUFBbUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBYztRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFLLElBQUksQ0FBQyxXQUFtQixFQUFPLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFT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LE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBeUQsTUFBUztRQUM1RSxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQXFDLFFBQWE7UUFDbEUsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBOEIsSUFBTyxFQUFFLEtBQWEsRUFBRSxNQUFXO1FBQzNGLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQztJQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGdldFByb3BlcnR5QnlQYXRoLCBpc0VtcHR5QXJyYXksIGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBqb2luUHJvcGVydGllc1BhdGggfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZpbHRlckZuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IE9iamVjdE1hcCwgT2JqZWN0TWFwRW50cnksIFByb3BlcnRpZXNBcnJheSwgUHJvcGVydGllc01hcCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBTdG9yZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgZnJvbURhdGVJU09TdHJpbmcsIHRvRGF0ZUlTT1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQgeyBUcmVlSXRlbUVudGl0eVV0aWxzIH0gZnJvbSAnLi90cmVlLWl0ZW0tZW50aXR5Lm1vZGVsJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENsb25lYWJsZTxUPiB7XG4gIGNsb25lKCk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb1N0cmluZyhvYmo6IEVudGl0eTxhbnk+IHwgYW55LCBwcm9wZXJ0aWVzPzogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb2JqICYmIG9iai5pZCAmJiBqb2luUHJvcGVydGllc1BhdGgob2JqLCBwcm9wZXJ0aWVzIHx8IFsnbmFtZSddKSB8fCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QXNPYmplY3RPcHRpb25zIHtcbiAgbWluaWZ5PzogYm9vbGVhbjtcbiAga2VlcFR5cGVuYW1lPzogYm9vbGVhbjsgLy8gdHJ1ZSBieSBkZWZhdWx0XG4gIGtlZXBMb2NhbElkPzogYm9vbGVhbjsgLy8gdHJ1ZSBieSBkZWZhdWx0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudGl0eTxULFxuICBJRCA9IG51bWJlcixcbiAgQU8gZXh0ZW5kcyBFbnRpdHlBc09iamVjdE9wdGlvbnMgPSBFbnRpdHlBc09iamVjdE9wdGlvbnMsXG4gIEZPID0gYW55XG4gID5cbiAgZXh0ZW5kcyBDbG9uZWFibGU8VD4ge1xuICBpZDogSUQ7XG4gIHVwZGF0ZURhdGU6IE1vbWVudDtcbiAgX190eXBlbmFtZTogc3RyaW5nO1xuICBlcXVhbHMob3RoZXI6IFQpOiBib29sZWFuO1xuICBjbG9uZShvcHRzPzogQU8gJiBGTyk6IFQ7XG4gIGNvcHkodGFyZ2V0OiBULCBvcHRzPzogQU8gJiBGTyk7XG4gIGFzT2JqZWN0KG9wdHM/OiBBTyk6IGFueTtcbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IEZPKTtcbn1cblxuLy9AZHluYW1pY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eTxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRCwgQU8sIEZPPixcbiAgSUQgPSBudW1iZXIsXG4gIEFPIGV4dGVuZHMgRW50aXR5QXNPYmplY3RPcHRpb25zID0gRW50aXR5QXNPYmplY3RPcHRpb25zLFxuICBGTyA9IGFueT5cbiAgaW1wbGVtZW50cyBJRW50aXR5PFQsIElELCBBTywgRk8+IHtcblxuICAvLyBUaGUgR3JhcGhRTCB0eXBlbmFtZSAoaW5qZWN0ZWQgYnkgQEVudGl0eUNsYXNzKCkpXG4gIHN0YXRpYyBUWVBFTkFNRTogc3RyaW5nO1xuXG4gIGlkOiBJRCA9IG51bGw7XG4gIHVwZGF0ZURhdGU6IE1vbWVudCA9IG51bGw7XG4gIF9fdHlwZW5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfX3R5cGVuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5fX3R5cGVuYW1lID0gX190eXBlbmFtZSB8fCBudWxsO1xuICB9XG5cbiAgY2xvbmUob3B0cz86IEFPICYgRk8pOiBUIHtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KSgpIGFzIFQ7XG4gICAgdGhpcy5jb3B5KHRhcmdldCwgb3B0cyk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGNvcHkodGFyZ2V0OiBULCBvcHRzPzogQU8gJiBGTykge1xuICAgIHRhcmdldC5mcm9tT2JqZWN0KHRoaXMuYXNPYmplY3Qob3B0cyksIG9wdHMpO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEFPKTogU3RvcmVPYmplY3Qge1xuICAgIGNvbnN0IHRhcmdldDogYW55ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7IC8vPSB7Li4udGhpc307XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMua2VlcFR5cGVuYW1lICE9PSB0cnVlKSBkZWxldGUgdGFyZ2V0Ll9fdHlwZW5hbWU7XG4gICAgdGFyZ2V0LnVwZGF0ZURhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy51cGRhdGVEYXRlKTtcbiAgICBpZiAodGFyZ2V0LmlkID09IG51bGwgfHwgKG9wdHMgJiYgb3B0cy5rZWVwTG9jYWxJZCA9PT0gZmFsc2UgJiYgdGFyZ2V0LmlkIDwgMCkpIHtcbiAgICAgIGRlbGV0ZSB0YXJnZXQuaWQ7XG4gICAgICBkZWxldGUgdGFyZ2V0LnVwZGF0ZURhdGU7IC8vIE1ha2UgdG8gc2VucyB0byBrZWVwIHVwZGF0ZURhdGUgb2YgYSBsb2NhbCBlbnRpdHkgdG8gc2F2ZVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IEZPKSB7XG4gICAgdGhpcy5pZCA9IChzb3VyY2UuaWQgfHwgc291cmNlLmlkID09PSAwKSA/IHNvdXJjZS5pZCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVwZGF0ZURhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2UudXBkYXRlRGF0ZSk7XG4gICAgdGhpcy5fX3R5cGVuYW1lID0gc291cmNlLl9fdHlwZW5hbWUgfHwgdGhpcy5fX3R5cGVuYW1lOyAvLyBLZWVwIG9yaWdpbmFsIHR5cGUgKGNhbiBiZSBzZXQgaW4gY29uc3RydWN0b3IpXG4gIH1cblxuICBlcXVhbHMob3RoZXI6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3RoZXIgJiYgdGhpcy5pZCA9PT0gb3RoZXIuaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Ugc3RhbmRhcmQgaW5zdGFuY2VvZiBpbnN0ZWFkXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5zdGFuY2VPZjxUPihvYmo6IGFueSwgY29uc3RydWN0b3I6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBvYmogaXMgVCB7XG4gIGlmICghb2JqKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yO1xufVxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eVV0aWxzIHtcblxuICAvLyBDaGVjayB0aGF0IHRoZSBvYmplY3QgaGFzIGEgTk9UIG5pbCBhdHRyaWJ1dGUgKElEIGJ5IGRlZmF1bHQpXG4gIHN0YXRpYyBpc0VudGl0eTxUIGV4dGVuZHMgSUVudGl0eTxhbnk+PihvYmo6IFR8YW55KTogb2JqIGlzIFQge1xuICAgIHJldHVybiBpc05vdE5pbChvYmo/Ll9fdHlwZW5hbWUpICYmICh0eXBlb2Ygb2JqLmZyb21PYmplY3QgPT09ICdmdW5jdGlvbicpICYmICh0eXBlb2Ygb2JqLmFzT2JqZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoYXQgdGhlIG9iamVjdCBoYXMgYSBOT1QgbmlsIGF0dHJpYnV0ZSAoSUQgYnkgZGVmYXVsdClcbiAgc3RhdGljIGlzTm90RW1wdHk8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4ob2JqOiBULCBjaGVja2VkQXR0cmlidXRlOiBrZXlvZiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhb2JqICYmIG9ialtjaGVja2VkQXR0cmlidXRlXSAhPT0gbnVsbCAmJiBvYmpbY2hlY2tlZEF0dHJpYnV0ZV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBpc0VtcHR5PFQgZXh0ZW5kcyBJRW50aXR5PGFueT4gfCBhbnk+KG9iajogVCwgY2hlY2tlZEF0dHJpYnV0ZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhb2JqIHx8IG9ialtjaGVja2VkQXR0cmlidXRlXSA9PT0gbnVsbCB8fCBvYmpbY2hlY2tlZEF0dHJpYnV0ZV0gPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHM8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4obzE6IFQsIG8yOiBULCBjaGVja0F0dHJpYnV0ZT86IGtleW9mIFQpOiBib29sZWFuIHtcbiAgICBjaGVja0F0dHJpYnV0ZSA9IGNoZWNrQXR0cmlidXRlIHx8ICdpZCcgYXMga2V5b2YgVDtcbiAgICByZXR1cm4gKG8xID09PSBvMikgfHwgKGlzTmlsKG8xKSAmJiBpc05pbChvMikpICB8fCAobzEgJiYgbzIgJiYgbzFbY2hlY2tBdHRyaWJ1dGVdID09PSBvMltjaGVja0F0dHJpYnV0ZV0pO1xuICB9XG5cbiAgc3RhdGljIGdldFByb3BlcnR5QnlQYXRoID0gZ2V0UHJvcGVydHlCeVBhdGg7XG5cbiAgc3RhdGljIGdldEFycmF5QXNNYXA8VCA9IGFueT4oc291cmNlPzogT2JqZWN0TWFwRW50cnk8VD5bXSk6IE9iamVjdE1hcDxUPiB7XG4gICAgcmV0dXJuIChzb3VyY2UgfHwgW10pLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICByZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwge30pO1xuICB9XG5cbiAgc3RhdGljIGdldE1hcEFzQXJyYXk8VCA9IGFueT4oc291cmNlPzogT2JqZWN0TWFwPFQ+KTogT2JqZWN0TWFwRW50cnk8VD5bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkgcmV0dXJuIHNvdXJjZTtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlIHx8IHt9KVxuICAgICAgLm1hcChrZXkgPT4gKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdmFsdWU6IHNvdXJjZVtrZXldXG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eUFycmF5QXNPYmplY3Qoc291cmNlPzogUHJvcGVydGllc0FycmF5KTogUHJvcGVydGllc01hcCB7XG4gICAgcmV0dXJuIChzb3VyY2UgfHwgW10pLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICByZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwge30pO1xuICB9XG5cbiAgc3RhdGljIGNvcHlJZEFuZFVwZGF0ZURhdGU8VCBleHRlbmRzIEVudGl0eTxhbnksIGFueSwgYW55Pj4oc291cmNlOiBULCB0YXJnZXQ6IFQpIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuO1xuXG4gICAgLy8gVXBkYXRlIChpZCBhbmQgdXBkYXRlRGF0ZSlcbiAgICB0YXJnZXQuaWQgPSBpc05vdE5pbChzb3VyY2UuaWQpID8gc291cmNlLmlkIDogdGFyZ2V0LmlkO1xuICAgIHRhcmdldC51cGRhdGVEYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLnVwZGF0ZURhdGUpIHx8IHRhcmdldC51cGRhdGVEYXRlO1xuXG4gICAgLy8gVXBkYXRlIGNyZWF0aW9uIERhdGUsIGlmIGV4aXN0c1xuICAgIGlmIChzb3VyY2VbJ2NyZWF0aW9uRGF0ZSddKSB7XG4gICAgICB0YXJnZXRbJ2NyZWF0aW9uRGF0ZSddID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlWydjcmVhdGlvbkRhdGUnXSk7XG4gICAgfVxuICB9XG5cblxuICBzdGF0aWMgYXN5bmMgZmlsbExvY2FsSWRzPFQgZXh0ZW5kcyBJRW50aXR5PFQ+PihpdGVtczogVFtdLCBzZXF1ZW5jZUZhY3Rvcnk6IChmaXJzdEVudGl0eTogVCwgaW5jcmVtZW50U2l6ZTogbnVtYmVyKSA9PiBQcm9taXNlPG51bWJlcj4pIHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IChpdGVtcyB8fCBbXSkuZmlsdGVyKGl0ZW0gPT4gaXNOaWwoaXRlbS5pZCkgfHwgaXRlbS5pZCA9PT0gMCk7XG4gICAgaWYgKGlzRW1wdHlBcnJheShuZXdJdGVtcykpIHJldHVybjtcbiAgICAvLyBHZXQgdGhlIHNlcXVlbmNlXG4gICAgbGV0IGN1cnJlbnRJZCA9IGF3YWl0IHNlcXVlbmNlRmFjdG9yeShuZXdJdGVtc1swXSwgbmV3SXRlbXMubGVuZ3RoKSArIDE7XG4gICAgLy8gVGFrZSB0aGUgbWluIChzZXF1ZW5jZSwgaWQpLCBpbiBjYXNlIHRoZSBzZXF1ZW5jZSBpcyBjb3JydXB0ZWRcbiAgICBjdXJyZW50SWQgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpc05vdE5pbChpdGVtLmlkKSAmJiBpdGVtLmlkIDwgMCkucmVkdWNlKChyZXMsIGl0ZW0pID0+IE1hdGgubWluKHJlcywgaXRlbS5pZCksIGN1cnJlbnRJZCk7XG4gICAgbmV3SXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaWQgPSAtLWN1cnJlbnRJZCk7XG4gIH1cblxuICBzdGF0aWMgY2xlYW5JZEFuZFVwZGF0ZURhdGU8VCBleHRlbmRzIElFbnRpdHk8VD4+KHNvdXJjZTogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47IC8vIFNraXBcbiAgICBzb3VyY2UuaWQgPSBudWxsO1xuICAgIHNvdXJjZS51cGRhdGVEYXRlID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhbklkc0FuZFVwZGF0ZURhdGVzPFQgZXh0ZW5kcyBJRW50aXR5PFQ+PihpdGVtczogVFtdKSB7XG4gICAgKGl0ZW1zIHx8IFtdKS5mb3JFYWNoKEVudGl0eVV0aWxzLmNsZWFuSWRBbmRVcGRhdGVEYXRlKTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0PFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55PihkYXRhOiBUW10sIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IHN0cmluZyk6IFRbXSB7XG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoIDw9IDEgfHwgIXNvcnRCeSkgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIGRhdGEuc29ydCh0aGlzLnNvcnRDb21wYXJhdG9yKHNvcnRCeSwgc29ydERpcmVjdGlvbikpO1xuICB9XG5cbiAgc3RhdGljIHNvcnRDb21wYXJhdG9yPFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55Pihzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBzdHJpbmcpOiAoYTogVCwgYjogVCkgPT4gbnVtYmVyIHtcbiAgICBjb25zdCBhZnRlciA9ICghc29ydERpcmVjdGlvbiB8fCBzb3J0RGlyZWN0aW9uID09PSAnYXNjJykgPyAxIDogLTE7XG4gICAgY29uc3QgcHJvcGVydHkgPSBzb3J0QnkgfHwgJ2lkJztcbiAgICByZXR1cm4gKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlQSA9IEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGEsIHByb3BlcnR5KTtcbiAgICAgIGNvbnN0IHZhbHVlQiA9IEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGIsIHByb3BlcnR5KTtcbiAgICAgIHJldHVybiBFbnRpdHlVdGlscy5jb21wYXJlKHZhbHVlQSwgdmFsdWVCLCBhZnRlcik7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlPFQgZXh0ZW5kcyBJRW50aXR5PGFueT4+KHZhbHVlMTogVCwgdmFsdWUyOiBULCBkaXJlY3Rpb246IDEgfCAtMSwgY2hlY2tBdHRyaWJ1dGU/OiBrZXlvZiBUKTogbnVtYmVyIHtcbiAgICBjaGVja0F0dHJpYnV0ZSA9IGNoZWNrQXR0cmlidXRlIHx8ICdpZCc7XG4gICAgaWYgKEVudGl0eVV0aWxzLmlzTm90RW1wdHkodmFsdWUxLCBjaGVja0F0dHJpYnV0ZSkgJiYgRW50aXR5VXRpbHMuaXNOb3RFbXB0eSh2YWx1ZTIsIGNoZWNrQXR0cmlidXRlKSkge1xuICAgICAgcmV0dXJuIEVudGl0eVV0aWxzLmVxdWFscyh2YWx1ZTEsIHZhbHVlMiwgY2hlY2tBdHRyaWJ1dGUpID8gMCA6ICh2YWx1ZTFbY2hlY2tBdHRyaWJ1dGVdID4gdmFsdWUyW2NoZWNrQXR0cmlidXRlXSA/IGRpcmVjdGlvbiA6ICgtMSAqIGRpcmVjdGlvbikpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTIgPyAwIDogKHZhbHVlMSA+IHZhbHVlMiA/IGRpcmVjdGlvbiA6ICgtMSAqIGRpcmVjdGlvbikpO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVWYWx1ZTxUPih2YWx1ZTE6IFQsIHZhbHVlMjogVCwgZGlyZWN0aW9uOiAxIHwgLTEpOiBudW1iZXIge1xuICAgIHJldHVybiB2YWx1ZTEgPT09IHZhbHVlMiA/IDAgOiAodmFsdWUxID4gdmFsdWUyID8gZGlyZWN0aW9uIDogKC0xICogZGlyZWN0aW9uKSk7XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyPFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55PihkYXRhOiBUW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RyaW5nKTogVFtdIHtcbiAgICBjb25zdCBmaWx0ZXJGbiA9IHRoaXMuc2VhcmNoVGV4dEZpbHRlcihzZWFyY2hBdHRyaWJ1dGUsIHNlYXJjaFRleHQpO1xuICAgIHJldHVybiBkYXRhLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICBzdGF0aWMgc2VhcmNoVGV4dEZpbHRlcjxUIGV4dGVuZHMgSUVudGl0eTxUPiB8IGFueT4oc2VhcmNoQXR0cmlidXRlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RyaW5nKTogRmlsdGVyRm48VD4ge1xuICAgIGlmIChpc05pbE9yQmxhbmsoc2VhcmNoQXR0cmlidXRlKSB8fCBpc05pbE9yQmxhbmsoc2VhcmNoVGV4dCkpIHJldHVybiB1bmRlZmluZWQ7IC8vIGZpbHRlciBub3QgbmVlZFxuXG4gICAgY29uc3Qgc2VhcmNoUmVnZXhwID0gc2VhcmNoVGV4dFxuICAgICAgLy8gRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgICAgLnJlcGxhY2UoL1stXFwvXFxcXF4kKy4oKXxbXFxde31dL2csICdcXFxcJCYnKVxuICAgICAgLy8gSW50ZXJwcmV0ICogYXMgYW55IHRleHRcbiAgICAgIC5yZXBsYWNlKC9bKl0rL2csICcuKicpXG4gICAgICAvLyBJbnRlcnByZXQgPyBhcyBvbmUgY2hhcmFjdGVyXG4gICAgICAucmVwbGFjZSgvWz9dL2csICcuJyk7XG4gICAgaWYgKHNlYXJjaFJlZ2V4cCA9PT0gJy4qJykgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZmlsdGVyIG5vdCBuZWVkXG5cbiAgICBjb25zdCBmbGFncyA9ICdpJzsgLy8gZG9uJ3QgdXNlIGdsb2JhbCByZWdleCBzZWFyY2hcbiAgICBjb25zdCBhc1ByZWZpeFBhdHRlcm4gPSAnXicgKyBzZWFyY2hSZWdleHA7XG4gICAgY29uc3QgYW55TWF0Y2hQYXR0ZXJuID0gJ14uKicgKyBzZWFyY2hSZWdleHA7XG5cbiAgICAvLyBPbmx5IG9uZSBzZWFyY2ggYXR0cmlidXRlc1xuICAgIGlmICh0eXBlb2Ygc2VhcmNoQXR0cmlidXRlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgaXNTaW1wbGVQYXRoID0gIXNlYXJjaEF0dHJpYnV0ZSB8fCBzZWFyY2hBdHRyaWJ1dGUuaW5kZXhPZignLicpID09PSAtMTtcbiAgICAgIGNvbnN0IHNlYXJjaEFzUHJlZml4ID0gIHNlYXJjaEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdsYWJlbCcpIHx8IHNlYXJjaEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdjb2RlJyk7XG4gICAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHNlYXJjaEFzUHJlZml4ICYmIGFzUHJlZml4UGF0dGVybiB8fCBhbnlNYXRjaFBhdHRlcm4sIGZsYWdzKTtcbiAgICAgIGlmIChpc1NpbXBsZVBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGEgPT4gcmVnZXhwLnRlc3QoIGFbc2VhcmNoQXR0cmlidXRlXSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGEgPT4gcmVnZXhwLnRlc3QoRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYSwgc2VhcmNoQXR0cmlidXRlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbWFueSBzZWFyY2ggYXR0cmlidXRlc1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgcmVnZXhwcyA9IHNlYXJjaEF0dHJpYnV0ZS5tYXAocGF0aCA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEFzUHJlZml4ID0gIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnbGFiZWwnKSB8fCBwYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2NvZGUnKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoIHNlYXJjaEFzUHJlZml4ICYmIGFzUHJlZml4UGF0dGVybiB8fCBhbnlNYXRjaFBhdHRlcm4sIGZsYWdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGEgPT4gc2VhcmNoQXR0cmlidXRlLmZpbmRJbmRleCgocGF0aCwgaW5kZXgpID0+IHJlZ2V4cHNbaW5kZXhdLnRlc3QoRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYSwgcGF0aCkpKSAhPT0gLTE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIGJhdGNoIGVudGl0eSB0cmVlIGludG8gYSBhcnJheSBsaXN0LiBUaGlzIG1ldGhvZCBrZWVwIGxpbmtzIHBhcmVudC9jaGlsZHJlbi5cbiAgICpcbiAgICogTWV0aG9kIHVzZWQgdG8gZmluZCBiYXRjaCB3aXRob3V0IGlkIChlLmcuIGJlZm9yZSBsb2NhbCBzdG9yYWdlKVxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlXG4gICAqL1xuICBzdGF0aWMgdHJlZVRvQXJyYXkgPSBUcmVlSXRlbUVudGl0eVV0aWxzLnRyZWVUb0FycmF5O1xuXG4gIHN0YXRpYyBsaXN0T2ZUcmVlVG9BcnJheSA9IFRyZWVJdGVtRW50aXR5VXRpbHMubGlzdE9mVHJlZVRvQXJyYXk7XG5cbiAgLyoqXG4gICAqIEZpbGwgcGFyZW50IGF0dHJpYnV0ZSwgb2YgYWxsIGNoaWxkcmVuIGZvdW5kIGluIHRoZSB0cmVlXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VcbiAgICovXG4gIHN0YXRpYyB0cmVlRmlsbFBhcmVudCA9IFRyZWVJdGVtRW50aXR5VXRpbHMudHJlZUZpbGxQYXJlbnQ7XG5cbiAgc3RhdGljIGlzTG9jYWwoZW50aXR5OiBJRW50aXR5PGFueSwgYW55PiB8IEVudGl0eTxhbnksIGFueT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gZW50aXR5ICYmIChpc05vdE5pbChlbnRpdHkuaWQpICYmICtlbnRpdHkuaWQgPCAwKTtcbiAgfVxuXG4gIHN0YXRpYyBpc1JlbW90ZShlbnRpdHk6IElFbnRpdHk8YW55LCBhbnk+IHwgRW50aXR5PGFueSwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbnRpdHkgJiYgIUVudGl0eVV0aWxzLmlzTG9jYWwoZW50aXR5KTtcbiAgfVxuXG4gIHN0YXRpYyBpc0xvY2FsSWQoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05vdE5pbChpZCkgJiYgK2lkIDwgMDtcbiAgfVxuXG4gIHN0YXRpYyBpc1JlbW90ZUlkKGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoaWQpICYmICtpZCA+PSAwO1xuICB9XG5cbiAgc3RhdGljIGdldElkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4oZW50aXR5OiBUKTogSUQge1xuICAgIHJldHVybiBlbnRpdHkuaWQ7XG4gIH1cblxuICBzdGF0aWMgaGFzSWQ8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+ID0gSUVudGl0eTxhbnksIGFueT4sIElEID0gYW55PihlbnRpdHk6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoZW50aXR5LmlkKTtcbiAgfVxuXG4gIHN0YXRpYyBjb2xsZWN0QnlJZDxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sIElEID0gYW55PihlbnRpdGllczogVFtdKTogSURbXSB7XG4gICAgcmV0dXJuIChlbnRpdGllcyB8fCBbXSkubWFwKGUgPT4gZS5pZCk7XG4gIH1cblxuICBzdGF0aWMgYXJyYXlEaXN0aW5jdEZpbHRlckZuPEUgZXh0ZW5kcyBJRW50aXR5PGFueSwgYW55Pj4oaXRlbTogRSwgaW5kZXg6IG51bWJlciwgdmFsdWVzOiBFW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWVzLmZpbmRJbmRleChlID0+IGUuaWQgPT09IGl0ZW0uaWQpID09PSBpbmRleDtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -93,4 +93,4 @@ export class EntityFilterUtils {
|
|
|
93
93
|
return target;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFDLE1BQU0sRUFBa0MsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFvQnBGLE1BQU0sT0FBZ0IsWUFLcEIsU0FBUSxNQUFxQjtJQUk3Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBNEIsU0FBd0I7UUFDdkUsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQXFELE9BQVk7UUFDN0UsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xELE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUNyQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMs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LEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eUFycmF5fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7TUlOSUZZX0VOVElUWV9GT1JfUE9ELCBSZWZlcmVudGlhbFV0aWxzfSBmcm9tICcuL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7RW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIElFbnRpdHksIGlzSW5zdGFuY2VPZn0gZnJvbSAnLi9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJGbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlGaWx0ZXI8RiBleHRlbmRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz4sXG4gIFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4sXG4gIElEID0gbnVtYmVyLFxuICBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucyxcbiAgRk8gPSBhbnk+IGV4dGVuZHMgSUVudGl0eTxGLCBJRCwgQU8sIEZPPiB7XG5cblxuICBhc1BvZE9iamVjdCgpOiBhbnk7XG5cbiAgYXNGaWx0ZXJGbigpOiBGaWx0ZXJGbjxUPjtcblxuICBpc0VtcHR5KCk6IGJvb2xlYW47XG5cbiAgY291bnROb3RFbXB0eUNyaXRlcmlhKCk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eUZpbHRlcjxGIGV4dGVuZHMgRW50aXR5RmlsdGVyPEYsIFQsIElELCBBTywgRk8+LFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+LFxuICBJRCA9IG51bWJlcixcbiAgQU8gZXh0ZW5kcyBFbnRpdHlBc09iamVjdE9wdGlvbnMgPSBFbnRpdHlBc09iamVjdE9wdGlvbnMsXG4gIEZPID0gYW55PlxuICBleHRlbmRzIEVudGl0eTxGLCBJRCwgQU8sIEZPPlxuICBpbXBsZW1lbnRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz4ge1xuXG5cbiAgLyoqXG4gICAqIENvbXBvc2Ugc29tZSBmaWx0ZXIgZnVuY3Rpb25zOiBhbGwgc2hvdWxkIHJldHVybiB0cnVlXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJGbnNcbiAgICovXG4gIHN0YXRpYyBjb21wb3NlRmlsdGVyczxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+PihmaWx0ZXJGbnM6IEZpbHRlckZuPFQ+W10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXJGbnMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoZW50aXR5KSA9PiAoZmlsdGVyRm5zIHx8IFtdKS5ldmVyeShmbiA9PiBmbihlbnRpdHkpKTtcbiAgfVxuXG4gIHN0YXRpYyBjb21wb3NlPEYgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8RiwgVD4sIFQgZXh0ZW5kcyBJRW50aXR5PFQ+PihmaWx0ZXJzOiBGW10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgY29uc3QgZmlsdGVyRm5zID0gKGZpbHRlcnMgfHwgW10pLnJlZHVjZSgocmVzLCBmKSA9PiB7XG4gICAgICBjb25zdCBmbnMgPSBmLmJ1aWxkRmlsdGVyKCk7XG4gICAgICBpZiAoIWZucykgcmV0dXJuIHJlcztcbiAgICAgIHJldHVybiByZXMuY29uY2F0KGZucyk7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2VGaWx0ZXJzKGZpbHRlckZucyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcG9zZSBzb21lIGZpbHRlciBmdW5jdGlvbnM6IGFsbCBzaG91bGQgcmV0dXJuIHRydWVcbiAgICpcbiAgICogQHBhcmFtIGZpbHRlckZuc1xuICAgKi9cbiAgc3RhdGljIGNvbXBvc2VGbnM8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4oZmlsdGVyRm5zOiBGaWx0ZXJGbjxUPltdKTogRmlsdGVyRm48VD4ge1xuICAgICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXJGbnMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoZW50aXR5KSA9PiAoZmlsdGVyRm5zIHx8IFtdKS5ldmVyeShmbiA9PiBmbihlbnRpdHkpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKF9fdHlwZW5hbWU/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihfX3R5cGVuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiBhIGZpbHRlciwgYmVmb3JlIHNlbmRpbmcgdG8gdGhlIHBvZCAoZS5nIGNvbnZlcnQgZGF0ZXMsIHJlbW92ZSBpbnRlcm5hbCBwcm9wZXJ0aWVzLCBldGMuKVxuICAgKi9cbiAgYXNQb2RPYmplY3QoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5hc09iamVjdChNSU5JRllfRU5USVRZX0ZPUl9QT0QgYXMgQU8pO1xuICB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudE5vdEVtcHR5Q3JpdGVyaWEoKSA9PT0gMDtcbiAgfVxuXG4gIGNvdW50Tm90RW1wdHlDcml0ZXJpYSgpOiBudW1iZXIge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmFzUG9kT2JqZWN0KCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGpzb24pXG4gICAgICAuZmlsdGVyKGtleSA9PiB0aGlzLmlzQ3JpdGVyaWFOb3RFbXB0eShrZXksIGpzb25ba2V5XSkpXG4gICAgICAubGVuZ3RoO1xuICB9XG5cbiAgYXNGaWx0ZXJGbigpOiBGaWx0ZXJGbjxUPiB7XG4gICAgY29uc3QgZmlsdGVyRm5zID0gdGhpcy5idWlsZEZpbHRlcigpO1xuICAgIHJldHVybiBFbnRpdHlGaWx0ZXIuY29tcG9zZUZucyhmaWx0ZXJGbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFQ+W10ge1xuICAgIC8vIENhbiBiZSBjb21wbGV0ZWQgYnkgc3ViY2xhc3Nlc1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NyaXRlcmlhTm90RW1wdHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHZhbHVlICE9PSBudWxsXG4gICAgICAmJiAoXG4gICAgICAgIC8vIG5vdCBlbXB0eSBzdHJpbmdcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpICE9PSAnJylcbiAgICAgICAgLy8gdmFsaWQgbnVtYmVyXG4gICAgICAgIHx8ICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmICFpc05hTih2YWx1ZSkpXG4gICAgICAgIC8vIHZhbGlkIGJvb2xlYW5cbiAgICAgICAgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKVxuICAgICAgICAvLyBub3QgZW1wdHkgYXJyYXlcbiAgICAgICAgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApXG4gICAgICAgIC8vIGVudGl0eSB3aXRoIGFuIGlkXG4gICAgICAgIHx8IFJlZmVyZW50aWFsVXRpbHMuaXNOb3RFbXB0eSh2YWx1ZSlcbiAgICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eUZpbHRlclV0aWxzIHtcblxuICBzdGF0aWMgaXNFbnRpdHlGaWx0ZXI8RiBleHRlbmRzIEVudGl0eUZpbHRlcjxGLCBhbnk+PihvYmo6IFBhcnRpYWw8Rj4pOiBvYmogaXMgRiB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouYXNQb2RPYmplY3QgJiYgb2JqLmFzRmlsdGVyRm4gJiYgdHJ1ZSB8fCBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0PEY+KHNvdXJjZTogYW55LCBmaWx0ZXJUeXBlOiBuZXcgKCkgPT4gRik6IEYge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gc291cmNlO1xuICAgIGlmIChpc0luc3RhbmNlT2Yoc291cmNlLCBmaWx0ZXJUeXBlKSkgcmV0dXJuIHNvdXJjZSBhcyBGO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBmaWx0ZXJUeXBlKCk7XG4gICAgaWYgKEVudGl0eUZpbHRlclV0aWxzLmlzRW50aXR5RmlsdGVyKHRhcmdldCkpIHtcbiAgICAgIHRhcmdldC5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cblxufVxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* -- Network -- */
|
|
2
|
+
var Peer_1;
|
|
3
|
+
import { __decorate } from "tslib";
|
|
4
|
+
import { isNilOrBlank, isNotNil, isNotNilOrBlank, noTrailingSlash } from '../../../shared/functions';
|
|
5
|
+
import { Entity } from './entity.model';
|
|
6
|
+
import { EntityClass } from './entity.decorators';
|
|
7
|
+
// @dynamic
|
|
8
|
+
let Peer = class Peer extends Entity {
|
|
9
|
+
static { Peer_1 = this; }
|
|
10
|
+
static fromObject;
|
|
11
|
+
static parseUrl(peerUrl) {
|
|
12
|
+
const url = new URL(peerUrl);
|
|
13
|
+
return this.fromObject({
|
|
14
|
+
dns: url.hostname,
|
|
15
|
+
port: isNilOrBlank(url.port) ? undefined : url.port,
|
|
16
|
+
useSsl: url.protocol && (url.protocol.startsWith('https') || url.protocol.startsWith('wss')),
|
|
17
|
+
path: noTrailingSlash(url.pathname)
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
static path(peer, ...paths) {
|
|
21
|
+
if (!peer)
|
|
22
|
+
throw new Error('Missing required argument \'peer\'!');
|
|
23
|
+
// Remove starting slashes
|
|
24
|
+
paths = (paths || []).map(path => {
|
|
25
|
+
if (path.startsWith('./'))
|
|
26
|
+
return path.substring(2);
|
|
27
|
+
if (path.startsWith('/'))
|
|
28
|
+
return path.substring(1);
|
|
29
|
+
return path;
|
|
30
|
+
}).filter(isNotNilOrBlank);
|
|
31
|
+
return [noTrailingSlash(this.fromObject(peer).url)].concat(...paths).join('/');
|
|
32
|
+
}
|
|
33
|
+
dns;
|
|
34
|
+
ipv4;
|
|
35
|
+
ipv6;
|
|
36
|
+
port;
|
|
37
|
+
useSsl;
|
|
38
|
+
pubkey;
|
|
39
|
+
path;
|
|
40
|
+
favicon;
|
|
41
|
+
status;
|
|
42
|
+
softwareName;
|
|
43
|
+
softwareVersion;
|
|
44
|
+
label;
|
|
45
|
+
name;
|
|
46
|
+
constructor() {
|
|
47
|
+
super(Peer_1.TYPENAME);
|
|
48
|
+
}
|
|
49
|
+
asObject(options) {
|
|
50
|
+
return super.asObject(options);
|
|
51
|
+
}
|
|
52
|
+
fromObject(source) {
|
|
53
|
+
super.fromObject(source);
|
|
54
|
+
this.dns = source.dns || source.host;
|
|
55
|
+
this.ipv4 = source.ipv4;
|
|
56
|
+
this.ipv6 = source.ipv6;
|
|
57
|
+
this.port = isNotNil(source.port) ? +source.port : undefined;
|
|
58
|
+
this.pubkey = source.pubkey;
|
|
59
|
+
this.useSsl = source.useSsl || (this.port === 443);
|
|
60
|
+
this.path = source.path || '';
|
|
61
|
+
}
|
|
62
|
+
equals(other) {
|
|
63
|
+
return super.equals(other) && this.pubkey === other.pubkey && this.url === other.url;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Return the peer URL (without trailing slash)
|
|
67
|
+
*/
|
|
68
|
+
get url() {
|
|
69
|
+
return (this.useSsl ? 'https://' : 'http://') + this.hostAndPort + (this.path || '');
|
|
70
|
+
}
|
|
71
|
+
get hostAndPort() {
|
|
72
|
+
return (this.dns || this.ipv4 || this.ipv6) +
|
|
73
|
+
((this.port && this.port !== 80 && this.port !== 443) ? ':' + this.port : '');
|
|
74
|
+
}
|
|
75
|
+
get reachable() {
|
|
76
|
+
return this.status && this.status === 'UP';
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
Peer = Peer_1 = __decorate([
|
|
80
|
+
EntityClass({ typename: 'PeerVO' })
|
|
81
|
+
], Peer);
|
|
82
|
+
export { Peer };
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQjs7O0FBRW5CLE9BQU8sRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRyxPQUFPLEVBQVksTUFBTSxFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxXQUFXO0FBRUosSUFBTSxJQUFJLEdBQVYsTUFBTSxJQUFLLFNBQVEsTUFBWTs7SUFFcEMsTUFBTSxDQUFDLFVBQVUsQ0FBb0M7SUFFckQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFlO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNyQixHQUFHLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDakIsSUFBSSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7WUFDbkQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RixJQUFJLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBVSxFQUFFLEdBQUcsS0FBZTtRQUN4QyxJ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SUFBSSxDQUFDLElBQUksQ0FBQztZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztJQUM3QyxDQUFDO0NBQ0YsQ0FBQTtBQTdFWSxJQUFJO0lBRGhCLFdBQVcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQztHQUNyQixJQUFJLENBNkVoQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIC0tIE5ldHdvcmsgLS0gKi9cblxuaW1wb3J0IHtpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIG5vVHJhaWxpbmdTbGFzaH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0Nsb25lYWJsZSwgRW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnN9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4vZW50aXR5LmRlY29yYXRvcnMnO1xuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHt0eXBlbmFtZTogJ1BlZXJWTyd9KVxuZXhwb3J0IGNsYXNzIFBlZXIgZXh0ZW5kcyBFbnRpdHk8UGVlcj4gaW1wbGVtZW50cyBDbG9uZWFibGU8UGVlcj4ge1xuXG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IFBlZXI7XG5cbiAgc3RhdGljIHBhcnNlVXJsKHBlZXJVcmw6IHN0cmluZykge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGVlclVybCk7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdCh7XG4gICAgICBkbnM6IHVybC5ob3N0bmFtZSxcbiAgICAgIHBvcnQ6IGlzTmlsT3JCbGFuayh1cmwucG9ydCkgPyB1bmRlZmluZWQgOiB1cmwucG9ydCxcbiAgICAgIHVzZVNzbDogdXJsLnByb3RvY29sICYmICh1cmwucHJvdG9jb2wuc3RhcnRzV2l0aCgnaHR0cHMnKSB8fCB1cmwucHJvdG9jb2wuc3RhcnRzV2l0aCgnd3NzJykpLFxuICAgICAgcGF0aDogbm9UcmFpbGluZ1NsYXNoKHVybC5wYXRobmFtZSlcbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgcGF0aChwZWVyOiBQZWVyLCAuLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmICghcGVlcikgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IFxcJ3BlZXJcXCchJyk7XG4gICAgLy8gUmVtb3ZlIHN0YXJ0aW5nIHNsYXNoZXNcbiAgICBwYXRocyA9IChwYXRocyB8fCBbXSkubWFwKHBhdGggPT4ge1xuICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnLi8nKSkgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDIpO1xuICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnLycpKSByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMSk7XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9KS5maWx0ZXIoaXNOb3ROaWxPckJsYW5rKTtcbiAgICByZXR1cm4gW25vVHJhaWxpbmdTbGFzaCh0aGlzLmZyb21PYmplY3QocGVlcikudXJsKV0uY29uY2F0KC4uLnBhdGhzKS5qb2luKCcvJyk7XG4gIH1cblxuICBkbnM6IHN0cmluZztcbiAgaXB2NDogc3RyaW5nO1xuICBpcHY2OiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgdXNlU3NsOiBib29sZWFuO1xuICBwdWJrZXk6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcblxuICBmYXZpY29uOiBzdHJpbmc7XG4gIHN0YXR1czogJ1VQJyB8ICdET1dOJztcbiAgc29mdHdhcmVOYW1lOiBzdHJpbmc7XG4gIHNvZnR3YXJlVmVyc2lvbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUGVlci5UWVBFTkFNRSk7XG4gIH1cblxuICBhc09iamVjdChvcHRpb25zPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogYW55IHtcbiAgICByZXR1cm4gc3VwZXIuYXNPYmplY3Qob3B0aW9ucyk7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMuZG5zID0gc291cmNlLmRucyB8fCBzb3VyY2UuaG9zdDtcbiAgICB0aGlzLmlwdjQgPSBzb3VyY2UuaXB2NDtcbiAgICB0aGlzLmlwdjYgPSBzb3VyY2UuaXB2NjtcbiAgICB0aGlzLnBvcnQgPSBpc05vdE5pbChzb3VyY2UucG9ydCkgPyArc291cmNlLnBvcnQgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5wdWJrZXkgPSBzb3VyY2UucHVia2V5O1xuICAgIHRoaXMudXNlU3NsID0gc291cmNlLnVzZVNzbCB8fCAodGhpcy5wb3J0ID09PSA0NDMpO1xuICAgIHRoaXMucGF0aCA9IHNvdXJjZS5wYXRoIHx8ICcnO1xuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBQZWVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmVxdWFscyhvdGhlcikgJiYgdGhpcy5wdWJrZXkgPT09IG90aGVyLnB1YmtleSAmJiB0aGlzLnVybCA9PT0gb3RoZXIudXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcGVlciBVUkwgKHdpdGhvdXQgdHJhaWxpbmcgc2xhc2gpXG4gICAqL1xuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnVzZVNzbCA/ICdodHRwczovLycgOiAnaHR0cDovLycpICsgdGhpcy5ob3N0QW5kUG9ydCArICh0aGlzLnBhdGggfHwgJycpO1xuICB9XG5cbiAgZ2V0IGhvc3RBbmRQb3J0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmRucyB8fCB0aGlzLmlwdjQgfHwgdGhpcy5pcHY2KSArXG4gICAgICAoKHRoaXMucG9ydCAmJiB0aGlzLnBvcnQgIT09IDgwICYmIHRoaXMucG9ydCAhPT0gNDQzKSA/ICc6JyArIHRoaXMucG9ydCA6ICcnKTtcbiAgfVxuXG4gIGdldCByZWFjaGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzICYmIHRoaXMuc3RhdHVzID09PSAnVVAnO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
var Person_1;
|
|
2
|
+
import { __decorate } from "tslib";
|
|
3
|
+
import { Entity } from './entity.model';
|
|
4
|
+
import { Department } from './department.model';
|
|
5
|
+
import { fromDateISOString, toDateISOString } from '../../../shared/dates';
|
|
6
|
+
import { EntityClass } from './entity.decorators';
|
|
7
|
+
import { isEmptyArray, isNotNil } from '../../../shared/functions';
|
|
8
|
+
export const PRIORITIZED_AUTHORITIES = Object.freeze(['ADMIN', 'SUPERVISOR', 'USER', 'GUEST']);
|
|
9
|
+
// @dynamic
|
|
10
|
+
let Person = class Person extends Entity {
|
|
11
|
+
static { Person_1 = this; }
|
|
12
|
+
static fromObject;
|
|
13
|
+
firstName;
|
|
14
|
+
lastName;
|
|
15
|
+
email;
|
|
16
|
+
pubkey;
|
|
17
|
+
avatar;
|
|
18
|
+
creationDate;
|
|
19
|
+
statusId;
|
|
20
|
+
department = null;
|
|
21
|
+
username;
|
|
22
|
+
usernameExtranet;
|
|
23
|
+
profiles;
|
|
24
|
+
mainProfile;
|
|
25
|
+
constructor(__typename) {
|
|
26
|
+
super(__typename || Person_1.TYPENAME);
|
|
27
|
+
}
|
|
28
|
+
asObject(opts) {
|
|
29
|
+
if (opts && opts.minify) {
|
|
30
|
+
return {
|
|
31
|
+
id: this.id,
|
|
32
|
+
__typename: opts.keepTypename && this.__typename || undefined,
|
|
33
|
+
firstName: this.firstName,
|
|
34
|
+
lastName: this.lastName
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const target = super.asObject(opts);
|
|
38
|
+
target.department = this.department && this.department.asObject(opts) || undefined;
|
|
39
|
+
target.profiles = this.profiles && this.profiles.slice(0) || [];
|
|
40
|
+
// Set profile list from the main profile
|
|
41
|
+
target.profiles = this.mainProfile && [this.mainProfile] || target.profiles;
|
|
42
|
+
target.creationDate = toDateISOString(this.creationDate);
|
|
43
|
+
if (!opts || opts.minify !== true)
|
|
44
|
+
target.mainProfile = PersonUtils.getMainProfile(target.profiles);
|
|
45
|
+
return target;
|
|
46
|
+
}
|
|
47
|
+
fromObject(source) {
|
|
48
|
+
super.fromObject(source);
|
|
49
|
+
this.firstName = source.firstName;
|
|
50
|
+
this.lastName = source.lastName;
|
|
51
|
+
this.email = source.email;
|
|
52
|
+
this.creationDate = fromDateISOString(source.creationDate);
|
|
53
|
+
this.pubkey = source.pubkey;
|
|
54
|
+
this.username = source.username;
|
|
55
|
+
this.usernameExtranet = source.usernameExtranet;
|
|
56
|
+
this.avatar = source.avatar;
|
|
57
|
+
this.statusId = source.statusId;
|
|
58
|
+
this.department = source.department && Department.fromObject(source.department) || undefined;
|
|
59
|
+
this.profiles = source.profiles && source.profiles.slice(0) || [];
|
|
60
|
+
// Add main profile to the list, if need
|
|
61
|
+
if (source.mainProfile && !this.profiles.find(p => p === source.mainProfile)) {
|
|
62
|
+
this.profiles = this.profiles.concat(source.mainProfile);
|
|
63
|
+
}
|
|
64
|
+
this.mainProfile = PersonUtils.getMainProfile(this.profiles);
|
|
65
|
+
}
|
|
66
|
+
equals(other) {
|
|
67
|
+
return other
|
|
68
|
+
&& ((isNotNil(this.id) && this.id === other.id)
|
|
69
|
+
// Functional test
|
|
70
|
+
|| (
|
|
71
|
+
// Pubkey should be unique
|
|
72
|
+
(this.pubkey && this.pubkey === other.pubkey)
|
|
73
|
+
// Email should be unique
|
|
74
|
+
&& (this.email && this.email === other.email)));
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
Person = Person_1 = __decorate([
|
|
78
|
+
EntityClass({ typename: 'PersonVO' })
|
|
79
|
+
], Person);
|
|
80
|
+
export { Person };
|
|
81
|
+
export class PersonUtils {
|
|
82
|
+
static getMainProfile(profiles) {
|
|
83
|
+
if (isEmptyArray(profiles))
|
|
84
|
+
return 'GUEST';
|
|
85
|
+
return PRIORITIZED_AUTHORITIES.find(label => profiles.includes(label)) || 'GUEST';
|
|
86
|
+
}
|
|
87
|
+
static getMainProfileIndex(profiles) {
|
|
88
|
+
if (isEmptyArray(profiles))
|
|
89
|
+
return PRIORITIZED_AUTHORITIES.length - 1; // return last (lower) profile
|
|
90
|
+
const index = PRIORITIZED_AUTHORITIES.findIndex(label => profiles.includes(label));
|
|
91
|
+
return (index !== -1) ? index : (PRIORITIZED_AUTHORITIES.length - 1);
|
|
92
|
+
}
|
|
93
|
+
static hasUpperOrEqualsProfile(actualProfiles, expectedProfile) {
|
|
94
|
+
const expectedProfileIndex = PRIORITIZED_AUTHORITIES.indexOf(expectedProfile);
|
|
95
|
+
return expectedProfileIndex !== -1 && PersonUtils.getMainProfileIndex(actualProfiles) <= expectedProfileIndex;
|
|
96
|
+
}
|
|
97
|
+
static personToString(obj) {
|
|
98
|
+
if (!obj || !obj.id)
|
|
99
|
+
return undefined;
|
|
100
|
+
return obj.lastName + ' ' + obj.firstName;
|
|
101
|
+
}
|
|
102
|
+
static personsToString(data, separator) {
|
|
103
|
+
return (data || []).map(PersonUtils.personToString).join(separator || ', ');
|
|
104
|
+
}
|
|
105
|
+
static roleToProfile(role, defaultProfile) {
|
|
106
|
+
const label = role?.replace(/^ROLE_/, '');
|
|
107
|
+
return label || defaultProfile;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR25FLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFpQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUU3SCxXQUFXO0FBRUosSUFBTSxNQUFNLEdBQVosTUFBTSxNQUVULFNBQVEsTUFBNkM7O0lBRXZELE1BQU0sQ0FBQyxVQUFVLENBQXVDO0lBRXhELFNBQVMsQ0FBUztJQUNsQixRQUFRLENBQVM7SUFDakIsS0FBSyxDQUFTO0lBQ2QsTUFBTSxDQUFTO0lBQ2YsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFnQjtJQUM1QixRQUFRLENBQVM7SUFDakIsVUFBVSxHQUFlLElBQUksQ0FBQztJQUM5QixRQUFRLENBQVM7SUFDakIsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxDQUFXO0lBQ25CLFdBQVcsQ0FBUztJQUVwQixZQUFZLFVBQW1CO1FBQzdCLEtBQUssQ0FBQyxVQUFVLElBQUksUUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBaUM7UUFDeEMsSUFBSSxJQUFJ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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxjQUF3QixFQUFFLGVBQWlDO1FBQ3hGLE1BQU0sb0JBQW9CLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sb0JBQW9CLEtBQUssQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDO0lBQ2hILENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQVc7UUFDL0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDdEMsT0FBTyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQWMsRUFBRSxTQUFrQjtRQUN2RCxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZLEVBQUUsY0FBaUM7UUFDbEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFxQixDQUFDO1FBQzlELE9BQU8sS0FBSyxJQUFJLGNBQWMsQ0FBQztJQUNqQyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgUmVmZXJlbnRpYWxBc09iamVjdE9wdGlvbnMgfSBmcm9tICcuL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlcGFydG1lbnQgfSBmcm9tICcuL2RlcGFydG1lbnQubW9kZWwnO1xuaW1wb3J0IHsgZnJvbURhdGVJU09TdHJpbmcsIHRvRGF0ZUlTT1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQgeyBFbnRpdHlDbGFzcyB9IGZyb20gJy4vZW50aXR5LmRlY29yYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdE5pbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBVc2VyUHJvZmlsZUxhYmVsID0gJ0FETUlOJyB8ICdVU0VSJyB8ICdTVVBFUlZJU09SJyB8ICdHVUVTVCc7XG5leHBvcnQgY29uc3QgUFJJT1JJVElaRURfQVVUSE9SSVRJRVM6IFJlYWRvbmx5PFVzZXJQcm9maWxlTGFiZWxbXT4gPSBPYmplY3QuZnJlZXplKFsnQURNSU4nLCAnU1VQRVJWSVNPUicsICdVU0VSJywgJ0dVRVNUJ10pO1xuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHt0eXBlbmFtZTogJ1BlcnNvblZPJ30pXG5leHBvcnQgY2xhc3MgUGVyc29uPFxuICBUIGV4dGVuZHMgUGVyc29uPGFueT4gPSBQZXJzb248YW55PlxuICA+IGV4dGVuZHMgRW50aXR5PFQsIG51bWJlciwgUmVmZXJlbnRpYWxBc09iamVjdE9wdGlvbnM+IHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiAgUGVyc29uO1xuXG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBwdWJrZXk6IHN0cmluZztcbiAgYXZhdGFyOiBzdHJpbmc7XG4gIGNyZWF0aW9uRGF0ZTogRGF0ZSB8IE1vbWVudDtcbiAgc3RhdHVzSWQ6IG51bWJlcjtcbiAgZGVwYXJ0bWVudDogRGVwYXJ0bWVudCA9IG51bGw7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIHVzZXJuYW1lRXh0cmFuZXQ6IHN0cmluZztcbiAgcHJvZmlsZXM6IHN0cmluZ1tdO1xuICBtYWluUHJvZmlsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9fdHlwZW5hbWU/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihfX3R5cGVuYW1lIHx8IFBlcnNvbi5UWVBFTkFNRSk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogUmVmZXJlbnRpYWxBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIGlmIChvcHRzICYmIG9wdHMubWluaWZ5KSAge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIF9fdHlwZW5hbWU6IG9wdHMua2VlcFR5cGVuYW1lICYmIHRoaXMuX190eXBlbmFtZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGZpcnN0TmFtZTogdGhpcy5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiB0aGlzLmxhc3ROYW1lXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQ6IGFueSA9IHN1cGVyLmFzT2JqZWN0KG9wdHMpO1xuICAgIHRhcmdldC5kZXBhcnRtZW50ID0gdGhpcy5kZXBhcnRtZW50ICYmIHRoaXMuZGVwYXJ0bWVudC5hc09iamVjdChvcHRzKSB8fCB1bmRlZmluZWQ7XG4gICAgdGFyZ2V0LnByb2ZpbGVzID0gdGhpcy5wcm9maWxlcyAmJiB0aGlzLnByb2ZpbGVzLnNsaWNlKDApIHx8IFtdO1xuICAgIC8vIFNldCBwcm9maWxlIGxpc3QgZnJvbSB0aGUgbWFpbiBwcm9maWxlXG4gICAgdGFyZ2V0LnByb2ZpbGVzID0gdGhpcy5tYWluUHJvZmlsZSAmJiBbdGhpcy5tYWluUHJvZmlsZV0gfHwgdGFyZ2V0LnByb2ZpbGVzO1xuICAgIHRhcmdldC5jcmVhdGlvbkRhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy5jcmVhdGlvbkRhdGUpO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMubWluaWZ5ICE9PSB0cnVlKSB0YXJnZXQubWFpblByb2ZpbGUgPSBQZXJzb25VdGlscy5nZXRNYWluUHJvZmlsZSh0YXJnZXQucHJvZmlsZXMpO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMuZmlyc3ROYW1lID0gc291cmNlLmZpcnN0TmFtZTtcbiAgICB0aGlzLmxhc3ROYW1lID0gc291cmNlLmxhc3ROYW1lO1xuICAgIHRoaXMuZW1haWwgPSBzb3VyY2UuZW1haWw7XG4gICAgdGhpcy5jcmVhdGlvbkRhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2UuY3JlYXRpb25EYXRlKTtcbiAgICB0aGlzLnB1YmtleSA9IHNvdXJjZS5wdWJrZXk7XG4gICAgdGhpcy51c2VybmFtZSA9IHNvdXJjZS51c2VybmFtZTtcbiAgICB0aGlzLnVzZXJuYW1lRXh0cmFuZXQgPSBzb3VyY2UudXNlcm5hbWVFeHRyYW5ldDtcbiAgICB0aGlzLmF2YXRhciA9IHNvdXJjZS5hdmF0YXI7XG4gICAgdGhpcy5zdGF0dXNJZCA9IHNvdXJjZS5zdGF0dXNJZDtcbiAgICB0aGlzLmRlcGFydG1lbnQgPSBzb3VyY2UuZGVwYXJ0bWVudCAmJiBEZXBhcnRtZW50LmZyb21PYmplY3Qoc291cmNlLmRlcGFydG1lbnQpIHx8IHVuZGVmaW5lZDtcbiAgICB0aGlzLnByb2ZpbGVzID0gc291cmNlLnByb2ZpbGVzICYmIHNvdXJjZS5wcm9maWxlcy5zbGljZSgwKSB8fCBbXTtcbiAgICAvLyBBZGQgbWFpbiBwcm9maWxlIHRvIHRoZSBsaXN0LCBpZiBuZWVkXG4gICAgaWYgKHNvdXJjZS5tYWluUHJvZmlsZSAmJiAhdGhpcy5wcm9maWxlcy5maW5kKHAgPT4gcCA9PT0gc291cmNlLm1haW5Qcm9maWxlKSkge1xuICAgICAgdGhpcy5wcm9maWxlcyA9IHRoaXMucHJvZmlsZXMuY29uY2F0KHNvdXJjZS5tYWluUHJvZmlsZSk7XG4gICAgfVxuICAgIHRoaXMubWFpblByb2ZpbGUgPSBQZXJzb25VdGlscy5nZXRNYWluUHJvZmlsZSh0aGlzLnByb2ZpbGVzKTtcbiAgfVxuXG4gIGVxdWFscyhvdGhlcjogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlclxuICAgICAgJiYgKChpc05vdE5pbCh0aGlzLmlkKSAmJiB0aGlzLmlkID09PSBvdGhlci5pZClcbiAgICAgIC8vIEZ1bmN0aW9uYWwgdGVzdFxuICAgICAgfHwgKFxuICAgICAgICAvLyBQdWJrZXkgc2hvdWxkIGJlIHVuaXF1ZVxuICAgICAgICAodGhpcy5wdWJrZXkgJiYgdGhpcy5wdWJrZXkgPT09IG90aGVyLnB1YmtleSlcbiAgICAgICAgLy8gRW1haWwgc2hvdWxkIGJlIHVuaXF1ZVxuICAgICAgICAmJiAodGhpcy5lbWFpbCAmJiB0aGlzLmVtYWlsID09PSBvdGhlci5lbWFpbClcbiAgICAgICkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJzb25VdGlscyB7XG4gIHN0YXRpYyBnZXRNYWluUHJvZmlsZShwcm9maWxlcz86IHN0cmluZ1tdKTogVXNlclByb2ZpbGVMYWJlbCB7XG4gICAgaWYgKGlzRW1wdHlBcnJheShwcm9maWxlcykpIHJldHVybiAnR1VFU1QnO1xuICAgIHJldHVybiBQUklPUklUSVpFRF9BVVRIT1JJVElFUy5maW5kKGxhYmVsID0+IHByb2ZpbGVzLmluY2x1ZGVzKGxhYmVsKSkgfHwgJ0dVRVNUJztcbiAgfVxuXG4gIHN0YXRpYyBnZXRNYWluUHJvZmlsZUluZGV4KHByb2ZpbGVzPzogc3RyaW5nW10pOiBudW1iZXIge1xuICAgIGlmIChpc0VtcHR5QXJyYXkocHJvZmlsZXMpKSByZXR1cm4gUFJJT1JJVElaRURfQVVUSE9SSVRJRVMubGVuZ3RoIC0gMTsgLy8gcmV0dXJuIGxhc3QgKGxvd2VyKSBwcm9maWxlXG4gICAgY29uc3QgaW5kZXggPSBQUklPUklUSVpFRF9BVVRIT1JJVElFUy5maW5kSW5kZXgobGFiZWwgPT4gcHJvZmlsZXMuaW5jbHVkZXMobGFiZWwpKTtcbiAgICByZXR1cm4gKGluZGV4ICE9PSAtMSkgPyBpbmRleCA6IChQUklPUklUSVpFRF9BVVRIT1JJVElFUy5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHN0YXRpYyBoYXNVcHBlck9yRXF1YWxzUHJvZmlsZShhY3R1YWxQcm9maWxlczogc3RyaW5nW10sIGV4cGVjdGVkUHJvZmlsZTogVXNlclByb2ZpbGVMYWJlbCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4cGVjdGVkUHJvZmlsZUluZGV4ID0gUFJJT1JJVElaRURfQVVUSE9SSVRJRVMuaW5kZXhPZihleHBlY3RlZFByb2ZpbGUpO1xuICAgIHJldHVybiBleHBlY3RlZFByb2ZpbGVJbmRleCAhPT0gLTEgJiYgUGVyc29uVXRpbHMuZ2V0TWFpblByb2ZpbGVJbmRleChhY3R1YWxQcm9maWxlcykgPD0gZXhwZWN0ZWRQcm9maWxlSW5kZXg7XG4gIH1cblxuICBzdGF0aWMgcGVyc29uVG9TdHJpbmcob2JqOiBQZXJzb24pOiBzdHJpbmcge1xuICAgIGlmICghb2JqIHx8ICFvYmouaWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG9iai5sYXN0TmFtZSArICcgJyArIG9iai5maXJzdE5hbWU7XG4gIH1cblxuICBzdGF0aWMgcGVyc29uc1RvU3RyaW5nKGRhdGE6IFBlcnNvbltdLCBzZXBhcmF0b3I/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAoZGF0YSB8fCBbXSkubWFwKFBlcnNvblV0aWxzLnBlcnNvblRvU3RyaW5nKS5qb2luKHNlcGFyYXRvciB8fCAnLCAnKTtcbiAgfVxuXG4gIHN0YXRpYyByb2xlVG9Qcm9maWxlKHJvbGU6IHN0cmluZywgZGVmYXVsdFByb2ZpbGU/OiBVc2VyUHJvZmlsZUxhYmVsKTogVXNlclByb2ZpbGVMYWJlbCB7XG4gICAgY29uc3QgbGFiZWwgPSByb2xlPy5yZXBsYWNlKC9eUk9MRV8vLCAnJykgYXMgVXNlclByb2ZpbGVMYWJlbDtcbiAgICByZXR1cm4gbGFiZWwgfHwgZGVmYXVsdFByb2ZpbGU7XG4gIH1cblxufVxuXG5cblxuXG5cblxuXG4iXX0=
|