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,40 +1,40 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
3
|
-
import { ErrorSnackComponent, SuccessSnackComponent } from './snack/snack.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/material/snack-bar";
|
|
6
|
-
/**
|
|
7
|
-
* Service used to manage alerts in the entire system frontend
|
|
8
|
-
*
|
|
9
|
-
* @author Gokula Prasanna
|
|
10
|
-
* @since 20210131
|
|
11
|
-
*/
|
|
12
|
-
export class AlertService {
|
|
13
|
-
constructor(snackBar) {
|
|
14
|
-
this.snackBar = snackBar;
|
|
15
|
-
}
|
|
16
|
-
addAlert(message, alertType, duration = 3) {
|
|
17
|
-
if (alertType == "success") {
|
|
18
|
-
this.snackBar.openFromComponent(SuccessSnackComponent, {
|
|
19
|
-
duration: 1000 * duration,
|
|
20
|
-
data: message
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
this.snackBar.openFromComponent(ErrorSnackComponent, {
|
|
25
|
-
duration: 1000 * duration,
|
|
26
|
-
data: message
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.MatSnackBar)); }, token: AlertService, providedIn: "root" });
|
|
32
|
-
AlertService.decorators = [
|
|
33
|
-
{ type: Injectable, args: [{
|
|
34
|
-
providedIn: 'root'
|
|
35
|
-
},] }
|
|
36
|
-
];
|
|
37
|
-
AlertService.ctorParameters = () => [
|
|
38
|
-
{ type: MatSnackBar }
|
|
39
|
-
];
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
3
|
+
import { ErrorSnackComponent, SuccessSnackComponent } from './snack/snack.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/snack-bar";
|
|
6
|
+
/**
|
|
7
|
+
* Service used to manage alerts in the entire system frontend
|
|
8
|
+
*
|
|
9
|
+
* @author Gokula Prasanna
|
|
10
|
+
* @since 20210131
|
|
11
|
+
*/
|
|
12
|
+
export class AlertService {
|
|
13
|
+
constructor(snackBar) {
|
|
14
|
+
this.snackBar = snackBar;
|
|
15
|
+
}
|
|
16
|
+
addAlert(message, alertType, duration = 3) {
|
|
17
|
+
if (alertType == "success") {
|
|
18
|
+
this.snackBar.openFromComponent(SuccessSnackComponent, {
|
|
19
|
+
duration: 1000 * duration,
|
|
20
|
+
data: message
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.snackBar.openFromComponent(ErrorSnackComponent, {
|
|
25
|
+
duration: 1000 * duration,
|
|
26
|
+
data: message
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.MatSnackBar)); }, token: AlertService, providedIn: "root" });
|
|
32
|
+
AlertService.decorators = [
|
|
33
|
+
{ type: Injectable, args: [{
|
|
34
|
+
providedIn: 'root'
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
AlertService.ctorParameters = () => [
|
|
38
|
+
{ type: MatSnackBar }
|
|
39
|
+
];
|
|
40
40
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9hbGVydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFFckY7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQUVyQixZQUFtQixRQUFxQjtRQUFyQixhQUFRLEdBQVIsUUFBUSxDQUFhO0lBQUksQ0FBQztJQUU3QyxRQUFRLENBQUMsT0FBZSxFQUFFLFNBQWlCLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckQsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUU7Z0JBQ25ELFFBQVEsRUFBRSxJQUFJLEdBQUcsUUFBUTtnQkFDekIsSUFBSSxFQUFFLE9BQU87YUFDaEIsQ0FBQyxDQUFDO1NBQ047YUFDSTtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ2pELFFBQVEsRUFBRSxJQUFJLEdBQUcsUUFBUTtnQkFDekIsSUFBSSxFQUFFLE9BQU87YUFDaEIsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDOzs7O1lBcEJKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBWFEsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBFcnJvclNuYWNrQ29tcG9uZW50LCBTdWNjZXNzU25hY2tDb21wb25lbnQgfSBmcm9tICcuL3NuYWNrL3NuYWNrLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogU2VydmljZSB1c2VkIHRvIG1hbmFnZSBhbGVydHMgaW4gdGhlIGVudGlyZSBzeXN0ZW0gZnJvbnRlbmRcclxuICogXHJcbiAqIEBhdXRob3IgR29rdWxhIFByYXNhbm5hXHJcbiAqIEBzaW5jZSAyMDIxMDEzMVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbGVydFNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzbmFja0JhcjogTWF0U25hY2tCYXIpIHsgfVxyXG5cclxuICAgIGFkZEFsZXJ0KG1lc3NhZ2U6IHN0cmluZywgYWxlcnRUeXBlOiBzdHJpbmcsIGR1cmF0aW9uID0gMykge1xyXG4gICAgICAgIGlmIChhbGVydFR5cGUgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChTdWNjZXNzU25hY2tDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwICogZHVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBtZXNzYWdlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChFcnJvclNuYWNrQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMTAwMCAqIGR1cmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogbWVzc2FnZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ConfigService } from './config.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./config.service";
|
|
5
|
-
/**
|
|
6
|
-
* Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.
|
|
7
|
-
*/
|
|
8
|
-
export class ApiPrefixInterceptor {
|
|
9
|
-
constructor(configService) {
|
|
10
|
-
this.configService = configService;
|
|
11
|
-
}
|
|
12
|
-
intercept(request, next) {
|
|
13
|
-
if (!/^(http|https):/i.test(request.url)) {
|
|
14
|
-
request = request.clone({ url: this.configService.getApiUrl() + request.url });
|
|
15
|
-
}
|
|
16
|
-
return next.handle(request);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
ApiPrefixInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function ApiPrefixInterceptor_Factory() { return new ApiPrefixInterceptor(i0.ɵɵinject(i1.ConfigService)); }, token: ApiPrefixInterceptor, providedIn: "root" });
|
|
20
|
-
ApiPrefixInterceptor.decorators = [
|
|
21
|
-
{ type: Injectable, args: [{
|
|
22
|
-
providedIn: 'root'
|
|
23
|
-
},] }
|
|
24
|
-
];
|
|
25
|
-
ApiPrefixInterceptor.ctorParameters = () => [
|
|
26
|
-
{ type: ConfigService }
|
|
27
|
-
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ConfigService } from './config.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./config.service";
|
|
5
|
+
/**
|
|
6
|
+
* Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.
|
|
7
|
+
*/
|
|
8
|
+
export class ApiPrefixInterceptor {
|
|
9
|
+
constructor(configService) {
|
|
10
|
+
this.configService = configService;
|
|
11
|
+
}
|
|
12
|
+
intercept(request, next) {
|
|
13
|
+
if (!/^(http|https):/i.test(request.url)) {
|
|
14
|
+
request = request.clone({ url: this.configService.getApiUrl() + request.url });
|
|
15
|
+
}
|
|
16
|
+
return next.handle(request);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
ApiPrefixInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function ApiPrefixInterceptor_Factory() { return new ApiPrefixInterceptor(i0.ɵɵinject(i1.ConfigService)); }, token: ApiPrefixInterceptor, providedIn: "root" });
|
|
20
|
+
ApiPrefixInterceptor.decorators = [
|
|
21
|
+
{ type: Injectable, args: [{
|
|
22
|
+
providedIn: 'root'
|
|
23
|
+
},] }
|
|
24
|
+
];
|
|
25
|
+
ApiPrefixInterceptor.ctorParameters = () => [
|
|
26
|
+
{ type: ConfigService }
|
|
27
|
+
];
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXByZWZpeC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9hcGktcHJlZml4LmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFFakQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUksQ0FBQztJQUVyRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QyxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Ozs7WUFaRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVBRLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuXG4vKipcbiAqIFByZWZpeGVzIGFsbCByZXF1ZXN0cyBub3Qgc3RhcnRpbmcgd2l0aCBgaHR0cFtzXWAgd2l0aCBgZW52aXJvbm1lbnQuc2VydmVyVXJsYC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBpUHJlZml4SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkgeyB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghL14oaHR0cHxodHRwcyk6L2kudGVzdChyZXF1ZXN0LnVybCkpIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHsgdXJsOiB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0QXBpVXJsKCkgKyByZXF1ZXN0LnVybCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { CredentialsService } from './credentials.service';
|
|
4
|
-
import { Logger } from './logger.service';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/router";
|
|
7
|
-
import * as i2 from "./credentials.service";
|
|
8
|
-
const log = new Logger('AuthenticationGuard');
|
|
9
|
-
export class AuthenticationGuard {
|
|
10
|
-
constructor(router, credentialsService) {
|
|
11
|
-
this.router = router;
|
|
12
|
-
this.credentialsService = credentialsService;
|
|
13
|
-
}
|
|
14
|
-
canActivate(route, state) {
|
|
15
|
-
return this.isUserAuthenticated(route, state);
|
|
16
|
-
}
|
|
17
|
-
canLoad(route, state) {
|
|
18
|
-
return this.isUserAuthenticated(route, state);
|
|
19
|
-
}
|
|
20
|
-
isUserAuthenticated(route, state) {
|
|
21
|
-
if (this.credentialsService.isAuthenticated) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
log.debug('Not authenticated, redirecting and adding redirect url...');
|
|
25
|
-
this.router.navigate(['/login'], { queryParams: { redirect: state.url }, replaceUrl: true });
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
AuthenticationGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthenticationGuard_Factory() { return new AuthenticationGuard(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.CredentialsService)); }, token: AuthenticationGuard, providedIn: "root" });
|
|
30
|
-
AuthenticationGuard.decorators = [
|
|
31
|
-
{ type: Injectable, args: [{
|
|
32
|
-
providedIn: 'root'
|
|
33
|
-
},] }
|
|
34
|
-
];
|
|
35
|
-
AuthenticationGuard.ctorParameters = () => [
|
|
36
|
-
{ type: Router },
|
|
37
|
-
{ type: CredentialsService }
|
|
38
|
-
];
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { CredentialsService } from './credentials.service';
|
|
4
|
+
import { Logger } from './logger.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
import * as i2 from "./credentials.service";
|
|
8
|
+
const log = new Logger('AuthenticationGuard');
|
|
9
|
+
export class AuthenticationGuard {
|
|
10
|
+
constructor(router, credentialsService) {
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.credentialsService = credentialsService;
|
|
13
|
+
}
|
|
14
|
+
canActivate(route, state) {
|
|
15
|
+
return this.isUserAuthenticated(route, state);
|
|
16
|
+
}
|
|
17
|
+
canLoad(route, state) {
|
|
18
|
+
return this.isUserAuthenticated(route, state);
|
|
19
|
+
}
|
|
20
|
+
isUserAuthenticated(route, state) {
|
|
21
|
+
if (this.credentialsService.isAuthenticated) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
log.debug('Not authenticated, redirecting and adding redirect url...');
|
|
25
|
+
this.router.navigate(['/login'], { queryParams: { redirect: state.url }, replaceUrl: true });
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
AuthenticationGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthenticationGuard_Factory() { return new AuthenticationGuard(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.CredentialsService)); }, token: AuthenticationGuard, providedIn: "root" });
|
|
30
|
+
AuthenticationGuard.decorators = [
|
|
31
|
+
{ type: Injectable, args: [{
|
|
32
|
+
providedIn: 'root'
|
|
33
|
+
},] }
|
|
34
|
+
];
|
|
35
|
+
AuthenticationGuard.ctorParameters = () => [
|
|
36
|
+
{ type: Router },
|
|
37
|
+
{ type: CredentialsService }
|
|
38
|
+
];
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvYXV0aGVudGljYXRpb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUE0RCxNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBSzlDLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsTUFBYyxFQUN4QixrQkFBc0M7UUFENUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN4Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUksQ0FBQztJQUVyRCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUMzRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUU7WUFDM0MsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELEdBQUcsQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7WUF4QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFSUSxNQUFNO1lBQ04sa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBDYW5BY3RpdmF0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDcmVkZW50aWFsc1NlcnZpY2UgfSBmcm9tICcuL2NyZWRlbnRpYWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuc2VydmljZSc7XG5cbmNvbnN0IGxvZyA9IG5ldyBMb2dnZXIoJ0F1dGhlbnRpY2F0aW9uR3VhcmQnKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbHNTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UpIHsgfVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVXNlckF1dGhlbnRpY2F0ZWQocm91dGUsIHN0YXRlKTtcbiAgfVxuXG4gIGNhbkxvYWQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNVc2VyQXV0aGVudGljYXRlZChyb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgaXNVc2VyQXV0aGVudGljYXRlZChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5jcmVkZW50aWFsc1NlcnZpY2UuaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBsb2cuZGVidWcoJ05vdCBhdXRoZW50aWNhdGVkLCByZWRpcmVjdGluZyBhbmQgYWRkaW5nIHJlZGlyZWN0IHVybC4uLicpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10sIHsgcXVlcnlQYXJhbXM6IHsgcmVkaXJlY3Q6IHN0YXRlLnVybCB9LCByZXBsYWNlVXJsOiB0cnVlIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { of } from 'rxjs';
|
|
4
|
-
import { concatMap } from 'rxjs/operators';
|
|
5
|
-
import { CredentialsService } from './credentials.service';
|
|
6
|
-
import { HttpService } from './http.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./credentials.service";
|
|
9
|
-
import * as i2 from "./http.service";
|
|
10
|
-
/**
|
|
11
|
-
* Provides a base for authentication workflow.
|
|
12
|
-
* The login/logout methods should be replaced with proper implementation.
|
|
13
|
-
*/
|
|
14
|
-
export class AuthenticationService {
|
|
15
|
-
constructor(credentialsService, http) {
|
|
16
|
-
this.credentialsService = credentialsService;
|
|
17
|
-
this.http = http;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Authenticates the user.
|
|
21
|
-
* @param context The login parameters.
|
|
22
|
-
* @return The user credentials.
|
|
23
|
-
*/
|
|
24
|
-
login(context) {
|
|
25
|
-
const data = {};
|
|
26
|
-
return this.http
|
|
27
|
-
.skipToken()
|
|
28
|
-
.post('oauth/token', context)
|
|
29
|
-
.pipe(concatMap((tokenInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
tokenInfo.expires_in = Date.now() + (tokenInfo.expires_in * 1000);
|
|
31
|
-
data.token = tokenInfo;
|
|
32
|
-
data.user = {};
|
|
33
|
-
this.credentialsService.setCredentials(data, context.remember);
|
|
34
|
-
const userInfo = yield this.http.get('api/user/current').toPromise();
|
|
35
|
-
data.user = userInfo === null || userInfo === void 0 ? void 0 : userInfo.user;
|
|
36
|
-
this.credentialsService.setCredentials(data, context.remember);
|
|
37
|
-
return data;
|
|
38
|
-
})));
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Logs out the user and clear credentials.
|
|
42
|
-
* @return True if the user was logged out successfully.
|
|
43
|
-
*/
|
|
44
|
-
logout() {
|
|
45
|
-
this.credentialsService.setCredentials();
|
|
46
|
-
return of(true);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
AuthenticationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthenticationService_Factory() { return new AuthenticationService(i0.ɵɵinject(i1.CredentialsService), i0.ɵɵinject(i2.HttpService)); }, token: AuthenticationService, providedIn: "root" });
|
|
50
|
-
AuthenticationService.decorators = [
|
|
51
|
-
{ type: Injectable, args: [{
|
|
52
|
-
providedIn: 'root'
|
|
53
|
-
},] }
|
|
54
|
-
];
|
|
55
|
-
AuthenticationService.ctorParameters = () => [
|
|
56
|
-
{ type: CredentialsService },
|
|
57
|
-
{ type: HttpService }
|
|
58
|
-
];
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { concatMap } from 'rxjs/operators';
|
|
5
|
+
import { CredentialsService } from './credentials.service';
|
|
6
|
+
import { HttpService } from './http.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./credentials.service";
|
|
9
|
+
import * as i2 from "./http.service";
|
|
10
|
+
/**
|
|
11
|
+
* Provides a base for authentication workflow.
|
|
12
|
+
* The login/logout methods should be replaced with proper implementation.
|
|
13
|
+
*/
|
|
14
|
+
export class AuthenticationService {
|
|
15
|
+
constructor(credentialsService, http) {
|
|
16
|
+
this.credentialsService = credentialsService;
|
|
17
|
+
this.http = http;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Authenticates the user.
|
|
21
|
+
* @param context The login parameters.
|
|
22
|
+
* @return The user credentials.
|
|
23
|
+
*/
|
|
24
|
+
login(context) {
|
|
25
|
+
const data = {};
|
|
26
|
+
return this.http
|
|
27
|
+
.skipToken()
|
|
28
|
+
.post('oauth/token', context)
|
|
29
|
+
.pipe(concatMap((tokenInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
tokenInfo.expires_in = Date.now() + (tokenInfo.expires_in * 1000);
|
|
31
|
+
data.token = tokenInfo;
|
|
32
|
+
data.user = {};
|
|
33
|
+
this.credentialsService.setCredentials(data, context.remember);
|
|
34
|
+
const userInfo = yield this.http.get('api/user/current').toPromise();
|
|
35
|
+
data.user = userInfo === null || userInfo === void 0 ? void 0 : userInfo.user;
|
|
36
|
+
this.credentialsService.setCredentials(data, context.remember);
|
|
37
|
+
return data;
|
|
38
|
+
})));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Logs out the user and clear credentials.
|
|
42
|
+
* @return True if the user was logged out successfully.
|
|
43
|
+
*/
|
|
44
|
+
logout() {
|
|
45
|
+
this.credentialsService.setCredentials();
|
|
46
|
+
return of(true);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
AuthenticationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthenticationService_Factory() { return new AuthenticationService(i0.ɵɵinject(i1.CredentialsService), i0.ɵɵinject(i2.HttpService)); }, token: AuthenticationService, providedIn: "root" });
|
|
50
|
+
AuthenticationService.decorators = [
|
|
51
|
+
{ type: Injectable, args: [{
|
|
52
|
+
providedIn: 'root'
|
|
53
|
+
},] }
|
|
54
|
+
];
|
|
55
|
+
AuthenticationService.ctorParameters = () => [
|
|
56
|
+
{ type: CredentialsService },
|
|
57
|
+
{ type: HttpService }
|
|
58
|
+
];
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUU3Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW9CLGtCQUFzQyxFQUFVLElBQWlCO1FBQWpFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUksQ0FBQztJQUUxRjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQVk7UUFDaEIsTUFBTSxJQUFJLEdBQWdCLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7YUFDNUIsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFPLFNBQWMsRUFBRSxFQUFFO1lBQ2pDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQSxDQUFDLENBQ0gsQ0FBQTtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBRUosSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Ozs7WUF2Q0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFUcUIsa0JBQWtCO1lBQy9CLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENyZWRlbnRpYWxzLCBDcmVkZW50aWFsc1NlcnZpY2UgfSBmcm9tICcuL2NyZWRlbnRpYWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBiYXNlIGZvciBhdXRoZW50aWNhdGlvbiB3b3JrZmxvdy5cbiAqIFRoZSBsb2dpbi9sb2dvdXQgbWV0aG9kcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBwcm9wZXIgaW1wbGVtZW50YXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcmVkZW50aWFsc1NlcnZpY2U6IENyZWRlbnRpYWxzU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSkgeyB9XG5cbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZXMgdGhlIHVzZXIuXG4gICAqIEBwYXJhbSBjb250ZXh0IFRoZSBsb2dpbiBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJuIFRoZSB1c2VyIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgbG9naW4oY29udGV4dDogYW55KTogT2JzZXJ2YWJsZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGRhdGEgPSA8Q3JlZGVudGlhbHM+e307XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnNraXBUb2tlbigpXG4gICAgICAucG9zdCgnb2F1dGgvdG9rZW4nLCBjb250ZXh0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcChhc3luYyAodG9rZW5JbmZvOiBhbnkpID0+IHtcbiAgICAgICAgICB0b2tlbkluZm8uZXhwaXJlc19pbiA9IERhdGUubm93KCkgKyAodG9rZW5JbmZvLmV4cGlyZXNfaW4gKiAxMDAwKTtcbiAgICAgICAgICBkYXRhLnRva2VuID0gdG9rZW5JbmZvO1xuICAgICAgICAgIGRhdGEudXNlciA9IHt9O1xuICAgICAgICAgIHRoaXMuY3JlZGVudGlhbHNTZXJ2aWNlLnNldENyZWRlbnRpYWxzKGRhdGEsIGNvbnRleHQucmVtZW1iZXIpO1xuICAgICAgICAgIGNvbnN0IHVzZXJJbmZvOiBhbnkgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KCdhcGkvdXNlci9jdXJyZW50JykudG9Qcm9taXNlKCk7XG4gICAgICAgICAgZGF0YS51c2VyID0gdXNlckluZm8/LnVzZXI7XG4gICAgICAgICAgdGhpcy5jcmVkZW50aWFsc1NlcnZpY2Uuc2V0Q3JlZGVudGlhbHMoZGF0YSwgY29udGV4dC5yZW1lbWJlcik7XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICAvKipcbiAgICogTG9ncyBvdXQgdGhlIHVzZXIgYW5kIGNsZWFyIGNyZWRlbnRpYWxzLlxuICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHVzZXIgd2FzIGxvZ2dlZCBvdXQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgbG9nb3V0KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy5jcmVkZW50aWFsc1NlcnZpY2Uuc2V0Q3JlZGVudGlhbHMoKTtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cblxufVxuIl19
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpResponse } from '@angular/common/http';
|
|
3
|
-
import { HttpCacheService } from './http-cache.service';
|
|
4
|
-
import { Observable } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./http-cache.service";
|
|
7
|
-
/**
|
|
8
|
-
* Caches HTTP requests.
|
|
9
|
-
* Use ExtendedHttpClient fluent API to configure caching for each request.
|
|
10
|
-
*/
|
|
11
|
-
export class CacheInterceptor {
|
|
12
|
-
constructor(httpCacheService) {
|
|
13
|
-
this.httpCacheService = httpCacheService;
|
|
14
|
-
this.forceUpdate = false;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Configures interceptor options
|
|
18
|
-
* @param {{update: boolean}} options If update option is enabled, forces request to be made and updates cache entry.
|
|
19
|
-
* @return {CacheInterceptor} The configured instance.
|
|
20
|
-
*/
|
|
21
|
-
configure(options) {
|
|
22
|
-
const instance = new CacheInterceptor(this.httpCacheService);
|
|
23
|
-
if (options && options.update) {
|
|
24
|
-
instance.forceUpdate = true;
|
|
25
|
-
}
|
|
26
|
-
return instance;
|
|
27
|
-
}
|
|
28
|
-
intercept(request, next) {
|
|
29
|
-
if (request.method !== 'GET') {
|
|
30
|
-
return next.handle(request);
|
|
31
|
-
}
|
|
32
|
-
return new Observable((subscriber) => {
|
|
33
|
-
const cachedData = this.forceUpdate ? null : this.httpCacheService.getCacheData(request.urlWithParams);
|
|
34
|
-
if (cachedData !== null) {
|
|
35
|
-
// Create new response to avoid side-effects
|
|
36
|
-
subscriber.next(new HttpResponse(cachedData));
|
|
37
|
-
subscriber.complete();
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
next.handle(request)
|
|
41
|
-
.subscribe(event => {
|
|
42
|
-
if (event instanceof HttpResponse) {
|
|
43
|
-
this.httpCacheService.setCacheData(request.urlWithParams, event);
|
|
44
|
-
}
|
|
45
|
-
subscriber.next(event);
|
|
46
|
-
}, error => subscriber.error(error), () => subscriber.complete());
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
CacheInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function CacheInterceptor_Factory() { return new CacheInterceptor(i0.ɵɵinject(i1.HttpCacheService)); }, token: CacheInterceptor, providedIn: "root" });
|
|
52
|
-
CacheInterceptor.decorators = [
|
|
53
|
-
{ type: Injectable, args: [{
|
|
54
|
-
providedIn: 'root'
|
|
55
|
-
},] }
|
|
56
|
-
];
|
|
57
|
-
CacheInterceptor.ctorParameters = () => [
|
|
58
|
-
{ type: HttpCacheService }
|
|
59
|
-
];
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { HttpCacheService } from './http-cache.service';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./http-cache.service";
|
|
7
|
+
/**
|
|
8
|
+
* Caches HTTP requests.
|
|
9
|
+
* Use ExtendedHttpClient fluent API to configure caching for each request.
|
|
10
|
+
*/
|
|
11
|
+
export class CacheInterceptor {
|
|
12
|
+
constructor(httpCacheService) {
|
|
13
|
+
this.httpCacheService = httpCacheService;
|
|
14
|
+
this.forceUpdate = false;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Configures interceptor options
|
|
18
|
+
* @param {{update: boolean}} options If update option is enabled, forces request to be made and updates cache entry.
|
|
19
|
+
* @return {CacheInterceptor} The configured instance.
|
|
20
|
+
*/
|
|
21
|
+
configure(options) {
|
|
22
|
+
const instance = new CacheInterceptor(this.httpCacheService);
|
|
23
|
+
if (options && options.update) {
|
|
24
|
+
instance.forceUpdate = true;
|
|
25
|
+
}
|
|
26
|
+
return instance;
|
|
27
|
+
}
|
|
28
|
+
intercept(request, next) {
|
|
29
|
+
if (request.method !== 'GET') {
|
|
30
|
+
return next.handle(request);
|
|
31
|
+
}
|
|
32
|
+
return new Observable((subscriber) => {
|
|
33
|
+
const cachedData = this.forceUpdate ? null : this.httpCacheService.getCacheData(request.urlWithParams);
|
|
34
|
+
if (cachedData !== null) {
|
|
35
|
+
// Create new response to avoid side-effects
|
|
36
|
+
subscriber.next(new HttpResponse(cachedData));
|
|
37
|
+
subscriber.complete();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
next.handle(request)
|
|
41
|
+
.subscribe(event => {
|
|
42
|
+
if (event instanceof HttpResponse) {
|
|
43
|
+
this.httpCacheService.setCacheData(request.urlWithParams, event);
|
|
44
|
+
}
|
|
45
|
+
subscriber.next(event);
|
|
46
|
+
}, error => subscriber.error(error), () => subscriber.complete());
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
CacheInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function CacheInterceptor_Factory() { return new CacheInterceptor(i0.ɵɵinject(i1.HttpCacheService)); }, token: CacheInterceptor, providedIn: "root" });
|
|
52
|
+
CacheInterceptor.decorators = [
|
|
53
|
+
{ type: Injectable, args: [{
|
|
54
|
+
providedIn: 'root'
|
|
55
|
+
},] }
|
|
56
|
+
];
|
|
57
|
+
CacheInterceptor.ctorParameters = () => [
|
|
58
|
+
{ type: HttpCacheService }
|
|
59
|
+
];
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvY2FjaGUuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXdELFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQUU5Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRjlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBRThCLENBQUM7SUFFM0Q7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxPQUFxQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDN0IsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDN0I7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0I7UUFFRCxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBc0MsRUFBRSxFQUFFO1lBQy9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkcsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO2dCQUN2Qiw0Q0FBNEM7Z0JBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsVUFBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztxQkFDakIsU0FBUyxDQUNSLEtBQUssQ0FBQyxFQUFFO29CQUNOLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTt3QkFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUNsRTtvQkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixDQUFDLEVBQ0QsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUNoQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQzVCLENBQUM7YUFDTDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztZQS9DRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVRRLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEh0dHBDYWNoZVNlcnZpY2UgfSBmcm9tICcuL2h0dHAtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQ2FjaGVzIEhUVFAgcmVxdWVzdHMuXG4gKiBVc2UgRXh0ZW5kZWRIdHRwQ2xpZW50IGZsdWVudCBBUEkgdG8gY29uZmlndXJlIGNhY2hpbmcgZm9yIGVhY2ggcmVxdWVzdC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FjaGVJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBmb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENhY2hlU2VydmljZTogSHR0cENhY2hlU2VydmljZSkgeyB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgaW50ZXJjZXB0b3Igb3B0aW9uc1xuICAgKiBAcGFyYW0ge3t1cGRhdGU6IGJvb2xlYW59fSBvcHRpb25zIElmIHVwZGF0ZSBvcHRpb24gaXMgZW5hYmxlZCwgZm9yY2VzIHJlcXVlc3QgdG8gYmUgbWFkZSBhbmQgdXBkYXRlcyBjYWNoZSBlbnRyeS5cbiAgICogQHJldHVybiB7Q2FjaGVJbnRlcmNlcHRvcn0gVGhlIGNvbmZpZ3VyZWQgaW5zdGFuY2UuXG4gICAqL1xuICBjb25maWd1cmUob3B0aW9ucz86IHsgdXBkYXRlPzogYm9vbGVhbiB9IHwgbnVsbCk6IENhY2hlSW50ZXJjZXB0b3Ige1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IENhY2hlSW50ZXJjZXB0b3IodGhpcy5odHRwQ2FjaGVTZXJ2aWNlKTtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVwZGF0ZSkge1xuICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSAnR0VUJykge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxIdHRwRXZlbnQ8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSB0aGlzLmZvcmNlVXBkYXRlID8gbnVsbCA6IHRoaXMuaHR0cENhY2hlU2VydmljZS5nZXRDYWNoZURhdGEocmVxdWVzdC51cmxXaXRoUGFyYW1zKTtcbiAgICAgIGlmIChjYWNoZWREYXRhICE9PSBudWxsKSB7XG4gICAgICAgIC8vIENyZWF0ZSBuZXcgcmVzcG9uc2UgdG8gYXZvaWQgc2lkZS1lZmZlY3RzXG4gICAgICAgIHN1YnNjcmliZXIubmV4dChuZXcgSHR0cFJlc3BvbnNlKGNhY2hlZERhdGEgYXMgT2JqZWN0KSk7XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQuaGFuZGxlKHJlcXVlc3QpXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5odHRwQ2FjaGVTZXJ2aWNlLnNldENhY2hlRGF0YShyZXF1ZXN0LnVybFdpdGhQYXJhbXMsIGV2ZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yID0+IHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpLFxuICAgICAgICAgICAgKCkgPT4gc3Vic2NyaWJlci5jb21wbGV0ZSgpXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { TechlifyConfig } from "./techlify-config.model";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./techlify-config.model";
|
|
5
|
-
/**
|
|
6
|
-
* Service that provides settings for all other services
|
|
7
|
-
*
|
|
8
|
-
* @author Joshua Kissoon
|
|
9
|
-
* @since 20170709
|
|
10
|
-
*/
|
|
11
|
-
export class ConfigService {
|
|
12
|
-
constructor(config) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
}
|
|
15
|
-
getConfigsRaw() {
|
|
16
|
-
return this.config.rawConfigs;
|
|
17
|
-
}
|
|
18
|
-
getProjectKey() {
|
|
19
|
-
return this.config.projectKey;
|
|
20
|
-
}
|
|
21
|
-
getApiUrl() {
|
|
22
|
-
return this.config.apiUrl;
|
|
23
|
-
}
|
|
24
|
-
getAuthClientSecret() {
|
|
25
|
-
return this.config.authClientSecret;
|
|
26
|
-
}
|
|
27
|
-
getStorage() {
|
|
28
|
-
return this.config.storage ? this.config.storage : localStorage;
|
|
29
|
-
}
|
|
30
|
-
getAuthGrantType() {
|
|
31
|
-
return this.config.authGrantType;
|
|
32
|
-
}
|
|
33
|
-
getCredentialsKey() {
|
|
34
|
-
return this.config.projectKey + "_" + ConfigService.BASE_CREDENTIALS;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
ConfigService.BASE_CREDENTIALS = "credentials";
|
|
38
|
-
ConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1.TechlifyConfig)); }, token: ConfigService, providedIn: "root" });
|
|
39
|
-
ConfigService.decorators = [
|
|
40
|
-
{ type: Injectable, args: [{
|
|
41
|
-
providedIn: 'root'
|
|
42
|
-
},] }
|
|
43
|
-
];
|
|
44
|
-
ConfigService.ctorParameters = () => [
|
|
45
|
-
{ type: TechlifyConfig }
|
|
46
|
-
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TechlifyConfig } from "./techlify-config.model";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./techlify-config.model";
|
|
5
|
+
/**
|
|
6
|
+
* Service that provides settings for all other services
|
|
7
|
+
*
|
|
8
|
+
* @author Joshua Kissoon
|
|
9
|
+
* @since 20170709
|
|
10
|
+
*/
|
|
11
|
+
export class ConfigService {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
getConfigsRaw() {
|
|
16
|
+
return this.config.rawConfigs;
|
|
17
|
+
}
|
|
18
|
+
getProjectKey() {
|
|
19
|
+
return this.config.projectKey;
|
|
20
|
+
}
|
|
21
|
+
getApiUrl() {
|
|
22
|
+
return this.config.apiUrl;
|
|
23
|
+
}
|
|
24
|
+
getAuthClientSecret() {
|
|
25
|
+
return this.config.authClientSecret;
|
|
26
|
+
}
|
|
27
|
+
getStorage() {
|
|
28
|
+
return this.config.storage ? this.config.storage : localStorage;
|
|
29
|
+
}
|
|
30
|
+
getAuthGrantType() {
|
|
31
|
+
return this.config.authGrantType;
|
|
32
|
+
}
|
|
33
|
+
getCredentialsKey() {
|
|
34
|
+
return this.config.projectKey + "_" + ConfigService.BASE_CREDENTIALS;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ConfigService.BASE_CREDENTIALS = "credentials";
|
|
38
|
+
ConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1.TechlifyConfig)); }, token: ConfigService, providedIn: "root" });
|
|
39
|
+
ConfigService.decorators = [
|
|
40
|
+
{ type: Injectable, args: [{
|
|
41
|
+
providedIn: 'root'
|
|
42
|
+
},] }
|
|
43
|
+
];
|
|
44
|
+
ConfigService.ctorParameters = () => [
|
|
45
|
+
{ type: TechlifyConfig }
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUV6RDs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQVksTUFBc0I7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDdEMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7SUFDdkUsQ0FBQzs7QUFsQ2EsOEJBQWdCLEdBQUcsYUFBYSxDQUFDOzs7WUFMaEQsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFWUSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUZWNobGlmeUNvbmZpZyB9IGZyb20gXCIuL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbFwiO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBwcm92aWRlcyBzZXR0aW5ncyBmb3IgYWxsIG90aGVyIHNlcnZpY2VzXG4gKlxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxuICogQHNpbmNlIDIwMTcwNzA5XG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ1NlcnZpY2Uge1xuXG4gIHB1YmxpYyBzdGF0aWMgQkFTRV9DUkVERU5USUFMUyA9IFwiY3JlZGVudGlhbHNcIjtcblxuICBwcml2YXRlIGNvbmZpZzogVGVjaGxpZnlDb25maWc7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBUZWNobGlmeUNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnc1JhdygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmF3Q29uZmlncztcbiAgfVxuXG4gIGdldFByb2plY3RLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnByb2plY3RLZXk7XG4gIH1cblxuICBnZXRBcGlVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFwaVVybDtcbiAgfVxuXG4gIGdldEF1dGhDbGllbnRTZWNyZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmF1dGhDbGllbnRTZWNyZXQ7XG4gIH1cblxuICBnZXRTdG9yYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5zdG9yYWdlID8gdGhpcy5jb25maWcuc3RvcmFnZSA6IGxvY2FsU3RvcmFnZTtcbiAgfVxuXG4gIGdldEF1dGhHcmFudFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmF1dGhHcmFudFR5cGU7XG4gIH1cblxuICBnZXRDcmVkZW50aWFsc0tleSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucHJvamVjdEtleSArIFwiX1wiICsgQ29uZmlnU2VydmljZS5CQVNFX0NSRURFTlRJQUxTO1xuICB9XG5cbn1cbiJdfQ==
|