@sumaris-net/ngx-components 18.23.63 → 21.0.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/doc/build.md +3 -5
- package/fesm2022/sumaris-net.ngx-components.mjs +2382 -2150
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +15 -15
- package/src/assets/environments/environment-test.json +2 -2
- package/src/assets/i18n/fr.json +6 -5
- package/src/assets/manifest.json +1 -1
- package/src/theme/_icons.scss +8 -12
- package/src/theme/_ionic.globals.scss +8 -1
- package/src/theme/_material.globals.scss +4 -1
- package/src/theme/_material.scss +16 -13
- package/src/theme/_mixins.scss +7 -1
- package/src/theme/_ngx-components.forms.scss +87 -84
- package/src/theme/_ngx-components.globals.scss +2 -0
- package/src/theme/_ngx-components.scss +19 -4
- package/src/theme/_ngx-components.table.scss +31 -26
- package/src/theme/_ngx-components.tabs.scss +16 -14
- package/src/theme/_responsive.scss +2 -0
- package/src/theme/_roboto.scss +3 -0
- package/src/theme/_theme.scss +11 -14
- package/src/theme/_theme.variables.scss +6 -1
- package/src/theme/ionic/ionic.functions.color.scss +13 -5
- package/src/theme/ionic/ionic.globals.scss +4 -4
- package/src/theme/ionic/ionic.theme.default.scss +2 -0
- package/types/sumaris-net.ngx-components.d.ts +14132 -0
- package/esm2022/public_api.mjs +0 -403
- package/esm2022/src/app/admin/admin-routing.module.mjs +0 -34
- package/esm2022/src/app/admin/admin.module.mjs +0 -32
- package/esm2022/src/app/admin/users/person.filter.mjs +0 -157
- package/esm2022/src/app/admin/users/person.service.mjs +0 -226
- package/esm2022/src/app/admin/users/person.validator.mjs +0 -78
- package/esm2022/src/app/admin/users/users-select.modal.mjs +0 -167
- package/esm2022/src/app/admin/users/users.mjs +0 -502
- package/esm2022/src/app/admin/users/users.module.mjs +0 -59
- package/esm2022/src/app/admin/users/users.utils.mjs +0 -29
- package/esm2022/src/app/core/about/about.modal.mjs +0 -119
- package/esm2022/src/app/core/about/about.module.mjs +0 -22
- package/esm2022/src/app/core/account/account.module.mjs +0 -75
- package/esm2022/src/app/core/account/account.page.mjs +0 -426
- package/esm2022/src/app/core/account/new-token.form.mjs +0 -109
- package/esm2022/src/app/core/account/new-token.modal.mjs +0 -66
- package/esm2022/src/app/core/account/password/change-password.form.mjs +0 -63
- package/esm2022/src/app/core/account/password/change-password.module.mjs +0 -22
- package/esm2022/src/app/core/account/password/change-password.page.mjs +0 -150
- package/esm2022/src/app/core/account/token.table.mjs +0 -160
- package/esm2022/src/app/core/auth/auth.form.mjs +0 -159
- package/esm2022/src/app/core/auth/auth.modal.mjs +0 -76
- package/esm2022/src/app/core/auth/auth.module.mjs +0 -56
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +0 -89
- package/esm2022/src/app/core/core.module.mjs +0 -157
- package/esm2022/src/app/core/core.testing.module.mjs +0 -128
- package/esm2022/src/app/core/form/array/form-array.mjs +0 -328
- package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +0 -23
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +0 -97
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -111
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -31
- package/esm2022/src/app/core/form/entity/editor.class.mjs +0 -268
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -420
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +0 -748
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
- package/esm2022/src/app/core/form/entity/entity.module.mjs +0 -33
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +0 -190
- package/esm2022/src/app/core/form/form-container.class.mjs +0 -347
- package/esm2022/src/app/core/form/form.class.mjs +0 -342
- package/esm2022/src/app/core/form/form.module.mjs +0 -77
- package/esm2022/src/app/core/form/form.utils.mjs +0 -238
- package/esm2022/src/app/core/form/list/list.form.mjs +0 -243
- package/esm2022/src/app/core/form/list/list.module.mjs +0 -31
- package/esm2022/src/app/core/form/properties/properties-file.service.mjs +0 -133
- package/esm2022/src/app/core/form/properties/properties.form.mjs +0 -397
- package/esm2022/src/app/core/form/properties/properties.module.mjs +0 -85
- package/esm2022/src/app/core/form/properties/properties.table.mjs +0 -267
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +0 -304
- package/esm2022/src/app/core/form/properties/property.validator.mjs +0 -70
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +0 -103
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -23
- package/esm2022/src/app/core/form/text/testing/text-form.testing.mjs +0 -42
- package/esm2022/src/app/core/form/text/testing/text-form.testing.module.mjs +0 -25
- package/esm2022/src/app/core/form/text/text-form.component.mjs +0 -205
- package/esm2022/src/app/core/form/text/text-form.module.mjs +0 -31
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -73
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -22
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +0 -164
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +0 -32
- package/esm2022/src/app/core/form/username/username.form.mjs +0 -55
- package/esm2022/src/app/core/form/username/username.module.mjs +0 -20
- package/esm2022/src/app/core/graphql/graphql.module.mjs +0 -14
- package/esm2022/src/app/core/graphql/graphql.service.mjs +0 -781
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +0 -119
- package/esm2022/src/app/core/home/home.mjs +0 -472
- package/esm2022/src/app/core/home/home.module.mjs +0 -54
- package/esm2022/src/app/core/icon/icon.component.mjs +0 -40
- package/esm2022/src/app/core/icon/icon.module.mjs +0 -20
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +0 -394
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +0 -31
- package/esm2022/src/app/core/menu/menu.component.mjs +0 -273
- package/esm2022/src/app/core/menu/menu.model.mjs +0 -328
- package/esm2022/src/app/core/menu/menu.module.mjs +0 -47
- package/esm2022/src/app/core/menu/menu.service.mjs +0 -666
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +0 -113
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +0 -51
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +0 -165
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +0 -60
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +0 -28
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +0 -31
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +0 -350
- package/esm2022/src/app/core/peer/select-peer.module.mjs +0 -36
- package/esm2022/src/app/core/register/register-confirm.page.mjs +0 -90
- package/esm2022/src/app/core/register/register.form.mjs +0 -197
- package/esm2022/src/app/core/register/register.modal.mjs +0 -55
- package/esm2022/src/app/core/register/register.module.mjs +0 -23
- package/esm2022/src/app/core/services/account.service.mjs +0 -1403
- package/esm2022/src/app/core/services/auth-guard.service.mjs +0 -74
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +0 -499
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +0 -224
- package/esm2022/src/app/core/services/base58.mjs +0 -83
- package/esm2022/src/app/core/services/config/core.config.mjs +0 -293
- package/esm2022/src/app/core/services/config.service.mjs +0 -384
- package/esm2022/src/app/core/services/crypto.service.mjs +0 -107
- package/esm2022/src/app/core/services/errors.mjs +0 -54
- package/esm2022/src/app/core/services/local-settings.service.mjs +0 -540
- package/esm2022/src/app/core/services/model/account.model.mjs +0 -192
- package/esm2022/src/app/core/services/model/config.model.mjs +0 -111
- package/esm2022/src/app/core/services/model/department.model.mjs +0 -35
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +0 -97
- package/esm2022/src/app/core/services/model/entity.model.mjs +0 -347
- package/esm2022/src/app/core/services/model/filter.model.mjs +0 -169
- package/esm2022/src/app/core/services/model/history.model.mjs +0 -2
- package/esm2022/src/app/core/services/model/model.enum.mjs +0 -11
- package/esm2022/src/app/core/services/model/node-feature.model.mjs +0 -31
- package/esm2022/src/app/core/services/model/peer.model.mjs +0 -114
- package/esm2022/src/app/core/services/model/person.model.mjs +0 -118
- package/esm2022/src/app/core/services/model/referential.model.mjs +0 -207
- package/esm2022/src/app/core/services/model/settings.model.mjs +0 -6
- package/esm2022/src/app/core/services/model/token.model.mjs +0 -57
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +0 -234
- package/esm2022/src/app/core/services/network.service.mjs +0 -759
- package/esm2022/src/app/core/services/network.types.mjs +0 -2
- package/esm2022/src/app/core/services/network.utils.mjs +0 -35
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +0 -38
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
- package/esm2022/src/app/core/services/pipes/pipes.module.mjs +0 -58
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +0 -36
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
- package/esm2022/src/app/core/services/platform.service.mjs +0 -780
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +0 -427
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +0 -450
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +0 -25
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +0 -46
- package/esm2022/src/app/core/services/validator/account.validator.mjs +0 -46
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +0 -49
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +0 -57
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +0 -27
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +0 -55
- package/esm2022/src/app/core/settings/settings.module.mjs +0 -23
- package/esm2022/src/app/core/settings/settings.page.mjs +0 -406
- package/esm2022/src/app/core/table/async-table.class.mjs +0 -1882
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +0 -137
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +0 -120
- package/esm2022/src/app/core/table/column/row-field.component.mjs +0 -116
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +0 -415
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +0 -407
- package/esm2022/src/app/core/table/memory-table.class.mjs +0 -57
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +0 -46
- package/esm2022/src/app/core/table/table.class.mjs +0 -1918
- package/esm2022/src/app/core/table/table.model.mjs +0 -21
- package/esm2022/src/app/core/table/table.module.mjs +0 -51
- package/esm2022/src/app/core/table/table.pipes.mjs +0 -76
- package/esm2022/src/app/core/table/table.utils.mjs +0 -34
- package/esm2022/src/app/core/table/testing/nested-table.testing.mjs +0 -326
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +0 -32
- package/esm2022/src/app/core/table/testing/table.testing.mjs +0 -342
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +0 -47
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +0 -25
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +0 -322
- package/esm2022/src/app/shared/alerts.mjs +0 -243
- package/esm2022/src/app/shared/audio/audio.mjs +0 -255
- package/esm2022/src/app/shared/audio/audio.testing.mjs +0 -32
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/base64.utils.mjs +0 -59
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +0 -42
- package/esm2022/src/app/shared/capacitor/plugins.mjs +0 -10
- package/esm2022/src/app/shared/constants.mjs +0 -18
- package/esm2022/src/app/shared/dates.mjs +0 -212
- package/esm2022/src/app/shared/debug/debug-service.class.mjs +0 -3
- package/esm2022/src/app/shared/debug/debug.component.mjs +0 -44
- package/esm2022/src/app/shared/debug/debug.module.mjs +0 -23
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +0 -91
- package/esm2022/src/app/shared/directives/autoresize.directive.mjs +0 -75
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +0 -30
- package/esm2022/src/app/shared/directives/autotooltip.directive.mjs +0 -35
- package/esm2022/src/app/shared/directives/cell-selection/cell-identifier.directive.mjs +0 -55
- package/esm2022/src/app/shared/directives/cell-selection/cell-selection.directive.mjs +0 -206
- package/esm2022/src/app/shared/directives/cell-selection/cell-selection.service.mjs +0 -204
- package/esm2022/src/app/shared/directives/directives.module.mjs +0 -53
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +0 -52
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +0 -33
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +0 -62
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +0 -96
- package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
- package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +0 -43
- package/esm2022/src/app/shared/events.mjs +0 -64
- package/esm2022/src/app/shared/file/csv.utils.mjs +0 -97
- package/esm2022/src/app/shared/file/file.service.mjs +0 -118
- package/esm2022/src/app/shared/file/file.utils.mjs +0 -117
- package/esm2022/src/app/shared/file/images.utils.mjs +0 -186
- package/esm2022/src/app/shared/file/json.utils.mjs +0 -58
- package/esm2022/src/app/shared/file/uri.utils.mjs +0 -29
- package/esm2022/src/app/shared/file/url.utils.mjs +0 -213
- package/esm2022/src/app/shared/focusable.mjs +0 -6
- package/esm2022/src/app/shared/form/field.component.mjs +0 -388
- package/esm2022/src/app/shared/form/field.model.mjs +0 -100
- package/esm2022/src/app/shared/form/loading-spinner.mjs +0 -35
- package/esm2022/src/app/shared/forms.mjs +0 -593
- package/esm2022/src/app/shared/functions.mjs +0 -825
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +0 -94
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +0 -46
- package/esm2022/src/app/shared/gesture/hammer.utils.mjs +0 -2
- package/esm2022/src/app/shared/graph/colors.utils.mjs +0 -85
- package/esm2022/src/app/shared/graph/graph-colors.mjs +0 -214
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +0 -68
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +0 -147
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -24
- package/esm2022/src/app/shared/html.utils.mjs +0 -35
- package/esm2022/src/app/shared/http/http.utils.mjs +0 -56
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +0 -452
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +0 -62
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -26
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -92
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -37
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -59
- package/esm2022/src/app/shared/image/image.model.mjs +0 -2
- package/esm2022/src/app/shared/image/image.module.mjs +0 -24
- package/esm2022/src/app/shared/image/image.service.mjs +0 -117
- package/esm2022/src/app/shared/inputs.mjs +0 -281
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
- package/esm2022/src/app/shared/logging/log-level.model.mjs +0 -48
- package/esm2022/src/app/shared/logging/logger.model.mjs +0 -47
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +0 -125
- package/esm2022/src/app/shared/logging/logging-service.config.mjs +0 -2
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +0 -30
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +0 -321
- package/esm2022/src/app/shared/markdown/markdown.directive.mjs +0 -34
- package/esm2022/src/app/shared/markdown/markdown.modal.mjs +0 -99
- package/esm2022/src/app/shared/markdown/markdown.module.mjs +0 -87
- package/esm2022/src/app/shared/markdown/markdown.service.mjs +0 -204
- package/esm2022/src/app/shared/markdown/markdown.utils.mjs +0 -87
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +0 -55
- package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -46
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -1356
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -81
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -18
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -242
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +0 -251
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +0 -20
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +0 -42
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +0 -70
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -374
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -83
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +0 -74
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +0 -843
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +0 -151
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +0 -79
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +0 -473
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +0 -457
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +0 -850
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -140
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -127
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -118
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +0 -61
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +0 -16
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +0 -283
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -85
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +0 -319
- package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +0 -471
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +0 -231
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +0 -68
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -138
- package/esm2022/src/app/shared/material/material.animations.mjs +0 -200
- package/esm2022/src/app/shared/material/material.config.mjs +0 -3
- package/esm2022/src/app/shared/material/material.module.mjs +0 -224
- package/esm2022/src/app/shared/material/material.testing.module.mjs +0 -234
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -51
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -23
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +0 -379
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +0 -52
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -67
- package/esm2022/src/app/shared/material/test/test-component.mjs +0 -264
- package/esm2022/src/app/shared/material/testing/common.test.mjs +0 -111
- package/esm2022/src/app/shared/modules.mjs +0 -12
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -306
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +0 -49
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +0 -24
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +0 -69
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +0 -74
- package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +0 -28
- package/esm2022/src/app/shared/observables.mjs +0 -104
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +0 -251
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +0 -25
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +0 -29
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -50
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +0 -72
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +0 -28
- package/esm2022/src/app/shared/pipes/date-from.pipe.mjs +0 -29
- package/esm2022/src/app/shared/pipes/dates.pipe.mjs +0 -18
- package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +0 -23
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +0 -34
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +0 -53
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +0 -219
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +0 -50
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +0 -102
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +0 -42
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +0 -65
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +0 -67
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +0 -77
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +0 -19
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +0 -17
- package/esm2022/src/app/shared/pipes/observable.pipes.mjs +0 -63
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +0 -304
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +0 -148
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +0 -177
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +0 -183
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +0 -44
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +0 -74
- package/esm2022/src/app/shared/pipes/url.pipes.mjs +0 -35
- package/esm2022/src/app/shared/platforms.mjs +0 -81
- package/esm2022/src/app/shared/print/print.service.mjs +0 -305
- package/esm2022/src/app/shared/regexps.mjs +0 -103
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +0 -193
- package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +0 -19
- package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +0 -2
- package/esm2022/src/app/shared/services/entity-service.class.mjs +0 -44
- package/esm2022/src/app/shared/services/job.utils.mjs +0 -92
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +0 -362
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +0 -31
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +0 -144
- package/esm2022/src/app/shared/services/startable-service.class.mjs +0 -118
- package/esm2022/src/app/shared/services/translate-context.service.mjs +0 -107
- package/esm2022/src/app/shared/services/validator-service.class.mjs +0 -2
- package/esm2022/src/app/shared/services.mjs +0 -85
- package/esm2022/src/app/shared/shared-routing.module.mjs +0 -72
- package/esm2022/src/app/shared/shared.module.mjs +0 -229
- package/esm2022/src/app/shared/shared.testing.module.mjs +0 -108
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +0 -281
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +0 -42
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +0 -27
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +0 -25
- package/esm2022/src/app/shared/storage/storage.service.mjs +0 -134
- package/esm2022/src/app/shared/storage/storage.utils.mjs +0 -13
- package/esm2022/src/app/shared/testing/maskito.test.mjs +0 -41
- package/esm2022/src/app/shared/testing/observable.test.mjs +0 -94
- package/esm2022/src/app/shared/testing/tests.page.mjs +0 -37
- package/esm2022/src/app/shared/toast/toast.testing.mjs +0 -54
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +0 -31
- package/esm2022/src/app/shared/toast/toasts.mjs +0 -134
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +0 -62
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +0 -272
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +0 -26
- package/esm2022/src/app/shared/types.mjs +0 -2
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -59
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -108
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +0 -216
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +0 -26
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +0 -122
- package/esm2022/src/app/shared/validator/validators.mjs +0 -658
- package/esm2022/src/app/shared/version/versions.mjs +0 -81
- package/esm2022/src/app/social/config/social.config.mjs +0 -9
- package/esm2022/src/app/social/feed/feed.component.mjs +0 -317
- package/esm2022/src/app/social/feed/feed.directive.mjs +0 -151
- package/esm2022/src/app/social/feed/feed.model.mjs +0 -60
- package/esm2022/src/app/social/feed/feed.module.mjs +0 -24
- package/esm2022/src/app/social/feed/feed.page.mjs +0 -67
- package/esm2022/src/app/social/feed/feed.service.mjs +0 -222
- package/esm2022/src/app/social/feed/testing/feed.testing.mjs +0 -66
- package/esm2022/src/app/social/feed/testing/feed.testing.module.mjs +0 -23
- package/esm2022/src/app/social/job/job.module.mjs +0 -23
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +0 -38
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +0 -241
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +0 -50
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +0 -29
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +0 -91
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +0 -38
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +0 -34
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +0 -22
- package/esm2022/src/app/social/message/message.form.mjs +0 -149
- package/esm2022/src/app/social/message/message.modal.mjs +0 -116
- package/esm2022/src/app/social/message/message.model.mjs +0 -86
- package/esm2022/src/app/social/message/message.module.mjs +0 -25
- package/esm2022/src/app/social/message/message.service.mjs +0 -198
- package/esm2022/src/app/social/social.errors.mjs +0 -11
- package/esm2022/src/app/social/social.module.mjs +0 -22
- package/esm2022/src/app/social/social.testing.module.mjs +0 -72
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -191
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -280
- package/esm2022/src/app/social/user-event/notification/user-event-notification.modal.mjs +0 -84
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +0 -273
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -129
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -22
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -128
- package/esm2022/src/app/social/user-event/user-event.model.mjs +0 -2
- package/esm2022/src/app/social/user-event/user-event.module.mjs +0 -24
- package/esm2022/src/app/social/user-event/user-event.service.mjs +0 -512
- package/esm2022/src/environments/environment.class.mjs +0 -69
- package/esm2022/src/environments/environment.loader.mjs +0 -77
- package/esm2022/src/environments/environment.mjs +0 -133
- package/esm2022/sumaris-net.ngx-components.mjs +0 -5
- package/index.d.ts +0 -5
- package/public_api.d.ts +0 -364
- package/src/app/admin/admin-routing.module.d.ts +0 -9
- package/src/app/admin/admin.module.d.ts +0 -10
- package/src/app/admin/users/person.filter.d.ts +0 -37
- package/src/app/admin/users/person.service.d.ts +0 -61
- package/src/app/admin/users/person.validator.d.ts +0 -23
- package/src/app/admin/users/users-select.modal.d.ts +0 -73
- package/src/app/admin/users/users.d.ts +0 -89
- package/src/app/admin/users/users.module.d.ts +0 -15
- package/src/app/admin/users/users.utils.d.ts +0 -6
- package/src/app/core/about/about.modal.d.ts +0 -44
- package/src/app/core/about/about.module.d.ts +0 -11
- package/src/app/core/account/account.module.d.ts +0 -18
- package/src/app/core/account/account.page.d.ts +0 -93
- package/src/app/core/account/new-token.form.d.ts +0 -30
- package/src/app/core/account/new-token.modal.d.ts +0 -29
- package/src/app/core/account/password/change-password.form.d.ts +0 -19
- package/src/app/core/account/password/change-password.module.d.ts +0 -11
- package/src/app/core/account/password/change-password.page.d.ts +0 -36
- package/src/app/core/account/token.table.d.ts +0 -28
- package/src/app/core/auth/auth.form.d.ts +0 -38
- package/src/app/core/auth/auth.modal.d.ts +0 -24
- package/src/app/core/auth/auth.module.d.ts +0 -13
- package/src/app/core/auth/reset-password.modal.d.ts +0 -29
- package/src/app/core/core.module.d.ts +0 -28
- package/src/app/core/core.testing.module.d.ts +0 -16
- package/src/app/core/form/array/form-array.d.ts +0 -147
- package/src/app/core/form/array/testing/form-array-test.module.d.ts +0 -12
- package/src/app/core/form/array/testing/form-array.test.d.ts +0 -27
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -38
- package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
- package/src/app/core/form/entity/editor.class.d.ts +0 -85
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -126
- package/src/app/core/form/entity/entity-editor.class.d.ts +0 -211
- package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
- package/src/app/core/form/entity/entity.module.d.ts +0 -11
- package/src/app/core/form/entity/tab-editor.class.d.ts +0 -66
- package/src/app/core/form/form-container.class.d.ts +0 -131
- package/src/app/core/form/form.class.d.ts +0 -148
- package/src/app/core/form/form.module.d.ts +0 -15
- package/src/app/core/form/form.utils.d.ts +0 -301
- package/src/app/core/form/list/list.form.d.ts +0 -83
- package/src/app/core/form/list/list.module.d.ts +0 -9
- package/src/app/core/form/properties/properties-file.service.d.ts +0 -26
- package/src/app/core/form/properties/properties.form.d.ts +0 -109
- package/src/app/core/form/properties/properties.module.d.ts +0 -18
- package/src/app/core/form/properties/properties.table.d.ts +0 -73
- package/src/app/core/form/properties/properties.utils.d.ts +0 -59
- package/src/app/core/form/properties/property.validator.d.ts +0 -27
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -22
- package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
- package/src/app/core/form/text/testing/text-form.testing.d.ts +0 -19
- package/src/app/core/form/text/testing/text-form.testing.module.d.ts +0 -14
- package/src/app/core/form/text/text-form.component.d.ts +0 -66
- package/src/app/core/form/text/text-form.module.d.ts +0 -9
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -16
- package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
- package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -81
- package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -10
- package/src/app/core/form/username/username.form.d.ts +0 -19
- package/src/app/core/form/username/username.module.d.ts +0 -9
- package/src/app/core/graphql/graphql.module.d.ts +0 -7
- package/src/app/core/graphql/graphql.service.d.ts +0 -138
- package/src/app/core/graphql/graphql.utils.d.ts +0 -47
- package/src/app/core/home/home.d.ts +0 -135
- package/src/app/core/home/home.module.d.ts +0 -16
- package/src/app/core/icon/icon.component.d.ts +0 -13
- package/src/app/core/icon/icon.module.d.ts +0 -9
- package/src/app/core/install/install-upgrade-card.component.d.ts +0 -63
- package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
- package/src/app/core/menu/menu.component.d.ts +0 -69
- package/src/app/core/menu/menu.model.d.ts +0 -163
- package/src/app/core/menu/menu.module.d.ts +0 -12
- package/src/app/core/menu/menu.service.d.ts +0 -93
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +0 -29
- package/src/app/core/menu/testing/menu-other.testing.d.ts +0 -15
- package/src/app/core/menu/testing/menu.testing.d.ts +0 -53
- package/src/app/core/menu/testing/menu.testing.module.d.ts +0 -12
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
- package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
- package/src/app/core/peer/select-peer.modal.d.ts +0 -108
- package/src/app/core/peer/select-peer.module.d.ts +0 -12
- package/src/app/core/register/register-confirm.page.d.ts +0 -24
- package/src/app/core/register/register.form.d.ts +0 -49
- package/src/app/core/register/register.modal.d.ts +0 -14
- package/src/app/core/register/register.module.d.ts +0 -12
- package/src/app/core/services/account.service.d.ts +0 -236
- package/src/app/core/services/auth-guard.service.d.ts +0 -17
- package/src/app/core/services/base-entity-service.class.d.ts +0 -134
- package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
- package/src/app/core/services/base58.d.ts +0 -7
- package/src/app/core/services/config/core.config.d.ts +0 -52
- package/src/app/core/services/config.service.d.ts +0 -63
- package/src/app/core/services/crypto.service.d.ts +0 -44
- package/src/app/core/services/errors.d.ts +0 -65
- package/src/app/core/services/local-settings.service.d.ts +0 -130
- package/src/app/core/services/model/account.model.d.ts +0 -66
- package/src/app/core/services/model/config.model.d.ts +0 -37
- package/src/app/core/services/model/department.model.d.ts +0 -11
- package/src/app/core/services/model/entity.decorators.d.ts +0 -17
- package/src/app/core/services/model/entity.model.d.ts +0 -133
- package/src/app/core/services/model/filter.model.d.ts +0 -37
- package/src/app/core/services/model/history.model.d.ts +0 -20
- package/src/app/core/services/model/model.enum.d.ts +0 -7
- package/src/app/core/services/model/node-feature.model.d.ts +0 -14
- package/src/app/core/services/model/peer.model.d.ts +0 -35
- package/src/app/core/services/model/person.model.d.ts +0 -39
- package/src/app/core/services/model/referential.model.d.ts +0 -85
- package/src/app/core/services/model/settings.model.d.ts +0 -29
- package/src/app/core/services/model/token.model.d.ts +0 -22
- package/src/app/core/services/model/tree-item-entity.model.d.ts +0 -62
- package/src/app/core/services/network.service.d.ts +0 -184
- package/src/app/core/services/network.types.d.ts +0 -4
- package/src/app/core/services/network.utils.d.ts +0 -39
- package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -11
- package/src/app/core/services/pipes/pipes.module.d.ts +0 -11
- package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +0 -23
- package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
- package/src/app/core/services/platform.service.d.ts +0 -126
- package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
- package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
- package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
- package/src/app/core/services/testing/referential.validator.d.ts +0 -22
- package/src/app/core/services/validator/account.validator.d.ts +0 -24
- package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
- package/src/app/core/services/validator/local-settings.validator.d.ts +0 -18
- package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
- package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
- package/src/app/core/settings/settings.module.d.ts +0 -12
- package/src/app/core/settings/settings.page.d.ts +0 -89
- package/src/app/core/table/async-table.class.d.ts +0 -443
- package/src/app/core/table/column/actions-column.component.d.ts +0 -65
- package/src/app/core/table/column/nav-actions-column.component.d.ts +0 -47
- package/src/app/core/table/column/row-field.component.d.ts +0 -41
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -103
- package/src/app/core/table/entities-table-datasource.class.d.ts +0 -102
- package/src/app/core/table/memory-table.class.d.ts +0 -25
- package/src/app/core/table/table-select-columns.component.d.ts +0 -22
- package/src/app/core/table/table.class.d.ts +0 -427
- package/src/app/core/table/table.model.d.ts +0 -31
- package/src/app/core/table/table.module.d.ts +0 -14
- package/src/app/core/table/table.pipes.d.ts +0 -30
- package/src/app/core/table/table.utils.d.ts +0 -13
- package/src/app/core/table/testing/nested-table.testing.d.ts +0 -54
- package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
- package/src/app/core/table/testing/table.testing.d.ts +0 -55
- package/src/app/core/table/testing/table.testing.module.d.ts +0 -17
- package/src/app/core/table/testing/table2-validator.service.d.ts +0 -15
- package/src/app/core/table/testing/table2.testing.d.ts +0 -53
- package/src/app/shared/alerts.d.ts +0 -55
- package/src/app/shared/audio/audio.d.ts +0 -45
- package/src/app/shared/audio/audio.testing.d.ts +0 -13
- package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
- package/src/app/shared/base64.utils.d.ts +0 -7
- package/src/app/shared/capacitor/keyboard.d.ts +0 -16
- package/src/app/shared/capacitor/plugins.d.ts +0 -8
- package/src/app/shared/constants.d.ts +0 -15
- package/src/app/shared/dates.d.ts +0 -85
- package/src/app/shared/debug/debug-service.class.d.ts +0 -5
- package/src/app/shared/debug/debug.component.d.ts +0 -14
- package/src/app/shared/debug/debug.module.d.ts +0 -12
- package/src/app/shared/directives/autofocus.directive.d.ts +0 -18
- package/src/app/shared/directives/autoresize.directive.d.ts +0 -20
- package/src/app/shared/directives/autotitle.directive.d.ts +0 -11
- package/src/app/shared/directives/autotooltip.directive.d.ts +0 -14
- package/src/app/shared/directives/cell-selection/cell-identifier.directive.d.ts +0 -17
- package/src/app/shared/directives/cell-selection/cell-selection.directive.d.ts +0 -29
- package/src/app/shared/directives/cell-selection/cell-selection.service.d.ts +0 -67
- package/src/app/shared/directives/directives.module.d.ts +0 -15
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
- package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
- package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -24
- package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
- package/src/app/shared/directives/throttled-click.directive.d.ts +0 -16
- package/src/app/shared/events.d.ts +0 -29
- package/src/app/shared/file/csv.utils.d.ts +0 -30
- package/src/app/shared/file/file.service.d.ts +0 -23
- package/src/app/shared/file/file.utils.d.ts +0 -20
- package/src/app/shared/file/images.utils.d.ts +0 -36
- package/src/app/shared/file/json.utils.d.ts +0 -19
- package/src/app/shared/file/uri.utils.d.ts +0 -8
- package/src/app/shared/file/url.utils.d.ts +0 -108
- package/src/app/shared/focusable.d.ts +0 -4
- package/src/app/shared/form/field.component.d.ts +0 -83
- package/src/app/shared/form/field.model.d.ts +0 -88
- package/src/app/shared/form/loading-spinner.d.ts +0 -8
- package/src/app/shared/forms.d.ts +0 -170
- package/src/app/shared/functions.d.ts +0 -296
- package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -25
- package/src/app/shared/gesture/gesture-config.d.ts +0 -15
- package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
- package/src/app/shared/graph/colors.utils.d.ts +0 -34
- package/src/app/shared/graph/graph-colors.d.ts +0 -63
- package/src/app/shared/guard/component-dirty.guard.d.ts +0 -14
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -8
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -48
- package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
- package/src/app/shared/html.utils.d.ts +0 -17
- package/src/app/shared/http/http.utils.d.ts +0 -28
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -139
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -15
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
- package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -13
- package/src/app/shared/image/image.model.d.ts +0 -7
- package/src/app/shared/image/image.module.d.ts +0 -8
- package/src/app/shared/image/image.service.d.ts +0 -37
- package/src/app/shared/inputs.d.ts +0 -37
- package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
- package/src/app/shared/logging/log-level.model.d.ts +0 -38
- package/src/app/shared/logging/logger.model.d.ts +0 -68
- package/src/app/shared/logging/logging-service.class.d.ts +0 -39
- package/src/app/shared/logging/logging-service.config.d.ts +0 -25
- package/src/app/shared/logging/logging-service.module.d.ts +0 -9
- package/src/app/shared/markdown/markdown.component.d.ts +0 -86
- package/src/app/shared/markdown/markdown.directive.d.ts +0 -13
- package/src/app/shared/markdown/markdown.modal.d.ts +0 -49
- package/src/app/shared/markdown/markdown.module.d.ts +0 -17
- package/src/app/shared/markdown/markdown.service.d.ts +0 -37
- package/src/app/shared/markdown/markdown.utils.d.ts +0 -26
- package/src/app/shared/markdown/testing/markdown.test.d.ts +0 -18
- package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +0 -12
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -74
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -224
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -23
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -5
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -48
- package/src/app/shared/material/badge/badge.directive.d.ts +0 -43
- package/src/app/shared/material/badge/badge.module.d.ts +0 -10
- package/src/app/shared/material/badge/badge.test.d.ts +0 -21
- package/src/app/shared/material/boolean/boolean.module.d.ts +0 -21
- package/src/app/shared/material/boolean/material.boolean.d.ts +0 -94
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +0 -31
- package/src/app/shared/material/chips/chips.module.d.ts +0 -22
- package/src/app/shared/material/chips/material.chips.d.ts +0 -167
- package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -32
- package/src/app/shared/material/datetime/datetime.module.d.ts +0 -25
- package/src/app/shared/material/datetime/material.date.d.ts +0 -90
- package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -89
- package/src/app/shared/material/datetime/material.datetime.d.ts +0 -136
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -38
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -32
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -31
- package/src/app/shared/material/duration/duration.module.d.ts +0 -18
- package/src/app/shared/material/duration/duration.utils.d.ts +0 -2
- package/src/app/shared/material/duration/material.duration.d.ts +0 -64
- package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +0 -23
- package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -59
- package/src/app/shared/material/latlong/material.latlong-input.d.ts +0 -93
- package/src/app/shared/material/latlong/material.latlong.d.ts +0 -90
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -21
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -30
- package/src/app/shared/material/material.animations.d.ts +0 -8
- package/src/app/shared/material/material.config.d.ts +0 -3
- package/src/app/shared/material/material.module.d.ts +0 -44
- package/src/app/shared/material/material.testing.module.d.ts +0 -31
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -12
- package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
- package/src/app/shared/material/swipe/material.swipe.d.ts +0 -89
- package/src/app/shared/material/swipe/swipe.module.d.ts +0 -16
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
- package/src/app/shared/material/test/test-component.d.ts +0 -75
- package/src/app/shared/material/testing/common.test.d.ts +0 -25
- package/src/app/shared/modules.d.ts +0 -9
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +0 -63
- package/src/app/shared/named-filter/named-filter.model.d.ts +0 -32
- package/src/app/shared/named-filter/named-filter.module.d.ts +0 -13
- package/src/app/shared/named-filter/named-filter.service.d.ts +0 -32
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +0 -34
- package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +0 -10
- package/src/app/shared/observables.d.ts +0 -32
- package/src/app/shared/pipes/arrays.pipe.d.ts +0 -93
- package/src/app/shared/pipes/badge.pipes.d.ts +0 -7
- package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -25
- package/src/app/shared/pipes/date-format.pipe.d.ts +0 -35
- package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -14
- package/src/app/shared/pipes/date-from.pipe.d.ts +0 -14
- package/src/app/shared/pipes/dates.pipe.d.ts +0 -10
- package/src/app/shared/pipes/display-with.pipe.d.ts +0 -8
- package/src/app/shared/pipes/duration.pipe.d.ts +0 -23
- package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
- package/src/app/shared/pipes/form.pipes.d.ts +0 -69
- package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
- package/src/app/shared/pipes/html.pipes.d.ts +0 -50
- package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
- package/src/app/shared/pipes/maps.pipe.d.ts +0 -23
- package/src/app/shared/pipes/maskito.pipe.d.ts +0 -14
- package/src/app/shared/pipes/math.pipes.d.ts +0 -26
- package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
- package/src/app/shared/pipes/number-format.pipe.d.ts +0 -9
- package/src/app/shared/pipes/observable.pipes.d.ts +0 -25
- package/src/app/shared/pipes/pipes.module.d.ts +0 -36
- package/src/app/shared/pipes/property.pipes.d.ts +0 -46
- package/src/app/shared/pipes/selection.pipes.d.ts +0 -62
- package/src/app/shared/pipes/string.pipes.d.ts +0 -67
- package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
- package/src/app/shared/pipes/types.pipes.d.ts +0 -30
- package/src/app/shared/pipes/url.pipes.d.ts +0 -27
- package/src/app/shared/platforms.d.ts +0 -16
- package/src/app/shared/print/print.service.d.ts +0 -94
- package/src/app/shared/regexps.d.ts +0 -32
- package/src/app/shared/rx-state/rx-state.decorators.d.ts +0 -33
- package/src/app/shared/rx-state/rx-state.module.d.ts +0 -10
- package/src/app/shared/rx-state/rx-state.types.d.ts +0 -5
- package/src/app/shared/services/entity-service.class.d.ts +0 -117
- package/src/app/shared/services/job.utils.d.ts +0 -20
- package/src/app/shared/services/memory-entity-service.class.d.ts +0 -87
- package/src/app/shared/services/progress-bar.service.d.ts +0 -20
- package/src/app/shared/services/startable-observable-service.class.d.ts +0 -51
- package/src/app/shared/services/startable-service.class.d.ts +0 -38
- package/src/app/shared/services/translate-context.service.d.ts +0 -29
- package/src/app/shared/services/validator-service.class.d.ts +0 -11
- package/src/app/shared/services.d.ts +0 -17
- package/src/app/shared/shared-routing.module.d.ts +0 -23
- package/src/app/shared/shared.module.d.ts +0 -33
- package/src/app/shared/shared.testing.module.d.ts +0 -20
- package/src/app/shared/storage/storage-explorer.component.d.ts +0 -60
- package/src/app/shared/storage/storage-explorer.module.d.ts +0 -13
- package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +0 -9
- package/src/app/shared/storage/storage-explorer.testing.module.d.ts +0 -10
- package/src/app/shared/storage/storage.service.d.ts +0 -22
- package/src/app/shared/storage/storage.utils.d.ts +0 -19
- package/src/app/shared/testing/maskito.test.d.ts +0 -10
- package/src/app/shared/testing/observable.test.d.ts +0 -25
- package/src/app/shared/testing/tests.page.d.ts +0 -20
- package/src/app/shared/toast/toast.testing.d.ts +0 -15
- package/src/app/shared/toast/toast.testing.module.d.ts +0 -12
- package/src/app/shared/toast/toasts.d.ts +0 -16
- package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
- package/src/app/shared/toolbar/toolbar.d.ts +0 -70
- package/src/app/shared/toolbar/toolbar.module.d.ts +0 -16
- package/src/app/shared/types.d.ts +0 -45
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -21
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -41
- package/src/app/shared/upload-file/upload-file.component.d.ts +0 -50
- package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
- package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -33
- package/src/app/shared/validator/validators.d.ts +0 -145
- package/src/app/shared/version/versions.d.ts +0 -26
- package/src/app/social/config/social.config.d.ts +0 -4
- package/src/app/social/feed/feed.component.d.ts +0 -91
- package/src/app/social/feed/feed.directive.d.ts +0 -32
- package/src/app/social/feed/feed.model.d.ts +0 -69
- package/src/app/social/feed/feed.module.d.ts +0 -13
- package/src/app/social/feed/feed.page.d.ts +0 -24
- package/src/app/social/feed/feed.service.d.ts +0 -85
- package/src/app/social/feed/testing/feed.testing.d.ts +0 -23
- package/src/app/social/feed/testing/feed.testing.module.d.ts +0 -12
- package/src/app/social/job/job.module.d.ts +0 -12
- package/src/app/social/job/progression/job-progression.component.d.ts +0 -24
- package/src/app/social/job/progression/job-progression.icon.d.ts +0 -63
- package/src/app/social/job/progression/job-progression.list.d.ts +0 -20
- package/src/app/social/job/progression/job-progression.model.d.ts +0 -10
- package/src/app/social/job/progression/job-progression.service.d.ts +0 -33
- package/src/app/social/job/testing/job-progression.testing.d.ts +0 -13
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -9
- package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
- package/src/app/social/message/message.form.d.ts +0 -36
- package/src/app/social/message/message.modal.d.ts +0 -47
- package/src/app/social/message/message.model.d.ts +0 -36
- package/src/app/social/message/message.module.d.ts +0 -14
- package/src/app/social/message/message.service.d.ts +0 -44
- package/src/app/social/social.errors.d.ts +0 -10
- package/src/app/social/social.module.d.ts +0 -20
- package/src/app/social/social.testing.module.d.ts +0 -14
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -47
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -77
- package/src/app/social/user-event/notification/user-event-notification.modal.d.ts +0 -37
- package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -44
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -42
- package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -41
- package/src/app/social/user-event/user-event.model.d.ts +0 -44
- package/src/app/social/user-event/user-event.module.d.ts +0 -14
- package/src/app/social/user-event/user-event.service.d.ts +0 -124
- package/src/environments/environment.class.d.ts +0 -86
- package/src/environments/environment.d.ts +0 -2
- package/src/environments/environment.loader.d.ts +0 -24
- package/src/theme/_globals.scss +0 -5
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
import { isMoment } from 'moment';
|
|
2
|
-
import { getPropertyByPath, isEmptyArray, isNil, isNilOrBlank, isNotNil, joinPropertiesPath } from '../../../shared/functions';
|
|
3
|
-
import { fromDateISOString, toDateISOString } from '../../../shared/dates';
|
|
4
|
-
import { TreeItemEntityUtils } from './tree-item-entity.model';
|
|
5
|
-
import { AppPropertiesUtils } from '../../form/properties/properties.utils';
|
|
6
|
-
export function entityToString(obj, properties) {
|
|
7
|
-
return (obj && isNotNil(obj.id) && joinPropertiesPath(obj, properties || ['name'])) || undefined;
|
|
8
|
-
}
|
|
9
|
-
//@dynamic
|
|
10
|
-
export class Entity {
|
|
11
|
-
// The GraphQL typename (injected by @EntityClass())
|
|
12
|
-
static TYPENAME;
|
|
13
|
-
id = null;
|
|
14
|
-
updateDate = null;
|
|
15
|
-
__typename;
|
|
16
|
-
constructor(__typename) {
|
|
17
|
-
this.__typename = __typename || null;
|
|
18
|
-
}
|
|
19
|
-
clone(opts) {
|
|
20
|
-
const target = new this.constructor();
|
|
21
|
-
this.copy(target, opts);
|
|
22
|
-
return target;
|
|
23
|
-
}
|
|
24
|
-
copy(target, opts) {
|
|
25
|
-
target.fromObject(this.asObject(opts), opts);
|
|
26
|
-
}
|
|
27
|
-
asObject(opts) {
|
|
28
|
-
const target = Object.assign({}, this); //= {...this};
|
|
29
|
-
if (!opts || opts.keepTypename !== true)
|
|
30
|
-
delete target.__typename;
|
|
31
|
-
target.updateDate = toDateISOString(this.updateDate);
|
|
32
|
-
if (target.id == null || (opts && opts.keepLocalId === false && target.id < 0)) {
|
|
33
|
-
delete target.id;
|
|
34
|
-
delete target.updateDate; // Make to sens to keep updateDate of a local entity to save
|
|
35
|
-
}
|
|
36
|
-
return target;
|
|
37
|
-
}
|
|
38
|
-
fromObject(source, opts) {
|
|
39
|
-
this.id = source.id || source.id === 0 ? source.id : undefined;
|
|
40
|
-
this.updateDate = fromDateISOString(source.updateDate);
|
|
41
|
-
this.__typename = source.__typename || this.__typename; // Keep original type (can be set in constructor)
|
|
42
|
-
}
|
|
43
|
-
equals(other) {
|
|
44
|
-
return other && this.id === other.id;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* @deprecated use standard instanceof instead
|
|
49
|
-
* @param obj
|
|
50
|
-
* @param constructor
|
|
51
|
-
*/
|
|
52
|
-
export function isInstanceOf(obj, constructor) {
|
|
53
|
-
if (!obj)
|
|
54
|
-
return false;
|
|
55
|
-
return obj instanceof constructor;
|
|
56
|
-
}
|
|
57
|
-
// @dynamic
|
|
58
|
-
export class EntityUtils {
|
|
59
|
-
// Check that the object is an entity
|
|
60
|
-
static isEntity(obj) {
|
|
61
|
-
return isNotNil(obj?.__typename) && typeof obj.fromObject === 'function' && typeof obj.asObject === 'function';
|
|
62
|
-
}
|
|
63
|
-
// Check that the object has a NOT nil attribute (ID by default)
|
|
64
|
-
static isNotEmpty(obj, checkedAttribute = 'id') {
|
|
65
|
-
return !!obj && obj[checkedAttribute] !== null && obj[checkedAttribute] !== undefined;
|
|
66
|
-
}
|
|
67
|
-
// Check that the object has a nil attribute (ID by default)
|
|
68
|
-
static isEmpty(obj, checkedAttribute = 'id') {
|
|
69
|
-
return !obj || obj[checkedAttribute] === null || obj[checkedAttribute] === undefined;
|
|
70
|
-
}
|
|
71
|
-
static equals(o1, o2, checkAttribute) {
|
|
72
|
-
checkAttribute = checkAttribute || 'id';
|
|
73
|
-
return o1 === o2 || (isNil(o1) && isNil(o2)) || (o1 && o2 && o1[checkAttribute] === o2[checkAttribute]);
|
|
74
|
-
}
|
|
75
|
-
static getPropertyByPath = getPropertyByPath;
|
|
76
|
-
static getArrayAsMap(source) {
|
|
77
|
-
return (source || []).reduce((res, item) => {
|
|
78
|
-
res[item.key] = item.value;
|
|
79
|
-
return res;
|
|
80
|
-
}, {});
|
|
81
|
-
}
|
|
82
|
-
static getMapAsArray(source) {
|
|
83
|
-
if (Array.isArray(source))
|
|
84
|
-
return source;
|
|
85
|
-
return Object.getOwnPropertyNames(source || {}).map((key) => ({
|
|
86
|
-
key,
|
|
87
|
-
value: source[key],
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
static getPropertyArrayAsObject = AppPropertiesUtils.arrayAsObject;
|
|
91
|
-
static copyIdAndUpdateDate(source, target) {
|
|
92
|
-
if (!source)
|
|
93
|
-
return;
|
|
94
|
-
// Update (id and updateDate)
|
|
95
|
-
target.id = isNotNil(source.id) ? source.id : target.id;
|
|
96
|
-
target.updateDate = fromDateISOString(source.updateDate) || target.updateDate;
|
|
97
|
-
// Update creation Date, if exists
|
|
98
|
-
if (source['creationDate']) {
|
|
99
|
-
target['creationDate'] = fromDateISOString(source['creationDate']);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
static async fillLocalIds(items, sequenceFactory) {
|
|
103
|
-
const newItems = (items || []).filter((item) => isNil(item.id) || item.id === 0);
|
|
104
|
-
if (isEmptyArray(newItems))
|
|
105
|
-
return;
|
|
106
|
-
// Get the sequence
|
|
107
|
-
let currentId = (await sequenceFactory(newItems[0], newItems.length)) + 1;
|
|
108
|
-
// Take the min (sequence, id), in case the sequence is corrupted
|
|
109
|
-
currentId = items.filter((item) => isNotNil(item.id) && item.id < 0).reduce((res, item) => Math.min(res, item.id), currentId);
|
|
110
|
-
newItems.forEach((item) => (item.id = --currentId));
|
|
111
|
-
}
|
|
112
|
-
static cleanIdAndUpdateDate(source, defaultValue = null) {
|
|
113
|
-
if (!source)
|
|
114
|
-
return; // Skip
|
|
115
|
-
source.id = defaultValue;
|
|
116
|
-
source.updateDate = defaultValue;
|
|
117
|
-
}
|
|
118
|
-
static cleanIdsAndUpdateDates(items, defaultValue = null) {
|
|
119
|
-
(items || []).forEach((item) => EntityUtils.cleanIdAndUpdateDate(item, defaultValue));
|
|
120
|
-
}
|
|
121
|
-
static sort(data, sortBy, sortDirection) {
|
|
122
|
-
if (!data || data.length <= 1 || !sortBy)
|
|
123
|
-
return data;
|
|
124
|
-
return data.sort(this.sortComparator(sortBy, sortDirection));
|
|
125
|
-
}
|
|
126
|
-
static sortComparator(sortBy, sortDirection) {
|
|
127
|
-
const after = !sortDirection || sortDirection === 'asc' ? 1 : -1;
|
|
128
|
-
const property = (sortBy || 'id');
|
|
129
|
-
return (a, b) => {
|
|
130
|
-
const valueA = EntityUtils.getPropertyByPath(a, property);
|
|
131
|
-
const valueB = EntityUtils.getPropertyByPath(b, property);
|
|
132
|
-
return EntityUtils.compare(valueA, valueB, after);
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
static compare(value1, value2, direction, checkAttribute) {
|
|
136
|
-
checkAttribute = checkAttribute || 'id';
|
|
137
|
-
if (EntityUtils.isNotEmpty(value1, checkAttribute) && EntityUtils.isNotEmpty(value2, checkAttribute)) {
|
|
138
|
-
return EntityUtils.equals(value1, value2, checkAttribute) ? 0 : value1[checkAttribute] > value2[checkAttribute] ? direction : -1 * direction;
|
|
139
|
-
}
|
|
140
|
-
return value1 === value2 ? 0 : value1 > value2 ? direction : -1 * direction;
|
|
141
|
-
}
|
|
142
|
-
static compareValue(value1, value2, direction) {
|
|
143
|
-
return value1 === value2 ? 0 : value1 > value2 ? direction : -1 * direction;
|
|
144
|
-
}
|
|
145
|
-
static filter(data, searchAttribute, searchText) {
|
|
146
|
-
const filterFn = this.searchTextFilter(searchAttribute, searchText);
|
|
147
|
-
return data.filter(filterFn);
|
|
148
|
-
}
|
|
149
|
-
static searchTextFilter(searchAttribute, searchText) {
|
|
150
|
-
if (isNilOrBlank(searchAttribute) || isNilOrBlank(searchText))
|
|
151
|
-
return undefined; // filter not need
|
|
152
|
-
const searchRegexp = searchText
|
|
153
|
-
// Escape special characters
|
|
154
|
-
// eslint-disable-next-line no-useless-escape
|
|
155
|
-
.replace(/[-\/\\^$+.()|[\]{}]/g, '\\$&')
|
|
156
|
-
// Interpret * as any text
|
|
157
|
-
.replace(/[*]+/g, '.*')
|
|
158
|
-
// Interpret ? as one character
|
|
159
|
-
.replace(/[?]/g, '.');
|
|
160
|
-
if (searchRegexp === '.*')
|
|
161
|
-
return undefined; // filter not need
|
|
162
|
-
const flags = 'i'; // don't use global regex search
|
|
163
|
-
const asPrefixPattern = '^' + searchRegexp;
|
|
164
|
-
const anyMatchPattern = '^.*' + searchRegexp;
|
|
165
|
-
// Only one search attributes
|
|
166
|
-
if (typeof searchAttribute === 'string') {
|
|
167
|
-
const isSimplePath = !searchAttribute || searchAttribute.indexOf('.') === -1;
|
|
168
|
-
const searchAsPrefix = searchAttribute.toLowerCase().endsWith('label') || searchAttribute.toLowerCase().endsWith('code');
|
|
169
|
-
const regexp = new RegExp((searchAsPrefix && asPrefixPattern) || anyMatchPattern, flags);
|
|
170
|
-
if (isSimplePath) {
|
|
171
|
-
return (a) => regexp.test(a[searchAttribute]);
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
return (a) => regexp.test(EntityUtils.getPropertyByPath(a, searchAttribute));
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// many search attributes
|
|
178
|
-
else {
|
|
179
|
-
const regexps = searchAttribute.map((path) => {
|
|
180
|
-
const searchAsPrefix = path.toLowerCase().endsWith('label') || path.toLowerCase().endsWith('code');
|
|
181
|
-
return new RegExp((searchAsPrefix && asPrefixPattern) || anyMatchPattern, flags);
|
|
182
|
-
});
|
|
183
|
-
return (a) => searchAttribute.findIndex((path, index) => regexps[index].test(EntityUtils.getPropertyByPath(a, path))) !== -1;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Transform a batch entity tree into a array list. This method keep links parent/children.
|
|
188
|
-
*
|
|
189
|
-
* Method used to find batch without id (e.g. before local storage)
|
|
190
|
-
*
|
|
191
|
-
* @param source
|
|
192
|
-
*/
|
|
193
|
-
static treeToArray = TreeItemEntityUtils.treeToArray;
|
|
194
|
-
static listOfTreeToArray = TreeItemEntityUtils.listOfTreeToArray;
|
|
195
|
-
/**
|
|
196
|
-
* Fill parent attribute, of all children found in the tree
|
|
197
|
-
*
|
|
198
|
-
* @param source
|
|
199
|
-
*/
|
|
200
|
-
static treeFillParent = TreeItemEntityUtils.treeFillParent;
|
|
201
|
-
static isLocal(entity) {
|
|
202
|
-
return entity && isNotNil(entity.id) && +entity.id < 0;
|
|
203
|
-
}
|
|
204
|
-
static isRemote(entity) {
|
|
205
|
-
return entity && !EntityUtils.isLocal(entity);
|
|
206
|
-
}
|
|
207
|
-
static isLocalId(id) {
|
|
208
|
-
return isNotNil(id) && +id < 0;
|
|
209
|
-
}
|
|
210
|
-
static isRemoteId(id) {
|
|
211
|
-
return isNotNil(id) && +id >= 0;
|
|
212
|
-
}
|
|
213
|
-
static getId(entity) {
|
|
214
|
-
return entity.id;
|
|
215
|
-
}
|
|
216
|
-
// Check that the object has an ID
|
|
217
|
-
static hasId(entity) {
|
|
218
|
-
return isNotNil(entity?.id);
|
|
219
|
-
}
|
|
220
|
-
// Check that the object has an nil ID
|
|
221
|
-
static hasNilId(entity) {
|
|
222
|
-
return isNil(entity?.id);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Splits an array of entities into a key-value map using an entity ID as the key.
|
|
226
|
-
*
|
|
227
|
-
* @param {Array<T>} entities - The array of entities to be split by their ID.
|
|
228
|
-
* @return {KeyValueType<T>} A key-value map with entity IDs as keys and entities as values.
|
|
229
|
-
*/
|
|
230
|
-
static splitById(entities) {
|
|
231
|
-
return (entities || []).reduce((res, item) => {
|
|
232
|
-
const key = item?.id;
|
|
233
|
-
if (typeof key === 'number' || typeof key === 'string') {
|
|
234
|
-
res[key] = item;
|
|
235
|
-
}
|
|
236
|
-
return res;
|
|
237
|
-
}, {});
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Collects the IDs from an array of entities and returns them as an array.
|
|
241
|
-
*
|
|
242
|
-
* @param {T[]} entities - An array of entities from which to collect IDs.
|
|
243
|
-
* @return {ID[]} An array of IDs collected from the entities.
|
|
244
|
-
*/
|
|
245
|
-
static collectIds(entities) {
|
|
246
|
-
return (entities || []).map((e) => e.id);
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* @deprecated Use collectIds() instead - will be remove in next major release
|
|
250
|
-
*/
|
|
251
|
-
static collectById(entities) {
|
|
252
|
-
return (entities || []).map((e) => e.id);
|
|
253
|
-
}
|
|
254
|
-
static arrayDistinctFilterFn(item, index, values) {
|
|
255
|
-
return values.findIndex((e) => e.id === item.id) === index;
|
|
256
|
-
}
|
|
257
|
-
static findById(items, id) {
|
|
258
|
-
return (items || []).find((g) => g.id === id);
|
|
259
|
-
}
|
|
260
|
-
static fromObject(source, dataType) {
|
|
261
|
-
if (!source)
|
|
262
|
-
return source;
|
|
263
|
-
if (source instanceof dataType)
|
|
264
|
-
return source;
|
|
265
|
-
const target = new dataType();
|
|
266
|
-
if (EntityUtils.isEntity(target)) {
|
|
267
|
-
target.fromObject(source);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
Object.assign(target, source);
|
|
271
|
-
}
|
|
272
|
-
return target;
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Recursively converts any object, entity, or array to a plain JavaScript object.
|
|
276
|
-
* This method handles entities by calling their asObject() method, processes arrays recursively,
|
|
277
|
-
* and provides protection against circular references.
|
|
278
|
-
*
|
|
279
|
-
* @param {any} source - The source object, entity, array, or primitive value to convert
|
|
280
|
-
* @param {any} [opts] - Optional configuration object passed to entity asObject() methods
|
|
281
|
-
* @param {WeakSet} [visited=new WeakSet()] - Internal parameter for circular reference detection
|
|
282
|
-
* @returns {any} A plain JavaScript object representation of the source
|
|
283
|
-
*
|
|
284
|
-
* @example
|
|
285
|
-
* // Convert a simple entity
|
|
286
|
-
* const plainObject = EntityUtils.asObject(myEntity);
|
|
287
|
-
*
|
|
288
|
-
* @example
|
|
289
|
-
* // Convert an array of entities
|
|
290
|
-
* const plainArray = EntityUtils.asObject([entity1, entity2]);
|
|
291
|
-
*
|
|
292
|
-
* @example
|
|
293
|
-
* // Convert with options
|
|
294
|
-
* const result = EntityUtils.asObject(myEntity, { minify: true });
|
|
295
|
-
*/
|
|
296
|
-
static asObject(source, opts, visited = new WeakSet()) {
|
|
297
|
-
if (!source)
|
|
298
|
-
return source;
|
|
299
|
-
if (Array.isArray(source))
|
|
300
|
-
return source.map((item) => EntityUtils.asObject(item, opts, visited));
|
|
301
|
-
if (EntityUtils.isEntity(source))
|
|
302
|
-
return source.asObject(opts);
|
|
303
|
-
if (typeof source === 'function')
|
|
304
|
-
return undefined;
|
|
305
|
-
if (typeof source !== 'object')
|
|
306
|
-
return source;
|
|
307
|
-
if (isMoment(source))
|
|
308
|
-
return toDateISOString(source);
|
|
309
|
-
// Handle special objects
|
|
310
|
-
if (isMoment(source) || typeof source.toISOString === 'function')
|
|
311
|
-
return source.toISOString();
|
|
312
|
-
if (source instanceof RegExp)
|
|
313
|
-
return source.toString();
|
|
314
|
-
// Protection against circular references
|
|
315
|
-
if (visited.has(source)) {
|
|
316
|
-
console.warn('[EntityUtils.asObject] Circular reference detected, skipping object');
|
|
317
|
-
return {}; // or return null based on your needs
|
|
318
|
-
}
|
|
319
|
-
visited.add(source);
|
|
320
|
-
// Create a copy
|
|
321
|
-
const target = { ...source };
|
|
322
|
-
// Serialize all properties recursively
|
|
323
|
-
Object.keys(target).forEach((key) => {
|
|
324
|
-
const value = target[key];
|
|
325
|
-
// Handle arrays
|
|
326
|
-
if (Array.isArray(value)) {
|
|
327
|
-
target[key] = value.map((item) => EntityUtils.asObject(item, opts, visited));
|
|
328
|
-
}
|
|
329
|
-
// Handle objects (including entities)
|
|
330
|
-
else if (value && typeof value === 'object') {
|
|
331
|
-
target[key] = EntityUtils.asObject(value, opts, visited);
|
|
332
|
-
}
|
|
333
|
-
// Spread operator already copies primitive values
|
|
334
|
-
});
|
|
335
|
-
// Remove typename if minify
|
|
336
|
-
if (opts?.minify || opts?.keepTypename === false) {
|
|
337
|
-
delete target['__typename'];
|
|
338
|
-
}
|
|
339
|
-
if (opts?.keepLocalId && EntityUtils.isLocal(target)) {
|
|
340
|
-
delete target.id;
|
|
341
|
-
}
|
|
342
|
-
// Remove the object from Set after processing
|
|
343
|
-
visited.delete(source);
|
|
344
|
-
return target;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUcvSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFNNUUsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFzQixFQUFFLFVBQXFCO0lBQzFFLE9BQU8sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUNuRyxDQUFDO0FBdUJELFVBQVU7QUFDVixNQUFNLE9BQWdCLE1BQU07SUFHMUIsb0RBQW9EO0lBQ3BELE1BQU0sQ0FBQyxRQUFRLENBQVM7SUFFeEIsRUFBRSxHQUFPLElBQUksQ0FBQztJQUNkLFVBQVUsR0FBVyxJQUFJLENBQUM7SUFDMUIsVUFBVSxDQUFTO0lBRW5CLFlBQVksVUFBbUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBYztRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFLLElBQUksQ0FBQyxXQUFtQixF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LE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUxQixnQkFBZ0I7WUFDaEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMvRSxDQUFDO1lBQ0Qsc0NBQXNDO2lCQUNqQyxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0Qsa0RBQWtEO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUUsWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2pELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLElBQUksRUFBRSxXQUFXLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsOENBQThDO1FBQzlDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTW9tZW50LCBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzRW1wdHlBcnJheSwgaXNOaWwsIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGpvaW5Qcm9wZXJ0aWVzUGF0aCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRmlsdGVyRm4sIEtleVZhbHVlVHlwZSwgT2JqZWN0TWFwLCBPYmplY3RNYXBFbnRyeSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBTdG9yZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgZnJvbURhdGVJU09TdHJpbmcsIHRvRGF0ZUlTT1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQgeyBUcmVlSXRlbUVudGl0eVV0aWxzIH0gZnJvbSAnLi90cmVlLWl0ZW0tZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNVdGlscyB9IGZyb20gJy4uLy4uL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0aWVzLnV0aWxzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENsb25lYWJsZTxUPiB7XG4gIGNsb25lKCk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb1N0cmluZyhvYmo6IEVudGl0eTxhbnk+IHwgYW55LCBwcm9wZXJ0aWVzPzogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKG9iaiAmJiBpc05vdE5pbChvYmouaWQpICYmIGpvaW5Qcm9wZXJ0aWVzUGF0aChvYmosIHByb3BlcnRpZXMgfHwgWyduYW1lJ10pKSB8fCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QXNPYmplY3RPcHRpb25zIHtcbiAgbWluaWZ5PzogYm9vbGVhbjtcbiAga2VlcFR5cGVuYW1lPzogYm9vbGVhbjsgLy8gdHJ1ZSBieSBkZWZhdWx0XG4gIGtlZXBMb2NhbElkPzogYm9vbGVhbjsgLy8gdHJ1ZSBieSBkZWZhdWx0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudGl0eTxULCBJRCA9IG51bWJlciwgQU8gZXh0ZW5kcyBFbnRpdHlBc09iamVjdE9wdGlvbnMgPSBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEZPID0gYW55PiBleHRlbmRzIENsb25lYWJsZTxUPiB7XG4gIGlkOiBJRDtcbiAgdXBkYXRlRGF0ZTogTW9tZW50O1xuICBfX3R5cGVuYW1lOiBzdHJpbmc7XG4gIGVxdWFscyhvdGhlcjogVCk6IGJvb2xlYW47XG4gIGNsb25lKG9wdHM/OiBBTyAmIEZPKTogVDtcbiAgY29weSh0YXJnZXQ6IFQsIG9wdHM/OiBBTyAmIEZPKTogdm9pZDtcbiAgYXNPYmplY3Qob3B0cz86IEFPKTogYW55O1xuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogRk8pOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBPbWl0RnVuY3Rpb25zPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyBGdW5jdGlvbiA/IG5ldmVyIDogS106IFRbS107XG59O1xuXG4vL0BkeW5hbWljXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5PFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQsIEFPLCBGTz4sIElEID0gbnVtYmVyLCBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucywgRk8gPSBhbnk+XG4gIGltcGxlbWVudHMgSUVudGl0eTxULCBJRCwgQU8sIEZPPlxue1xuICAvLyBUaGUgR3JhcGhRTCB0eXBlbmFtZSAoaW5qZWN0ZWQgYnkgQEVudGl0eUNsYXNzKCkpXG4gIHN0YXRpYyBUWVBFTkFNRTogc3RyaW5nO1xuXG4gIGlkOiBJRCA9IG51bGw7XG4gIHVwZGF0ZURhdGU6IE1vbWVudCA9IG51bGw7XG4gIF9fdHlwZW5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfX3R5cGVuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5fX3R5cGVuYW1lID0gX190eXBlbmFtZSB8fCBudWxsO1xuICB9XG5cbiAgY2xvbmUob3B0cz86IEFPICYgRk8pOiBUIHtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KSgpIGFzIFQ7XG4gICAgdGhpcy5jb3B5KHRhcmdldCwgb3B0cyk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGNvcHkodGFyZ2V0OiBULCBvcHRzPzogQU8gJiBGTykge1xuICAgIHRhcmdldC5mcm9tT2JqZWN0KHRoaXMuYXNPYmplY3Qob3B0cyksIG9wdHMpO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEFPKTogU3RvcmVPYmplY3Qge1xuICAgIGNvbnN0IHRhcmdldDogYW55ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7IC8vPSB7Li4udGhpc307XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMua2VlcFR5cGVuYW1lICE9PSB0cnVlKSBkZWxldGUgdGFyZ2V0Ll9fdHlwZW5hbWU7XG4gICAgdGFyZ2V0LnVwZGF0ZURhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy51cGRhdGVEYXRlKTtcbiAgICBpZiAodGFyZ2V0LmlkID09IG51bGwgfHwgKG9wdHMgJiYgb3B0cy5rZWVwTG9jYWxJZCA9PT0gZmFsc2UgJiYgdGFyZ2V0LmlkIDwgMCkpIHtcbiAgICAgIGRlbGV0ZSB0YXJnZXQuaWQ7XG4gICAgICBkZWxldGUgdGFyZ2V0LnVwZGF0ZURhdGU7IC8vIE1ha2UgdG8gc2VucyB0byBrZWVwIHVwZGF0ZURhdGUgb2YgYSBsb2NhbCBlbnRpdHkgdG8gc2F2ZVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IEZPKSB7XG4gICAgdGhpcy5pZCA9IHNvdXJjZS5pZCB8fCBzb3VyY2UuaWQgPT09IDAgPyBzb3VyY2UuaWQgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy51cGRhdGVEYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLnVwZGF0ZURhdGUpO1xuICAgIHRoaXMuX190eXBlbmFtZSA9IHNvdXJjZS5fX3R5cGVuYW1lIHx8IHRoaXMuX190eXBlbmFtZTsgLy8gS2VlcCBvcmlnaW5hbCB0eXBlIChjYW4gYmUgc2V0IGluIGNvbnN0cnVjdG9yKVxuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMuaWQgPT09IG90aGVyLmlkO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHN0YW5kYXJkIGluc3RhbmNlb2YgaW5zdGVhZFxuICogQHBhcmFtIG9ialxuICogQHBhcmFtIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luc3RhbmNlT2Y8VD4ob2JqOiBhbnksIGNvbnN0cnVjdG9yOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogb2JqIGlzIFQge1xuICBpZiAoIW9iaikgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcjtcbn1cblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlVdGlscyB7XG4gIC8vIENoZWNrIHRoYXQgdGhlIG9iamVjdCBpcyBhbiBlbnRpdHlcbiAgc3RhdGljIGlzRW50aXR5PFQgZXh0ZW5kcyBJRW50aXR5PGFueT4+KG9iajogVCB8IGFueSk6IG9iaiBpcyBUIHtcbiAgICByZXR1cm4gaXNOb3ROaWwob2JqPy5fX3R5cGVuYW1lKSAmJiB0eXBlb2Ygb2JqLmZyb21PYmplY3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5hc09iamVjdCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIC8vIENoZWNrIHRoYXQgdGhlIG9iamVjdCBoYXMgYSBOT1QgbmlsIGF0dHJpYnV0ZSAoSUQgYnkgZGVmYXVsdClcbiAgc3RhdGljIGlzTm90RW1wdHk8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4ob2JqOiBULCBjaGVja2VkQXR0cmlidXRlOiBrZXlvZiBUID0gPGtleW9mIFQ+J2lkJyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW9iaiAmJiBvYmpbY2hlY2tlZEF0dHJpYnV0ZV0gIT09IG51bGwgJiYgb2JqW2NoZWNrZWRBdHRyaWJ1dGVdICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBDaGVjayB0aGF0IHRoZSBvYmplY3QgaGFzIGEgbmlsIGF0dHJpYnV0ZSAoSUQgYnkgZGVmYXVsdClcbiAgc3RhdGljIGlzRW1wdHk8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4ob2JqOiBULCBjaGVja2VkQXR0cmlidXRlOiBrZXlvZiBUID0gPGtleW9mIFQ+J2lkJyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhb2JqIHx8IG9ialtjaGVja2VkQXR0cmlidXRlXSA9PT0gbnVsbCB8fCBvYmpbY2hlY2tlZEF0dHJpYnV0ZV0gPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHM8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4obzE6IFQsIG8yOiBULCBjaGVja0F0dHJpYnV0ZT86IGtleW9mIFQpOiBib29sZWFuIHtcbiAgICBjaGVja0F0dHJpYnV0ZSA9IGNoZWNrQXR0cmlidXRlIHx8ICgnaWQnIGFzIGtleW9mIFQpO1xuICAgIHJldHVybiBvMSA9PT0gbzIgfHwgKGlzTmlsKG8xKSAmJiBpc05pbChvMikpIHx8IChvMSAmJiBvMiAmJiBvMVtjaGVja0F0dHJpYnV0ZV0gPT09IG8yW2NoZWNrQXR0cmlidXRlXSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0UHJvcGVydHlCeVBhdGggPSBnZXRQcm9wZXJ0eUJ5UGF0aDtcblxuICBzdGF0aWMgZ2V0QXJyYXlBc01hcDxUID0gYW55Pihzb3VyY2U/OiBPYmplY3RNYXBFbnRyeTxUPltdKTogT2JqZWN0TWFwPFQ+IHtcbiAgICByZXR1cm4gKHNvdXJjZSB8fCBbXSkucmVkdWNlKChyZXMsIGl0ZW0pID0+IHtcbiAgICAgIHJlc1tpdGVtLmtleV0gPSBpdGVtLnZhbHVlO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TWFwQXNBcnJheTxUID0gYW55Pihzb3VyY2U/OiBPYmplY3RNYXA8VD4pOiBPYmplY3RNYXBFbnRyeTxUPltdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSByZXR1cm4gc291cmNlO1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UgfHwge30pLm1hcCgoa2V5KSA9PiAoe1xuICAgICAga2V5LFxuICAgICAgdmFsdWU6IHNvdXJjZVtrZXldLFxuICAgIH0pKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eUFycmF5QXNPYmplY3QgPSBBcHBQcm9wZXJ0aWVzVXRpbHMuYXJyYXlBc09iamVjdDtcblxuICBzdGF0aWMgY29weUlkQW5kVXBkYXRlRGF0ZTxUIGV4dGVuZHMgRW50aXR5PGFueSwgYW55LCBhbnk+Pihzb3VyY2U6IFQsIHRhcmdldDogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgKGlkIGFuZCB1cGRhdGVEYXRlKVxuICAgIHRhcmdldC5pZCA9IGlzTm90TmlsKHNvdXJjZS5pZCkgPyBzb3VyY2UuaWQgOiB0YXJnZXQuaWQ7XG4gICAgdGFyZ2V0LnVwZGF0ZURhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2UudXBkYXRlRGF0ZSkgfHwgdGFyZ2V0LnVwZGF0ZURhdGU7XG5cbiAgICAvLyBVcGRhdGUgY3JlYXRpb24gRGF0ZSwgaWYgZXhpc3RzXG4gICAgaWYgKHNvdXJjZVsnY3JlYXRpb25EYXRlJ10pIHtcbiAgICAgIHRhcmdldFsnY3JlYXRpb25EYXRlJ10gPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2VbJ2NyZWF0aW9uRGF0ZSddKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZmlsbExvY2FsSWRzPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+KGl0ZW1zOiBUW10sIHNlcXVlbmNlRmFjdG9yeTogKGZpcnN0RW50aXR5OiBULCBpbmNyZW1lbnRTaXplOiBudW1iZXIpID0+IFByb21pc2U8bnVtYmVyPikge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gKGl0ZW1zIHx8IFtdKS5maWx0ZXIoKGl0ZW0pID0+IGlzTmlsKGl0ZW0uaWQpIHx8IGl0ZW0uaWQgPT09IDApO1xuICAgIGlmIChpc0VtcHR5QXJyYXkobmV3SXRlbXMpKSByZXR1cm47XG4gICAgLy8gR2V0IHRoZSBzZXF1ZW5jZVxuICAgIGxldCBjdXJyZW50SWQgPSAoYXdhaXQgc2VxdWVuY2VGYWN0b3J5KG5ld0l0ZW1zWzBdLCBuZXdJdGVtcy5sZW5ndGgpKSArIDE7XG4gICAgLy8gVGFrZSB0aGUgbWluIChzZXF1ZW5jZSwgaWQpLCBpbiBjYXNlIHRoZSBzZXF1ZW5jZSBpcyBjb3JydXB0ZWRcbiAgICBjdXJyZW50SWQgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGlzTm90TmlsKGl0ZW0uaWQpICYmIGl0ZW0uaWQgPCAwKS5yZWR1Y2UoKHJlcywgaXRlbSkgPT4gTWF0aC5taW4ocmVzLCBpdGVtLmlkKSwgY3VycmVudElkKTtcbiAgICBuZXdJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5pZCA9IC0tY3VycmVudElkKSk7XG4gIH1cblxuICBzdGF0aWMgY2xlYW5JZEFuZFVwZGF0ZURhdGU8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4oc291cmNlOiBULCBkZWZhdWx0VmFsdWUgPSBudWxsKSB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybjsgLy8gU2tpcFxuICAgIHNvdXJjZS5pZCA9IGRlZmF1bHRWYWx1ZTtcbiAgICBzb3VyY2UudXBkYXRlRGF0ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhbklkc0FuZFVwZGF0ZURhdGVzPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+KGl0ZW1zOiBUW10sIGRlZmF1bHRWYWx1ZSA9IG51bGwpIHtcbiAgICAoaXRlbXMgfHwgW10pLmZvckVhY2goKGl0ZW0pID0+IEVudGl0eVV0aWxzLmNsZWFuSWRBbmRVcGRhdGVEYXRlKGl0ZW0sIGRlZmF1bHRWYWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHNvcnQ8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55PiB8IGFueT4oZGF0YTogVFtdLCBzb3J0Qnk/OiBrZXlvZiBUIHwgc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbik6IFRbXSB7XG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoIDw9IDEgfHwgIXNvcnRCeSkgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIGRhdGEuc29ydCh0aGlzLnNvcnRDb21wYXJhdG9yKHNvcnRCeSwgc29ydERpcmVjdGlvbikpO1xuICB9XG5cbiAgc3RhdGljIHNvcnRDb21wYXJhdG9yPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4gfCBhbnk+KHNvcnRCeT86IGtleW9mIFQgfCBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uKTogKGE6IFQsIGI6IFQpID0+IG51bWJlciB7XG4gICAgY29uc3QgYWZ0ZXIgPSAhc29ydERpcmVjdGlvbiB8fCBzb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IDEgOiAtMTtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IChzb3J0QnkgfHwgJ2lkJykgYXMgc3RyaW5nO1xuICAgIHJldHVybiAoYSwgYikgPT4ge1xuICAgICAgY29uc3QgdmFsdWVBID0gRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYSwgcHJvcGVydHkpO1xuICAgICAgY29uc3QgdmFsdWVCID0gRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYiwgcHJvcGVydHkpO1xuICAgICAgcmV0dXJuIEVudGl0eVV0aWxzLmNvbXBhcmUodmFsdWVBLCB2YWx1ZUIsIGFmdGVyKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmU8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4odmFsdWUxOiBULCB2YWx1ZTI6IFQsIGRpcmVjdGlvbjogMSB8IC0xLCBjaGVja0F0dHJpYnV0ZT86IGtleW9mIFQpOiBudW1iZXIge1xuICAgIGNoZWNrQXR0cmlidXRlID0gY2hlY2tBdHRyaWJ1dGUgfHwgJ2lkJztcbiAgICBpZiAoRW50aXR5VXRpbHMuaXNOb3RFbXB0eSh2YWx1ZTEsIGNoZWNrQXR0cmlidXRlKSAmJiBFbnRpdHlVdGlscy5pc05vdEVtcHR5KHZhbHVlMiwgY2hlY2tBdHRyaWJ1dGUpKSB7XG4gICAgICByZXR1cm4gRW50aXR5VXRpbHMuZXF1YWxzKHZhbHVlMSwgdmFsdWUyLCBjaGVja0F0dHJpYnV0ZSkgPyAwIDogdmFsdWUxW2NoZWNrQXR0cmlidXRlXSA+IHZhbHVlMltjaGVja0F0dHJpYnV0ZV0gPyBkaXJlY3Rpb24gOiAtMSAqIGRpcmVjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlMSA9PT0gdmFsdWUyID8gMCA6IHZhbHVlMSA+IHZhbHVlMiA/IGRpcmVjdGlvbiA6IC0xICogZGlyZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVWYWx1ZTxUPih2YWx1ZTE6IFQsIHZhbHVlMjogVCwgZGlyZWN0aW9uOiAxIHwgLTEpOiBudW1iZXIge1xuICAgIHJldHVybiB2YWx1ZTEgPT09IHZhbHVlMiA/IDAgOiB2YWx1ZTEgPiB2YWx1ZTIgPyBkaXJlY3Rpb24gOiAtMSAqIGRpcmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXI8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55PiB8IGFueT4oZGF0YTogVFtdLCBzZWFyY2hBdHRyaWJ1dGU6IHN0cmluZywgc2VhcmNoVGV4dDogc3RyaW5nKTogVFtdIHtcbiAgICBjb25zdCBmaWx0ZXJGbiA9IHRoaXMuc2VhcmNoVGV4dEZpbHRlcihzZWFyY2hBdHRyaWJ1dGUsIHNlYXJjaFRleHQpO1xuICAgIHJldHVybiBkYXRhLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICBzdGF0aWMgc2VhcmNoVGV4dEZpbHRlcjxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+IHwgYW55PihzZWFyY2hBdHRyaWJ1dGU6IHN0cmluZyB8IHN0cmluZ1tdLCBzZWFyY2hUZXh0OiBzdHJpbmcpOiBGaWx0ZXJGbjxUPiB7XG4gICAgaWYgKGlzTmlsT3JCbGFuayhzZWFyY2hBdHRyaWJ1dGUpIHx8IGlzTmlsT3JCbGFuayhzZWFyY2hUZXh0KSkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZmlsdGVyIG5vdCBuZWVkXG5cbiAgICBjb25zdCBzZWFyY2hSZWdleHAgPSBzZWFyY2hUZXh0XG4gICAgICAvLyBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgIC5yZXBsYWNlKC9bLVxcL1xcXFxeJCsuKCl8W1xcXXt9XS9nLCAnXFxcXCQmJylcbiAgICAgIC8vIEludGVycHJldCAqIGFzIGFueSB0ZXh0XG4gICAgICAucmVwbGFjZSgvWypdKy9nLCAnLionKVxuICAgICAgLy8gSW50ZXJwcmV0ID8gYXMgb25lIGNoYXJhY3RlclxuICAgICAgLnJlcGxhY2UoL1s/XS9nLCAnLicpO1xuICAgIGlmIChzZWFyY2hSZWdleHAgPT09ICcuKicpIHJldHVybiB1bmRlZmluZWQ7IC8vIGZpbHRlciBub3QgbmVlZFxuXG4gICAgY29uc3QgZmxhZ3MgPSAnaSc7IC8vIGRvbid0IHVzZSBnbG9iYWwgcmVnZXggc2VhcmNoXG4gICAgY29uc3QgYXNQcmVmaXhQYXR0ZXJuID0gJ14nICsgc2VhcmNoUmVnZXhwO1xuICAgIGNvbnN0IGFueU1hdGNoUGF0dGVybiA9ICdeLionICsgc2VhcmNoUmVnZXhwO1xuXG4gICAgLy8gT25seSBvbmUgc2VhcmNoIGF0dHJpYnV0ZXNcbiAgICBpZiAodHlwZW9mIHNlYXJjaEF0dHJpYnV0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGlzU2ltcGxlUGF0aCA9ICFzZWFyY2hBdHRyaWJ1dGUgfHwgc2VhcmNoQXR0cmlidXRlLmluZGV4T2YoJy4nKSA9PT0gLTE7XG4gICAgICBjb25zdCBzZWFyY2hBc1ByZWZpeCA9IHNlYXJjaEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdsYWJlbCcpIHx8IHNlYXJjaEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdjb2RlJyk7XG4gICAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKChzZWFyY2hBc1ByZWZpeCAmJiBhc1ByZWZpeFBhdHRlcm4pIHx8IGFueU1hdGNoUGF0dGVybiwgZmxhZ3MpO1xuICAgICAgaWYgKGlzU2ltcGxlUGF0aCkge1xuICAgICAgICByZXR1cm4gKGEpID0+IHJlZ2V4cC50ZXN0KGFbc2VhcmNoQXR0cmlidXRlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKGEpID0+IHJlZ2V4cC50ZXN0KEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGEsIHNlYXJjaEF0dHJpYnV0ZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG1hbnkgc2VhcmNoIGF0dHJpYnV0ZXNcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ2V4cHMgPSBzZWFyY2hBdHRyaWJ1dGUubWFwKChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEFzUHJlZml4ID0gcGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdsYWJlbCcpIHx8IHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnY29kZScpO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCgoc2VhcmNoQXNQcmVmaXggJiYgYXNQcmVmaXhQYXR0ZXJuKSB8fCBhbnlNYXRjaFBhdHRlcm4sIGZsYWdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChhKSA9PiBzZWFyY2hBdHRyaWJ1dGUuZmluZEluZGV4KChwYXRoLCBpbmRleCkgPT4gcmVnZXhwc1tpbmRleF0udGVzdChFbnRpdHlVdGlscy5nZXRQcm9wZXJ0eUJ5UGF0aChhLCBwYXRoKSkpICE9PSAtMTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgYmF0Y2ggZW50aXR5IHRyZWUgaW50byBhIGFycmF5IGxpc3QuIFRoaXMgbWV0aG9kIGtlZXAgbGlua3MgcGFyZW50L2NoaWxkcmVuLlxuICAgKlxuICAgKiBNZXRob2QgdXNlZCB0byBmaW5kIGJhdGNoIHdpdGhvdXQgaWQgKGUuZy4gYmVmb3JlIGxvY2FsIHN0b3JhZ2UpXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VcbiAgICovXG4gIHN0YXRpYyB0cmVlVG9BcnJheSA9IFRyZWVJdGVtRW50aXR5VXRpbHMudHJlZVRvQXJyYXk7XG5cbiAgc3RhdGljIGxpc3RPZlRyZWVUb0FycmF5ID0gVHJlZUl0ZW1FbnRpdHlVdGlscy5saXN0T2ZUcmVlVG9BcnJheTtcblxuICAvKipcbiAgICogRmlsbCBwYXJlbnQgYXR0cmlidXRlLCBvZiBhbGwgY2hpbGRyZW4gZm91bmQgaW4gdGhlIHRyZWVcbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZVxuICAgKi9cbiAgc3RhdGljIHRyZWVGaWxsUGFyZW50ID0gVHJlZUl0ZW1FbnRpdHlVdGlscy50cmVlRmlsbFBhcmVudDtcblxuICBzdGF0aWMgaXNMb2NhbChlbnRpdHk6IElFbnRpdHk8YW55LCBhbnk+IHwgRW50aXR5PGFueSwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbnRpdHkgJiYgaXNOb3ROaWwoZW50aXR5LmlkKSAmJiArZW50aXR5LmlkIDwgMDtcbiAgfVxuXG4gIHN0YXRpYyBpc1JlbW90ZShlbnRpdHk6IElFbnRpdHk8YW55LCBhbnk+IHwgRW50aXR5PGFueSwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbnRpdHkgJiYgIUVudGl0eVV0aWxzLmlzTG9jYWwoZW50aXR5KTtcbiAgfVxuXG4gIHN0YXRpYyBpc0xvY2FsSWQoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05vdE5pbChpZCkgJiYgK2lkIDwgMDtcbiAgfVxuXG4gIHN0YXRpYyBpc1JlbW90ZUlkKGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoaWQpICYmICtpZCA+PSAwO1xuICB9XG5cbiAgc3RhdGljIGdldElkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4oZW50aXR5OiBUKTogSUQge1xuICAgIHJldHVybiBlbnRpdHkuaWQ7XG4gIH1cblxuICAvLyBDaGVjayB0aGF0IHRoZSBvYmplY3QgaGFzIGFuIElEXG4gIHN0YXRpYyBoYXNJZDxUIGV4dGVuZHMgSUVudGl0eTxhbnksIGFueT4gPSBJRW50aXR5PGFueSwgYW55Pj4oZW50aXR5OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTm90TmlsKGVudGl0eT8uaWQpO1xuICB9XG5cbiAgLy8gQ2hlY2sgdGhhdCB0aGUgb2JqZWN0IGhhcyBhbiBuaWwgSURcbiAgc3RhdGljIGhhc05pbElkPFQgZXh0ZW5kcyBJRW50aXR5PGFueSwgYW55PiA9IElFbnRpdHk8YW55LCBhbnk+PihlbnRpdHk6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOaWwoZW50aXR5Py5pZCk7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIGFuIGFycmF5IG9mIGVudGl0aWVzIGludG8gYSBrZXktdmFsdWUgbWFwIHVzaW5nIGFuIGVudGl0eSBJRCBhcyB0aGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PFQ+fSBlbnRpdGllcyAtIFRoZSBhcnJheSBvZiBlbnRpdGllcyB0byBiZSBzcGxpdCBieSB0aGVpciBJRC5cbiAgICogQHJldHVybiB7S2V5VmFsdWVUeXBlPFQ+fSBBIGtleS12YWx1ZSBtYXAgd2l0aCBlbnRpdHkgSURzIGFzIGtleXMgYW5kIGVudGl0aWVzIGFzIHZhbHVlcy5cbiAgICovXG4gIHN0YXRpYyBzcGxpdEJ5SWQ8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LCBJRCA9IGFueT4oZW50aXRpZXM6IFRbXSk6IEtleVZhbHVlVHlwZTxUPiB7XG4gICAgcmV0dXJuIChlbnRpdGllcyB8fCBbXSkucmVkdWNlKFxuICAgICAgKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBpdGVtPy5pZDtcbiAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdudW1iZXInIHx8IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmVzW2tleV0gPSBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9LFxuICAgICAgPEtleVZhbHVlVHlwZTxUPj57fVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdHMgdGhlIElEcyBmcm9tIGFuIGFycmF5IG9mIGVudGl0aWVzIGFuZCByZXR1cm5zIHRoZW0gYXMgYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7VFtdfSBlbnRpdGllcyAtIEFuIGFycmF5IG9mIGVudGl0aWVzIGZyb20gd2hpY2ggdG8gY29sbGVjdCBJRHMuXG4gICAqIEByZXR1cm4ge0lEW119IEFuIGFycmF5IG9mIElEcyBjb2xsZWN0ZWQgZnJvbSB0aGUgZW50aXRpZXMuXG4gICAqL1xuICBzdGF0aWMgY29sbGVjdElkczxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sIElEID0gYW55PihlbnRpdGllczogVFtdKTogSURbXSB7XG4gICAgcmV0dXJuIChlbnRpdGllcyB8fCBbXSkubWFwKChlKSA9PiBlLmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgY29sbGVjdElkcygpIGluc3RlYWQgLSB3aWxsIGJlIHJlbW92ZSBpbiBuZXh0IG1ham9yIHJlbGVhc2VcbiAgICovXG4gIHN0YXRpYyBjb2xsZWN0QnlJZDxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sIElEID0gYW55PihlbnRpdGllczogVFtdKTogSURbXSB7XG4gICAgcmV0dXJuIChlbnRpdGllcyB8fCBbXSkubWFwKChlKSA9PiBlLmlkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcnJheURpc3RpbmN0RmlsdGVyRm48RSBleHRlbmRzIElFbnRpdHk8YW55LCBhbnk+PihpdGVtOiBFLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IEVbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZXMuZmluZEluZGV4KChlKSA9PiBlLmlkID09PSBpdGVtLmlkKSA9PT0gaW5kZXg7XG4gIH1cblxuICBzdGF0aWMgZmluZEJ5SWQ8RSBleHRlbmRzIElFbnRpdHk8YW55LCBJRD4gPSBJRW50aXR5PGFueSwgYW55PiwgSUQgPSBudW1iZXI+KGl0ZW1zOiBFW10sIGlkOiBJRCk6IEUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoaXRlbXMgfHwgW10pLmZpbmQoKGcpID0+IGcuaWQgPT09IGlkKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0PEUgZXh0ZW5kcyBJRW50aXR5PGFueSwgYW55Pj4oc291cmNlOiBhbnksIGRhdGFUeXBlOiBuZXcgKCkgPT4gRSk6IEUge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gc291cmNlO1xuICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBkYXRhVHlwZSkgcmV0dXJuIHNvdXJjZSBhcyBFO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBkYXRhVHlwZSgpO1xuICAgIGlmIChFbnRpdHlVdGlscy5pc0VudGl0eSh0YXJnZXQpKSB7XG4gICAgICB0YXJnZXQuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBjb252ZXJ0cyBhbnkgb2JqZWN0LCBlbnRpdHksIG9yIGFycmF5IHRvIGEgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3QuXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZW50aXRpZXMgYnkgY2FsbGluZyB0aGVpciBhc09iamVjdCgpIG1ldGhvZCwgcHJvY2Vzc2VzIGFycmF5cyByZWN1cnNpdmVseSxcbiAgICogYW5kIHByb3ZpZGVzIHByb3RlY3Rpb24gYWdhaW5zdCBjaXJjdWxhciByZWZlcmVuY2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QsIGVudGl0eSwgYXJyYXksIG9yIHByaW1pdGl2ZSB2YWx1ZSB0byBjb252ZXJ0XG4gICAqIEBwYXJhbSB7YW55fSBbb3B0c10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCBwYXNzZWQgdG8gZW50aXR5IGFzT2JqZWN0KCkgbWV0aG9kc1xuICAgKiBAcGFyYW0ge1dlYWtTZXR9IFt2aXNpdGVkPW5ldyBXZWFrU2V0KCldIC0gSW50ZXJuYWwgcGFyYW1ldGVyIGZvciBjaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0aW9uXG4gICAqIEByZXR1cm5zIHthbnl9IEEgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNvdXJjZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBDb252ZXJ0IGEgc2ltcGxlIGVudGl0eVxuICAgKiBjb25zdCBwbGFpbk9iamVjdCA9IEVudGl0eVV0aWxzLmFzT2JqZWN0KG15RW50aXR5KTtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ29udmVydCBhbiBhcnJheSBvZiBlbnRpdGllc1xuICAgKiBjb25zdCBwbGFpbkFycmF5ID0gRW50aXR5VXRpbHMuYXNPYmplY3QoW2VudGl0eTEsIGVudGl0eTJdKTtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ29udmVydCB3aXRoIG9wdGlvbnNcbiAgICogY29uc3QgcmVzdWx0ID0gRW50aXR5VXRpbHMuYXNPYmplY3QobXlFbnRpdHksIHsgbWluaWZ5OiB0cnVlIH0pO1xuICAgKi9cbiAgc3RhdGljIGFzT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zLCB2aXNpdGVkID0gbmV3IFdlYWtTZXQoKSk6IGFueSB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiBzb3VyY2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW0pID0+IEVudGl0eVV0aWxzLmFzT2JqZWN0KGl0ZW0sIG9wdHMsIHZpc2l0ZWQpKTtcbiAgICBpZiAoRW50aXR5VXRpbHMuaXNFbnRpdHkoc291cmNlKSkgcmV0dXJuIHNvdXJjZS5hc09iamVjdChvcHRzKTtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHJldHVybiBzb3VyY2U7XG4gICAgaWYgKGlzTW9tZW50KHNvdXJjZSkpIHJldHVybiB0b0RhdGVJU09TdHJpbmcoc291cmNlKTtcblxuICAgIC8vIEhhbmRsZSBzcGVjaWFsIG9iamVjdHNcbiAgICBpZiAoaXNNb21lbnQoc291cmNlKSB8fCB0eXBlb2Ygc291cmNlLnRvSVNPU3RyaW5nID09PSAnZnVuY3Rpb24nKSByZXR1cm4gc291cmNlLnRvSVNPU3RyaW5nKCk7XG4gICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIFJlZ0V4cCkgcmV0dXJuIHNvdXJjZS50b1N0cmluZygpO1xuXG4gICAgLy8gUHJvdGVjdGlvbiBhZ2FpbnN0IGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSkge1xuICAgICAgY29uc29sZS53YXJuKCdbRW50aXR5VXRpbHMuYXNPYmplY3RdIENpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCwgc2tpcHBpbmcgb2JqZWN0Jyk7XG4gICAgICByZXR1cm4ge307IC8vIG9yIHJldHVybiBudWxsIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICB9XG4gICAgdmlzaXRlZC5hZGQoc291cmNlKTtcblxuICAgIC8vIENyZWF0ZSBhIGNvcHlcbiAgICBjb25zdCB0YXJnZXQgPSB7IC4uLnNvdXJjZSB9O1xuXG4gICAgLy8gU2VyaWFsaXplIGFsbCBwcm9wZXJ0aWVzIHJlY3Vyc2l2ZWx5XG4gICAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W2tleV07XG5cbiAgICAgIC8vIEhhbmRsZSBhcnJheXNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gRW50aXR5VXRpbHMuYXNPYmplY3QoaXRlbSwgb3B0cywgdmlzaXRlZCkpO1xuICAgICAgfVxuICAgICAgLy8gSGFuZGxlIG9iamVjdHMgKGluY2x1ZGluZyBlbnRpdGllcylcbiAgICAgIGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBFbnRpdHlVdGlscy5hc09iamVjdCh2YWx1ZSwgb3B0cywgdmlzaXRlZCk7XG4gICAgICB9XG4gICAgICAvLyBTcHJlYWQgb3BlcmF0b3IgYWxyZWFkeSBjb3BpZXMgcHJpbWl0aXZlIHZhbHVlc1xuICAgIH0pO1xuXG4gICAgLy8gUmVtb3ZlIHR5cGVuYW1lIGlmIG1pbmlmeVxuICAgIGlmIChvcHRzPy5taW5pZnkgfHwgb3B0cz8ua2VlcFR5cGVuYW1lID09PSBmYWxzZSkge1xuICAgICAgZGVsZXRlIHRhcmdldFsnX190eXBlbmFtZSddO1xuICAgIH1cbiAgICBpZiAob3B0cz8ua2VlcExvY2FsSWQgJiYgRW50aXR5VXRpbHMuaXNMb2NhbCh0YXJnZXQpKSB7XG4gICAgICBkZWxldGUgdGFyZ2V0LmlkO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gU2V0IGFmdGVyIHByb2Nlc3NpbmdcbiAgICB2aXNpdGVkLmRlbGV0ZShzb3VyY2UpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxufVxuIl19
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { isEmptyArray, isNotEmptyArray, isNotNil } from '../../../shared/functions';
|
|
2
|
-
import { MINIFY_ENTITY_FOR_POD, ReferentialUtils } from './referential.model';
|
|
3
|
-
import { Entity, isInstanceOf } from './entity.model';
|
|
4
|
-
export class EntityFilter extends Entity {
|
|
5
|
-
// Internal composition state (fluent API)
|
|
6
|
-
not;
|
|
7
|
-
and;
|
|
8
|
-
or;
|
|
9
|
-
static composeAnd(...filters) {
|
|
10
|
-
return EntityFilter.composeAndFns(...(filters || []).map((f) => f?.asFilterFn()));
|
|
11
|
-
}
|
|
12
|
-
static composeOr(...filters) {
|
|
13
|
-
return EntityFilter.composeOrFns(...(filters || []).map((f) => f?.asFilterFn()));
|
|
14
|
-
}
|
|
15
|
-
static composeAndFns(...filterFns) {
|
|
16
|
-
filterFns = filterFns?.filter(isNotNil);
|
|
17
|
-
if (isEmptyArray(filterFns))
|
|
18
|
-
return undefined;
|
|
19
|
-
return (entity) => filterFns.every((fn) => fn(entity));
|
|
20
|
-
}
|
|
21
|
-
static composeOrFns(...filterFns) {
|
|
22
|
-
filterFns = filterFns?.filter(isNotNil);
|
|
23
|
-
if (isEmptyArray(filterFns))
|
|
24
|
-
return undefined;
|
|
25
|
-
return (entity) => filterFns.some((fn) => fn(entity));
|
|
26
|
-
}
|
|
27
|
-
constructor(__typename) {
|
|
28
|
-
super(__typename);
|
|
29
|
-
}
|
|
30
|
-
create() {
|
|
31
|
-
const Ctor = this.constructor;
|
|
32
|
-
return new Ctor();
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Clean a filter, before sending to the pod (e.g convert dates, remove internal properties, etc.)
|
|
36
|
-
*/
|
|
37
|
-
asPodObject() {
|
|
38
|
-
return this.asObject(MINIFY_ENTITY_FOR_POD);
|
|
39
|
-
}
|
|
40
|
-
isEmpty() {
|
|
41
|
-
return this.countNotEmptyCriteria() === 0;
|
|
42
|
-
}
|
|
43
|
-
countNotEmptyCriteria() {
|
|
44
|
-
const json = this.asPodObject();
|
|
45
|
-
return Object.keys(json).filter((key) => this.isCriteriaNotEmpty(key, json[key])).length;
|
|
46
|
-
}
|
|
47
|
-
asFilterFn() {
|
|
48
|
-
// Base (this) filter functions
|
|
49
|
-
let filterFns = this.buildFilter() || [];
|
|
50
|
-
// NOT
|
|
51
|
-
if (this.not) {
|
|
52
|
-
const notFn = this.not.asFilterFn();
|
|
53
|
-
filterFns.push((item) => !notFn(item));
|
|
54
|
-
}
|
|
55
|
-
// AND
|
|
56
|
-
if (isNotEmptyArray(this.and)) {
|
|
57
|
-
filterFns.push(EntityFilter.composeAnd(...this.and));
|
|
58
|
-
}
|
|
59
|
-
// OR
|
|
60
|
-
if (isNotEmptyArray(this.or)) {
|
|
61
|
-
filterFns.push(EntityFilter.composeOr(...this.or));
|
|
62
|
-
}
|
|
63
|
-
// As filter function
|
|
64
|
-
return EntityFilter.composeAndFns(...filterFns);
|
|
65
|
-
}
|
|
66
|
-
asObject(opts) {
|
|
67
|
-
const target = super.asObject(opts);
|
|
68
|
-
// Serialize composition
|
|
69
|
-
if (this.not) {
|
|
70
|
-
target.not = this.not.asObject(opts);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
delete target.not;
|
|
74
|
-
}
|
|
75
|
-
if (isNotEmptyArray(this.and)) {
|
|
76
|
-
target.and = this.and.map((f) => f.asObject(opts));
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
delete target.and;
|
|
80
|
-
}
|
|
81
|
-
if (isNotEmptyArray(this.or)) {
|
|
82
|
-
target.or = this.or.map((f) => f.asObject(opts));
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
delete target.or;
|
|
86
|
-
}
|
|
87
|
-
return target;
|
|
88
|
-
}
|
|
89
|
-
fromObject(source, opts) {
|
|
90
|
-
super.fromObject(source, opts);
|
|
91
|
-
// Deserialize composition using the same concrete filter type
|
|
92
|
-
// AND
|
|
93
|
-
if (Array.isArray(source?.and)) {
|
|
94
|
-
this.and = source.and
|
|
95
|
-
.map((s) => {
|
|
96
|
-
if (!s)
|
|
97
|
-
return undefined;
|
|
98
|
-
const f = this.create();
|
|
99
|
-
f.fromObject(s, opts);
|
|
100
|
-
return f;
|
|
101
|
-
})
|
|
102
|
-
.filter(isNotNil);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
this.and = undefined;
|
|
106
|
-
}
|
|
107
|
-
// OR
|
|
108
|
-
if (Array.isArray(source?.or)) {
|
|
109
|
-
this.or = source.or
|
|
110
|
-
.map((s) => {
|
|
111
|
-
if (!s)
|
|
112
|
-
return undefined;
|
|
113
|
-
const f = this.create();
|
|
114
|
-
f.fromObject(s, opts);
|
|
115
|
-
return f;
|
|
116
|
-
})
|
|
117
|
-
.filter(isNotNil);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.or = undefined;
|
|
121
|
-
}
|
|
122
|
-
// NOT
|
|
123
|
-
if (source?.not) {
|
|
124
|
-
const f = this.create();
|
|
125
|
-
f.fromObject(source.not, opts);
|
|
126
|
-
this.not = f;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/* -- protected functions -- */
|
|
130
|
-
buildFilter() {
|
|
131
|
-
// Can be completed by subclasses
|
|
132
|
-
return [];
|
|
133
|
-
}
|
|
134
|
-
isCriteriaNotEmpty(key, value) {
|
|
135
|
-
// Can be overridden by subclasses
|
|
136
|
-
return (value !== undefined &&
|
|
137
|
-
value !== null &&
|
|
138
|
-
// not empty string
|
|
139
|
-
((typeof value === 'string' && value.trim() !== '') ||
|
|
140
|
-
// valid number
|
|
141
|
-
(typeof value === 'number' && !isNaN(value)) ||
|
|
142
|
-
// valid boolean
|
|
143
|
-
typeof value === 'boolean' ||
|
|
144
|
-
// not empty array
|
|
145
|
-
(Array.isArray(value) && value.length > 0) ||
|
|
146
|
-
// entity with an id
|
|
147
|
-
ReferentialUtils.isNotEmpty(value)));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
export class EntityFilterUtils {
|
|
151
|
-
static isEntityFilter(obj) {
|
|
152
|
-
return (obj && obj.asPodObject && obj.asFilterFn && true) || false;
|
|
153
|
-
}
|
|
154
|
-
static fromObject(source, filterType) {
|
|
155
|
-
if (!source)
|
|
156
|
-
return source;
|
|
157
|
-
if (isInstanceOf(source, filterType))
|
|
158
|
-
return source;
|
|
159
|
-
const target = new filterType();
|
|
160
|
-
if (EntityFilterUtils.isEntityFilter(target)) {
|
|
161
|
-
target.fromObject(source);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
Object.assign(target, source);
|
|
165
|
-
}
|
|
166
|
-
return target;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFrQyxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXlCdEYsTUFBTSxPQUFnQixZQU9wQixTQUFRLE1BQXFCO0lBRzdCLDBDQUEwQztJQUMxQyxHQUFHLENBQUs7SUFDUixHQUFHLENBQU87SUFDVixFQUFFLENBQU87SUFFVCxNQUFNLENBQUMsVUFBVSxDQUE0RSxHQUFHLE9BQVk7UUFDMUcsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUE0RSxHQUFHLE9BQVk7UUFDekcsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUE0QixHQUFHLFNBQXdCO1FBQ3pFLFNBQVMsR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksWUFBWSxDQUFDLFNB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Q04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgTUlOSUZZX0VOVElUWV9GT1JfUE9ELCBSZWZlcmVudGlhbFV0aWxzIH0gZnJvbSAnLi9yZWZlcmVudGlhbC5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eUFzT2JqZWN0T3B0aW9ucywgSUVudGl0eSwgaXNJbnN0YW5jZU9mIH0gZnJvbSAnLi9lbnRpdHkubW9kZWwnO1xuXG5pbXBvcnQgeyBGaWx0ZXJGbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudGl0eUZpbHRlcjxcbiAgRiBleHRlbmRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz4sXG4gIFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4sXG4gIElEID0gbnVtYmVyLFxuICBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucyxcbiAgRk8gPSBhbnksXG4+IGV4dGVuZHMgSUVudGl0eTxGLCBJRCwgQU8sIEZPPiB7XG4gIGFzUG9kT2JqZWN0KCk6IGFueTtcblxuICBhc0ZpbHRlckZuKCk6IEZpbHRlckZuPFQ+O1xuXG4gIGlzRW1wdHkoKTogYm9vbGVhbjtcblxuICBjb3VudE5vdEVtcHR5Q3JpdGVyaWEoKTogbnVtYmVyO1xuXG4gIC8vIExvZ2ljYWwgY29tYmluYXRvcnMgKGZsdWVudCwgcmV0dXJuIHNhbWUgZmlsdGVyIHR5cGUgRilcbiAgbm90PzogRjtcbiAgYW5kPzogRltdO1xuICBvcj86IEZbXTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eUZpbHRlcjxcbiAgICBGIGV4dGVuZHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRCwgQU8sIEZPPixcbiAgICBUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+LFxuICAgIElEID0gbnVtYmVyLFxuICAgIEFPIGV4dGVuZHMgRW50aXR5QXNPYmplY3RPcHRpb25zID0gRW50aXR5QXNPYmplY3RPcHRpb25zLFxuICAgIEZPID0gYW55LFxuICA+XG4gIGV4dGVuZHMgRW50aXR5PEYsIElELCBBTywgRk8+XG4gIGltcGxlbWVudHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRCwgQU8sIEZPPlxue1xuICAvLyBJbnRlcm5hbCBjb21wb3NpdGlvbiBzdGF0ZSAoZmx1ZW50IEFQSSlcbiAgbm90PzogRjtcbiAgYW5kPzogRltdO1xuICBvcj86IEZbXTtcblxuICBzdGF0aWMgY29tcG9zZUFuZDxGIGV4dGVuZHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRD4sIFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4sIElEID0gbnVtYmVyPiguLi5maWx0ZXJzOiBGW10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIEVudGl0eUZpbHRlci5jb21wb3NlQW5kRm5zKC4uLihmaWx0ZXJzIHx8IFtdKS5tYXAoKGYpID0+IGY/LmFzRmlsdGVyRm4oKSkpO1xuICB9XG5cbiAgc3RhdGljIGNvbXBvc2VPcjxGIGV4dGVuZHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRD4sIFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4sIElEID0gbnVtYmVyPiguLi5maWx0ZXJzOiBGW10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIEVudGl0eUZpbHRlci5jb21wb3NlT3JGbnMoLi4uKGZpbHRlcnMgfHwgW10pLm1hcCgoZikgPT4gZj8uYXNGaWx0ZXJGbigpKSk7XG4gIH1cblxuICBzdGF0aWMgY29tcG9zZUFuZEZuczxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+PiguLi5maWx0ZXJGbnM6IEZpbHRlckZuPFQ+W10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgZmlsdGVyRm5zID0gZmlsdGVyRm5zPy5maWx0ZXIoaXNOb3ROaWwpO1xuICAgIGlmIChpc0VtcHR5QXJyYXkoZmlsdGVyRm5zKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKGVudGl0eSkgPT4gZmlsdGVyRm5zLmV2ZXJ5KChmbikgPT4gZm4oZW50aXR5KSk7XG4gIH1cblxuICBzdGF0aWMgY29tcG9zZU9yRm5zPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+KC4uLmZpbHRlckZuczogRmlsdGVyRm48VD5bXSk6IEZpbHRlckZuPFQ+IHtcbiAgICBmaWx0ZXJGbnMgPSBmaWx0ZXJGbnM/LmZpbHRlcihpc05vdE5pbCk7XG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXJGbnMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoZW50aXR5KSA9PiBmaWx0ZXJGbnMuc29tZSgoZm4pID0+IGZuKGVudGl0eSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoX190eXBlbmFtZT86IHN0cmluZykge1xuICAgIHN1cGVyKF9fdHlwZW5hbWUpO1xuICB9XG5cbiAgY3JlYXRlKCkge1xuICAgIGNvbnN0IEN0b3I6IG5ldyAoKSA9PiBGID0gdGhpcy5jb25zdHJ1Y3RvciBhcyBhbnk7XG4gICAgcmV0dXJuIG5ldyBDdG9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gYSBmaWx0ZXIsIGJlZm9yZSBzZW5kaW5nIHRvIHRoZSBwb2QgKGUuZyBjb252ZXJ0IGRhdGVzLCByZW1vdmUgaW50ZXJuYWwgcHJvcGVydGllcywgZXRjLilcbiAgICovXG4gIGFzUG9kT2JqZWN0KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYXNPYmplY3QoTUlOSUZZX0VOVElUWV9GT1JfUE9EIGFzIEFPKTtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY291bnROb3RFbXB0eUNyaXRlcmlhKCkgPT09IDA7XG4gIH1cblxuICBjb3VudE5vdEVtcHR5Q3JpdGVyaWEoKTogbnVtYmVyIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5hc1BvZE9iamVjdCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhqc29uKS5maWx0ZXIoKGtleSkgPT4gdGhpcy5pc0NyaXRlcmlhTm90RW1wdHkoa2V5LCBqc29uW2tleV0pKS5sZW5ndGg7XG4gIH1cblxuICBhc0ZpbHRlckZuKCk6IEZpbHRlckZuPFQ+IHtcbiAgICAvLyBCYXNlICh0aGlzKSBmaWx0ZXIgZnVuY3Rpb25zXG4gICAgbGV0IGZpbHRlckZucyA9IHRoaXMuYnVpbGRGaWx0ZXIoKSB8fCBbXTtcblxuICAgIC8vIE5PVFxuICAgIGlmICh0aGlzLm5vdCkge1xuICAgICAgY29uc3Qgbm90Rm4gPSB0aGlzLm5vdC5hc0ZpbHRlckZuKCk7XG4gICAgICBmaWx0ZXJGbnMucHVzaCgoaXRlbSkgPT4gIW5vdEZuKGl0ZW0pKTtcbiAgICB9XG5cbiAgICAvLyBBTkRcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuYW5kKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2goRW50aXR5RmlsdGVyLmNvbXBvc2VBbmQ8RiwgVCwgSUQ+KC4uLnRoaXMuYW5kKSk7XG4gICAgfVxuXG4gICAgLy8gT1JcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMub3IpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaChFbnRpdHlGaWx0ZXIuY29tcG9zZU9yPEYsIFQsIElEPiguLi50aGlzLm9yKSk7XG4gICAgfVxuXG4gICAgLy8gQXMgZmlsdGVyIGZ1bmN0aW9uXG4gICAgcmV0dXJuIEVudGl0eUZpbHRlci5jb21wb3NlQW5kRm5zPFQ+KC4uLmZpbHRlckZucyk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogQU8pOiBhbnkge1xuICAgIGNvbnN0IHRhcmdldDogYW55ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG5cbiAgICAvLyBTZXJpYWxpemUgY29tcG9zaXRpb25cbiAgICBpZiAodGhpcy5ub3QpIHtcbiAgICAgIHRhcmdldC5ub3QgPSB0aGlzLm5vdC5hc09iamVjdChvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHRhcmdldC5ub3Q7XG4gICAgfVxuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5hbmQpKSB7XG4gICAgICB0YXJnZXQuYW5kID0gdGhpcy5hbmQubWFwKChmKSA9PiBmLmFzT2JqZWN0KG9wdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHRhcmdldC5hbmQ7XG4gICAgfVxuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5vcikpIHtcbiAgICAgIHRhcmdldC5vciA9IHRoaXMub3IubWFwKChmKSA9PiBmLmFzT2JqZWN0KG9wdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHRhcmdldC5vcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IEZPKSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UsIG9wdHMgYXMgYW55KTtcbiAgICAvLyBEZXNlcmlhbGl6ZSBjb21wb3NpdGlvbiB1c2luZyB0aGUgc2FtZSBjb25jcmV0ZSBmaWx0ZXIgdHlwZVxuXG4gICAgLy8gQU5EXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlPy5hbmQpKSB7XG4gICAgICB0aGlzLmFuZCA9IHNvdXJjZS5hbmRcbiAgICAgICAgLm1hcCgocykgPT4ge1xuICAgICAgICAgIGlmICghcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBmID0gdGhpcy5jcmVhdGUoKTtcbiAgICAgICAgICAoZiBhcyBhbnkpLmZyb21PYmplY3Qocywgb3B0cyk7XG4gICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFuZCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBPUlxuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZT8ub3IpKSB7XG4gICAgICB0aGlzLm9yID0gc291cmNlLm9yXG4gICAgICAgIC5tYXAoKHMpID0+IHtcbiAgICAgICAgICBpZiAoIXMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgZiA9IHRoaXMuY3JlYXRlKCk7XG4gICAgICAgICAgKGYgYXMgYW55KS5mcm9tT2JqZWN0KHMsIG9wdHMpO1xuICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGlzTm90TmlsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBOT1RcbiAgICBpZiAoc291cmNlPy5ub3QpIHtcbiAgICAgIGNvbnN0IGYgPSB0aGlzLmNyZWF0ZSgpO1xuICAgICAgZi5mcm9tT2JqZWN0KHNvdXJjZS5ub3QsIG9wdHMpO1xuICAgICAgdGhpcy5ub3QgPSBmO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBmdW5jdGlvbnMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48VD5bXSB7XG4gICAgLy8gQ2FuIGJlIGNvbXBsZXRlZCBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQ3JpdGVyaWFOb3RFbXB0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgICByZXR1cm4gKFxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIC8vIG5vdCBlbXB0eSBzdHJpbmdcbiAgICAgICgodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgIT09ICcnKSB8fFxuICAgICAgICAvLyB2YWxpZCBudW1iZXJcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkgfHxcbiAgICAgICAgLy8gdmFsaWQgYm9vbGVhblxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAvLyBub3QgZW1wdHkgYXJyYXlcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHx8XG4gICAgICAgIC8vIGVudGl0eSB3aXRoIGFuIGlkXG4gICAgICAgIFJlZmVyZW50aWFsVXRpbHMuaXNOb3RFbXB0eSh2YWx1ZSkpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5RmlsdGVyVXRpbHMge1xuICBzdGF0aWMgaXNFbnRpdHlGaWx0ZXI8RiBleHRlbmRzIEVudGl0eUZpbHRlcjxGLCBhbnk+PihvYmo6IFBhcnRpYWw8Rj4pOiBvYmogaXMgRiB7XG4gICAgcmV0dXJuIChvYmogJiYgb2JqLmFzUG9kT2JqZWN0ICYmIG9iai5hc0ZpbHRlckZuICYmIHRydWUpIHx8IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3Q8Rj4oc291cmNlOiBhbnksIGZpbHRlclR5cGU6IG5ldyAoKSA9PiBGKTogRiB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiBzb3VyY2U7XG4gICAgaWYgKGlzSW5zdGFuY2VPZihzb3VyY2UsIGZpbHRlclR5cGUpKSByZXR1cm4gc291cmNlIGFzIEY7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IGZpbHRlclR5cGUoKTtcbiAgICBpZiAoRW50aXR5RmlsdGVyVXRpbHMuaXNFbnRpdHlGaWx0ZXIodGFyZ2V0KSkge1xuICAgICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9oaXN0b3J5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU3luY2hyb25pemF0aW9uSGlzdG9yeSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmlsdGVyPzogYW55O1xuICBleGVjRGF0ZTogc3RyaW5nO1xuICBleGVjRHVyYXRpb25NczogbnVtYmVyO1xuICBsYXN0VXBkYXRlRGF0ZT86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBTeW5jaHJvbml6YXRpb25IaXN0b3J5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGlzdG9yeVBhZ2VSZWZlcmVuY2Uge1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICB0aW1lPzogTW9tZW50IHwgc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBtYXRJY29uPzogc3RyaW5nO1xuXG4gIGNoaWxkcmVuPzogSGlzdG9yeVBhZ2VSZWZlcmVuY2VbXTtcblxuICAvLyBNYW5hZ2UgdmlzaWJpbGl0eSBhbmQgZGF0YSBhY2Nlc3NcbiAgb2ZmbGluZT86IGJvb2xlYW47XG4gIG9ubGluZVBlZXI/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// TODO: rename to STATUS_ID_MAP
|
|
2
|
-
// then declare a type like this :
|
|
3
|
-
// > export type StatusIds = keyof typeof STATUS_ID_MAP;
|
|
4
|
-
export const StatusIds = {
|
|
5
|
-
DISABLE: 0,
|
|
6
|
-
ENABLE: 1,
|
|
7
|
-
TEMPORARY: 2,
|
|
8
|
-
DELETED: 3,
|
|
9
|
-
ALL: 99,
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9tb2RlbC5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdDQUFnQztBQUNoQyxrQ0FBa0M7QUFDbEMsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixPQUFPLEVBQUUsQ0FBQztJQUNWLE1BQU0sRUFBRSxDQUFDO0lBQ1QsU0FBUyxFQUFFLENBQUM7SUFDWixPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxFQUFFO0NBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IHJlbmFtZSB0byBTVEFUVVNfSURfTUFQXG4vLyB0aGVuIGRlY2xhcmUgYSB0eXBlIGxpa2UgdGhpcyA6XG4vLyA+IGV4cG9ydCB0eXBlIFN0YXR1c0lkcyA9IGtleW9mIHR5cGVvZiBTVEFUVVNfSURfTUFQO1xuZXhwb3J0IGNvbnN0IFN0YXR1c0lkcyA9IHtcbiAgRElTQUJMRTogMCxcbiAgRU5BQkxFOiAxLFxuICBURU1QT1JBUlk6IDIsXG4gIERFTEVURUQ6IDMsXG4gIEFMTDogOTksXG59O1xuIl19
|