ngx-techlify-core 11.4.8 → 11.4.9
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 +24 -24
- package/bundles/ngx-techlify-core.umd.js +8085 -8047
- package/bundles/ngx-techlify-core.umd.js.map +1 -1
- package/bundles/ngx-techlify-core.umd.min.js +1 -1
- package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
- package/esm2015/lib/action-popup/action-popup.component.js +32 -32
- package/esm2015/lib/action-popup/action-popup.model.js +3 -3
- package/esm2015/lib/action-popup/action-popup.module.js +26 -26
- package/esm2015/lib/action-popup/index.js +3 -3
- package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +49 -49
- package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +25 -25
- package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +132 -132
- package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +29 -29
- package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +67 -67
- package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +25 -25
- package/esm2015/lib/audit-log/audit-log-routing.module.js +19 -19
- package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +60 -60
- package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +21 -21
- package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +57 -57
- package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +21 -21
- package/esm2015/lib/audit-log/audit-log.module.js +20 -20
- package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +35 -35
- package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +21 -21
- package/esm2015/lib/base-model/index.js +4 -4
- package/esm2015/lib/base-model/techlify-form-component.class.js +51 -51
- package/esm2015/lib/base-model/techlify-listing-component.class.js +41 -41
- package/esm2015/lib/base-model/techlify-service.class.js +64 -64
- package/esm2015/lib/core/alert.service.js +39 -39
- package/esm2015/lib/core/api-prefix.interceptor.js +28 -28
- package/esm2015/lib/core/authentication.guard.js +39 -39
- package/esm2015/lib/core/authentication.service.js +59 -59
- package/esm2015/lib/core/cache.interceptor.js +60 -60
- package/esm2015/lib/core/config.service.js +47 -47
- package/esm2015/lib/core/core.module.js +42 -42
- package/esm2015/lib/core/credentials.service.js +84 -84
- package/esm2015/lib/core/dataManager.service.js +120 -120
- package/esm2015/lib/core/error-handler.interceptor.js +53 -53
- package/esm2015/lib/core/error-handler.service.js +59 -59
- package/esm2015/lib/core/form-validator.service.js +23 -23
- package/esm2015/lib/core/header.interceptor.js +22 -22
- package/esm2015/lib/core/http-cache.service.js +110 -110
- package/esm2015/lib/core/http.service.js +82 -82
- package/esm2015/lib/core/index.js +21 -21
- package/esm2015/lib/core/logger.service.js +100 -100
- package/esm2015/lib/core/route-reusable-strategy.js +35 -35
- package/esm2015/lib/core/snack/snack.component.js +33 -33
- package/esm2015/lib/core/snack/snack.module.js +25 -25
- package/esm2015/lib/core/storage.service.js +36 -36
- package/esm2015/lib/core/techlify-config.model.js +28 -28
- package/esm2015/lib/core/token.interceptor.js +30 -30
- package/esm2015/lib/data-table/data-table.component.js +190 -190
- package/esm2015/lib/data-table/data-table.model.js +11 -11
- package/esm2015/lib/data-table/data-table.module.js +25 -25
- package/esm2015/lib/data-table/index.js +3 -3
- package/esm2015/lib/date-validator.js +10 -10
- package/esm2015/lib/document-viewer/document-viewer.component.js +58 -58
- package/esm2015/lib/document-viewer/document-viewer.module.js +25 -25
- package/esm2015/lib/document-viewer/index.js +3 -3
- package/esm2015/lib/document-viewer/viewer-config.model.js +3 -3
- package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +26 -26
- package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +72 -72
- package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +23 -23
- package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +102 -102
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +28 -28
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +28 -28
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +153 -153
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +27 -27
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +1 -1
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +15 -15
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +99 -99
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +27 -27
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +28 -28
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +155 -155
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +29 -29
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +50 -50
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +25 -25
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +15 -15
- package/esm2015/lib/email-subscription/email-subscription.module.js +15 -15
- package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +147 -138
- package/esm2015/lib/entity-files/entity-file.service.js +42 -42
- package/esm2015/lib/entity-files/entity-files-view-all.component.js +234 -208
- package/esm2015/lib/entity-files/entity-files-view-all.module.js +40 -34
- package/esm2015/lib/entity-files/index.js +3 -3
- package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +32 -32
- package/esm2015/lib/export-excel/export-excel.module.js +17 -17
- package/esm2015/lib/file-dropper/file-dropper.component.js +122 -122
- package/esm2015/lib/file-dropper/file-dropper.model.js +3 -3
- package/esm2015/lib/file-dropper/file-dropper.module.js +21 -21
- package/esm2015/lib/file-dropper/index.js +3 -3
- package/esm2015/lib/import-csv/data-import/data-import.component.js +18 -18
- package/esm2015/lib/import-csv/failed-items-list/failed-items-list.component.js +33 -33
- package/esm2015/lib/import-csv/field-mapping/field-mapping.component.js +148 -148
- package/esm2015/lib/import-csv/import-csv-config.js +2 -2
- package/esm2015/lib/import-csv/import-csv.component.js +196 -196
- package/esm2015/lib/import-csv/import-csv.module.js +46 -46
- package/esm2015/lib/import-csv/import-history-list/import-history-list.component.js +71 -71
- package/esm2015/lib/import-csv/import-success/import-success.component.js +19 -19
- package/esm2015/lib/loader/index.js +2 -2
- package/esm2015/lib/loader/loader.component.js +22 -22
- package/esm2015/lib/loader/loader.module.js +21 -21
- package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +20 -20
- package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +88 -88
- package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +27 -27
- package/esm2015/lib/material.module.js +60 -60
- package/esm2015/lib/note/comment-form/comment-form.component.js +73 -73
- package/esm2015/lib/note/index.js +4 -4
- package/esm2015/lib/note/note-form/note-form.component.js +81 -81
- package/esm2015/lib/note/note-list/note-list.component.js +151 -151
- package/esm2015/lib/note/note.module.js +36 -36
- package/esm2015/lib/note/note.service.js +31 -31
- package/esm2015/lib/read-more/read-more.component.js +43 -43
- package/esm2015/lib/read-more/read-more.module.js +21 -21
- package/esm2015/lib/searchable-selector/index.js +3 -3
- package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +81 -81
- package/esm2015/lib/searchable-selector/searchable-selector.component.js +307 -307
- package/esm2015/lib/searchable-selector/searchable-selector.module.js +28 -28
- package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +27 -27
- package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +78 -78
- package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +177 -177
- package/esm2015/lib/techlify-feature/techlify-feature.module.js +30 -30
- package/esm2015/lib/techlify-feature/techlify-feature.routing.js +12 -12
- package/esm2015/lib/techlify-feature/techlify-feature.service.js +28 -28
- package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js +15 -15
- package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +269 -269
- package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +25 -25
- package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +168 -168
- package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +29 -29
- package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +114 -114
- package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +28 -28
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +22 -22
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +143 -143
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +28 -28
- package/esm2015/lib/techlify-update/techlify-update-routing.module.js +22 -22
- package/esm2015/lib/techlify-update/techlify-update.module.js +30 -30
- package/esm2015/lib/techlify-update/techlify-update.service.js +43 -43
- package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +161 -161
- package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +82 -82
- package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +62 -62
- package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +29 -29
- package/esm2015/lib/techlify-update/update-view/update-view.component.js +36 -36
- package/esm2015/lib/techlify-update/update-view/update-view.module.js +24 -24
- package/esm2015/lib/timeline-filter/calculate-timeline.js +102 -102
- package/esm2015/lib/timeline-filter/index.js +4 -4
- package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +12 -12
- package/esm2015/lib/timeline-filter/timeline-filter.component.js +213 -213
- package/esm2015/lib/timeline-filter/timeline-filter.module.js +23 -23
- package/esm2015/lib/timeline-filter/timeline.model.js +18 -18
- package/esm2015/lib/utility/date-utils.service.js +48 -48
- package/esm2015/lib/utility/index.js +4 -4
- package/esm2015/lib/utility/num-items-selector.component.js +29 -29
- package/esm2015/lib/utility/number-selector.component.js +38 -38
- package/esm2015/lib/utility/utility.module.js +20 -20
- package/esm2015/ngx-techlify-core.js +60 -60
- package/esm2015/public-api.js +96 -96
- package/fesm2015/ngx-techlify-core.js +6941 -6903
- package/fesm2015/ngx-techlify-core.js.map +1 -1
- package/lib/action-popup/action-popup.component.d.ts +14 -14
- package/lib/action-popup/action-popup.model.d.ts +5 -5
- package/lib/action-popup/action-popup.module.d.ts +2 -2
- package/lib/action-popup/index.d.ts +2 -2
- package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +12 -12
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +32 -32
- package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +19 -19
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -2
- package/lib/audit-log/audit-log-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +17 -17
- package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +15 -15
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -2
- package/lib/audit-log/audit-log.module.d.ts +2 -2
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +11 -11
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -2
- package/lib/base-model/index.d.ts +3 -3
- package/lib/base-model/techlify-form-component.class.d.ts +43 -43
- package/lib/base-model/techlify-listing-component.class.d.ts +47 -47
- package/lib/base-model/techlify-service.class.d.ts +52 -52
- package/lib/core/alert.service.d.ts +12 -12
- package/lib/core/api-prefix.interceptor.d.ts +11 -11
- package/lib/core/authentication.guard.d.ts +10 -10
- package/lib/core/authentication.service.d.ts +23 -23
- package/lib/core/cache.interceptor.d.ts +21 -21
- package/lib/core/config.service.d.ts +19 -19
- package/lib/core/core.module.d.ts +3 -3
- package/lib/core/credentials.service.d.ts +36 -36
- package/lib/core/dataManager.service.d.ts +70 -70
- package/lib/core/error-handler.interceptor.d.ts +14 -14
- package/lib/core/error-handler.service.d.ts +14 -14
- package/lib/core/form-validator.service.d.ts +8 -8
- package/lib/core/header.interceptor.d.ts +8 -8
- package/lib/core/http-cache.service.d.ts +54 -54
- package/lib/core/http.service.d.ts +56 -56
- package/lib/core/index.d.ts +20 -20
- package/lib/core/logger.service.d.ts +85 -85
- package/lib/core/route-reusable-strategy.d.ts +13 -13
- package/lib/core/snack/snack.component.d.ts +8 -8
- package/lib/core/snack/snack.module.d.ts +2 -2
- package/lib/core/storage.service.d.ts +15 -15
- package/lib/core/techlify-config.model.d.ts +18 -18
- package/lib/core/token.interceptor.d.ts +11 -11
- package/lib/data-table/data-table.component.d.ts +60 -60
- package/lib/data-table/data-table.model.d.ts +46 -46
- package/lib/data-table/data-table.module.d.ts +2 -2
- package/lib/data-table/index.d.ts +2 -2
- package/lib/date-validator.d.ts +1 -1
- package/lib/document-viewer/document-viewer.component.d.ts +16 -16
- package/lib/document-viewer/document-viewer.module.d.ts +2 -2
- package/lib/document-viewer/index.d.ts +2 -2
- package/lib/document-viewer/viewer-config.model.d.ts +5 -5
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +7 -7
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +17 -17
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-for-user/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +32 -32
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +9 -9
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +30 -30
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +32 -32
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +9 -9
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +32 -32
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +13 -13
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription.module.d.ts +2 -2
- package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +38 -34
- package/lib/entity-files/entity-file.service.d.ts +10 -10
- package/lib/entity-files/entity-files-view-all.component.d.ts +51 -45
- package/lib/entity-files/entity-files-view-all.module.d.ts +2 -2
- package/lib/entity-files/index.d.ts +2 -2
- package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +8 -8
- package/lib/export-excel/export-excel.module.d.ts +2 -2
- package/lib/file-dropper/file-dropper.component.d.ts +33 -33
- package/lib/file-dropper/file-dropper.model.d.ts +10 -10
- package/lib/file-dropper/file-dropper.module.d.ts +2 -2
- package/lib/file-dropper/index.d.ts +2 -2
- package/lib/import-csv/data-import/data-import.component.d.ts +6 -6
- package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +12 -12
- package/lib/import-csv/field-mapping/field-mapping.component.d.ts +34 -34
- package/lib/import-csv/import-csv-config.d.ts +17 -17
- package/lib/import-csv/import-csv.component.d.ts +33 -33
- package/lib/import-csv/import-csv.module.d.ts +2 -2
- package/lib/import-csv/import-history-list/import-history-list.component.d.ts +21 -21
- package/lib/import-csv/import-success/import-success.component.d.ts +8 -8
- package/lib/loader/index.d.ts +1 -1
- package/lib/loader/loader.component.d.ts +8 -8
- package/lib/loader/loader.module.d.ts +2 -2
- package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +2 -2
- package/lib/login-history-for-user/login-history-for-user.component.d.ts +23 -23
- package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -2
- package/lib/material.module.d.ts +2 -2
- package/lib/note/comment-form/comment-form.component.d.ts +22 -22
- package/lib/note/index.d.ts +3 -3
- package/lib/note/note-form/note-form.component.d.ts +27 -27
- package/lib/note/note-list/note-list.component.d.ts +28 -28
- package/lib/note/note.module.d.ts +2 -2
- package/lib/note/note.service.d.ts +9 -9
- package/lib/read-more/read-more.component.d.ts +12 -12
- package/lib/read-more/read-more.module.d.ts +2 -2
- package/lib/searchable-selector/index.d.ts +2 -2
- package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +23 -23
- package/lib/searchable-selector/searchable-selector.component.d.ts +81 -81
- package/lib/searchable-selector/searchable-selector.module.d.ts +2 -2
- package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +9 -9
- package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +17 -17
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts +37 -37
- package/lib/techlify-feature/techlify-feature.module.d.ts +2 -2
- package/lib/techlify-feature/techlify-feature.routing.d.ts +2 -2
- package/lib/techlify-feature/techlify-feature.service.d.ts +8 -8
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +12 -12
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +76 -76
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +2 -2
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +58 -58
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +30 -30
- package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +31 -31
- package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-routing.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update.service.d.ts +13 -13
- package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +31 -31
- package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +25 -25
- package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +16 -16
- package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +2 -2
- package/lib/techlify-update/update-view/update-view.component.d.ts +14 -14
- package/lib/techlify-update/update-view/update-view.module.d.ts +2 -2
- package/lib/timeline-filter/calculate-timeline.d.ts +6 -6
- package/lib/timeline-filter/index.d.ts +3 -3
- package/lib/timeline-filter/timeline-filter-routing.module.d.ts +2 -2
- package/lib/timeline-filter/timeline-filter.component.d.ts +61 -61
- package/lib/timeline-filter/timeline-filter.module.d.ts +2 -2
- package/lib/timeline-filter/timeline.model.d.ts +17 -17
- package/lib/utility/date-utils.service.d.ts +21 -21
- package/lib/utility/index.d.ts +3 -3
- package/lib/utility/num-items-selector.component.d.ts +16 -16
- package/lib/utility/number-selector.component.d.ts +20 -20
- package/lib/utility/utility.module.d.ts +2 -2
- package/ngx-techlify-core.d.ts +59 -59
- package/ngx-techlify-core.metadata.json +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +92 -92
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { catchError } from 'rxjs/operators';
|
|
4
|
-
import { Logger } from './logger.service';
|
|
5
|
-
import { ConfigService } from './config.service';
|
|
6
|
-
import { ErrorHandlerService } from './error-handler.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./config.service";
|
|
9
|
-
import * as i2 from "./error-handler.service";
|
|
10
|
-
const log = new Logger('ErrorHandlerInterceptor');
|
|
11
|
-
/**
|
|
12
|
-
* Adds a default error handler to all requests.
|
|
13
|
-
*/
|
|
14
|
-
export class ErrorHandlerInterceptor {
|
|
15
|
-
constructor(configService, errorHandler) {
|
|
16
|
-
this.configService = configService;
|
|
17
|
-
this.errorHandler = errorHandler;
|
|
18
|
-
}
|
|
19
|
-
intercept(request, next) {
|
|
20
|
-
return next.handle(request).pipe(catchError(error => this.handleError(error)));
|
|
21
|
-
}
|
|
22
|
-
// Customize the default error handler here if needed
|
|
23
|
-
handleError(error) {
|
|
24
|
-
var _a, _b;
|
|
25
|
-
let errorMessage = '';
|
|
26
|
-
if (error.error instanceof ErrorEvent) {
|
|
27
|
-
// client-side error
|
|
28
|
-
errorMessage = `Client Error: ${(_a = this.configService) === null || _a === void 0 ? void 0 : _a.getProjectKey()}: ${error.error.message}`;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
// server-side error
|
|
32
|
-
errorMessage = `Server Error: ${(_b = this.configService) === null || _b === void 0 ? void 0 : _b.getProjectKey()}`;
|
|
33
|
-
try {
|
|
34
|
-
this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
console.log("Unable to handle server error", e);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return throwError(error);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
ErrorHandlerInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerInterceptor_Factory() { return new ErrorHandlerInterceptor(i0.ɵɵinject(i1.ConfigService), i0.ɵɵinject(i2.ErrorHandlerService)); }, token: ErrorHandlerInterceptor, providedIn: "root" });
|
|
44
|
-
ErrorHandlerInterceptor.decorators = [
|
|
45
|
-
{ type: Injectable, args: [{
|
|
46
|
-
providedIn: 'root'
|
|
47
|
-
},] }
|
|
48
|
-
];
|
|
49
|
-
ErrorHandlerInterceptor.ctorParameters = () => [
|
|
50
|
-
{ type: ConfigService },
|
|
51
|
-
{ type: ErrorHandlerService }
|
|
52
|
-
];
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { throwError } from 'rxjs';
|
|
3
|
+
import { catchError } from 'rxjs/operators';
|
|
4
|
+
import { Logger } from './logger.service';
|
|
5
|
+
import { ConfigService } from './config.service';
|
|
6
|
+
import { ErrorHandlerService } from './error-handler.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./config.service";
|
|
9
|
+
import * as i2 from "./error-handler.service";
|
|
10
|
+
const log = new Logger('ErrorHandlerInterceptor');
|
|
11
|
+
/**
|
|
12
|
+
* Adds a default error handler to all requests.
|
|
13
|
+
*/
|
|
14
|
+
export class ErrorHandlerInterceptor {
|
|
15
|
+
constructor(configService, errorHandler) {
|
|
16
|
+
this.configService = configService;
|
|
17
|
+
this.errorHandler = errorHandler;
|
|
18
|
+
}
|
|
19
|
+
intercept(request, next) {
|
|
20
|
+
return next.handle(request).pipe(catchError(error => this.handleError(error)));
|
|
21
|
+
}
|
|
22
|
+
// Customize the default error handler here if needed
|
|
23
|
+
handleError(error) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
let errorMessage = '';
|
|
26
|
+
if (error.error instanceof ErrorEvent) {
|
|
27
|
+
// client-side error
|
|
28
|
+
errorMessage = `Client Error: ${(_a = this.configService) === null || _a === void 0 ? void 0 : _a.getProjectKey()}: ${error.error.message}`;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// server-side error
|
|
32
|
+
errorMessage = `Server Error: ${(_b = this.configService) === null || _b === void 0 ? void 0 : _b.getProjectKey()}`;
|
|
33
|
+
try {
|
|
34
|
+
this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.log("Unable to handle server error", e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return throwError(error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ErrorHandlerInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerInterceptor_Factory() { return new ErrorHandlerInterceptor(i0.ɵɵinject(i1.ConfigService), i0.ɵɵinject(i2.ErrorHandlerService)); }, token: ErrorHandlerInterceptor, providedIn: "root" });
|
|
44
|
+
ErrorHandlerInterceptor.decorators = [
|
|
45
|
+
{ type: Injectable, args: [{
|
|
46
|
+
providedIn: 'root'
|
|
47
|
+
},] }
|
|
48
|
+
];
|
|
49
|
+
ErrorHandlerInterceptor.ctorParameters = () => [
|
|
50
|
+
{ type: ConfigService },
|
|
51
|
+
{ type: ErrorHandlerService }
|
|
52
|
+
];
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUU5RCxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRWxEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixhQUE0QixFQUFVLFlBQWlDO1FBQXZFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXFCO0lBQUksQ0FBQztJQUVoRyxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsV0FBVyxDQUFDLEtBQXdCOztRQUMxQyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxLQUFLLENBQUMsS0FBSyxZQUFZLFVBQVUsRUFBRTtZQUNyQyxvQkFBb0I7WUFDcEIsWUFBWSxHQUFHLGlCQUFpQixNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLGFBQWEsRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0Y7YUFBTTtZQUNMLG9CQUFvQjtZQUNwQixZQUFZLEdBQUcsaUJBQWlCLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN0RSxJQUFJO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSw0REFBNEQsQ0FBQyxDQUFDO2FBQ3BHO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNqRDtTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7OztZQTNCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVZRLGFBQWE7WUFDYixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5cbmNvbnN0IGxvZyA9IG5ldyBMb2dnZXIoJ0Vycm9ySGFuZGxlckludGVyY2VwdG9yJyk7XG5cbi8qKlxuICogQWRkcyBhIGRlZmF1bHQgZXJyb3IgaGFuZGxlciB0byBhbGwgcmVxdWVzdHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlckludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlKSB7IH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkpO1xuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgaGVyZSBpZiBuZWVkZWRcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIC8vIGNsaWVudC1zaWRlIGVycm9yXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQ2xpZW50IEVycm9yOiAke3RoaXMuY29uZmlnU2VydmljZT8uZ2V0UHJvamVjdEtleSgpfTogJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlcnZlci1zaWRlIGVycm9yXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgU2VydmVyIEVycm9yOiAke3RoaXMuY29uZmlnU2VydmljZT8uZ2V0UHJvamVjdEtleSgpfWA7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvciwgJ1VuZXhwZWN0ZWQgU2VydmVyIEVycm9yLCB0cnkgbGF0ZXIgb3IgY29udGFjdCBzZXJ2aWNlIHRlYW0nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJVbmFibGUgdG8gaGFuZGxlIHNlcnZlciBlcnJvclwiLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { TechlifyConfig } from './techlify-config.model';
|
|
2
|
-
import { Injectable } from "@angular/core";
|
|
3
|
-
import { AlertService } from "./alert.service";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./alert.service";
|
|
6
|
-
import * as i2 from "./techlify-config.model";
|
|
7
|
-
/**
|
|
8
|
-
* Service used to handle errors from the request
|
|
9
|
-
*
|
|
10
|
-
* @author Joshua Kissoon
|
|
11
|
-
* @since 20171202
|
|
12
|
-
*/
|
|
13
|
-
export class ErrorHandlerService {
|
|
14
|
-
constructor(alerter, config) {
|
|
15
|
-
this.alerter = alerter;
|
|
16
|
-
this.config = config;
|
|
17
|
-
}
|
|
18
|
-
handleError(errorResponse, msg = '') {
|
|
19
|
-
var _a, _b, _c, _d;
|
|
20
|
-
// 1 - Create empty array to store errors
|
|
21
|
-
const errors = [];
|
|
22
|
-
// 2 - check if the error object is present in the response
|
|
23
|
-
if (errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.error) {
|
|
24
|
-
// 3 - Check for Laravel form validation error messages object
|
|
25
|
-
if ((_a = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.error) === null || _a === void 0 ? void 0 : _a.errors) {
|
|
26
|
-
// 4 - For each error property (which is a form field)
|
|
27
|
-
for (const property in errorResponse.error.errors) {
|
|
28
|
-
if ((_b = errorResponse.error.errors) === null || _b === void 0 ? void 0 : _b.hasOwnProperty(property)) {
|
|
29
|
-
// 5 - Extract it's array of errors
|
|
30
|
-
const propertyErrors = (_c = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.error) === null || _c === void 0 ? void 0 : _c.errors[property];
|
|
31
|
-
// 6 - Push all errors in the array to the errors array
|
|
32
|
-
propertyErrors.forEach(error => errors.push(error));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (errors.length === 0) {
|
|
37
|
-
// 7 - Push the main error message to the array of errors if there is no validation error
|
|
38
|
-
errors.push(errorResponse.error.message ? errorResponse.error.message : (_d = errorResponse.error) === null || _d === void 0 ? void 0 : _d.error);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
var errMessage = errors.length ? errors[0] : msg;
|
|
42
|
-
this.alerter.addAlert("Error: " + errMessage, "warning");
|
|
43
|
-
if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {
|
|
44
|
-
sessionStorage.clear();
|
|
45
|
-
localStorage.clear();
|
|
46
|
-
location.reload();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
ErrorHandlerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerService_Factory() { return new ErrorHandlerService(i0.ɵɵinject(i1.AlertService), i0.ɵɵinject(i2.TechlifyConfig)); }, token: ErrorHandlerService, providedIn: "root" });
|
|
51
|
-
ErrorHandlerService.decorators = [
|
|
52
|
-
{ type: Injectable, args: [{
|
|
53
|
-
providedIn: 'root'
|
|
54
|
-
},] }
|
|
55
|
-
];
|
|
56
|
-
ErrorHandlerService.ctorParameters = () => [
|
|
57
|
-
{ type: AlertService },
|
|
58
|
-
{ type: TechlifyConfig }
|
|
59
|
-
];
|
|
1
|
+
import { TechlifyConfig } from './techlify-config.model';
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { AlertService } from "./alert.service";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./alert.service";
|
|
6
|
+
import * as i2 from "./techlify-config.model";
|
|
7
|
+
/**
|
|
8
|
+
* Service used to handle errors from the request
|
|
9
|
+
*
|
|
10
|
+
* @author Joshua Kissoon
|
|
11
|
+
* @since 20171202
|
|
12
|
+
*/
|
|
13
|
+
export class ErrorHandlerService {
|
|
14
|
+
constructor(alerter, config) {
|
|
15
|
+
this.alerter = alerter;
|
|
16
|
+
this.config = config;
|
|
17
|
+
}
|
|
18
|
+
handleError(errorResponse, msg = '') {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
// 1 - Create empty array to store errors
|
|
21
|
+
const errors = [];
|
|
22
|
+
// 2 - check if the error object is present in the response
|
|
23
|
+
if (errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.error) {
|
|
24
|
+
// 3 - Check for Laravel form validation error messages object
|
|
25
|
+
if ((_a = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.error) === null || _a === void 0 ? void 0 : _a.errors) {
|
|
26
|
+
// 4 - For each error property (which is a form field)
|
|
27
|
+
for (const property in errorResponse.error.errors) {
|
|
28
|
+
if ((_b = errorResponse.error.errors) === null || _b === void 0 ? void 0 : _b.hasOwnProperty(property)) {
|
|
29
|
+
// 5 - Extract it's array of errors
|
|
30
|
+
const propertyErrors = (_c = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.error) === null || _c === void 0 ? void 0 : _c.errors[property];
|
|
31
|
+
// 6 - Push all errors in the array to the errors array
|
|
32
|
+
propertyErrors.forEach(error => errors.push(error));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (errors.length === 0) {
|
|
37
|
+
// 7 - Push the main error message to the array of errors if there is no validation error
|
|
38
|
+
errors.push(errorResponse.error.message ? errorResponse.error.message : (_d = errorResponse.error) === null || _d === void 0 ? void 0 : _d.error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
var errMessage = errors.length ? errors[0] : msg;
|
|
42
|
+
this.alerter.addAlert("Error: " + errMessage, "warning");
|
|
43
|
+
if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {
|
|
44
|
+
sessionStorage.clear();
|
|
45
|
+
localStorage.clear();
|
|
46
|
+
location.reload();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
ErrorHandlerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerService_Factory() { return new ErrorHandlerService(i0.ɵɵinject(i1.AlertService), i0.ɵɵinject(i2.TechlifyConfig)); }, token: ErrorHandlerService, providedIn: "root" });
|
|
51
|
+
ErrorHandlerService.decorators = [
|
|
52
|
+
{ type: Injectable, args: [{
|
|
53
|
+
providedIn: 'root'
|
|
54
|
+
},] }
|
|
55
|
+
];
|
|
56
|
+
ErrorHandlerService.ctorParameters = () => [
|
|
57
|
+
{ type: AlertService },
|
|
58
|
+
{ type: TechlifyConfig }
|
|
59
|
+
];
|
|
60
60
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFHL0M7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQW9CLE9BQXFCLEVBQy9CLE1BQXNCO1FBRFosWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUVoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLGFBQWtCLEVBQUUsTUFBYyxFQUFFOztRQUM5Qyx5Q0FBeUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLDJEQUEyRDtRQUMzRCxJQUFJLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxLQUFLLEVBQUU7WUFFeEIsOERBQThEO1lBQzlELFVBQUksYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEtBQUssMENBQUUsTUFBTSxFQUFFO2dCQUVoQyxzREFBc0Q7Z0JBQ3RELEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBRWpELFVBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLDBDQUFFLGNBQWMsQ0FBQyxRQUFRLEdBQUc7d0JBRXhELG1DQUFtQzt3QkFDbkMsTUFBTSxjQUFjLFNBQWtCLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxLQUFLLDBDQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFFN0UsdURBQXVEO3dCQUN2RCxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUNyRDtpQkFFRjthQUNGO1lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdkIseUZBQXlGO2dCQUN6RixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQUMsYUFBYSxDQUFDLEtBQUssMENBQUUsS0FBSyxDQUFDLENBQUM7YUFDckc7U0FDRjtRQUNELElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekQsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFO1lBQ3pFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7OztZQWhERixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFlBQVk7WUFGWixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVjaGxpZnlDb25maWcgfSBmcm9tICcuL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tIFwiLi9hbGVydC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdXNlZCB0byBoYW5kbGUgZXJyb3JzIGZyb20gdGhlIHJlcXVlc3RcclxuICpcclxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxyXG4gKiBAc2luY2UgMjAxNzEyMDJcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFsZXJ0ZXI6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnOiBUZWNobGlmeUNvbmZpZyxcclxuICApIHtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm9yUmVzcG9uc2U6IGFueSwgbXNnOiBzdHJpbmcgPSAnJykge1xyXG4gICAgLy8gMSAtIENyZWF0ZSBlbXB0eSBhcnJheSB0byBzdG9yZSBlcnJvcnNcclxuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xyXG5cclxuICAgIC8vIDIgLSBjaGVjayBpZiB0aGUgZXJyb3Igb2JqZWN0IGlzIHByZXNlbnQgaW4gdGhlIHJlc3BvbnNlXHJcbiAgICBpZiAoZXJyb3JSZXNwb25zZT8uZXJyb3IpIHtcclxuXHJcbiAgICAgIC8vIDMgLSBDaGVjayBmb3IgTGFyYXZlbCBmb3JtIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgb2JqZWN0XHJcbiAgICAgIGlmIChlcnJvclJlc3BvbnNlPy5lcnJvcj8uZXJyb3JzKSB7XHJcblxyXG4gICAgICAgIC8vIDQgLSBGb3IgZWFjaCBlcnJvciBwcm9wZXJ0eSAod2hpY2ggaXMgYSBmb3JtIGZpZWxkKVxyXG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZXJyb3JSZXNwb25zZS5lcnJvci5lcnJvcnMpIHtcclxuXHJcbiAgICAgICAgICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvci5lcnJvcnM/Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xyXG5cclxuICAgICAgICAgICAgLy8gNSAtIEV4dHJhY3QgaXQncyBhcnJheSBvZiBlcnJvcnNcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlFcnJvcnM6IEFycmF5PHN0cmluZz4gPSBlcnJvclJlc3BvbnNlPy5lcnJvcj8uZXJyb3JzW3Byb3BlcnR5XTtcclxuXHJcbiAgICAgICAgICAgIC8vIDYgLSBQdXNoIGFsbCBlcnJvcnMgaW4gdGhlIGFycmF5IHRvIHRoZSBlcnJvcnMgYXJyYXlcclxuICAgICAgICAgICAgcHJvcGVydHlFcnJvcnMuZm9yRWFjaChlcnJvciA9PiBlcnJvcnMucHVzaChlcnJvcikpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgLy8gNyAtIFB1c2ggdGhlIG1haW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgYXJyYXkgb2YgZXJyb3JzIGlmIHRoZXJlIGlzIG5vIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICBlcnJvcnMucHVzaChlcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgPyBlcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgOiBlcnJvclJlc3BvbnNlLmVycm9yPy5lcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBlcnJNZXNzYWdlID0gZXJyb3JzLmxlbmd0aCA/IGVycm9yc1swXSA6IG1zZztcclxuICAgIHRoaXMuYWxlcnRlci5hZGRBbGVydChcIkVycm9yOiBcIiArIGVyck1lc3NhZ2UsIFwid2FybmluZ1wiKTtcclxuXHJcbiAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT0gNDAzICYmIHRoaXMuY29uZmlnLmlzTG9nb3V0V2hpbGVBcGlHZXRzRmFpbGVkKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class FormValidatorService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
/**Method to evaluate form fields*/
|
|
6
|
-
isFieldValid(field, formGroup, firstAttempt) {
|
|
7
|
-
return (!formGroup.get(field).valid && formGroup.get(field).touched) ||
|
|
8
|
-
(!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);
|
|
9
|
-
}
|
|
10
|
-
/**Method to find error in form fields*/
|
|
11
|
-
getErrorMessage(field, formGroup, errorMessages, errorField) {
|
|
12
|
-
const error = Object.keys(formGroup.get(field).errors);
|
|
13
|
-
return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
FormValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormValidatorService_Factory() { return new FormValidatorService(); }, token: FormValidatorService, providedIn: "root" });
|
|
17
|
-
FormValidatorService.decorators = [
|
|
18
|
-
{ type: Injectable, args: [{
|
|
19
|
-
providedIn: 'root'
|
|
20
|
-
},] }
|
|
21
|
-
];
|
|
22
|
-
FormValidatorService.ctorParameters = () => [];
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FormValidatorService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
/**Method to evaluate form fields*/
|
|
6
|
+
isFieldValid(field, formGroup, firstAttempt) {
|
|
7
|
+
return (!formGroup.get(field).valid && formGroup.get(field).touched) ||
|
|
8
|
+
(!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);
|
|
9
|
+
}
|
|
10
|
+
/**Method to find error in form fields*/
|
|
11
|
+
getErrorMessage(field, formGroup, errorMessages, errorField) {
|
|
12
|
+
const error = Object.keys(formGroup.get(field).errors);
|
|
13
|
+
return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
FormValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormValidatorService_Factory() { return new FormValidatorService(); }, token: FormValidatorService, providedIn: "root" });
|
|
17
|
+
FormValidatorService.decorators = [
|
|
18
|
+
{ type: Injectable, args: [{
|
|
19
|
+
providedIn: 'root'
|
|
20
|
+
},] }
|
|
21
|
+
];
|
|
22
|
+
FormValidatorService.ctorParameters = () => [];
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9mb3JtLXZhbGlkYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsZ0JBQWdCLENBQUM7SUFFakIsbUNBQW1DO0lBQ25DLFlBQVksQ0FBQyxLQUFhLEVBQUUsU0FBMEIsRUFBRSxZQUFzQjtRQUM1RSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxlQUFlLENBQUMsS0FBYSxFQUFFLFNBQTBCLEVBQUUsYUFBa0IsRUFBRSxVQUFtQjtRQUNoRyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0SSxDQUFDOzs7O1lBakJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVZhbGlkYXRvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cbiAgaXNGaWVsZFZhbGlkKGZpZWxkOiBzdHJpbmcsIGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgYW55LCBmaXJzdEF0dGVtcHQ/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuICghZm9ybUdyb3VwLmdldChmaWVsZCkudmFsaWQgJiYgZm9ybUdyb3VwLmdldChmaWVsZCkudG91Y2hlZCkgfHxcbiAgICAgICghZm9ybUdyb3VwLmdldChmaWVsZCkudmFsaWQgJiYgZm9ybUdyb3VwLmdldChmaWVsZCkudW50b3VjaGVkICYmIGZpcnN0QXR0ZW1wdCk7XG4gIH1cblxuICAvKipNZXRob2QgdG8gZmluZCBlcnJvciBpbiBmb3JtIGZpZWxkcyovXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IGFueSwgZXJyb3JNZXNzYWdlczogYW55LCBlcnJvckZpZWxkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgZXJyb3IgPSBPYmplY3Qua2V5cyhmb3JtR3JvdXAuZ2V0KGZpZWxkKS5lcnJvcnMpO1xuICAgIHJldHVybiAoZXJyb3IubGVuZ3RoID4gMCkgPyAoZXJyb3JNZXNzYWdlc1tlcnJvckZpZWxkIHx8IGZpZWxkXVtlcnJvclswXV0gPyBlcnJvck1lc3NhZ2VzW2Vycm9yRmllbGQgfHwgZmllbGRdW2Vycm9yWzBdXSA6ICcnKSA6ICcnO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.
|
|
5
|
-
*/
|
|
6
|
-
export class HeaderInterceptor {
|
|
7
|
-
intercept(request, next) {
|
|
8
|
-
request = request.clone({
|
|
9
|
-
setHeaders: {
|
|
10
|
-
'Content-Type': request.headers.get('Content-Type') || 'application/json',
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
return next.handle(request);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
HeaderInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function HeaderInterceptor_Factory() { return new HeaderInterceptor(); }, token: HeaderInterceptor, providedIn: "root" });
|
|
17
|
-
HeaderInterceptor.decorators = [
|
|
18
|
-
{ type: Injectable, args: [{
|
|
19
|
-
providedIn: 'root'
|
|
20
|
-
},] }
|
|
21
|
-
];
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.
|
|
5
|
+
*/
|
|
6
|
+
export class HeaderInterceptor {
|
|
7
|
+
intercept(request, next) {
|
|
8
|
+
request = request.clone({
|
|
9
|
+
setHeaders: {
|
|
10
|
+
'Content-Type': request.headers.get('Content-Type') || 'application/json',
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
return next.handle(request);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
HeaderInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function HeaderInterceptor_Factory() { return new HeaderInterceptor(); }, token: HeaderInterceptor, providedIn: "root" });
|
|
17
|
+
HeaderInterceptor.decorators = [
|
|
18
|
+
{ type: Injectable, args: [{
|
|
19
|
+
providedIn: 'root'
|
|
20
|
+
},] }
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2hlYWRlci5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsVUFBVSxFQUFFO2dCQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxrQkFBa0I7YUFDMUU7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7OztZQVpGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cblxuLyoqXG4gKiBQcmVmaXhlcyBhbGwgcmVxdWVzdHMgbm90IHN0YXJ0aW5nIHdpdGggYGh0dHBbc11gIHdpdGggYGVudmlyb25tZW50LnNlcnZlclVybGAuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgfHwgJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcbiAgfVxufVxuIl19
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ConfigService } from './config.service';
|
|
3
|
-
import { Logger } from './logger.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./config.service";
|
|
6
|
-
const log = new Logger('HttpCacheService');
|
|
7
|
-
/**
|
|
8
|
-
* Provides a cache facility for HTTP requests with configurable persistence policy.
|
|
9
|
-
*/
|
|
10
|
-
export class HttpCacheService {
|
|
11
|
-
constructor(configService) {
|
|
12
|
-
this.configService = configService;
|
|
13
|
-
this.cachedData = {};
|
|
14
|
-
this.storage = this.configService.getStorage();
|
|
15
|
-
this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';
|
|
16
|
-
this.loadCacheData();
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Sets the cache data for the specified request.
|
|
20
|
-
* @param {!string} url The request URL.
|
|
21
|
-
* @param {ResponseOptions} data The received data.
|
|
22
|
-
* @param {Date=} lastUpdated The cache last update, current date is used if not specified.
|
|
23
|
-
*/
|
|
24
|
-
setCacheData(url, data, lastUpdated) {
|
|
25
|
-
this.cachedData[url] = {
|
|
26
|
-
lastUpdated: lastUpdated || new Date(),
|
|
27
|
-
data: data
|
|
28
|
-
};
|
|
29
|
-
log.debug(`Cache set for key: "${url}"`);
|
|
30
|
-
this.saveCacheData();
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Gets the cached data for the specified request.
|
|
34
|
-
* @param {!string} url The request URL.
|
|
35
|
-
* @return {?ResponseOptions} The cached data or null if no cached data exists for this request.
|
|
36
|
-
*/
|
|
37
|
-
getCacheData(url) {
|
|
38
|
-
const cacheEntry = this.cachedData[url];
|
|
39
|
-
if (cacheEntry) {
|
|
40
|
-
log.debug(`Cache hit for key: "${url}"`);
|
|
41
|
-
return cacheEntry.data;
|
|
42
|
-
}
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Gets the cached entry for the specified request.
|
|
47
|
-
* @param {!string} url The request URL.
|
|
48
|
-
* @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.
|
|
49
|
-
*/
|
|
50
|
-
getHttpCacheEntry(url) {
|
|
51
|
-
return this.cachedData[url] || null;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Clears the cached entry (if exists) for the specified request.
|
|
55
|
-
* @param {!string} url The request URL.
|
|
56
|
-
*/
|
|
57
|
-
clearCache(url) {
|
|
58
|
-
delete this.cachedData[url];
|
|
59
|
-
log.debug(`Cache cleared for key: "${url}"`);
|
|
60
|
-
this.saveCacheData();
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Cleans cache entries older than the specified date.
|
|
64
|
-
* @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.
|
|
65
|
-
*/
|
|
66
|
-
cleanCache(expirationDate) {
|
|
67
|
-
if (expirationDate) {
|
|
68
|
-
Object(this.cachedData).keys.forEach((key) => {
|
|
69
|
-
var _a;
|
|
70
|
-
if (expirationDate >= ((_a = this.cachedData[key]) === null || _a === void 0 ? void 0 : _a.lastUpdated)) {
|
|
71
|
-
delete this.cachedData[key];
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
this.cachedData = {};
|
|
77
|
-
}
|
|
78
|
-
this.saveCacheData();
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Sets the cache persistence policy.
|
|
82
|
-
* Note that changing the cache persistence will also clear the cache from its previous storage.
|
|
83
|
-
* @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session
|
|
84
|
-
* storage, or if no value is provided it will be only in-memory (default).
|
|
85
|
-
*/
|
|
86
|
-
setPersistence(persistence) {
|
|
87
|
-
this.cleanCache();
|
|
88
|
-
this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;
|
|
89
|
-
this.loadCacheData();
|
|
90
|
-
}
|
|
91
|
-
saveCacheData() {
|
|
92
|
-
if (this.storage) {
|
|
93
|
-
this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
loadCacheData() {
|
|
97
|
-
const data = this.storage ? this.storage[this.cachePersistenceKey] : null;
|
|
98
|
-
this.cachedData = data ? JSON.parse(data) : {};
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
HttpCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpCacheService_Factory() { return new HttpCacheService(i0.ɵɵinject(i1.ConfigService)); }, token: HttpCacheService, providedIn: "root" });
|
|
102
|
-
HttpCacheService.decorators = [
|
|
103
|
-
{ type: Injectable, args: [{
|
|
104
|
-
providedIn: 'root'
|
|
105
|
-
},] }
|
|
106
|
-
];
|
|
107
|
-
HttpCacheService.ctorParameters = () => [
|
|
108
|
-
{ type: ConfigService }
|
|
109
|
-
];
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ConfigService } from './config.service';
|
|
3
|
+
import { Logger } from './logger.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./config.service";
|
|
6
|
+
const log = new Logger('HttpCacheService');
|
|
7
|
+
/**
|
|
8
|
+
* Provides a cache facility for HTTP requests with configurable persistence policy.
|
|
9
|
+
*/
|
|
10
|
+
export class HttpCacheService {
|
|
11
|
+
constructor(configService) {
|
|
12
|
+
this.configService = configService;
|
|
13
|
+
this.cachedData = {};
|
|
14
|
+
this.storage = this.configService.getStorage();
|
|
15
|
+
this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';
|
|
16
|
+
this.loadCacheData();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sets the cache data for the specified request.
|
|
20
|
+
* @param {!string} url The request URL.
|
|
21
|
+
* @param {ResponseOptions} data The received data.
|
|
22
|
+
* @param {Date=} lastUpdated The cache last update, current date is used if not specified.
|
|
23
|
+
*/
|
|
24
|
+
setCacheData(url, data, lastUpdated) {
|
|
25
|
+
this.cachedData[url] = {
|
|
26
|
+
lastUpdated: lastUpdated || new Date(),
|
|
27
|
+
data: data
|
|
28
|
+
};
|
|
29
|
+
log.debug(`Cache set for key: "${url}"`);
|
|
30
|
+
this.saveCacheData();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Gets the cached data for the specified request.
|
|
34
|
+
* @param {!string} url The request URL.
|
|
35
|
+
* @return {?ResponseOptions} The cached data or null if no cached data exists for this request.
|
|
36
|
+
*/
|
|
37
|
+
getCacheData(url) {
|
|
38
|
+
const cacheEntry = this.cachedData[url];
|
|
39
|
+
if (cacheEntry) {
|
|
40
|
+
log.debug(`Cache hit for key: "${url}"`);
|
|
41
|
+
return cacheEntry.data;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets the cached entry for the specified request.
|
|
47
|
+
* @param {!string} url The request URL.
|
|
48
|
+
* @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.
|
|
49
|
+
*/
|
|
50
|
+
getHttpCacheEntry(url) {
|
|
51
|
+
return this.cachedData[url] || null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Clears the cached entry (if exists) for the specified request.
|
|
55
|
+
* @param {!string} url The request URL.
|
|
56
|
+
*/
|
|
57
|
+
clearCache(url) {
|
|
58
|
+
delete this.cachedData[url];
|
|
59
|
+
log.debug(`Cache cleared for key: "${url}"`);
|
|
60
|
+
this.saveCacheData();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Cleans cache entries older than the specified date.
|
|
64
|
+
* @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.
|
|
65
|
+
*/
|
|
66
|
+
cleanCache(expirationDate) {
|
|
67
|
+
if (expirationDate) {
|
|
68
|
+
Object(this.cachedData).keys.forEach((key) => {
|
|
69
|
+
var _a;
|
|
70
|
+
if (expirationDate >= ((_a = this.cachedData[key]) === null || _a === void 0 ? void 0 : _a.lastUpdated)) {
|
|
71
|
+
delete this.cachedData[key];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.cachedData = {};
|
|
77
|
+
}
|
|
78
|
+
this.saveCacheData();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Sets the cache persistence policy.
|
|
82
|
+
* Note that changing the cache persistence will also clear the cache from its previous storage.
|
|
83
|
+
* @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session
|
|
84
|
+
* storage, or if no value is provided it will be only in-memory (default).
|
|
85
|
+
*/
|
|
86
|
+
setPersistence(persistence) {
|
|
87
|
+
this.cleanCache();
|
|
88
|
+
this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;
|
|
89
|
+
this.loadCacheData();
|
|
90
|
+
}
|
|
91
|
+
saveCacheData() {
|
|
92
|
+
if (this.storage) {
|
|
93
|
+
this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
loadCacheData() {
|
|
97
|
+
const data = this.storage ? this.storage[this.cachePersistenceKey] : null;
|
|
98
|
+
this.cachedData = data ? JSON.parse(data) : {};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
HttpCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpCacheService_Factory() { return new HttpCacheService(i0.ɵɵinject(i1.ConfigService)); }, token: HttpCacheService, providedIn: "root" });
|
|
102
|
+
HttpCacheService.decorators = [
|
|
103
|
+
{ type: Injectable, args: [{
|
|
104
|
+
providedIn: 'root'
|
|
105
|
+
},] }
|
|
106
|
+
];
|
|
107
|
+
HttpCacheService.ctorParameters = () => [
|
|
108
|
+
{ type: ConfigService }
|
|
109
|
+
];
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2h0dHAtY2FjaGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBUTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUp4QyxlQUFVLEdBQXVDLEVBQUUsQ0FBQztRQUsxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLEdBQUcsYUFBYSxDQUFDO1FBQzlFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsR0FBVyxFQUFFLElBQXVCLEVBQUUsV0FBa0I7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNyQixXQUFXLEVBQUUsV0FBVyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ3RDLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEdBQVc7UUFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4QyxJQUFJLFVBQVUsRUFBRTtZQUNkLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDekMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsY0FBcUI7UUFDOUIsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7O2dCQUNuRCxJQUFJLGNBQWMsV0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQywwQ0FBRSxXQUFXLENBQUEsRUFBRTtvQkFDdkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxXQUFpQztRQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7Ozs7WUF2R0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFoQlEsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xuXG5jb25zdCBsb2cgPSBuZXcgTG9nZ2VyKCdIdHRwQ2FjaGVTZXJ2aWNlJyk7XG5cblxuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2FjaGVFbnRyeSB7XG4gIGxhc3RVcGRhdGVkOiBEYXRlO1xuICBkYXRhOiBIdHRwUmVzcG9uc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIGNhY2hlIGZhY2lsaXR5IGZvciBIVFRQIHJlcXVlc3RzIHdpdGggY29uZmlndXJhYmxlIHBlcnNpc3RlbmNlIHBvbGljeS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cENhY2hlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBjYWNoZWREYXRhOiB7IFtrZXk6IHN0cmluZ106IEh0dHBDYWNoZUVudHJ5OyB9ID0ge307XG4gIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSB8IGFueSB8IG51bGw7XG4gIHByaXZhdGUgY2FjaGVQZXJzaXN0ZW5jZUtleTogU3RyaW5nIHwgYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkge1xuICAgIHRoaXMuc3RvcmFnZSA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRTdG9yYWdlKCk7XG4gICAgdGhpcy5jYWNoZVBlcnNpc3RlbmNlS2V5ID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldFByb2plY3RLZXkoKSArICdfSFRUUF9DQUNIRSc7XG4gICAgdGhpcy5sb2FkQ2FjaGVEYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY2FjaGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCByZXF1ZXN0LlxuICAgKiBAcGFyYW0geyFzdHJpbmd9IHVybCBUaGUgcmVxdWVzdCBVUkwuXG4gICAqIEBwYXJhbSB7UmVzcG9uc2VPcHRpb25zfSBkYXRhIFRoZSByZWNlaXZlZCBkYXRhLlxuICAgKiBAcGFyYW0ge0RhdGU9fSBsYXN0VXBkYXRlZCBUaGUgY2FjaGUgbGFzdCB1cGRhdGUsIGN1cnJlbnQgZGF0ZSBpcyB1c2VkIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICBzZXRDYWNoZURhdGEodXJsOiBzdHJpbmcsIGRhdGE6IEh0dHBSZXNwb25zZTxhbnk+LCBsYXN0VXBkYXRlZD86IERhdGUpIHtcbiAgICB0aGlzLmNhY2hlZERhdGFbdXJsXSA9IHtcbiAgICAgIGxhc3RVcGRhdGVkOiBsYXN0VXBkYXRlZCB8fCBuZXcgRGF0ZSgpLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgbG9nLmRlYnVnKGBDYWNoZSBzZXQgZm9yIGtleTogXCIke3VybH1cImApO1xuICAgIHRoaXMuc2F2ZUNhY2hlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNhY2hlZCBkYXRhIGZvciB0aGUgc3BlY2lmaWVkIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7IXN0cmluZ30gdXJsIFRoZSByZXF1ZXN0IFVSTC5cbiAgICogQHJldHVybiB7P1Jlc3BvbnNlT3B0aW9uc30gVGhlIGNhY2hlZCBkYXRhIG9yIG51bGwgaWYgbm8gY2FjaGVkIGRhdGEgZXhpc3RzIGZvciB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICBnZXRDYWNoZURhdGEodXJsOiBzdHJpbmcpOiBIdHRwUmVzcG9uc2U8YW55PiB8IG51bGwge1xuICAgIGNvbnN0IGNhY2hlRW50cnkgPSB0aGlzLmNhY2hlZERhdGFbdXJsXTtcblxuICAgIGlmIChjYWNoZUVudHJ5KSB7XG4gICAgICBsb2cuZGVidWcoYENhY2hlIGhpdCBmb3Iga2V5OiBcIiR7dXJsfVwiYCk7XG4gICAgICByZXR1cm4gY2FjaGVFbnRyeS5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNhY2hlZCBlbnRyeSBmb3IgdGhlIHNwZWNpZmllZCByZXF1ZXN0LlxuICAgKiBAcGFyYW0geyFzdHJpbmd9IHVybCBUaGUgcmVxdWVzdCBVUkwuXG4gICAqIEByZXR1cm4gez9IdHRwQ2FjaGVFbnRyeX0gVGhlIGNhY2hlIGVudHJ5IG9yIG51bGwgaWYgbm8gY2FjaGUgZW50cnkgZXhpc3RzIGZvciB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICBnZXRIdHRwQ2FjaGVFbnRyeSh1cmw6IHN0cmluZyk6IEh0dHBDYWNoZUVudHJ5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkRGF0YVt1cmxdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBjYWNoZWQgZW50cnkgKGlmIGV4aXN0cykgZm9yIHRoZSBzcGVjaWZpZWQgcmVxdWVzdC5cbiAgICogQHBhcmFtIHshc3RyaW5nfSB1cmwgVGhlIHJlcXVlc3QgVVJMLlxuICAgKi9cbiAgY2xlYXJDYWNoZSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLmNhY2hlZERhdGFbdXJsXTtcbiAgICBsb2cuZGVidWcoYENhY2hlIGNsZWFyZWQgZm9yIGtleTogXCIke3VybH1cImApO1xuICAgIHRoaXMuc2F2ZUNhY2hlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFucyBjYWNoZSBlbnRyaWVzIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBkYXRlLlxuICAgKiBAcGFyYW0ge2RhdGU9fSBleHBpcmF0aW9uRGF0ZSBUaGUgY2FjaGUgZXhwaXJhdGlvbiBkYXRlLiBJZiBubyBkYXRlIGlzIHNwZWNpZmllZCwgYWxsIGNhY2hlIGlzIGNsZWFyZWQuXG4gICAqL1xuICBjbGVhbkNhY2hlKGV4cGlyYXRpb25EYXRlPzogRGF0ZSkge1xuICAgIGlmIChleHBpcmF0aW9uRGF0ZSkge1xuICAgICAgT2JqZWN0KHRoaXMuY2FjaGVkRGF0YSkua2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoZXhwaXJhdGlvbkRhdGUgPj0gdGhpcy5jYWNoZWREYXRhW2tleV0/Lmxhc3RVcGRhdGVkKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVkRGF0YVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWNoZWREYXRhID0ge307XG4gICAgfVxuICAgIHRoaXMuc2F2ZUNhY2hlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNhY2hlIHBlcnNpc3RlbmNlIHBvbGljeS5cbiAgICogTm90ZSB0aGF0IGNoYW5naW5nIHRoZSBjYWNoZSBwZXJzaXN0ZW5jZSB3aWxsIGFsc28gY2xlYXIgdGhlIGNhY2hlIGZyb20gaXRzIHByZXZpb3VzIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7J2xvY2FsJ3wnc2Vzc2lvbic9fSBwZXJzaXN0ZW5jZSBIb3cgdGhlIGNhY2hlIHNob3VsZCBiZSBwZXJzaXN0ZWQsIGl0IGNhbiBiZSBlaXRoZXIgbG9jYWwgb3Igc2Vzc2lvblxuICAgKiAgIHN0b3JhZ2UsIG9yIGlmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIGl0IHdpbGwgYmUgb25seSBpbi1tZW1vcnkgKGRlZmF1bHQpLlxuICAgKi9cbiAgc2V0UGVyc2lzdGVuY2UocGVyc2lzdGVuY2U/OiAnbG9jYWwnIHwgJ3Nlc3Npb24nKSB7XG4gICAgdGhpcy5jbGVhbkNhY2hlKCk7XG4gICAgdGhpcy5zdG9yYWdlID0gcGVyc2lzdGVuY2UgPT09ICdsb2NhbCcgPyBsb2NhbFN0b3JhZ2UgOiBwZXJzaXN0ZW5jZSA9PT0gJ3Nlc3Npb24nID8gc2Vzc2lvblN0b3JhZ2UgOiBudWxsO1xuICAgIHRoaXMubG9hZENhY2hlRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlQ2FjaGVEYXRhKCkge1xuICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZVt0aGlzLmNhY2hlUGVyc2lzdGVuY2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jYWNoZWREYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRDYWNoZURhdGEoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuc3RvcmFnZSA/IHRoaXMuc3RvcmFnZVt0aGlzLmNhY2hlUGVyc2lzdGVuY2VLZXldIDogbnVsbDtcbiAgICB0aGlzLmNhY2hlZERhdGEgPSBkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IHt9O1xuICB9XG5cbn1cbiJdfQ==
|