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,82 +1,82 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';
|
|
2
|
-
import { HttpClient, HttpHandler } from '@angular/common/http';
|
|
3
|
-
import { ErrorHandlerInterceptor } from './error-handler.interceptor';
|
|
4
|
-
import { CacheInterceptor } from './cache.interceptor';
|
|
5
|
-
import { ApiPrefixInterceptor } from './api-prefix.interceptor';
|
|
6
|
-
import { TokenInterceptor } from './token.interceptor';
|
|
7
|
-
import { HeaderInterceptor } from './header.interceptor';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/common/http";
|
|
10
|
-
// From @angular/common/http/src/interceptor: allows to chain interceptors
|
|
11
|
-
class HttpInterceptorHandler {
|
|
12
|
-
constructor(next, interceptor) {
|
|
13
|
-
this.next = next;
|
|
14
|
-
this.interceptor = interceptor;
|
|
15
|
-
}
|
|
16
|
-
handle(request) {
|
|
17
|
-
return this.interceptor.intercept(request, this.next);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Allows to override default dynamic interceptors that can be disabled with the HttpService extension.
|
|
22
|
-
* Except for very specific needs, you should better configure these interceptors directly in the constructor below
|
|
23
|
-
* for better readability.
|
|
24
|
-
*
|
|
25
|
-
* For static interceptors that should always be enabled (like ApiPrefixInterceptor), use the standard
|
|
26
|
-
* HTTP_INTERCEPTORS token.
|
|
27
|
-
*/
|
|
28
|
-
export const HTTP_DYNAMIC_INTERCEPTORS = new InjectionToken('HTTP_DYNAMIC_INTERCEPTORS');
|
|
29
|
-
/**
|
|
30
|
-
* Extends HttpClient with per request configuration using dynamic interceptors.
|
|
31
|
-
*/
|
|
32
|
-
export class HttpService extends HttpClient {
|
|
33
|
-
constructor(httpHandler, injector, interceptors = []) {
|
|
34
|
-
super(httpHandler);
|
|
35
|
-
this.httpHandler = httpHandler;
|
|
36
|
-
this.injector = injector;
|
|
37
|
-
this.interceptors = interceptors;
|
|
38
|
-
if (!this.interceptors) {
|
|
39
|
-
// Configure default interceptors that can be disabled here
|
|
40
|
-
this.interceptors = [this.injector.get(ApiPrefixInterceptor), this.injector.get(HeaderInterceptor), this.injector.get(TokenInterceptor), this.injector.get(ErrorHandlerInterceptor)];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
cache(forceUpdate) {
|
|
44
|
-
const cacheInterceptor = this.injector.get(CacheInterceptor).configure({ update: forceUpdate });
|
|
45
|
-
return this.addInterceptor(cacheInterceptor);
|
|
46
|
-
}
|
|
47
|
-
skipErrorHandler() {
|
|
48
|
-
return this.removeInterceptor(ErrorHandlerInterceptor);
|
|
49
|
-
}
|
|
50
|
-
skipApiPrefix() {
|
|
51
|
-
return this.removeInterceptor(ApiPrefixInterceptor);
|
|
52
|
-
}
|
|
53
|
-
skipToken() {
|
|
54
|
-
return this.removeInterceptor(TokenInterceptor);
|
|
55
|
-
}
|
|
56
|
-
skipHeader() {
|
|
57
|
-
return this.removeInterceptor(HeaderInterceptor);
|
|
58
|
-
}
|
|
59
|
-
// Override the original method to wire interceptors when triggering the request.
|
|
60
|
-
request(method, url, options) {
|
|
61
|
-
const handler = this.interceptors.reduceRight((next, interceptor) => new HttpInterceptorHandler(next, interceptor), this.httpHandler);
|
|
62
|
-
return new HttpClient(handler).request(method, url, options);
|
|
63
|
-
}
|
|
64
|
-
removeInterceptor(interceptorType) {
|
|
65
|
-
return new HttpService(this.httpHandler, this.injector, this.interceptors.filter(i => !(i instanceof interceptorType)));
|
|
66
|
-
}
|
|
67
|
-
addInterceptor(interceptor) {
|
|
68
|
-
return new HttpService(this.httpHandler, this.injector, this.interceptors.concat([interceptor]));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
HttpService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpService_Factory() { return new HttpService(i0.ɵɵinject(i1.HttpHandler), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(HTTP_DYNAMIC_INTERCEPTORS, 8)); }, token: HttpService, providedIn: "root" });
|
|
72
|
-
HttpService.decorators = [
|
|
73
|
-
{ type: Injectable, args: [{
|
|
74
|
-
providedIn: 'root'
|
|
75
|
-
},] }
|
|
76
|
-
];
|
|
77
|
-
HttpService.ctorParameters = () => [
|
|
78
|
-
{ type: HttpHandler },
|
|
79
|
-
{ type: Injector },
|
|
80
|
-
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [HTTP_DYNAMIC_INTERCEPTORS,] }] }
|
|
81
|
-
];
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUE4QixXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBMEN6RCwwRUFBMEU7QUFDMUUsTUFBTSxzQkFBc0I7SUFFMUIsWUFBb0IsSUFBaUIsRUFBVSxXQUE0QjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO0lBQUksQ0FBQztJQUVoRixNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FFRjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsMkJBQTJCLENBQUMsQ0FBQztBQUUxRzs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFZLFNBQVEsVUFBVTtJQUV6QyxZQUFvQixXQUF3QixFQUNsQyxRQUFrQixFQUM2QixlQUFrQyxFQUFFO1FBQzNGLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDNkIsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBRzNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1NBQ3RMO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFxQjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixPQUFPLENBQUMsTUFBWSxFQUFFLEdBQVMsRUFBRSxPQUFhO1FBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUMzQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUNwRSxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBQ0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsZUFBeUI7UUFDakQsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FDL0QsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsV0FBNEI7UUFDakQsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDOzs7O1lBNURGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBM0VnRCxXQUFXO1lBRGYsUUFBUTt3Q0FpRmhELFFBQVEsWUFBSSxNQUFNLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVycm9ySGFuZGxlckludGVyY2VwdG9yIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQ2FjaGVJbnRlcmNlcHRvciB9IGZyb20gJy4vY2FjaGUuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBBcGlQcmVmaXhJbnRlcmNlcHRvciB9IGZyb20gJy4vYXBpLXByZWZpeC5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFRva2VuSW50ZXJjZXB0b3IgfSBmcm9tICcuL3Rva2VuLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgSGVhZGVySW50ZXJjZXB0b3IgfSBmcm9tICcuL2hlYWRlci5pbnRlcmNlcHRvcic7XHJcblxyXG5cclxuLy8gQXVnbWVudCBIdHRwQ2xpZW50IHdpdGggdGhlIGFkZGVkIGNvbmZpZ3VyYXRpb24gbWV0aG9kcyBmcm9tIEh0dHBTZXJ2aWNlLCB0byBhbGxvdyBpbi1wbGFjZSByZXBsYWNlbWVudCBvZlxyXG4vLyBIdHRwQ2xpZW50IHdpdGggSHR0cFNlcnZpY2UgdXNpbmcgZGVwZW5kZW5jeSBpbmplY3Rpb25cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwQ3VzdG9tQ2xpZW50IHtcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBjYWNoaW5nIGZvciB0aGlzIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBmb3JjZVVwZGF0ZSBGb3JjZXMgcmVxdWVzdCB0byBiZSBtYWRlIGFuZCB1cGRhdGVzIGNhY2hlIGVudHJ5LlxyXG4gICAqIEByZXR1cm4ge0h0dHBDdXN0b21DbGllbnR9IFRoZSBuZXcgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgY2FjaGUoZm9yY2VVcGRhdGU/OiBib29sZWFuKTogSHR0cEN1c3RvbUNsaWVudDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2tpcHMgZGVmYXVsdCBlcnJvciBoYW5kbGVyIGZvciB0aGlzIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7SHR0cEN1c3RvbUNsaWVudH0gVGhlIG5ldyBpbnN0YW5jZS5cclxuICAgKi9cclxuICBza2lwRXJyb3JIYW5kbGVyKCk6IEh0dHBDdXN0b21DbGllbnQ7XHJcblxyXG4gIC8qKlxyXG4gICogU2tpcHMgZGVmYXVsdCBBUEkgUHJlZml4IGZvciB0aGlzIHJlcXVlc3QuXHJcbiAgKiBAcmV0dXJuIHtIdHRwQ3VzdG9tQ2xpZW50fSBUaGUgbmV3IGluc3RhbmNlLlxyXG4gICovXHJcbiAgc2tpcEFwaVByZWZpeCgpOiBIdHRwQ3VzdG9tQ2xpZW50O1xyXG5cclxuXHJcbiAgLyoqXHJcbiAqIFNraXBzIGRlZmF1bHQgVG9rZW4gSW50ZXJjZXB0b3IgZm9yIHRoaXMgcmVxdWVzdC5cclxuICogQHJldHVybiB7SHR0cEN1c3RvbUNsaWVudH0gVGhlIG5ldyBpbnN0YW5jZS5cclxuICovXHJcbiAgc2tpcFRva2VuKCk6IEh0dHBDdXN0b21DbGllbnQ7XHJcblxyXG4gIC8qKlxyXG4qIFNraXBzIGRlZmF1bHQgSGVhZGVyIEludGVyY2VwdG9yIGZvciB0aGlzIHJlcXVlc3QuXHJcbiogQHJldHVybiB7SHR0cEN1c3RvbUNsaWVudH0gVGhlIG5ldyBpbnN0YW5jZS5cclxuKi9cclxuICBza2lwSGVhZGVyKCk6IEh0dHBDdXN0b21DbGllbnQ7XHJcblxyXG59XHJcblxyXG5cclxuLy8gRnJvbSBAYW5ndWxhci9jb21tb24vaHR0cC9zcmMvaW50ZXJjZXB0b3I6IGFsbG93cyB0byBjaGFpbiBpbnRlcmNlcHRvcnNcclxuY2xhc3MgSHR0cEludGVyY2VwdG9ySGFuZGxlciBpbXBsZW1lbnRzIEh0dHBIYW5kbGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZXh0OiBIdHRwSGFuZGxlciwgcHJpdmF0ZSBpbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yKSB7IH1cclxuXHJcbiAgaGFuZGxlKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvci5pbnRlcmNlcHQocmVxdWVzdCwgdGhpcy5uZXh0KTtcclxuICB9XHJcblxyXG59XHJcblxyXG4vKipcclxuICogQWxsb3dzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZHluYW1pYyBpbnRlcmNlcHRvcnMgdGhhdCBjYW4gYmUgZGlzYWJsZWQgd2l0aCB0aGUgSHR0cFNlcnZpY2UgZXh0ZW5zaW9uLlxyXG4gKiBFeGNlcHQgZm9yIHZlcnkgc3BlY2lmaWMgbmVlZHMsIHlvdSBzaG91bGQgYmV0dGVyIGNvbmZpZ3VyZSB0aGVzZSBpbnRlcmNlcHRvcnMgZGlyZWN0bHkgaW4gdGhlIGNvbnN0cnVjdG9yIGJlbG93XHJcbiAqIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkuXHJcbiAqXHJcbiAqIEZvciBzdGF0aWMgaW50ZXJjZXB0b3JzIHRoYXQgc2hvdWxkIGFsd2F5cyBiZSBlbmFibGVkIChsaWtlIEFwaVByZWZpeEludGVyY2VwdG9yKSwgdXNlIHRoZSBzdGFuZGFyZFxyXG4gKiBIVFRQX0lOVEVSQ0VQVE9SUyB0b2tlbi5cclxuICovXHJcbmV4cG9ydCBjb25zdCBIVFRQX0RZTkFNSUNfSU5URVJDRVBUT1JTID0gbmV3IEluamVjdGlvblRva2VuPEh0dHBJbnRlcmNlcHRvcj4oJ0hUVFBfRFlOQU1JQ19JTlRFUkNFUFRPUlMnKTtcclxuXHJcbi8qKlxyXG4gKiBFeHRlbmRzIEh0dHBDbGllbnQgd2l0aCBwZXIgcmVxdWVzdCBjb25maWd1cmF0aW9uIHVzaW5nIGR5bmFtaWMgaW50ZXJjZXB0b3JzLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2UgZXh0ZW5kcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSHR0cEN1c3RvbUNsaWVudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cEhhbmRsZXI6IEh0dHBIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEhUVFBfRFlOQU1JQ19JTlRFUkNFUFRPUlMpIHByaXZhdGUgaW50ZXJjZXB0b3JzOiBIdHRwSW50ZXJjZXB0b3JbXSA9IFtdKSB7XHJcbiAgICBzdXBlcihodHRwSGFuZGxlcik7XHJcblxyXG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9ycykge1xyXG4gICAgICAvLyBDb25maWd1cmUgZGVmYXVsdCBpbnRlcmNlcHRvcnMgdGhhdCBjYW4gYmUgZGlzYWJsZWQgaGVyZVxyXG4gICAgICB0aGlzLmludGVyY2VwdG9ycyA9IFt0aGlzLmluamVjdG9yLmdldChBcGlQcmVmaXhJbnRlcmNlcHRvciksIHRoaXMuaW5qZWN0b3IuZ2V0KEhlYWRlckludGVyY2VwdG9yKSwgdGhpcy5pbmplY3Rvci5nZXQoVG9rZW5JbnRlcmNlcHRvciksIHRoaXMuaW5qZWN0b3IuZ2V0KEVycm9ySGFuZGxlckludGVyY2VwdG9yKV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWNoZShmb3JjZVVwZGF0ZT86IGJvb2xlYW4pOiBIdHRwU2VydmljZSB7XHJcbiAgICBjb25zdCBjYWNoZUludGVyY2VwdG9yID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FjaGVJbnRlcmNlcHRvcikuY29uZmlndXJlKHsgdXBkYXRlOiBmb3JjZVVwZGF0ZSB9KTtcclxuICAgIHJldHVybiB0aGlzLmFkZEludGVyY2VwdG9yKGNhY2hlSW50ZXJjZXB0b3IpO1xyXG4gIH1cclxuXHJcbiAgc2tpcEVycm9ySGFuZGxlcigpOiBIdHRwU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVJbnRlcmNlcHRvcihFcnJvckhhbmRsZXJJbnRlcmNlcHRvcik7XHJcbiAgfVxyXG5cclxuICBza2lwQXBpUHJlZml4KCk6IEh0dHBTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLnJlbW92ZUludGVyY2VwdG9yKEFwaVByZWZpeEludGVyY2VwdG9yKTtcclxuICB9XHJcblxyXG4gIHNraXBUb2tlbigpOiBIdHRwU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVJbnRlcmNlcHRvcihUb2tlbkludGVyY2VwdG9yKTtcclxuICB9XHJcblxyXG4gIHNraXBIZWFkZXIoKTogSHR0cFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlSW50ZXJjZXB0b3IoSGVhZGVySW50ZXJjZXB0b3IpO1xyXG4gIH1cclxuXHJcbiAgLy8gT3ZlcnJpZGUgdGhlIG9yaWdpbmFsIG1ldGhvZCB0byB3aXJlIGludGVyY2VwdG9ycyB3aGVuIHRyaWdnZXJpbmcgdGhlIHJlcXVlc3QuXHJcbiAgcmVxdWVzdChtZXRob2Q/OiBhbnksIHVybD86IGFueSwgb3B0aW9ucz86IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5pbnRlcmNlcHRvcnMucmVkdWNlUmlnaHQoXHJcbiAgICAgIChuZXh0LCBpbnRlcmNlcHRvcikgPT4gbmV3IEh0dHBJbnRlcmNlcHRvckhhbmRsZXIobmV4dCwgaW50ZXJjZXB0b3IpLFxyXG4gICAgICB0aGlzLmh0dHBIYW5kbGVyXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwQ2xpZW50KGhhbmRsZXIpLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVJbnRlcmNlcHRvcihpbnRlcmNlcHRvclR5cGU6IEZ1bmN0aW9uKTogSHR0cFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwU2VydmljZShcclxuICAgICAgdGhpcy5odHRwSGFuZGxlcixcclxuICAgICAgdGhpcy5pbmplY3RvcixcclxuICAgICAgdGhpcy5pbnRlcmNlcHRvcnMuZmlsdGVyKGkgPT4gIShpIGluc3RhbmNlb2YgaW50ZXJjZXB0b3JUeXBlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEludGVyY2VwdG9yKGludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3IpOiBIdHRwU2VydmljZSB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBTZXJ2aWNlKFxyXG4gICAgICB0aGlzLmh0dHBIYW5kbGVyLFxyXG4gICAgICB0aGlzLmluamVjdG9yLFxyXG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5jb25jYXQoW2ludGVyY2VwdG9yXSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
1
|
+
import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';
|
|
2
|
+
import { HttpClient, HttpHandler } from '@angular/common/http';
|
|
3
|
+
import { ErrorHandlerInterceptor } from './error-handler.interceptor';
|
|
4
|
+
import { CacheInterceptor } from './cache.interceptor';
|
|
5
|
+
import { ApiPrefixInterceptor } from './api-prefix.interceptor';
|
|
6
|
+
import { TokenInterceptor } from './token.interceptor';
|
|
7
|
+
import { HeaderInterceptor } from './header.interceptor';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common/http";
|
|
10
|
+
// From @angular/common/http/src/interceptor: allows to chain interceptors
|
|
11
|
+
class HttpInterceptorHandler {
|
|
12
|
+
constructor(next, interceptor) {
|
|
13
|
+
this.next = next;
|
|
14
|
+
this.interceptor = interceptor;
|
|
15
|
+
}
|
|
16
|
+
handle(request) {
|
|
17
|
+
return this.interceptor.intercept(request, this.next);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Allows to override default dynamic interceptors that can be disabled with the HttpService extension.
|
|
22
|
+
* Except for very specific needs, you should better configure these interceptors directly in the constructor below
|
|
23
|
+
* for better readability.
|
|
24
|
+
*
|
|
25
|
+
* For static interceptors that should always be enabled (like ApiPrefixInterceptor), use the standard
|
|
26
|
+
* HTTP_INTERCEPTORS token.
|
|
27
|
+
*/
|
|
28
|
+
export const HTTP_DYNAMIC_INTERCEPTORS = new InjectionToken('HTTP_DYNAMIC_INTERCEPTORS');
|
|
29
|
+
/**
|
|
30
|
+
* Extends HttpClient with per request configuration using dynamic interceptors.
|
|
31
|
+
*/
|
|
32
|
+
export class HttpService extends HttpClient {
|
|
33
|
+
constructor(httpHandler, injector, interceptors = []) {
|
|
34
|
+
super(httpHandler);
|
|
35
|
+
this.httpHandler = httpHandler;
|
|
36
|
+
this.injector = injector;
|
|
37
|
+
this.interceptors = interceptors;
|
|
38
|
+
if (!this.interceptors) {
|
|
39
|
+
// Configure default interceptors that can be disabled here
|
|
40
|
+
this.interceptors = [this.injector.get(ApiPrefixInterceptor), this.injector.get(HeaderInterceptor), this.injector.get(TokenInterceptor), this.injector.get(ErrorHandlerInterceptor)];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
cache(forceUpdate) {
|
|
44
|
+
const cacheInterceptor = this.injector.get(CacheInterceptor).configure({ update: forceUpdate });
|
|
45
|
+
return this.addInterceptor(cacheInterceptor);
|
|
46
|
+
}
|
|
47
|
+
skipErrorHandler() {
|
|
48
|
+
return this.removeInterceptor(ErrorHandlerInterceptor);
|
|
49
|
+
}
|
|
50
|
+
skipApiPrefix() {
|
|
51
|
+
return this.removeInterceptor(ApiPrefixInterceptor);
|
|
52
|
+
}
|
|
53
|
+
skipToken() {
|
|
54
|
+
return this.removeInterceptor(TokenInterceptor);
|
|
55
|
+
}
|
|
56
|
+
skipHeader() {
|
|
57
|
+
return this.removeInterceptor(HeaderInterceptor);
|
|
58
|
+
}
|
|
59
|
+
// Override the original method to wire interceptors when triggering the request.
|
|
60
|
+
request(method, url, options) {
|
|
61
|
+
const handler = this.interceptors.reduceRight((next, interceptor) => new HttpInterceptorHandler(next, interceptor), this.httpHandler);
|
|
62
|
+
return new HttpClient(handler).request(method, url, options);
|
|
63
|
+
}
|
|
64
|
+
removeInterceptor(interceptorType) {
|
|
65
|
+
return new HttpService(this.httpHandler, this.injector, this.interceptors.filter(i => !(i instanceof interceptorType)));
|
|
66
|
+
}
|
|
67
|
+
addInterceptor(interceptor) {
|
|
68
|
+
return new HttpService(this.httpHandler, this.injector, this.interceptors.concat([interceptor]));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
HttpService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpService_Factory() { return new HttpService(i0.ɵɵinject(i1.HttpHandler), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(HTTP_DYNAMIC_INTERCEPTORS, 8)); }, token: HttpService, providedIn: "root" });
|
|
72
|
+
HttpService.decorators = [
|
|
73
|
+
{ type: Injectable, args: [{
|
|
74
|
+
providedIn: 'root'
|
|
75
|
+
},] }
|
|
76
|
+
];
|
|
77
|
+
HttpService.ctorParameters = () => [
|
|
78
|
+
{ type: HttpHandler },
|
|
79
|
+
{ type: Injector },
|
|
80
|
+
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [HTTP_DYNAMIC_INTERCEPTORS,] }] }
|
|
81
|
+
];
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUE4QixXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBMEN6RCwwRUFBMEU7QUFDMUUsTUFBTSxzQkFBc0I7SUFFMUIsWUFBb0IsSUFBaUIsRUFBVSxXQUE0QjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO0lBQUksQ0FBQztJQUVoRixNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FFRjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsMkJBQTJCLENBQUMsQ0FBQztBQUUxRzs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFZLFNBQVEsVUFBVTtJQUV6QyxZQUFvQixXQUF3QixFQUNsQyxRQUFrQixFQUM2QixlQUFrQyxFQUFFO1FBQzNGLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDNkIsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBRzNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1NBQ3RMO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFxQjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixPQUFPLENBQUMsTUFBWSxFQUFFLEdBQVMsRUFBRSxPQUFhO1FBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUMzQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUNwRSxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBQ0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsZUFBeUI7UUFDakQsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FDL0QsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsV0FBNEI7UUFDakQsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDOzs7O1lBNURGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBM0VnRCxXQUFXO1lBRGYsUUFBUTt3Q0FpRmhELFFBQVEsWUFBSSxNQUFNLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJJbnRlcmNlcHRvciB9IGZyb20gJy4vZXJyb3ItaGFuZGxlci5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBDYWNoZUludGVyY2VwdG9yIH0gZnJvbSAnLi9jYWNoZS5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBBcGlQcmVmaXhJbnRlcmNlcHRvciB9IGZyb20gJy4vYXBpLXByZWZpeC5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBUb2tlbkludGVyY2VwdG9yIH0gZnJvbSAnLi90b2tlbi5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBIZWFkZXJJbnRlcmNlcHRvciB9IGZyb20gJy4vaGVhZGVyLmludGVyY2VwdG9yJztcblxuXG4vLyBBdWdtZW50IEh0dHBDbGllbnQgd2l0aCB0aGUgYWRkZWQgY29uZmlndXJhdGlvbiBtZXRob2RzIGZyb20gSHR0cFNlcnZpY2UsIHRvIGFsbG93IGluLXBsYWNlIHJlcGxhY2VtZW50IG9mXG4vLyBIdHRwQ2xpZW50IHdpdGggSHR0cFNlcnZpY2UgdXNpbmcgZGVwZW5kZW5jeSBpbmplY3Rpb25cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEN1c3RvbUNsaWVudCB7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgY2FjaGluZyBmb3IgdGhpcyByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcmNlVXBkYXRlIEZvcmNlcyByZXF1ZXN0IHRvIGJlIG1hZGUgYW5kIHVwZGF0ZXMgY2FjaGUgZW50cnkuXG4gICAqIEByZXR1cm4ge0h0dHBDdXN0b21DbGllbnR9IFRoZSBuZXcgaW5zdGFuY2UuXG4gICAqL1xuICBjYWNoZShmb3JjZVVwZGF0ZT86IGJvb2xlYW4pOiBIdHRwQ3VzdG9tQ2xpZW50O1xuXG4gIC8qKlxuICAgKiBTa2lwcyBkZWZhdWx0IGVycm9yIGhhbmRsZXIgZm9yIHRoaXMgcmVxdWVzdC5cbiAgICogQHJldHVybiB7SHR0cEN1c3RvbUNsaWVudH0gVGhlIG5ldyBpbnN0YW5jZS5cbiAgICovXG4gIHNraXBFcnJvckhhbmRsZXIoKTogSHR0cEN1c3RvbUNsaWVudDtcblxuICAvKipcbiAgKiBTa2lwcyBkZWZhdWx0IEFQSSBQcmVmaXggZm9yIHRoaXMgcmVxdWVzdC5cbiAgKiBAcmV0dXJuIHtIdHRwQ3VzdG9tQ2xpZW50fSBUaGUgbmV3IGluc3RhbmNlLlxuICAqL1xuICBza2lwQXBpUHJlZml4KCk6IEh0dHBDdXN0b21DbGllbnQ7XG5cblxuICAvKipcbiAqIFNraXBzIGRlZmF1bHQgVG9rZW4gSW50ZXJjZXB0b3IgZm9yIHRoaXMgcmVxdWVzdC5cbiAqIEByZXR1cm4ge0h0dHBDdXN0b21DbGllbnR9IFRoZSBuZXcgaW5zdGFuY2UuXG4gKi9cbiAgc2tpcFRva2VuKCk6IEh0dHBDdXN0b21DbGllbnQ7XG5cbiAgLyoqXG4qIFNraXBzIGRlZmF1bHQgSGVhZGVyIEludGVyY2VwdG9yIGZvciB0aGlzIHJlcXVlc3QuXG4qIEByZXR1cm4ge0h0dHBDdXN0b21DbGllbnR9IFRoZSBuZXcgaW5zdGFuY2UuXG4qL1xuICBza2lwSGVhZGVyKCk6IEh0dHBDdXN0b21DbGllbnQ7XG5cbn1cblxuXG4vLyBGcm9tIEBhbmd1bGFyL2NvbW1vbi9odHRwL3NyYy9pbnRlcmNlcHRvcjogYWxsb3dzIHRvIGNoYWluIGludGVyY2VwdG9yc1xuY2xhc3MgSHR0cEludGVyY2VwdG9ySGFuZGxlciBpbXBsZW1lbnRzIEh0dHBIYW5kbGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5leHQ6IEh0dHBIYW5kbGVyLCBwcml2YXRlIGludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3IpIHsgfVxuXG4gIGhhbmRsZShyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmludGVyY2VwdG9yLmludGVyY2VwdChyZXF1ZXN0LCB0aGlzLm5leHQpO1xuICB9XG5cbn1cblxuLyoqXG4gKiBBbGxvd3MgdG8gb3ZlcnJpZGUgZGVmYXVsdCBkeW5hbWljIGludGVyY2VwdG9ycyB0aGF0IGNhbiBiZSBkaXNhYmxlZCB3aXRoIHRoZSBIdHRwU2VydmljZSBleHRlbnNpb24uXG4gKiBFeGNlcHQgZm9yIHZlcnkgc3BlY2lmaWMgbmVlZHMsIHlvdSBzaG91bGQgYmV0dGVyIGNvbmZpZ3VyZSB0aGVzZSBpbnRlcmNlcHRvcnMgZGlyZWN0bHkgaW4gdGhlIGNvbnN0cnVjdG9yIGJlbG93XG4gKiBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5LlxuICpcbiAqIEZvciBzdGF0aWMgaW50ZXJjZXB0b3JzIHRoYXQgc2hvdWxkIGFsd2F5cyBiZSBlbmFibGVkIChsaWtlIEFwaVByZWZpeEludGVyY2VwdG9yKSwgdXNlIHRoZSBzdGFuZGFyZFxuICogSFRUUF9JTlRFUkNFUFRPUlMgdG9rZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBIVFRQX0RZTkFNSUNfSU5URVJDRVBUT1JTID0gbmV3IEluamVjdGlvblRva2VuPEh0dHBJbnRlcmNlcHRvcj4oJ0hUVFBfRFlOQU1JQ19JTlRFUkNFUFRPUlMnKTtcblxuLyoqXG4gKiBFeHRlbmRzIEh0dHBDbGllbnQgd2l0aCBwZXIgcmVxdWVzdCBjb25maWd1cmF0aW9uIHVzaW5nIGR5bmFtaWMgaW50ZXJjZXB0b3JzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSBleHRlbmRzIEh0dHBDbGllbnQgaW1wbGVtZW50cyBIdHRwQ3VzdG9tQ2xpZW50IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBIYW5kbGVyOiBIdHRwSGFuZGxlcixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEhUVFBfRFlOQU1JQ19JTlRFUkNFUFRPUlMpIHByaXZhdGUgaW50ZXJjZXB0b3JzOiBIdHRwSW50ZXJjZXB0b3JbXSA9IFtdKSB7XG4gICAgc3VwZXIoaHR0cEhhbmRsZXIpO1xuXG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9ycykge1xuICAgICAgLy8gQ29uZmlndXJlIGRlZmF1bHQgaW50ZXJjZXB0b3JzIHRoYXQgY2FuIGJlIGRpc2FibGVkIGhlcmVcbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gW3RoaXMuaW5qZWN0b3IuZ2V0KEFwaVByZWZpeEludGVyY2VwdG9yKSwgdGhpcy5pbmplY3Rvci5nZXQoSGVhZGVySW50ZXJjZXB0b3IpLCB0aGlzLmluamVjdG9yLmdldChUb2tlbkludGVyY2VwdG9yKSwgdGhpcy5pbmplY3Rvci5nZXQoRXJyb3JIYW5kbGVySW50ZXJjZXB0b3IpXTtcbiAgICB9XG4gIH1cblxuICBjYWNoZShmb3JjZVVwZGF0ZT86IGJvb2xlYW4pOiBIdHRwU2VydmljZSB7XG4gICAgY29uc3QgY2FjaGVJbnRlcmNlcHRvciA9IHRoaXMuaW5qZWN0b3IuZ2V0KENhY2hlSW50ZXJjZXB0b3IpLmNvbmZpZ3VyZSh7IHVwZGF0ZTogZm9yY2VVcGRhdGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuYWRkSW50ZXJjZXB0b3IoY2FjaGVJbnRlcmNlcHRvcik7XG4gIH1cblxuICBza2lwRXJyb3JIYW5kbGVyKCk6IEh0dHBTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVJbnRlcmNlcHRvcihFcnJvckhhbmRsZXJJbnRlcmNlcHRvcik7XG4gIH1cblxuICBza2lwQXBpUHJlZml4KCk6IEh0dHBTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVJbnRlcmNlcHRvcihBcGlQcmVmaXhJbnRlcmNlcHRvcik7XG4gIH1cblxuICBza2lwVG9rZW4oKTogSHR0cFNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUludGVyY2VwdG9yKFRva2VuSW50ZXJjZXB0b3IpO1xuICB9XG5cbiAgc2tpcEhlYWRlcigpOiBIdHRwU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlSW50ZXJjZXB0b3IoSGVhZGVySW50ZXJjZXB0b3IpO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgdGhlIG9yaWdpbmFsIG1ldGhvZCB0byB3aXJlIGludGVyY2VwdG9ycyB3aGVuIHRyaWdnZXJpbmcgdGhlIHJlcXVlc3QuXG4gIHJlcXVlc3QobWV0aG9kPzogYW55LCB1cmw/OiBhbnksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmludGVyY2VwdG9ycy5yZWR1Y2VSaWdodChcbiAgICAgIChuZXh0LCBpbnRlcmNlcHRvcikgPT4gbmV3IEh0dHBJbnRlcmNlcHRvckhhbmRsZXIobmV4dCwgaW50ZXJjZXB0b3IpLFxuICAgICAgdGhpcy5odHRwSGFuZGxlclxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBIdHRwQ2xpZW50KGhhbmRsZXIpLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJbnRlcmNlcHRvcihpbnRlcmNlcHRvclR5cGU6IEZ1bmN0aW9uKTogSHR0cFNlcnZpY2Uge1xuICAgIHJldHVybiBuZXcgSHR0cFNlcnZpY2UoXG4gICAgICB0aGlzLmh0dHBIYW5kbGVyLFxuICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgIHRoaXMuaW50ZXJjZXB0b3JzLmZpbHRlcihpID0+ICEoaSBpbnN0YW5jZW9mIGludGVyY2VwdG9yVHlwZSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW50ZXJjZXB0b3IoaW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvcik6IEh0dHBTZXJ2aWNlIHtcbiAgICByZXR1cm4gbmV3IEh0dHBTZXJ2aWNlKFxuICAgICAgdGhpcy5odHRwSGFuZGxlcixcbiAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICB0aGlzLmludGVyY2VwdG9ycy5jb25jYXQoW2ludGVyY2VwdG9yXSlcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
export * from './snack/snack.component';
|
|
2
|
-
export * from './snack/snack.module';
|
|
3
|
-
export * from './alert.service';
|
|
4
|
-
export * from './api-prefix.interceptor';
|
|
5
|
-
export * from './authentication.guard';
|
|
6
|
-
export * from './authentication.service';
|
|
7
|
-
export * from './cache.interceptor';
|
|
8
|
-
export * from './config.service';
|
|
9
|
-
export * from './credentials.service';
|
|
10
|
-
export * from './error-handler.interceptor';
|
|
11
|
-
export * from './error-handler.service';
|
|
12
|
-
export * from './form-validator.service';
|
|
13
|
-
export * from './http-cache.service';
|
|
14
|
-
export * from './http.service';
|
|
15
|
-
export * from './logger.service';
|
|
16
|
-
export * from './route-reusable-strategy';
|
|
17
|
-
export * from './storage.service';
|
|
18
|
-
export * from './techlify-config.model';
|
|
19
|
-
export * from './token.interceptor';
|
|
20
|
-
export * from './dataManager.service';
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './snack/snack.component';
|
|
2
|
+
export * from './snack/snack.module';
|
|
3
|
+
export * from './alert.service';
|
|
4
|
+
export * from './api-prefix.interceptor';
|
|
5
|
+
export * from './authentication.guard';
|
|
6
|
+
export * from './authentication.service';
|
|
7
|
+
export * from './cache.interceptor';
|
|
8
|
+
export * from './config.service';
|
|
9
|
+
export * from './credentials.service';
|
|
10
|
+
export * from './error-handler.interceptor';
|
|
11
|
+
export * from './error-handler.service';
|
|
12
|
+
export * from './form-validator.service';
|
|
13
|
+
export * from './http-cache.service';
|
|
14
|
+
export * from './http.service';
|
|
15
|
+
export * from './logger.service';
|
|
16
|
+
export * from './route-reusable-strategy';
|
|
17
|
+
export * from './storage.service';
|
|
18
|
+
export * from './techlify-config.model';
|
|
19
|
+
export * from './token.interceptor';
|
|
20
|
+
export * from './dataManager.service';
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zbmFjay9zbmFjay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbmFjay9zbmFjay5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktcHJlZml4LmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aGVudGljYXRpb24uZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2FjaGUuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWRlbnRpYWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS12YWxpZGF0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtY2FjaGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUtcmV1c2FibGUtc3RyYXRlZ3knO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90ZWNobGlmeS1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90b2tlbi5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFNYW5hZ2VyLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simple logger system with the possibility of registering custom outputs.
|
|
3
|
-
*
|
|
4
|
-
* 4 different log levels are provided, with corresponding methods:
|
|
5
|
-
* - debug : for debug information
|
|
6
|
-
* - info : for informative status of the application (success, ...)
|
|
7
|
-
* - warning : for non-critical errors that do not prevent normal application behavior
|
|
8
|
-
* - error : for critical errors that prevent normal application behavior
|
|
9
|
-
*
|
|
10
|
-
* Example usage:
|
|
11
|
-
* ```
|
|
12
|
-
* import { Logger } from 'app/core/logger.service';
|
|
13
|
-
*
|
|
14
|
-
* const log = new Logger('myFile');
|
|
15
|
-
* ...
|
|
16
|
-
* log.debug('something happened');
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* To disable debug and info logs in production, add this snippet to your root component:
|
|
20
|
-
* ```
|
|
21
|
-
* export class AppComponent implements OnInit {
|
|
22
|
-
* ngOnInit() {
|
|
23
|
-
* if (environment.production) {
|
|
24
|
-
* Logger.enableProductionMode();
|
|
25
|
-
* }
|
|
26
|
-
* ...
|
|
27
|
-
* }
|
|
28
|
-
* }
|
|
29
|
-
*
|
|
30
|
-
* If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.
|
|
31
|
-
*/
|
|
32
|
-
/**
|
|
33
|
-
* The possible log levels.
|
|
34
|
-
* LogLevel.Off is never emitted and only used with Logger.level property to disable logs.
|
|
35
|
-
*/
|
|
36
|
-
export var LogLevel;
|
|
37
|
-
(function (LogLevel) {
|
|
38
|
-
LogLevel[LogLevel["Off"] = 0] = "Off";
|
|
39
|
-
LogLevel[LogLevel["Error"] = 1] = "Error";
|
|
40
|
-
LogLevel[LogLevel["Warning"] = 2] = "Warning";
|
|
41
|
-
LogLevel[LogLevel["Info"] = 3] = "Info";
|
|
42
|
-
LogLevel[LogLevel["Debug"] = 4] = "Debug";
|
|
43
|
-
})(LogLevel || (LogLevel = {}));
|
|
44
|
-
export class Logger {
|
|
45
|
-
constructor(source) {
|
|
46
|
-
this.source = source;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Enables production mode.
|
|
50
|
-
* Sets logging level to LogLevel.Warning.
|
|
51
|
-
*/
|
|
52
|
-
static enableProductionMode() {
|
|
53
|
-
Logger.level = LogLevel.Warning;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Logs messages or objects with the debug level.
|
|
57
|
-
* Works the same as console.log().
|
|
58
|
-
*/
|
|
59
|
-
debug(...objects) {
|
|
60
|
-
this.log(console.log, LogLevel.Debug, objects);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Logs messages or objects with the info level.
|
|
64
|
-
* Works the same as console.log().
|
|
65
|
-
*/
|
|
66
|
-
info(...objects) {
|
|
67
|
-
this.log(console.info, LogLevel.Info, objects);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Logs messages or objects with the warning level.
|
|
71
|
-
* Works the same as console.log().
|
|
72
|
-
*/
|
|
73
|
-
warn(...objects) {
|
|
74
|
-
this.log(console.warn, LogLevel.Warning, objects);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Logs messages or objects with the error level.
|
|
78
|
-
* Works the same as console.log().
|
|
79
|
-
*/
|
|
80
|
-
error(...objects) {
|
|
81
|
-
this.log(console.error, LogLevel.Error, objects);
|
|
82
|
-
}
|
|
83
|
-
log(func, level, objects) {
|
|
84
|
-
if (level <= Logger.level) {
|
|
85
|
-
const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;
|
|
86
|
-
func.apply(console, log);
|
|
87
|
-
Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Current logging level.
|
|
93
|
-
* Set it to LogLevel.Off to disable logs completely.
|
|
94
|
-
*/
|
|
95
|
-
Logger.level = LogLevel.Debug;
|
|
96
|
-
/**
|
|
97
|
-
* Additional log outputs.
|
|
98
|
-
*/
|
|
99
|
-
Logger.outputs = [];
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/**
|
|
2
|
+
* Simple logger system with the possibility of registering custom outputs.
|
|
3
|
+
*
|
|
4
|
+
* 4 different log levels are provided, with corresponding methods:
|
|
5
|
+
* - debug : for debug information
|
|
6
|
+
* - info : for informative status of the application (success, ...)
|
|
7
|
+
* - warning : for non-critical errors that do not prevent normal application behavior
|
|
8
|
+
* - error : for critical errors that prevent normal application behavior
|
|
9
|
+
*
|
|
10
|
+
* Example usage:
|
|
11
|
+
* ```
|
|
12
|
+
* import { Logger } from 'app/core/logger.service';
|
|
13
|
+
*
|
|
14
|
+
* const log = new Logger('myFile');
|
|
15
|
+
* ...
|
|
16
|
+
* log.debug('something happened');
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* To disable debug and info logs in production, add this snippet to your root component:
|
|
20
|
+
* ```
|
|
21
|
+
* export class AppComponent implements OnInit {
|
|
22
|
+
* ngOnInit() {
|
|
23
|
+
* if (environment.production) {
|
|
24
|
+
* Logger.enableProductionMode();
|
|
25
|
+
* }
|
|
26
|
+
* ...
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* The possible log levels.
|
|
34
|
+
* LogLevel.Off is never emitted and only used with Logger.level property to disable logs.
|
|
35
|
+
*/
|
|
36
|
+
export var LogLevel;
|
|
37
|
+
(function (LogLevel) {
|
|
38
|
+
LogLevel[LogLevel["Off"] = 0] = "Off";
|
|
39
|
+
LogLevel[LogLevel["Error"] = 1] = "Error";
|
|
40
|
+
LogLevel[LogLevel["Warning"] = 2] = "Warning";
|
|
41
|
+
LogLevel[LogLevel["Info"] = 3] = "Info";
|
|
42
|
+
LogLevel[LogLevel["Debug"] = 4] = "Debug";
|
|
43
|
+
})(LogLevel || (LogLevel = {}));
|
|
44
|
+
export class Logger {
|
|
45
|
+
constructor(source) {
|
|
46
|
+
this.source = source;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Enables production mode.
|
|
50
|
+
* Sets logging level to LogLevel.Warning.
|
|
51
|
+
*/
|
|
52
|
+
static enableProductionMode() {
|
|
53
|
+
Logger.level = LogLevel.Warning;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Logs messages or objects with the debug level.
|
|
57
|
+
* Works the same as console.log().
|
|
58
|
+
*/
|
|
59
|
+
debug(...objects) {
|
|
60
|
+
this.log(console.log, LogLevel.Debug, objects);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Logs messages or objects with the info level.
|
|
64
|
+
* Works the same as console.log().
|
|
65
|
+
*/
|
|
66
|
+
info(...objects) {
|
|
67
|
+
this.log(console.info, LogLevel.Info, objects);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Logs messages or objects with the warning level.
|
|
71
|
+
* Works the same as console.log().
|
|
72
|
+
*/
|
|
73
|
+
warn(...objects) {
|
|
74
|
+
this.log(console.warn, LogLevel.Warning, objects);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Logs messages or objects with the error level.
|
|
78
|
+
* Works the same as console.log().
|
|
79
|
+
*/
|
|
80
|
+
error(...objects) {
|
|
81
|
+
this.log(console.error, LogLevel.Error, objects);
|
|
82
|
+
}
|
|
83
|
+
log(func, level, objects) {
|
|
84
|
+
if (level <= Logger.level) {
|
|
85
|
+
const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;
|
|
86
|
+
func.apply(console, log);
|
|
87
|
+
Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Current logging level.
|
|
93
|
+
* Set it to LogLevel.Off to disable logs completely.
|
|
94
|
+
*/
|
|
95
|
+
Logger.level = LogLevel.Debug;
|
|
96
|
+
/**
|
|
97
|
+
* Additional log outputs.
|
|
98
|
+
*/
|
|
99
|
+
Logger.outputs = [];
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvbG9nZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIscUNBQU8sQ0FBQTtJQUNQLHlDQUFLLENBQUE7SUFDTCw2Q0FBTyxDQUFBO0lBQ1AsdUNBQUksQ0FBQTtJQUNKLHlDQUFLLENBQUE7QUFDUCxDQUFDLEVBTlcsUUFBUSxLQUFSLFFBQVEsUUFNbkI7QUFPRCxNQUFNLE9BQU8sTUFBTTtJQXFCakIsWUFBb0IsTUFBZTtRQUFmLFdBQU0sR0FBTixNQUFNLENBQVM7SUFBSSxDQUFDO0lBUnhDOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxvQkFBb0I7UUFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsR0FBRyxPQUFjO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsR0FBRyxPQUFjO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsR0FBRyxPQUFjO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsR0FBRyxPQUFjO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxHQUFHLENBQUMsSUFBOEIsRUFBRSxLQUFlLEVBQUUsT0FBYztRQUN6RSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDOUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQzs7QUEzREQ7OztHQUdHO0FBQ0ksWUFBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFFOUI7O0dBRUc7QUFDSSxjQUFPLEdBQWdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2ltcGxlIGxvZ2dlciBzeXN0ZW0gd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgcmVnaXN0ZXJpbmcgY3VzdG9tIG91dHB1dHMuXG4gKlxuICogNCBkaWZmZXJlbnQgbG9nIGxldmVscyBhcmUgcHJvdmlkZWQsIHdpdGggY29ycmVzcG9uZGluZyBtZXRob2RzOlxuICogLSBkZWJ1ZyAgIDogZm9yIGRlYnVnIGluZm9ybWF0aW9uXG4gKiAtIGluZm8gICAgOiBmb3IgaW5mb3JtYXRpdmUgc3RhdHVzIG9mIHRoZSBhcHBsaWNhdGlvbiAoc3VjY2VzcywgLi4uKVxuICogLSB3YXJuaW5nIDogZm9yIG5vbi1jcml0aWNhbCBlcnJvcnMgdGhhdCBkbyBub3QgcHJldmVudCBub3JtYWwgYXBwbGljYXRpb24gYmVoYXZpb3JcbiAqIC0gZXJyb3IgICA6IGZvciBjcml0aWNhbCBlcnJvcnMgdGhhdCBwcmV2ZW50IG5vcm1hbCBhcHBsaWNhdGlvbiBiZWhhdmlvclxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiBgYGBcbiAqIGltcG9ydCB7IExvZ2dlciB9IGZyb20gJ2FwcC9jb3JlL2xvZ2dlci5zZXJ2aWNlJztcbiAqXG4gKiBjb25zdCBsb2cgPSBuZXcgTG9nZ2VyKCdteUZpbGUnKTtcbiAqIC4uLlxuICogbG9nLmRlYnVnKCdzb21ldGhpbmcgaGFwcGVuZWQnKTtcbiAqIGBgYFxuICpcbiAqIFRvIGRpc2FibGUgZGVidWcgYW5kIGluZm8gbG9ncyBpbiBwcm9kdWN0aW9uLCBhZGQgdGhpcyBzbmlwcGV0IHRvIHlvdXIgcm9vdCBjb21wb25lbnQ6XG4gKiBgYGBcbiAqIGV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICBpZiAoZW52aXJvbm1lbnQucHJvZHVjdGlvbikge1xuICogICAgICAgTG9nZ2VyLmVuYWJsZVByb2R1Y3Rpb25Nb2RlKCk7XG4gKiAgICAgfVxuICogICAgIC4uLlxuICogICB9XG4gKiB9XG4gKlxuICogSWYgeW91IHdhbnQgdG8gcHJvY2VzcyBsb2dzIHRocm91Z2ggb3RoZXIgb3V0cHV0cyB0aGFuIGNvbnNvbGUsIHlvdSBjYW4gYWRkIExvZ091dHB1dCBmdW5jdGlvbnMgdG8gTG9nZ2VyLm91dHB1dHMuXG4gKi9cblxuLyoqXG4gKiBUaGUgcG9zc2libGUgbG9nIGxldmVscy5cbiAqIExvZ0xldmVsLk9mZiBpcyBuZXZlciBlbWl0dGVkIGFuZCBvbmx5IHVzZWQgd2l0aCBMb2dnZXIubGV2ZWwgcHJvcGVydHkgdG8gZGlzYWJsZSBsb2dzLlxuICovXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIE9mZiA9IDAsXG4gIEVycm9yLFxuICBXYXJuaW5nLFxuICBJbmZvLFxuICBEZWJ1Z1xufVxuXG4vKipcbiAqIExvZyBvdXRwdXQgaGFuZGxlciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgTG9nT3V0cHV0ID0gKHNvdXJjZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBsZXZlbDogTG9nTGV2ZWwsIC4uLm9iamVjdHM6IGFueVtdKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcblxuICAvKipcbiAgICogQ3VycmVudCBsb2dnaW5nIGxldmVsLlxuICAgKiBTZXQgaXQgdG8gTG9nTGV2ZWwuT2ZmIHRvIGRpc2FibGUgbG9ncyBjb21wbGV0ZWx5LlxuICAgKi9cbiAgc3RhdGljIGxldmVsID0gTG9nTGV2ZWwuRGVidWc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbG9nIG91dHB1dHMuXG4gICAqL1xuICBzdGF0aWMgb3V0cHV0czogTG9nT3V0cHV0W10gPSBbXTtcblxuICAvKipcbiAgICogRW5hYmxlcyBwcm9kdWN0aW9uIG1vZGUuXG4gICAqIFNldHMgbG9nZ2luZyBsZXZlbCB0byBMb2dMZXZlbC5XYXJuaW5nLlxuICAgKi9cbiAgc3RhdGljIGVuYWJsZVByb2R1Y3Rpb25Nb2RlKCkge1xuICAgIExvZ2dlci5sZXZlbCA9IExvZ0xldmVsLldhcm5pbmc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNvdXJjZT86IHN0cmluZykgeyB9XG5cbiAgLyoqXG4gICAqIExvZ3MgbWVzc2FnZXMgb3Igb2JqZWN0cyAgd2l0aCB0aGUgZGVidWcgbGV2ZWwuXG4gICAqIFdvcmtzIHRoZSBzYW1lIGFzIGNvbnNvbGUubG9nKCkuXG4gICAqL1xuICBkZWJ1ZyguLi5vYmplY3RzOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKGNvbnNvbGUubG9nLCBMb2dMZXZlbC5EZWJ1Zywgb2JqZWN0cyk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBtZXNzYWdlcyBvciBvYmplY3RzICB3aXRoIHRoZSBpbmZvIGxldmVsLlxuICAgKiBXb3JrcyB0aGUgc2FtZSBhcyBjb25zb2xlLmxvZygpLlxuICAgKi9cbiAgaW5mbyguLi5vYmplY3RzOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKGNvbnNvbGUuaW5mbywgTG9nTGV2ZWwuSW5mbywgb2JqZWN0cyk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBtZXNzYWdlcyBvciBvYmplY3RzICB3aXRoIHRoZSB3YXJuaW5nIGxldmVsLlxuICAgKiBXb3JrcyB0aGUgc2FtZSBhcyBjb25zb2xlLmxvZygpLlxuICAgKi9cbiAgd2FybiguLi5vYmplY3RzOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKGNvbnNvbGUud2FybiwgTG9nTGV2ZWwuV2FybmluZywgb2JqZWN0cyk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBtZXNzYWdlcyBvciBvYmplY3RzICB3aXRoIHRoZSBlcnJvciBsZXZlbC5cbiAgICogV29ya3MgdGhlIHNhbWUgYXMgY29uc29sZS5sb2coKS5cbiAgICovXG4gIGVycm9yKC4uLm9iamVjdHM6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coY29uc29sZS5lcnJvciwgTG9nTGV2ZWwuRXJyb3IsIG9iamVjdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2coZnVuYzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBsZXZlbDogTG9nTGV2ZWwsIG9iamVjdHM6IGFueVtdKSB7XG4gICAgaWYgKGxldmVsIDw9IExvZ2dlci5sZXZlbCkge1xuICAgICAgY29uc3QgbG9nID0gdGhpcy5zb3VyY2UgPyBbJ1snICsgdGhpcy5zb3VyY2UgKyAnXSddLmNvbmNhdChvYmplY3RzKSA6IG9iamVjdHM7XG4gICAgICBmdW5jLmFwcGx5KGNvbnNvbGUsIGxvZyk7XG4gICAgICBMb2dnZXIub3V0cHV0cy5mb3JFYWNoKG91dHB1dCA9PiBvdXRwdXQuYXBwbHkob3V0cHV0LCBbdGhpcy5zb3VyY2UsIGxldmVsLCAuLi5vYmplY3RzXSkpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { RouteReuseStrategy } from '@angular/router';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* A route strategy allowing for explicit route reuse.
|
|
6
|
-
* Used as a workaround for https://github.com/angular/angular/issues/18374
|
|
7
|
-
* To reuse a given route, add `data: { reuse: true }` to the route definition.
|
|
8
|
-
*/
|
|
9
|
-
export class RouteReusableStrategy extends RouteReuseStrategy {
|
|
10
|
-
shouldDetach(route) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
store(route, detachedTree) { }
|
|
14
|
-
shouldAttach(route) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
retrieve(route) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
shouldReuseRoute(future, curr) {
|
|
21
|
-
var _a, _b, _c;
|
|
22
|
-
// Reuse the route if the RouteConfig is the same, or if both routes use the
|
|
23
|
-
// same component, because the latter can have different RouteConfigs.
|
|
24
|
-
return future.routeConfig === curr.routeConfig ||
|
|
25
|
-
Boolean(((_a = future.routeConfig) === null || _a === void 0 ? void 0 : _a.component) &&
|
|
26
|
-
((_b = future.routeConfig) === null || _b === void 0 ? void 0 : _b.component) === ((_c = curr.routeConfig) === null || _c === void 0 ? void 0 : _c.component));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
RouteReusableStrategy.ɵprov = i0.ɵɵdefineInjectable({ factory: function RouteReusableStrategy_Factory() { return new RouteReusableStrategy(); }, token: RouteReusableStrategy, providedIn: "root" });
|
|
30
|
-
RouteReusableStrategy.decorators = [
|
|
31
|
-
{ type: Injectable, args: [{
|
|
32
|
-
providedIn: 'root'
|
|
33
|
-
},] }
|
|
34
|
-
];
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { RouteReuseStrategy } from '@angular/router';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* A route strategy allowing for explicit route reuse.
|
|
6
|
+
* Used as a workaround for https://github.com/angular/angular/issues/18374
|
|
7
|
+
* To reuse a given route, add `data: { reuse: true }` to the route definition.
|
|
8
|
+
*/
|
|
9
|
+
export class RouteReusableStrategy extends RouteReuseStrategy {
|
|
10
|
+
shouldDetach(route) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
store(route, detachedTree) { }
|
|
14
|
+
shouldAttach(route) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
retrieve(route) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
shouldReuseRoute(future, curr) {
|
|
21
|
+
var _a, _b, _c;
|
|
22
|
+
// Reuse the route if the RouteConfig is the same, or if both routes use the
|
|
23
|
+
// same component, because the latter can have different RouteConfigs.
|
|
24
|
+
return future.routeConfig === curr.routeConfig ||
|
|
25
|
+
Boolean(((_a = future.routeConfig) === null || _a === void 0 ? void 0 : _a.component) &&
|
|
26
|
+
((_b = future.routeConfig) === null || _b === void 0 ? void 0 : _b.component) === ((_c = curr.routeConfig) === null || _c === void 0 ? void 0 : _c.component));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
RouteReusableStrategy.ɵprov = i0.ɵɵdefineInjectable({ factory: function RouteReusableStrategy_Factory() { return new RouteReusableStrategy(); }, token: RouteReusableStrategy, providedIn: "root" });
|
|
30
|
+
RouteReusableStrategy.decorators = [
|
|
31
|
+
{ type: Injectable, args: [{
|
|
32
|
+
providedIn: 'root'
|
|
33
|
+
},] }
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcmV1c2FibGUtc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvcm91dGUtcmV1c2FibGUtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQyxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQWtCO0lBRXBELFlBQVksQ0FBQyxLQUE2QjtRQUMvQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBNkIsRUFBRSxZQUF3QyxJQUFVLENBQUM7SUFFeEYsWUFBWSxDQUFDLEtBQTZCO1FBQy9DLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUE2QjtRQUMzQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUE4QixFQUFFLElBQTRCOztRQUNsRiw0RUFBNEU7UUFDNUUsc0VBQXNFO1FBQ3RFLE9BQU8sTUFBTSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsV0FBVztZQUM1QyxPQUFPLENBQUMsT0FBQSxNQUFNLENBQUMsV0FBVywwQ0FBRSxTQUFTO2dCQUNuQyxPQUFBLE1BQU0sQ0FBQyxXQUFXLDBDQUFFLFNBQVMsYUFBSyxJQUFJLENBQUMsV0FBVywwQ0FBRSxTQUFTLENBQUEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Ozs7WUF6QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGV0YWNoZWRSb3V0ZUhhbmRsZSwgUm91dGVSZXVzZVN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBIHJvdXRlIHN0cmF0ZWd5IGFsbG93aW5nIGZvciBleHBsaWNpdCByb3V0ZSByZXVzZS5cbiAqIFVzZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xODM3NFxuICogVG8gcmV1c2UgYSBnaXZlbiByb3V0ZSwgYWRkIGBkYXRhOiB7IHJldXNlOiB0cnVlIH1gIHRvIHRoZSByb3V0ZSBkZWZpbml0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZVJldXNhYmxlU3RyYXRlZ3kgZXh0ZW5kcyBSb3V0ZVJldXNlU3RyYXRlZ3kge1xuXG4gIHB1YmxpYyBzaG91bGREZXRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc3RvcmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGRldGFjaGVkVHJlZTogRGV0YWNoZWRSb3V0ZUhhbmRsZSB8IG51bGwpOiB2b2lkIHsgfVxuXG4gIHB1YmxpYyBzaG91bGRBdHRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgcmV0cmlldmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBEZXRhY2hlZFJvdXRlSGFuZGxlIHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc2hvdWxkUmV1c2VSb3V0ZShmdXR1cmU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnI6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICAvLyBSZXVzZSB0aGUgcm91dGUgaWYgdGhlIFJvdXRlQ29uZmlnIGlzIHRoZSBzYW1lLCBvciBpZiBib3RoIHJvdXRlcyB1c2UgdGhlXG4gICAgLy8gc2FtZSBjb21wb25lbnQsIGJlY2F1c2UgdGhlIGxhdHRlciBjYW4gaGF2ZSBkaWZmZXJlbnQgUm91dGVDb25maWdzLlxuICAgIHJldHVybiBmdXR1cmUucm91dGVDb25maWcgPT09IGN1cnIucm91dGVDb25maWcgfHxcbiAgICAgIEJvb2xlYW4oZnV0dXJlLnJvdXRlQ29uZmlnPy5jb21wb25lbnQgJiZcbiAgICAgICAgZnV0dXJlLnJvdXRlQ29uZmlnPy5jb21wb25lbnQgPT09IGN1cnIucm91dGVDb25maWc/LmNvbXBvbmVudCk7XG4gIH1cblxufVxuIl19
|