monkey-front-core 0.0.606 → 21.0.1
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 +3 -4
- package/fesm2022/monkey-front-core.mjs +5726 -0
- package/fesm2022/monkey-front-core.mjs.map +1 -0
- package/monkey-front-core-21.0.1.tgz +0 -0
- package/package.json +26 -39
- package/types/monkey-front-core.d.ts +1763 -0
- package/esm2020/lib/components/alerts/alerts.component.mjs +0 -45
- package/esm2020/lib/components/alerts/alerts.module.mjs +0 -21
- package/esm2020/lib/components/alerts/index.mjs +0 -3
- package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.component.mjs +0 -29
- package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.module.mjs +0 -43
- package/esm2020/lib/components/closed-to-maintenance/index.mjs +0 -3
- package/esm2020/lib/components/currency-config/currency-config.component.mjs +0 -39
- package/esm2020/lib/components/currency-config/currency-config.module.mjs +0 -39
- package/esm2020/lib/components/currency-config/index.mjs +0 -3
- package/esm2020/lib/components/index.mjs +0 -6
- package/esm2020/lib/components/progress-bar/index.mjs +0 -4
- package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +0 -23
- package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +0 -18
- package/esm2020/lib/components/progress-bar/progress-bar.service.mjs +0 -50
- package/esm2020/lib/components/version-changed/index.mjs +0 -3
- package/esm2020/lib/components/version-changed/version-changed.component.mjs +0 -24
- package/esm2020/lib/components/version-changed/version-changed.module.mjs +0 -39
- package/esm2020/lib/core/decorators/index.mjs +0 -5
- package/esm2020/lib/core/decorators/monkeyecx-charts-decorators.mjs +0 -40
- package/esm2020/lib/core/decorators/monkeyecx-decorators.mjs +0 -111
- package/esm2020/lib/core/decorators/monkeyecx-download-decorators.mjs +0 -26
- package/esm2020/lib/core/decorators/monkeyecx-upload-decorators.mjs +0 -26
- package/esm2020/lib/core/directives/index.mjs +0 -14
- package/esm2020/lib/core/directives/monkeyecx-directives-module.mjs +0 -78
- package/esm2020/lib/core/directives/monkeyecx-drag-drop.mjs +0 -57
- package/esm2020/lib/core/directives/monkeyecx-feature-by-program-directive.mjs +0 -54
- package/esm2020/lib/core/directives/monkeyecx-feature-directive.mjs +0 -68
- package/esm2020/lib/core/directives/monkeyecx-format-currency.mjs +0 -44
- package/esm2020/lib/core/directives/monkeyecx-format-upper.mjs +0 -67
- package/esm2020/lib/core/directives/monkeyecx-loading.mjs +0 -48
- package/esm2020/lib/core/directives/monkeyecx-only-alpha-numeric-directive.mjs +0 -28
- package/esm2020/lib/core/directives/monkeyecx-only-number-directive.mjs +0 -28
- package/esm2020/lib/core/directives/monkeyecx-popover-options.directive.mjs +0 -39
- package/esm2020/lib/core/directives/monkeyecx-popover.directive.mjs +0 -212
- package/esm2020/lib/core/directives/monkeyecx-security-directive.mjs +0 -75
- package/esm2020/lib/core/directives/monkeyecx-tooltip-directive.mjs +0 -123
- package/esm2020/lib/core/index.mjs +0 -11
- package/esm2020/lib/core/injectors/index.mjs +0 -8
- package/esm2020/lib/core/interceptors/index.mjs +0 -6
- package/esm2020/lib/core/interceptors/monkeyecx-http-config-error.interceptor.mjs +0 -49
- package/esm2020/lib/core/interceptors/monkeyecx-http-config-header.interceptor.mjs +0 -59
- package/esm2020/lib/core/interceptors/monkeyecx-http-config-interceptor.module.mjs +0 -47
- package/esm2020/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.mjs +0 -43
- package/esm2020/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.mjs +0 -37
- package/esm2020/lib/core/interfaces/index.mjs +0 -37
- package/esm2020/lib/core/interfaces/monkeyecx-auth-credentials.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-company-pendencies.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-company.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-config-bootstrap.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-config.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-country-security.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-embedded.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-error-response.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-filter.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-group.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-handled-error-response.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-header-credentials.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-intercom-options.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-interface.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-me-credentials.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-navigation.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-pagination.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-program.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-releases.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-request-in-progress.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-request-paged.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-resolver.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-response-links.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-response-paged.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-saved-state.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-scroll-options.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-service-credentials.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-storage.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-store.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-support-options.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-token-credentials.mjs +0 -2
- package/esm2020/lib/core/interfaces/monkeyecx-translate-options.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-download/index.mjs +0 -4
- package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-download.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-downloaded.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-item-download.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-queue/index.mjs +0 -4
- package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-queue.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-upload/index.mjs +0 -3
- package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.mjs +0 -2
- package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-upload.mjs +0 -2
- package/esm2020/lib/core/interfaces/schedules/index.mjs +0 -2
- package/esm2020/lib/core/interfaces/schedules/monkeyecx-request-schedule.mjs +0 -2
- package/esm2020/lib/core/model/index.mjs +0 -3
- package/esm2020/lib/core/model/monkeyecx-links.model.mjs +0 -8
- package/esm2020/lib/core/model/monkeyecx-model.mjs +0 -26
- package/esm2020/lib/core/pipes/index.mjs +0 -24
- package/esm2020/lib/core/pipes/monkeyecx-blob-secure.mjs +0 -26
- package/esm2020/lib/core/pipes/monkeyecx-currency-code.mjs +0 -30
- package/esm2020/lib/core/pipes/monkeyecx-display-first-name.mjs +0 -19
- package/esm2020/lib/core/pipes/monkeyecx-display-initials.mjs +0 -21
- package/esm2020/lib/core/pipes/monkeyecx-display-support-phone.mjs +0 -33
- package/esm2020/lib/core/pipes/monkeyecx-format-address.mjs +0 -20
- package/esm2020/lib/core/pipes/monkeyecx-format-beautify-json.mjs +0 -38
- package/esm2020/lib/core/pipes/monkeyecx-format-currency.mjs +0 -48
- package/esm2020/lib/core/pipes/monkeyecx-format-date-group.mjs +0 -45
- package/esm2020/lib/core/pipes/monkeyecx-format-date-timelapse.mjs +0 -32
- package/esm2020/lib/core/pipes/monkeyecx-format-date-unix-timelapse.mjs +0 -36
- package/esm2020/lib/core/pipes/monkeyecx-format-date.mjs +0 -30
- package/esm2020/lib/core/pipes/monkeyecx-format-document.mjs +0 -20
- package/esm2020/lib/core/pipes/monkeyecx-format-number.mjs +0 -20
- package/esm2020/lib/core/pipes/monkeyecx-format-phone.mjs +0 -42
- package/esm2020/lib/core/pipes/monkeyecx-format-size.mjs +0 -20
- package/esm2020/lib/core/pipes/monkeyecx-format-tax.mjs +0 -23
- package/esm2020/lib/core/pipes/monkeyecx-format-type-document.mjs +0 -19
- package/esm2020/lib/core/pipes/monkeyecx-format-value.mjs +0 -19
- package/esm2020/lib/core/pipes/monkeyecx-format-zipcode.mjs +0 -19
- package/esm2020/lib/core/pipes/monkeyecx-pipes.module.mjs +0 -127
- package/esm2020/lib/core/pipes/monkeyecx-text-truncate.mjs +0 -23
- package/esm2020/lib/core/pipes/monkeyecx-truncate-qtd.mjs +0 -16
- package/esm2020/lib/core/services/alerts/index.mjs +0 -2
- package/esm2020/lib/core/services/alerts/monkeyecx-alerts.service.mjs +0 -88
- package/esm2020/lib/core/services/auth/index.mjs +0 -6
- package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-company.service.mjs +0 -28
- package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-login.service.mjs +0 -27
- package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-role.service.mjs +0 -77
- package/esm2020/lib/core/services/auth/monkeyecx-auth-guard.service.mjs +0 -26
- package/esm2020/lib/core/services/auth/monkeyecx-authentication.service.mjs +0 -79
- package/esm2020/lib/core/services/commons/index.mjs +0 -4
- package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve-base.service.mjs +0 -109
- package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve.service.mjs +0 -127
- package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +0 -362
- package/esm2020/lib/core/services/config/monkeyecx-alerts-config.service.mjs +0 -43
- package/esm2020/lib/core/services/config/monkeyecx-config.module.mjs +0 -28
- package/esm2020/lib/core/services/config/monkeyecx-config.service.mjs +0 -107
- package/esm2020/lib/core/services/config/monkeyecx-currency-config.service.mjs +0 -84
- package/esm2020/lib/core/services/config/monkeyecx-error-config.service.mjs +0 -85
- package/esm2020/lib/core/services/config/monkeyecx-feature-toggle.service.mjs +0 -77
- package/esm2020/lib/core/services/config/monkeyecx-gtm-config.service.mjs +0 -47
- package/esm2020/lib/core/services/config/monkeyecx-i18n-config.service.mjs +0 -162
- package/esm2020/lib/core/services/config/monkeyecx-logs-config.service.mjs +0 -83
- package/esm2020/lib/core/services/config/monkeyecx-maintenance-config.service.mjs +0 -37
- package/esm2020/lib/core/services/config/monkeyecx-security-console-config.service.mjs +0 -48
- package/esm2020/lib/core/services/config/monkeyecx-service-worker-config.service.mjs +0 -55
- package/esm2020/lib/core/services/error/index.mjs +0 -5
- package/esm2020/lib/core/services/error/monkeyecx-error-handling.module.mjs +0 -27
- package/esm2020/lib/core/services/error/monkeyecx-error-handling.service.mjs +0 -37
- package/esm2020/lib/core/services/error/monkeyecx-http-error-handling.service.mjs +0 -149
- package/esm2020/lib/core/services/error/monkeyecx-others-errors-handling.service.mjs +0 -49
- package/esm2020/lib/core/services/index.mjs +0 -27
- package/esm2020/lib/core/services/l/index.mjs +0 -2
- package/esm2020/lib/core/services/l/l.service.mjs +0 -45
- package/esm2020/lib/core/services/logged/index.mjs +0 -2
- package/esm2020/lib/core/services/logged/monkeyecx-logged-handling.service.mjs +0 -40
- package/esm2020/lib/core/services/monkeyecx-handling.service.mjs +0 -50
- package/esm2020/lib/core/services/monkeyecx-service.service.mjs +0 -109
- package/esm2020/lib/core/services/pagination/index.mjs +0 -2
- package/esm2020/lib/core/services/pagination/monkeyecx-pagination.service.mjs +0 -29
- package/esm2020/lib/core/services/request-download/index.mjs +0 -3
- package/esm2020/lib/core/services/request-download/monkeyecx-request-download-handling.service.mjs +0 -93
- package/esm2020/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.mjs +0 -61
- package/esm2020/lib/core/services/request-paged/index.mjs +0 -2
- package/esm2020/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.mjs +0 -42
- package/esm2020/lib/core/services/request-queue/index.mjs +0 -3
- package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.mjs +0 -114
- package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.mjs +0 -119
- package/esm2020/lib/core/services/routes/index.mjs +0 -2
- package/esm2020/lib/core/services/routes/monkeyecx-dicovery-params.service.mjs +0 -54
- package/esm2020/lib/core/services/schedules/index.mjs +0 -2
- package/esm2020/lib/core/services/schedules/monkeyecx-request-schedule.service.mjs +0 -188
- package/esm2020/lib/core/services/storage/index.mjs +0 -3
- package/esm2020/lib/core/services/storage/monkeyecx-cookie-storage.service.mjs +0 -32
- package/esm2020/lib/core/services/storage/monkeyecx-token-storage.service.mjs +0 -237
- package/esm2020/lib/core/services/store/index.mjs +0 -5
- package/esm2020/lib/core/services/store/monkeyecx-store-base.service.mjs +0 -174
- package/esm2020/lib/core/services/store/monkeyecx-store.actions.mjs +0 -26
- package/esm2020/lib/core/services/store/monkeyecx-store.selector.mjs +0 -87
- package/esm2020/lib/core/services/store/monkeyecx-store.service.mjs +0 -195
- package/esm2020/lib/core/specification-search/index.mjs +0 -2
- package/esm2020/lib/core/specification-search/monkeyecx-specification-search.mjs +0 -108
- package/esm2020/lib/core/utils/decorators-utils.mjs +0 -40
- package/esm2020/lib/core/utils/index.mjs +0 -8
- package/esm2020/lib/core/utils/statics.mjs +0 -47
- package/esm2020/lib/core/utils/utils.mjs +0 -469
- package/esm2020/lib/core/utils/validate-utils.mjs +0 -219
- package/esm2020/lib/core/utils/validators.mjs +0 -327
- package/esm2020/lib/monkey-front-core.module.mjs +0 -71
- package/esm2020/lib/store/actions/index.mjs +0 -2
- package/esm2020/lib/store/actions/monkeyecx-storage.actions.mjs +0 -8
- package/esm2020/lib/store/index.mjs +0 -4
- package/esm2020/lib/store/reducers/index.mjs +0 -3
- package/esm2020/lib/store/reducers/monkeyecx-seeder.reducer.mjs +0 -53
- package/esm2020/lib/store/reducers/monkeyecx-storage.reducer.mjs +0 -40
- package/esm2020/lib/store/selectors/index.mjs +0 -2
- package/esm2020/lib/store/selectors/monkeyecx-storage.selector.mjs +0 -17
- package/esm2020/monkey-front-core.mjs +0 -5
- package/esm2020/public-api.mjs +0 -8
- package/fesm2015/monkey-front-core.mjs +0 -7238
- package/fesm2015/monkey-front-core.mjs.map +0 -1
- package/fesm2020/monkey-front-core.mjs +0 -7248
- package/fesm2020/monkey-front-core.mjs.map +0 -1
- package/lib/components/alerts/alerts.component.d.ts +0 -22
- package/lib/components/alerts/alerts.module.d.ts +0 -10
- package/lib/components/alerts/index.d.ts +0 -2
- package/lib/components/closed-to-maintenance/closed-to-maintenance.component.d.ts +0 -13
- package/lib/components/closed-to-maintenance/closed-to-maintenance.module.d.ts +0 -11
- package/lib/components/closed-to-maintenance/index.d.ts +0 -2
- package/lib/components/currency-config/currency-config.component.d.ts +0 -17
- package/lib/components/currency-config/currency-config.module.d.ts +0 -10
- package/lib/components/currency-config/index.d.ts +0 -2
- package/lib/components/index.d.ts +0 -5
- package/lib/components/progress-bar/index.d.ts +0 -3
- package/lib/components/progress-bar/progress-bar.component.d.ts +0 -11
- package/lib/components/progress-bar/progress-bar.module.d.ts +0 -8
- package/lib/components/progress-bar/progress-bar.service.d.ts +0 -14
- package/lib/components/version-changed/index.d.ts +0 -2
- package/lib/components/version-changed/version-changed.component.d.ts +0 -9
- package/lib/components/version-changed/version-changed.module.d.ts +0 -10
- package/lib/core/decorators/index.d.ts +0 -4
- package/lib/core/decorators/monkeyecx-charts-decorators.d.ts +0 -1
- package/lib/core/decorators/monkeyecx-decorators.d.ts +0 -7
- package/lib/core/decorators/monkeyecx-download-decorators.d.ts +0 -2
- package/lib/core/decorators/monkeyecx-upload-decorators.d.ts +0 -2
- package/lib/core/directives/index.d.ts +0 -13
- package/lib/core/directives/monkeyecx-directives-module.d.ts +0 -20
- package/lib/core/directives/monkeyecx-drag-drop.d.ts +0 -12
- package/lib/core/directives/monkeyecx-feature-by-program-directive.d.ts +0 -16
- package/lib/core/directives/monkeyecx-feature-directive.d.ts +0 -17
- package/lib/core/directives/monkeyecx-format-currency.d.ts +0 -16
- package/lib/core/directives/monkeyecx-format-upper.d.ts +0 -18
- package/lib/core/directives/monkeyecx-loading.d.ts +0 -16
- package/lib/core/directives/monkeyecx-only-alpha-numeric-directive.d.ts +0 -9
- package/lib/core/directives/monkeyecx-only-number-directive.d.ts +0 -9
- package/lib/core/directives/monkeyecx-popover-options.directive.d.ts +0 -19
- package/lib/core/directives/monkeyecx-popover.directive.d.ts +0 -43
- package/lib/core/directives/monkeyecx-security-directive.d.ts +0 -18
- package/lib/core/directives/monkeyecx-tooltip-directive.d.ts +0 -23
- package/lib/core/index.d.ts +0 -10
- package/lib/core/injectors/index.d.ts +0 -7
- package/lib/core/interceptors/index.d.ts +0 -5
- package/lib/core/interceptors/monkeyecx-http-config-error.interceptor.d.ts +0 -18
- package/lib/core/interceptors/monkeyecx-http-config-header.interceptor.d.ts +0 -16
- package/lib/core/interceptors/monkeyecx-http-config-interceptor.module.d.ts +0 -9
- package/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.d.ts +0 -12
- package/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.d.ts +0 -14
- package/lib/core/interfaces/index.d.ts +0 -36
- package/lib/core/interfaces/monkeyecx-auth-credentials.d.ts +0 -15
- package/lib/core/interfaces/monkeyecx-company-pendencies.d.ts +0 -14
- package/lib/core/interfaces/monkeyecx-company.d.ts +0 -10
- package/lib/core/interfaces/monkeyecx-config-bootstrap.d.ts +0 -14
- package/lib/core/interfaces/monkeyecx-config.d.ts +0 -132
- package/lib/core/interfaces/monkeyecx-country-security.d.ts +0 -4
- package/lib/core/interfaces/monkeyecx-embedded.d.ts +0 -7
- package/lib/core/interfaces/monkeyecx-error-response.d.ts +0 -5
- package/lib/core/interfaces/monkeyecx-filter.d.ts +0 -52
- package/lib/core/interfaces/monkeyecx-group.d.ts +0 -13
- package/lib/core/interfaces/monkeyecx-handled-error-response.d.ts +0 -10
- package/lib/core/interfaces/monkeyecx-header-credentials.d.ts +0 -4
- package/lib/core/interfaces/monkeyecx-intercom-options.d.ts +0 -4
- package/lib/core/interfaces/monkeyecx-interface.d.ts +0 -11
- package/lib/core/interfaces/monkeyecx-me-credentials.d.ts +0 -20
- package/lib/core/interfaces/monkeyecx-navigation.d.ts +0 -30
- package/lib/core/interfaces/monkeyecx-pagination.d.ts +0 -26
- package/lib/core/interfaces/monkeyecx-program.d.ts +0 -10
- package/lib/core/interfaces/monkeyecx-releases.d.ts +0 -9
- package/lib/core/interfaces/monkeyecx-request-in-progress.d.ts +0 -3
- package/lib/core/interfaces/monkeyecx-request-paged.d.ts +0 -23
- package/lib/core/interfaces/monkeyecx-resolver.d.ts +0 -39
- package/lib/core/interfaces/monkeyecx-response-links.d.ts +0 -11
- package/lib/core/interfaces/monkeyecx-response-paged.d.ts +0 -6
- package/lib/core/interfaces/monkeyecx-saved-state.d.ts +0 -5
- package/lib/core/interfaces/monkeyecx-scroll-options.d.ts +0 -5
- package/lib/core/interfaces/monkeyecx-service-credentials.d.ts +0 -12
- package/lib/core/interfaces/monkeyecx-storage.d.ts +0 -35
- package/lib/core/interfaces/monkeyecx-store.d.ts +0 -45
- package/lib/core/interfaces/monkeyecx-support-options.d.ts +0 -4
- package/lib/core/interfaces/monkeyecx-token-credentials.d.ts +0 -30
- package/lib/core/interfaces/monkeyecx-translate-options.d.ts +0 -4
- package/lib/core/interfaces/request-download/index.d.ts +0 -3
- package/lib/core/interfaces/request-download/monkeyecx-request-download.d.ts +0 -10
- package/lib/core/interfaces/request-download/monkeyecx-request-downloaded.d.ts +0 -7
- package/lib/core/interfaces/request-download/monkeyecx-request-item-download.d.ts +0 -7
- package/lib/core/interfaces/request-queue/index.d.ts +0 -3
- package/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.d.ts +0 -7
- package/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.d.ts +0 -6
- package/lib/core/interfaces/request-queue/monkeyecx-request-queue.d.ts +0 -8
- package/lib/core/interfaces/request-upload/index.d.ts +0 -2
- package/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.d.ts +0 -5
- package/lib/core/interfaces/request-upload/monkeyecx-request-upload.d.ts +0 -10
- package/lib/core/interfaces/schedules/index.d.ts +0 -1
- package/lib/core/interfaces/schedules/monkeyecx-request-schedule.d.ts +0 -13
- package/lib/core/model/index.d.ts +0 -2
- package/lib/core/model/monkeyecx-links.model.d.ts +0 -4
- package/lib/core/model/monkeyecx-model.d.ts +0 -14
- package/lib/core/pipes/index.d.ts +0 -23
- package/lib/core/pipes/monkeyecx-blob-secure.d.ts +0 -13
- package/lib/core/pipes/monkeyecx-currency-code.d.ts +0 -9
- package/lib/core/pipes/monkeyecx-display-first-name.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-display-initials.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-display-support-phone.d.ts +0 -18
- package/lib/core/pipes/monkeyecx-format-address.d.ts +0 -14
- package/lib/core/pipes/monkeyecx-format-beautify-json.d.ts +0 -8
- package/lib/core/pipes/monkeyecx-format-currency.d.ts +0 -12
- package/lib/core/pipes/monkeyecx-format-date-group.d.ts +0 -11
- package/lib/core/pipes/monkeyecx-format-date-timelapse.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-date-unix-timelapse.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-date.d.ts +0 -12
- package/lib/core/pipes/monkeyecx-format-document.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-number.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-phone.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-size.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-tax.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-type-document.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-value.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-format-zipcode.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-pipes.module.d.ts +0 -28
- package/lib/core/pipes/monkeyecx-text-truncate.d.ts +0 -7
- package/lib/core/pipes/monkeyecx-truncate-qtd.d.ts +0 -7
- package/lib/core/services/alerts/index.d.ts +0 -1
- package/lib/core/services/alerts/monkeyecx-alerts.service.d.ts +0 -49
- package/lib/core/services/auth/index.d.ts +0 -5
- package/lib/core/services/auth/monkeyecx-auth-guard-company.service.d.ts +0 -10
- package/lib/core/services/auth/monkeyecx-auth-guard-login.service.d.ts +0 -10
- package/lib/core/services/auth/monkeyecx-auth-guard-role.service.d.ts +0 -16
- package/lib/core/services/auth/monkeyecx-auth-guard.service.d.ts +0 -10
- package/lib/core/services/auth/monkeyecx-authentication.service.d.ts +0 -35
- package/lib/core/services/commons/index.d.ts +0 -3
- package/lib/core/services/commons/monkeyecx-commons-resolve-base.service.d.ts +0 -46
- package/lib/core/services/commons/monkeyecx-commons-resolve.service.d.ts +0 -60
- package/lib/core/services/commons/monkeyecx-commons.service.d.ts +0 -120
- package/lib/core/services/config/monkeyecx-alerts-config.service.d.ts +0 -11
- package/lib/core/services/config/monkeyecx-config.module.d.ts +0 -9
- package/lib/core/services/config/monkeyecx-config.service.d.ts +0 -36
- package/lib/core/services/config/monkeyecx-currency-config.service.d.ts +0 -15
- package/lib/core/services/config/monkeyecx-error-config.service.d.ts +0 -8
- package/lib/core/services/config/monkeyecx-feature-toggle.service.d.ts +0 -17
- package/lib/core/services/config/monkeyecx-gtm-config.service.d.ts +0 -8
- package/lib/core/services/config/monkeyecx-i18n-config.service.d.ts +0 -24
- package/lib/core/services/config/monkeyecx-logs-config.service.d.ts +0 -14
- package/lib/core/services/config/monkeyecx-maintenance-config.service.d.ts +0 -13
- package/lib/core/services/config/monkeyecx-security-console-config.service.d.ts +0 -12
- package/lib/core/services/config/monkeyecx-service-worker-config.service.d.ts +0 -16
- package/lib/core/services/error/index.d.ts +0 -4
- package/lib/core/services/error/monkeyecx-error-handling.module.d.ts +0 -9
- package/lib/core/services/error/monkeyecx-error-handling.service.d.ts +0 -9
- package/lib/core/services/error/monkeyecx-http-error-handling.service.d.ts +0 -26
- package/lib/core/services/error/monkeyecx-others-errors-handling.service.d.ts +0 -11
- package/lib/core/services/index.d.ts +0 -26
- package/lib/core/services/l/index.d.ts +0 -1
- package/lib/core/services/l/l.service.d.ts +0 -11
- package/lib/core/services/logged/index.d.ts +0 -1
- package/lib/core/services/logged/monkeyecx-logged-handling.service.d.ts +0 -14
- package/lib/core/services/monkeyecx-handling.service.d.ts +0 -22
- package/lib/core/services/monkeyecx-service.service.d.ts +0 -19
- package/lib/core/services/pagination/index.d.ts +0 -1
- package/lib/core/services/pagination/monkeyecx-pagination.service.d.ts +0 -9
- package/lib/core/services/request-download/index.d.ts +0 -2
- package/lib/core/services/request-download/monkeyecx-request-download-handling.service.d.ts +0 -18
- package/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.d.ts +0 -16
- package/lib/core/services/request-paged/index.d.ts +0 -1
- package/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.d.ts +0 -11
- package/lib/core/services/request-queue/index.d.ts +0 -2
- package/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.d.ts +0 -21
- package/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.d.ts +0 -23
- package/lib/core/services/routes/index.d.ts +0 -1
- package/lib/core/services/routes/monkeyecx-dicovery-params.service.d.ts +0 -13
- package/lib/core/services/schedules/index.d.ts +0 -1
- package/lib/core/services/schedules/monkeyecx-request-schedule.service.d.ts +0 -47
- package/lib/core/services/storage/index.d.ts +0 -2
- package/lib/core/services/storage/monkeyecx-cookie-storage.service.d.ts +0 -11
- package/lib/core/services/storage/monkeyecx-token-storage.service.d.ts +0 -30
- package/lib/core/services/store/index.d.ts +0 -4
- package/lib/core/services/store/monkeyecx-store-base.service.d.ts +0 -47
- package/lib/core/services/store/monkeyecx-store.actions.d.ts +0 -42
- package/lib/core/services/store/monkeyecx-store.selector.d.ts +0 -32
- package/lib/core/services/store/monkeyecx-store.service.d.ts +0 -50
- package/lib/core/specification-search/index.d.ts +0 -1
- package/lib/core/specification-search/monkeyecx-specification-search.d.ts +0 -20
- package/lib/core/utils/decorators-utils.d.ts +0 -5
- package/lib/core/utils/index.d.ts +0 -6
- package/lib/core/utils/statics.d.ts +0 -36
- package/lib/core/utils/utils.d.ts +0 -39
- package/lib/core/utils/validate-utils.d.ts +0 -71
- package/lib/core/utils/validators.d.ts +0 -43
- package/lib/monkey-front-core.module.d.ts +0 -19
- package/lib/store/actions/index.d.ts +0 -1
- package/lib/store/actions/monkeyecx-storage.actions.d.ts +0 -23
- package/lib/store/index.d.ts +0 -3
- package/lib/store/reducers/index.d.ts +0 -2
- package/lib/store/reducers/monkeyecx-seeder.reducer.d.ts +0 -2
- package/lib/store/reducers/monkeyecx-storage.reducer.d.ts +0 -13
- package/lib/store/selectors/index.d.ts +0 -1
- package/lib/store/selectors/monkeyecx-storage.selector.d.ts +0 -8
- package/monkey-front-core-0.0.606.tgz +0 -0
- package/monkey-front-core.d.ts +0 -5
- package/public-api.d.ts +0 -4
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import * as moment_ from 'moment';
|
|
2
|
-
import { MonkeyEcxUtils } from './utils';
|
|
3
|
-
const moment = moment_;
|
|
4
|
-
export class DateValidator {
|
|
5
|
-
static do(control) {
|
|
6
|
-
if (!control.parent || !control)
|
|
7
|
-
return null;
|
|
8
|
-
if (control && control.value) {
|
|
9
|
-
const dateFormat = 'MM-DD-YYYY';
|
|
10
|
-
if (!moment
|
|
11
|
-
.default(moment.default(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true)
|
|
12
|
-
.isValid()) {
|
|
13
|
-
return {
|
|
14
|
-
invalidDate: true
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export class DocumentValidator {
|
|
22
|
-
static do(control) {
|
|
23
|
-
if (!control.parent || !control)
|
|
24
|
-
return null;
|
|
25
|
-
if (control && control.value) {
|
|
26
|
-
if (!MonkeyEcxUtils.isCPFCNPJValid(control.value)) {
|
|
27
|
-
return {
|
|
28
|
-
invalidCpfCnpj: true
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
export class DocumentRutValidator {
|
|
36
|
-
static do(control) {
|
|
37
|
-
if (!control.parent || !control)
|
|
38
|
-
return null;
|
|
39
|
-
if (control && control.value) {
|
|
40
|
-
if (!MonkeyEcxUtils.isValidRUT(control.value)) {
|
|
41
|
-
return {
|
|
42
|
-
invalidRut: true
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
export class DocumentRFCValidator {
|
|
50
|
-
static do(control) {
|
|
51
|
-
if (!control.parent || !control)
|
|
52
|
-
return null;
|
|
53
|
-
if (control && control.value) {
|
|
54
|
-
if (!MonkeyEcxUtils.isValidRFC(control.value)) {
|
|
55
|
-
return {
|
|
56
|
-
invalidRfc: true
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export class ZipCodeValidator {
|
|
64
|
-
static do(control) {
|
|
65
|
-
if (!control.parent || !control)
|
|
66
|
-
return null;
|
|
67
|
-
if (control && control.value) {
|
|
68
|
-
if (!MonkeyEcxUtils.isValidZipCode(control.value)) {
|
|
69
|
-
return {
|
|
70
|
-
invalidZipCode: true
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
export class ComboValidator {
|
|
78
|
-
static do(control) {
|
|
79
|
-
if (!control.parent || !control)
|
|
80
|
-
return null;
|
|
81
|
-
if (control && control.value !== '0')
|
|
82
|
-
return null;
|
|
83
|
-
return {
|
|
84
|
-
invalidCombo: true
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
export class isTrueValidator {
|
|
89
|
-
static do(control) {
|
|
90
|
-
if (!control.parent || !control)
|
|
91
|
-
return null;
|
|
92
|
-
if (control && control.value !== false)
|
|
93
|
-
return null;
|
|
94
|
-
return {
|
|
95
|
-
invalidTrue: true
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
export class PasswordMatchValidation {
|
|
100
|
-
static do(control) {
|
|
101
|
-
if (!control.parent || !control)
|
|
102
|
-
return null;
|
|
103
|
-
const { parent } = control;
|
|
104
|
-
const password = parent?.get('password')?.value;
|
|
105
|
-
const passwordConfirm = parent?.get('passwordConfirm')?.value;
|
|
106
|
-
if (!password || !passwordConfirm)
|
|
107
|
-
return null;
|
|
108
|
-
if (password === passwordConfirm)
|
|
109
|
-
return null;
|
|
110
|
-
return {
|
|
111
|
-
passwordsNotMatching: true
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export class UrlValidator {
|
|
116
|
-
static do(control) {
|
|
117
|
-
if (!control.parent || !control)
|
|
118
|
-
return null;
|
|
119
|
-
if (control && control.value) {
|
|
120
|
-
if (!MonkeyEcxUtils.isValidUrl(control.value)) {
|
|
121
|
-
return {
|
|
122
|
-
invalidUrl: true
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
export class CustomDatesStartValidator {
|
|
130
|
-
static do(control) {
|
|
131
|
-
if (!control.parent || !control)
|
|
132
|
-
return null;
|
|
133
|
-
const { parent } = control;
|
|
134
|
-
const valueStart = parent?.get('dateStart')?.value;
|
|
135
|
-
const valueEnd = parent?.get('dateEnd')?.value;
|
|
136
|
-
let dateStart = null;
|
|
137
|
-
let dateEnd = null;
|
|
138
|
-
if (valueStart) {
|
|
139
|
-
dateStart = new Date(valueStart);
|
|
140
|
-
}
|
|
141
|
-
if (valueEnd) {
|
|
142
|
-
dateEnd = new Date(valueEnd);
|
|
143
|
-
}
|
|
144
|
-
if (!dateStart || !dateEnd)
|
|
145
|
-
return null;
|
|
146
|
-
if (dateStart > dateEnd) {
|
|
147
|
-
return {
|
|
148
|
-
dateStartMustBeLessThanAnd: true
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
export class CustomDatesEndValidator {
|
|
155
|
-
static do(control) {
|
|
156
|
-
if (!control.parent || !control)
|
|
157
|
-
return null;
|
|
158
|
-
const { parent } = control;
|
|
159
|
-
const valueStart = parent?.get('dateStart')?.value;
|
|
160
|
-
const valueEnd = parent?.get('dateEnd')?.value;
|
|
161
|
-
let dateStart = null;
|
|
162
|
-
let dateEnd = null;
|
|
163
|
-
if (valueStart) {
|
|
164
|
-
dateStart = new Date(valueStart);
|
|
165
|
-
}
|
|
166
|
-
if (valueEnd) {
|
|
167
|
-
dateEnd = new Date(valueEnd);
|
|
168
|
-
}
|
|
169
|
-
if (!dateEnd || !dateStart)
|
|
170
|
-
return null;
|
|
171
|
-
if (dateEnd < dateStart) {
|
|
172
|
-
return {
|
|
173
|
-
dateEndMustBeGreaterThanStart: true
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
return null;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
export class UnlockRegisterBuyerValidator {
|
|
180
|
-
static do(control) {
|
|
181
|
-
if (!control.parent || !control)
|
|
182
|
-
return null;
|
|
183
|
-
if (control && control.value !== '#MONKEYBUYER') {
|
|
184
|
-
return {
|
|
185
|
-
invalidUnlockRegister: true
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
export class UnlockRegisterSponsorValidator {
|
|
192
|
-
static do(control) {
|
|
193
|
-
if (!control.parent || !control)
|
|
194
|
-
return null;
|
|
195
|
-
if (control && control.value !== '#MONKEYSPONSOR') {
|
|
196
|
-
return {
|
|
197
|
-
invalidUnlockRegister: true
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
return null;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
export class DateRangeValidator {
|
|
204
|
-
static do(control) {
|
|
205
|
-
if (!control.parent || !control) {
|
|
206
|
-
return null;
|
|
207
|
-
}
|
|
208
|
-
const dates = control?.parent?.get('dates')?.value;
|
|
209
|
-
if (dates &&
|
|
210
|
-
(!MonkeyEcxUtils.persistNullEmptyUndefined(dates.startDate) ||
|
|
211
|
-
!MonkeyEcxUtils.persistNullEmptyUndefined(dates.endDate))) {
|
|
212
|
-
return {
|
|
213
|
-
invalidDateRange: true
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
return null;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvdmFsaWRhdGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6QyxNQUFNLE1BQU0sR0FBUSxPQUFPLENBQUM7QUFFNUIsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUF3QjtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztZQUNoQyxJQUNFLENBQUMsTUFBTTtpQkFDSixPQUFPLENBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQzFDLElBQUksQ0FDTDtpQkFDQSxPQUFPLEVBQUUsRUFDWjtnQkFDQSxPQUFPO29CQUNMLFdBQVcsRUFBRSxJQUFJO2lCQUNsQixDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQXdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVB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QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUMzRDtZQUNBLE9BQU87Z0JBQ0wsZ0JBQWdCLEVBQUUsSUFBSTthQUN2QixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1jbGFzc2VzLXBlci1maWxlICovXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XG5cbmV4cG9ydCBjbGFzcyBEYXRlVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSAnTU0tREQtWVlZWSc7XG4gICAgICBpZiAoXG4gICAgICAgICFtb21lbnRcbiAgICAgICAgICAuZGVmYXVsdChcbiAgICAgICAgICAgIG1vbWVudC5kZWZhdWx0KGNvbnRyb2wudmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgICAgIFsnREQvTU0vWVlZWScsICdNTS1ERC1ZWVlZJywgJ1lZWVktTU0tREQnXSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICApXG4gICAgICAgICAgLmlzVmFsaWQoKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZERhdGU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvY3VtZW50VmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNDUEZDTlBKVmFsaWQoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbnZhbGlkQ3BmQ25wajogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRSdXRWYWxpZGF0b3Ige1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkUlVUKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFJ1dDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRSRkNWYWxpZGF0b3Ige1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkUkZDKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFJmYzogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgWmlwQ29kZVZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlKSB7XG4gICAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRaaXBDb2RlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFppcENvZGU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbWJvVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09ICcwJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRDb21ibzogdHJ1ZVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIGlzVHJ1ZVZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRUcnVlOiB0cnVlXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRNYXRjaFZhbGlkYXRpb24ge1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyBwYXJlbnQgfSA9IGNvbnRyb2w7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBwYXJlbnQ/LmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmRDb25maXJtID0gcGFyZW50Py5nZXQoJ3Bhc3N3b3JkQ29uZmlybScpPy52YWx1ZTtcbiAgICBpZiAoIXBhc3N3b3JkIHx8ICFwYXNzd29yZENvbmZpcm0pIHJldHVybiBudWxsO1xuICAgIGlmIChwYXNzd29yZCA9PT0gcGFzc3dvcmRDb25maXJtKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgcGFzc3dvcmRzTm90TWF0Y2hpbmc6IHRydWVcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcmxWYWxpZGF0b3Ige1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkVXJsKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFVybDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZXNTdGFydFZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IHBhcmVudCB9ID0gY29udHJvbDtcblxuICAgIGNvbnN0IHZhbHVlU3RhcnQgPSBwYXJlbnQ/LmdldCgnZGF0ZVN0YXJ0Jyk/LnZhbHVlO1xuICAgIGNvbnN0IHZhbHVlRW5kID0gcGFyZW50Py5nZXQoJ2RhdGVFbmQnKT8udmFsdWU7XG4gICAgbGV0IGRhdGVTdGFydDogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBkYXRlRW5kOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHZhbHVlU3RhcnQpIHtcbiAgICAgIGRhdGVTdGFydCA9IG5ldyBEYXRlKHZhbHVlU3RhcnQpO1xuICAgIH1cbiAgICBpZiAodmFsdWVFbmQpIHtcbiAgICAgIGRhdGVFbmQgPSBuZXcgRGF0ZSh2YWx1ZUVuZCk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRlU3RhcnQgfHwgIWRhdGVFbmQpIHJldHVybiBudWxsO1xuICAgIGlmIChkYXRlU3RhcnQgPiBkYXRlRW5kKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlU3RhcnRNdXN0QmVMZXNzVGhhbkFuZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVzRW5kVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuXG4gICAgY29uc3QgdmFsdWVTdGFydCA9IHBhcmVudD8uZ2V0KCdkYXRlU3RhcnQnKT8udmFsdWU7XG4gICAgY29uc3QgdmFsdWVFbmQgPSBwYXJlbnQ/LmdldCgnZGF0ZUVuZCcpPy52YWx1ZTtcbiAgICBsZXQgZGF0ZVN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGRhdGVFbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBpZiAodmFsdWVTdGFydCkge1xuICAgICAgZGF0ZVN0YXJ0ID0gbmV3IERhdGUodmFsdWVTdGFydCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZUVuZCkge1xuICAgICAgZGF0ZUVuZCA9IG5ldyBEYXRlKHZhbHVlRW5kKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVFbmQgfHwgIWRhdGVTdGFydCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGRhdGVFbmQgPCBkYXRlU3RhcnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGVFbmRNdXN0QmVHcmVhdGVyVGhhblN0YXJ0OiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5sb2NrUmVnaXN0ZXJCdXllclZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcblxuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09ICcjTU9OS0VZQlVZRVInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkVW5sb2NrUmVnaXN0ZXI6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVubG9ja1JlZ2lzdGVyU3BvbnNvclZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcblxuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09ICcjTU9OS0VZU1BPTlNPUicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRVbmxvY2tSZWdpc3RlcjogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVzID0gY29udHJvbD8ucGFyZW50Py5nZXQoJ2RhdGVzJyk/LnZhbHVlO1xuXG4gICAgaWYgKFxuICAgICAgZGF0ZXMgJiZcbiAgICAgICghTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChkYXRlcy5zdGFydERhdGUpIHx8XG4gICAgICAgICFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzLmVuZERhdGUpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZERhdGVSYW5nZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
import * as moment_ from 'moment';
|
|
2
|
-
import { MonkeyEcxUtils } from './utils';
|
|
3
|
-
const moment = moment_;
|
|
4
|
-
const EMAIL_REGEXP = /^[\w-.]+@([\w-]+\.)+[\w-]{1,64}$/;
|
|
5
|
-
function isEmptyInputValue(value) {
|
|
6
|
-
return value == null || value.length === 0;
|
|
7
|
-
}
|
|
8
|
-
export function emailValidator(control) {
|
|
9
|
-
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
const test = EMAIL_REGEXP.test(control.value);
|
|
13
|
-
if (test)
|
|
14
|
-
return null;
|
|
15
|
-
return {
|
|
16
|
-
email: true
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export function dateRangeValidator(control) {
|
|
20
|
-
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
const dates = control?.parent?.get('dates')?.value;
|
|
24
|
-
if (dates &&
|
|
25
|
-
(!MonkeyEcxUtils.persistNullEmptyUndefined(dates?.startDate) ||
|
|
26
|
-
!MonkeyEcxUtils.persistNullEmptyUndefined(dates?.endDate))) {
|
|
27
|
-
return {
|
|
28
|
-
dateRange: true
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
export function registerValidator(control, type) {
|
|
34
|
-
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
if (control && control.value !== `#MONKEY${type}`.toUpperCase()) {
|
|
38
|
-
return {
|
|
39
|
-
invalidUnlockRegister: true
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
export function dateStartEndValidator(control) {
|
|
45
|
-
if (!control.parent || !control) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const { parent } = control;
|
|
49
|
-
const valueStart = parent?.get('dateStart')?.value;
|
|
50
|
-
const valueEnd = parent?.get('dateEnd')?.value;
|
|
51
|
-
let dateStart = null;
|
|
52
|
-
let dateEnd = null;
|
|
53
|
-
if (valueStart) {
|
|
54
|
-
dateStart = new Date(valueStart);
|
|
55
|
-
}
|
|
56
|
-
if (valueEnd) {
|
|
57
|
-
dateEnd = new Date(valueEnd);
|
|
58
|
-
}
|
|
59
|
-
if (!dateEnd || !dateStart)
|
|
60
|
-
return null;
|
|
61
|
-
if (dateStart > dateEnd) {
|
|
62
|
-
return {
|
|
63
|
-
dateStartMustBeLessThanAnd: true
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
export function urlValidator(control) {
|
|
69
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
70
|
-
return null;
|
|
71
|
-
if (!MonkeyEcxUtils.isValidUrl(control.value)) {
|
|
72
|
-
return {
|
|
73
|
-
url: true
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
export function passwordConfirmValidator(control) {
|
|
79
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
80
|
-
return null;
|
|
81
|
-
const { parent } = control;
|
|
82
|
-
const password = parent?.get('password')?.value;
|
|
83
|
-
const passwordConfirm = parent?.get('passwordConfirm')?.value;
|
|
84
|
-
if (!password || !passwordConfirm)
|
|
85
|
-
return null;
|
|
86
|
-
if (password === passwordConfirm)
|
|
87
|
-
return null;
|
|
88
|
-
return {
|
|
89
|
-
passwordsNotMatching: true
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
export function trueValidator(control) {
|
|
93
|
-
if (!control.parent || !control)
|
|
94
|
-
return null;
|
|
95
|
-
if (control && control.value !== false)
|
|
96
|
-
return null;
|
|
97
|
-
return {
|
|
98
|
-
invalidTrue: true
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
export function comboValidator(control) {
|
|
102
|
-
if (!control.parent || !control)
|
|
103
|
-
return null;
|
|
104
|
-
if (control && control.value !== '0')
|
|
105
|
-
return null;
|
|
106
|
-
return {
|
|
107
|
-
invalidCombo: true
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
export function zipCodeValidator(control, country) {
|
|
111
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
112
|
-
return null;
|
|
113
|
-
if (control && control.value) {
|
|
114
|
-
if (!MonkeyEcxUtils.isValidZipCode(control.value, country)) {
|
|
115
|
-
return {
|
|
116
|
-
invalidZipCode: true
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
export function documentValidator(control, country) {
|
|
123
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
124
|
-
return null;
|
|
125
|
-
country = `${country}`.toUpperCase();
|
|
126
|
-
if (country === 'BR') {
|
|
127
|
-
if (!MonkeyEcxUtils.isCPFCNPJValid(control.value)) {
|
|
128
|
-
return {
|
|
129
|
-
invalidCpfCnpj: true
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else if (country === 'CL') {
|
|
134
|
-
if (!MonkeyEcxUtils.isValidRUT(control.value)) {
|
|
135
|
-
return {
|
|
136
|
-
invalidCpfCnpj: true
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else if (country === 'MX') {
|
|
141
|
-
if (!MonkeyEcxUtils.isValidRFC(control.value)) {
|
|
142
|
-
return {
|
|
143
|
-
invalidCpfCnpj: true
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
export function minYearsValidator(param, control) {
|
|
150
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
151
|
-
return null;
|
|
152
|
-
const date = moment.default(control.value);
|
|
153
|
-
const dif = moment.default().diff(date, 'years');
|
|
154
|
-
if (dif < param) {
|
|
155
|
-
return {
|
|
156
|
-
invalidMinYears: {
|
|
157
|
-
year: param
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
return null;
|
|
162
|
-
}
|
|
163
|
-
export function dateValidator(control) {
|
|
164
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
165
|
-
return null;
|
|
166
|
-
const dateFormat = 'MM-DD-YYYY';
|
|
167
|
-
if (!moment
|
|
168
|
-
.default(moment.default(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true)
|
|
169
|
-
.isValid()) {
|
|
170
|
-
return {
|
|
171
|
-
invalidDate: true
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
export function valueGreaterThanZero(control) {
|
|
177
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
178
|
-
return null;
|
|
179
|
-
if (control && `${control?.value}` === '0') {
|
|
180
|
-
return {
|
|
181
|
-
invalidValueGreaterThanZero: true
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
return null;
|
|
185
|
-
}
|
|
186
|
-
export function requiredWithTrimValidator(control) {
|
|
187
|
-
if (!control.parent || !control)
|
|
188
|
-
return null;
|
|
189
|
-
if (control && !`${control?.value}`.trim()) {
|
|
190
|
-
return {
|
|
191
|
-
required: true
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
return null;
|
|
195
|
-
}
|
|
196
|
-
export function differentFromZero(control) {
|
|
197
|
-
if (!control.parent || !control)
|
|
198
|
-
return null;
|
|
199
|
-
const handled = `${control?.value}`.trim().replace(/0/g, '');
|
|
200
|
-
if (control && !handled) {
|
|
201
|
-
return {
|
|
202
|
-
differentFromZero: true
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
return null;
|
|
206
|
-
}
|
|
207
|
-
export function documentValidatorByType(type, control) {
|
|
208
|
-
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
209
|
-
return null;
|
|
210
|
-
const handle = MonkeyEcxUtils.handleOnlyNumbers(control.value);
|
|
211
|
-
let valid = false;
|
|
212
|
-
if (type === 'CPF' || type === 'CNPJ') {
|
|
213
|
-
if ((type === 'CNPJ' && `${handle}`.length !== 14) ||
|
|
214
|
-
(type === 'CPF' && `${handle}`.length !== 11)) {
|
|
215
|
-
valid = false;
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
valid = MonkeyEcxUtils.isCPFCNPJValid(control.value);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
else if (type === 'RUT') {
|
|
222
|
-
valid = MonkeyEcxUtils.isValidRUT(control.value);
|
|
223
|
-
}
|
|
224
|
-
else if (type === 'RFC') {
|
|
225
|
-
valid = MonkeyEcxUtils.isValidRFC(control.value);
|
|
226
|
-
}
|
|
227
|
-
if (!valid) {
|
|
228
|
-
return {
|
|
229
|
-
[`invalid${MonkeyEcxUtils.capitalize(type.toLowerCase())}`]: true
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
|
-
export function validateFullName(control) {
|
|
235
|
-
const value = control.value?.trim();
|
|
236
|
-
if (!value)
|
|
237
|
-
return null;
|
|
238
|
-
const fullName = value.split(/\s+/);
|
|
239
|
-
const hasShortPart = fullName.filter((part) => {
|
|
240
|
-
return part.length >= 2;
|
|
241
|
-
}).length;
|
|
242
|
-
if (hasShortPart < 2) {
|
|
243
|
-
return { fullName: true };
|
|
244
|
-
}
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
247
|
-
export function containsNumber(control) {
|
|
248
|
-
const value = control.value?.trim();
|
|
249
|
-
if (!value)
|
|
250
|
-
return null;
|
|
251
|
-
return /\d/.test(value) ? { containsNumber: true } : null;
|
|
252
|
-
}
|
|
253
|
-
export class Validators {
|
|
254
|
-
static email(control) {
|
|
255
|
-
return emailValidator(control);
|
|
256
|
-
}
|
|
257
|
-
static dateRange(control) {
|
|
258
|
-
return dateRangeValidator(control);
|
|
259
|
-
}
|
|
260
|
-
static unlockSponsorRegister(control) {
|
|
261
|
-
return registerValidator(control, 'sponsor');
|
|
262
|
-
}
|
|
263
|
-
static unlockBuyerRegister(control) {
|
|
264
|
-
return registerValidator(control, 'buyer');
|
|
265
|
-
}
|
|
266
|
-
static dateStartEnd(control) {
|
|
267
|
-
return dateStartEndValidator(control);
|
|
268
|
-
}
|
|
269
|
-
static url(control) {
|
|
270
|
-
return urlValidator(control);
|
|
271
|
-
}
|
|
272
|
-
static passwordConfirm(control) {
|
|
273
|
-
return passwordConfirmValidator(control);
|
|
274
|
-
}
|
|
275
|
-
static true(control) {
|
|
276
|
-
return trueValidator(control);
|
|
277
|
-
}
|
|
278
|
-
static combo(control) {
|
|
279
|
-
return comboValidator(control);
|
|
280
|
-
}
|
|
281
|
-
static zipCode(control) {
|
|
282
|
-
return zipCodeValidator(control);
|
|
283
|
-
}
|
|
284
|
-
static zipCodeByCountry(country) {
|
|
285
|
-
return (control) => {
|
|
286
|
-
return zipCodeValidator(control, country);
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
static documentBR(control) {
|
|
290
|
-
return documentValidator(control, 'BR');
|
|
291
|
-
}
|
|
292
|
-
static documentCL(control) {
|
|
293
|
-
return documentValidator(control, 'CL');
|
|
294
|
-
}
|
|
295
|
-
static documentMX(control) {
|
|
296
|
-
return documentValidator(control, 'MX');
|
|
297
|
-
}
|
|
298
|
-
static date(control) {
|
|
299
|
-
return dateValidator(control);
|
|
300
|
-
}
|
|
301
|
-
static minYears(param) {
|
|
302
|
-
return (control) => {
|
|
303
|
-
return minYearsValidator(param, control);
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
static greaterThanZero(control) {
|
|
307
|
-
return valueGreaterThanZero(control);
|
|
308
|
-
}
|
|
309
|
-
static required(control) {
|
|
310
|
-
return requiredWithTrimValidator(control);
|
|
311
|
-
}
|
|
312
|
-
static differentFromZero(control) {
|
|
313
|
-
return differentFromZero(control);
|
|
314
|
-
}
|
|
315
|
-
static documentValidatorByType(type) {
|
|
316
|
-
return (control) => {
|
|
317
|
-
return documentValidatorByType(type, control);
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
static validateFullName(control) {
|
|
321
|
-
return validateFullName(control);
|
|
322
|
-
}
|
|
323
|
-
static containsNumber(control) {
|
|
324
|
-
return containsNumber(control);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQVEsT0FBTyxDQUFDO0FBRTVCLE1BQU0sWUFBWSxHQUFHLGtDQUFrQyxDQUFDO0FBRXhELFNBQVMsaUJBQWlCLENBQUMsS0FBVTtJQUNuQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBd0I7SUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN0QixPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUF3QjtJQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFD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RCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXdCO1FBQzdDLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBd0I7UUFDdEMsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQXdCO1FBQy9DLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFZO1FBQ3pDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBd0I7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUF3QjtRQUM1QyxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XG5cbmNvbnN0IEVNQUlMX1JFR0VYUCA9IC9eW1xcdy0uXStAKFtcXHctXStcXC4pK1tcXHctXXsxLDY0fSQvO1xuXG5mdW5jdGlvbiBpc0VtcHR5SW5wdXRWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHRlc3QgPSBFTUFJTF9SRUdFWFAudGVzdChjb250cm9sLnZhbHVlKTtcbiAgaWYgKHRlc3QpIHJldHVybiBudWxsO1xuICByZXR1cm4ge1xuICAgIGVtYWlsOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlcyA9IGNvbnRyb2w/LnBhcmVudD8uZ2V0KCdkYXRlcycpPy52YWx1ZTtcbiAgaWYgKFxuICAgIGRhdGVzICYmXG4gICAgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzPy5zdGFydERhdGUpIHx8XG4gICAgICAhTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChkYXRlcz8uZW5kRGF0ZSkpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRlUmFuZ2U6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHR5cGU6IHN0cmluZyk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gYCNNT05LRVkke3R5cGV9YC50b1VwcGVyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRVbmxvY2tSZWdpc3RlcjogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuXG4gIGNvbnN0IHZhbHVlU3RhcnQgPSBwYXJlbnQ/LmdldCgnZGF0ZVN0YXJ0Jyk/LnZhbHVlO1xuICBjb25zdCB2YWx1ZUVuZCA9IHBhcmVudD8uZ2V0KCdkYXRlRW5kJyk/LnZhbHVlO1xuICBsZXQgZGF0ZVN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGxldCBkYXRlRW5kOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGlmICh2YWx1ZVN0YXJ0KSB7XG4gICAgZGF0ZVN0YXJ0ID0gbmV3IERhdGUodmFsdWVTdGFydCk7XG4gIH1cbiAgaWYgKHZhbHVlRW5kKSB7XG4gICAgZGF0ZUVuZCA9IG5ldyBEYXRlKHZhbHVlRW5kKTtcbiAgfVxuXG4gIGlmICghZGF0ZUVuZCB8fCAhZGF0ZVN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgaWYgKGRhdGVTdGFydCA+IGRhdGVFbmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZVN0YXJ0TXVzdEJlTGVzc1RoYW5BbmQ6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cmxWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRVcmwoY29udHJvbC52YWx1ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBwYXJlbnQgfSA9IGNvbnRyb2w7XG4gIGNvbnN0IHBhc3N3b3JkID0gcGFyZW50Py5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlO1xuICBjb25zdCBwYXNzd29yZENvbmZpcm0gPSBwYXJlbnQ/LmdldCgncGFzc3dvcmRDb25maXJtJyk/LnZhbHVlO1xuICBpZiAoIXBhc3N3b3JkIHx8ICFwYXNzd29yZENvbmZpcm0pIHJldHVybiBudWxsO1xuICBpZiAocGFzc3dvcmQgPT09IHBhc3N3b3JkQ29uZmlybSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXNzd29yZHNOb3RNYXRjaGluZzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1ZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnZhbGlkVHJ1ZTogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYm9WYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gJzAnKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGludmFsaWRDb21ibzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gemlwQ29kZVZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5Pzogc3RyaW5nXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlKSB7XG4gICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkWmlwQ29kZShjb250cm9sLnZhbHVlLCBjb3VudHJ5KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZFppcENvZGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5OiBzdHJpbmdcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gIGNvdW50cnkgPSBgJHtjb3VudHJ5fWAudG9VcHBlckNhc2UoKTtcbiAgaWYgKGNvdW50cnkgPT09ICdCUicpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzQ1BGQ05QSlZhbGlkKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkQ3BmQ25wajogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY291bnRyeSA9PT0gJ0NMJykge1xuICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFJVVChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZENwZkNucGo6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvdW50cnkgPT09ICdNWCcpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRSRkMoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRDcGZDbnBqOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluWWVhcnNWYWxpZGF0b3IoXG4gIHBhcmFtOiBudW1iZXIsXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxuKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlID0gbW9tZW50LmRlZmF1bHQoY29udHJvbC52YWx1ZSk7XG4gIGNvbnN0IGRpZiA9IG1vbWVudC5kZWZhdWx0KCkuZGlmZihkYXRlLCAneWVhcnMnKTtcblxuICBpZiAoZGlmIDwgcGFyYW0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW52YWxpZE1pblllYXJzOiB7XG4gICAgICAgIHllYXI6IHBhcmFtXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlRm9ybWF0ID0gJ01NLURELVlZWVknO1xuICBpZiAoXG4gICAgIW1vbWVudFxuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIG1vbWVudC5kZWZhdWx0KGNvbnRyb2wudmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgWydERC9NTS9ZWVlZJywgJ01NLURELVlZWVknLCAnWVlZWS1NTS1ERCddLFxuICAgICAgICB0cnVlXG4gICAgICApXG4gICAgICAuaXNWYWxpZCgpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkRGF0ZTogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUdyZWF0ZXJUaGFuWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGlmIChjb250cm9sICYmIGAke2NvbnRyb2w/LnZhbHVlfWAgPT09ICcwJykge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkVmFsdWVHcmVhdGVyVGhhblplcm86IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWRXaXRoVHJpbVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuXG4gIGlmIChjb250cm9sICYmICFgJHtjb250cm9sPy52YWx1ZX1gLnRyaW0oKSkge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGhhbmRsZWQgPSBgJHtjb250cm9sPy52YWx1ZX1gLnRyaW0oKS5yZXBsYWNlKC8wL2csICcnKTtcbiAgaWYgKGNvbnRyb2wgJiYgIWhhbmRsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlmZmVyZW50RnJvbVplcm86IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZShcbiAgdHlwZTogc3RyaW5nLFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgaGFuZGxlID0gTW9ua2V5RWN4VXRpbHMuaGFuZGxlT25seU51bWJlcnMoY29udHJvbC52YWx1ZSk7XG4gIGxldCB2YWxpZCA9IGZhbHNlO1xuICBpZiAodHlwZSA9PT0gJ0NQRicgfHwgdHlwZSA9PT0gJ0NOUEonKSB7XG4gICAgaWYgKCh0eXBlID09PSAnQ05QSicgJiYgYCR7aGFuZGxlfWAubGVuZ3RoICE9PSAxNCkgfHxcbiAgICAgICh0eXBlID09PSAnQ1BGJyAmJiBgJHtoYW5kbGV9YC5sZW5ndGggIT09IDExKSkge1xuICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWQgPSBNb25rZXlFY3hVdGlscy5pc0NQRkNOUEpWYWxpZChjb250cm9sLnZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JVVCcpIHtcbiAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzVmFsaWRSVVQoY29udHJvbC52YWx1ZSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JGQycpIHtcbiAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzVmFsaWRSRkMoY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBpZiAoIXZhbGlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgaW52YWxpZCR7TW9ua2V5RWN4VXRpbHMuY2FwaXRhbGl6ZSh0eXBlLnRvTG93ZXJDYXNlKCkpfWBdOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGdWxsTmFtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZT8udHJpbSgpO1xuICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBmdWxsTmFtZSA9IHZhbHVlLnNwbGl0KC9cXHMrLyk7XG4gIGNvbnN0IGhhc1Nob3J0UGFydCA9IGZ1bGxOYW1lLmZpbHRlcigocGFydDogYW55KSA9PiB7XG4gICAgcmV0dXJuIHBhcnQubGVuZ3RoID49IDI7XG4gIH0pLmxlbmd0aDtcblxuICBpZiAoaGFzU2hvcnRQYXJ0IDwgMikge1xuICAgIHJldHVybiB7IGZ1bGxOYW1lOiB0cnVlIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlPy50cmltKCk7XG4gIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAvXFxkLy50ZXN0KHZhbHVlKSA/IHsgY29udGFpbnNOdW1iZXI6IHRydWUgfSA6IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzIHtcbiAgc3RhdGljIGVtYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZW1haWxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVJhbmdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVJhbmdlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHVubG9ja1Nwb25zb3JSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdzcG9uc29yJyk7XG4gIH1cblxuICBzdGF0aWMgdW5sb2NrQnV5ZXJSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdidXllcicpO1xuICB9XG5cbiAgc3RhdGljIGRhdGVTdGFydEVuZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyB1cmwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB1cmxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRDb25maXJtKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHRydWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0cnVlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGNvbWJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gY29tYm9WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHppcENvZGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZUJ5Q291bnRyeShjb3VudHJ5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiB6aXBDb2RlVmFsaWRhdG9yKGNvbnRyb2wsIGNvdW50cnkpO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZG9jdW1lbnRCUihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50VmFsaWRhdG9yKGNvbnRyb2wsICdCUicpO1xuICB9XG5cbiAgc3RhdGljIGRvY3VtZW50Q0woY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvcihjb250cm9sLCAnQ0wnKTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudE1YKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZG9jdW1lbnRWYWxpZGF0b3IoY29udHJvbCwgJ01YJyk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgbWluWWVhcnMocGFyYW06IG51bWJlcik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiBtaW5ZZWFyc1ZhbGlkYXRvcihwYXJhbSwgY29udHJvbCk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBncmVhdGVyVGhhblplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZUdyZWF0ZXJUaGFuWmVybyhjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlcXVpcmVkV2l0aFRyaW1WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGlmZmVyZW50RnJvbVplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZSh0eXBlLCBjb250cm9sKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHZhbGlkYXRlRnVsbE5hbWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWxpZGF0ZUZ1bGxOYW1lKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGNvbnRhaW5zTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gY29udGFpbnNOdW1iZXIoY29udHJvbCk7XG4gIH1cbn1cbiJdfQ==
|