@stemy/ngx-utils 13.6.16 → 17.0.0
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/esm2022/ngx-utils/common-types.mjs +123 -0
- package/esm2022/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +210 -0
- package/esm2022/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +101 -0
- package/esm2022/ngx-utils/components/unordered-list/unordered-list.component.mjs +65 -0
- package/esm2022/ngx-utils/directives/async-method.base.mjs +82 -0
- package/{esm2020 → esm2022}/ngx-utils/directives/async-method.directive.mjs +21 -21
- package/esm2022/ngx-utils/directives/background.directive.mjs +51 -0
- package/{esm2020 → esm2022}/ngx-utils/directives/dynamic-table-template.directive.mjs +20 -20
- package/{esm2020 → esm2022}/ngx-utils/directives/global-template.directive.mjs +30 -30
- package/esm2022/ngx-utils/directives/icon.directive.mjs +67 -0
- package/esm2022/ngx-utils/directives/ngx-template-outlet.directive.mjs +90 -0
- package/{esm2020 → esm2022}/ngx-utils/directives/pagination-item.directive.mjs +34 -34
- package/esm2022/ngx-utils/directives/pagination.directive.mjs +84 -0
- package/esm2022/ngx-utils/directives/resource-if.directive.mjs +50 -0
- package/esm2022/ngx-utils/directives/sticky-class.directive.mjs +34 -0
- package/{esm2020 → esm2022}/ngx-utils/directives/sticky.directive.mjs +55 -55
- package/{esm2020 → esm2022}/ngx-utils/directives/unordered-list-item.directive.mjs +79 -79
- package/{esm2020 → esm2022}/ngx-utils/directives/unordered-list-template.directive.mjs +20 -20
- package/{esm2020 → esm2022}/ngx-utils/ngx-utils.imports.mjs +174 -174
- package/esm2022/ngx-utils/ngx-utils.module.mjs +202 -0
- package/esm2022/ngx-utils/pipes/chunk.pipe.mjs +25 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/entries.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/ngx-utils/pipes/extra-item-properties.pipe.mjs +31 -31
- package/esm2022/ngx-utils/pipes/filter.pipe.mjs +37 -0
- package/esm2022/ngx-utils/pipes/find.pipe.mjs +29 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/format-number.pipe.mjs +21 -21
- package/{esm2020 → esm2022}/ngx-utils/pipes/get-offset.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/ngx-utils/pipes/get-type.pipe.mjs +16 -16
- package/esm2022/ngx-utils/pipes/global-template.pipe.mjs +41 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/group-by.pipe.mjs +27 -27
- package/{esm2020 → esm2022}/ngx-utils/pipes/is-type.pipe.mjs +16 -16
- package/{esm2020 → esm2022}/ngx-utils/pipes/join.pipe.mjs +19 -19
- package/{esm2020 → esm2022}/ngx-utils/pipes/keys.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/ngx-utils/pipes/map.pipe.mjs +29 -29
- package/{esm2020 → esm2022}/ngx-utils/pipes/max.pipe.mjs +26 -26
- package/{esm2020 → esm2022}/ngx-utils/pipes/min.pipe.mjs +26 -26
- package/{esm2020 → esm2022}/ngx-utils/pipes/pop.pipe.mjs +16 -16
- package/{esm2020 → esm2022}/ngx-utils/pipes/reduce.pipe.mjs +30 -30
- package/esm2022/ngx-utils/pipes/remap.pipe.mjs +32 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/replace.pipe.mjs +17 -17
- package/esm2022/ngx-utils/pipes/reverse.pipe.mjs +24 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/round.pipe.mjs +21 -21
- package/esm2022/ngx-utils/pipes/safe-html.pipe.mjs +34 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/shift.pipe.mjs +16 -16
- package/{esm2020 → esm2022}/ngx-utils/pipes/split.pipe.mjs +16 -16
- package/esm2022/ngx-utils/pipes/translate.pipe.mjs +86 -0
- package/{esm2020 → esm2022}/ngx-utils/pipes/values.pipe.mjs +22 -22
- package/esm2022/ngx-utils/plugins/resize-event.plugin.mjs +78 -0
- package/esm2022/ngx-utils/plugins/scroll-event.plugin.mjs +39 -0
- package/{esm2020 → esm2022}/ngx-utils/services/acl.service.mjs +84 -83
- package/esm2022/ngx-utils/services/api.service.mjs +42 -0
- package/{esm2020 → esm2022}/ngx-utils/services/auth.service.mjs +13 -13
- package/esm2022/ngx-utils/services/base-http.client.mjs +47 -0
- package/esm2022/ngx-utils/services/base-http.service.mjs +305 -0
- package/esm2022/ngx-utils/services/config.service.mjs +130 -0
- package/esm2022/ngx-utils/services/error-handler.service.mjs +49 -0
- package/{esm2020 → esm2022}/ngx-utils/services/events.service.mjs +26 -26
- package/{esm2020 → esm2022}/ngx-utils/services/formatter.service.mjs +49 -49
- package/esm2022/ngx-utils/services/global-template.service.mjs +37 -0
- package/esm2022/ngx-utils/services/icon.service.mjs +26 -0
- package/esm2022/ngx-utils/services/language.service.mjs +124 -0
- package/{esm2020 → esm2022}/ngx-utils/services/local-http.service.mjs +47 -47
- package/{esm2020 → esm2022}/ngx-utils/services/open-api.service.mjs +40 -40
- package/{esm2020 → esm2022}/ngx-utils/services/promise.service.mjs +55 -55
- package/esm2022/ngx-utils/services/state.service.mjs +177 -0
- package/{esm2020 → esm2022}/ngx-utils/services/static-language.service.mjs +166 -166
- package/esm2022/ngx-utils/services/storage.service.mjs +49 -0
- package/{esm2020 → esm2022}/ngx-utils/services/toaster.service.mjs +32 -32
- package/esm2022/ngx-utils/services/translated-url.serializer.mjs +73 -0
- package/esm2022/ngx-utils/services/universal.service.mjs +81 -0
- package/{esm2020 → esm2022}/ngx-utils/services/wasm.service.mjs +46 -46
- package/esm2022/ngx-utils/utils/ajax-request-handler.mjs +40 -0
- package/esm2022/ngx-utils/utils/array.utils.mjs +107 -0
- package/esm2022/ngx-utils/utils/auth.guard.mjs +181 -0
- package/esm2022/ngx-utils/utils/cached-factory.mjs +30 -0
- package/esm2022/ngx-utils/utils/canvas.utils.mjs +388 -0
- package/esm2022/ngx-utils/utils/date.utils.mjs +29 -0
- package/{esm2020 → esm2022}/ngx-utils/utils/file-system.mjs +24 -24
- package/esm2022/ngx-utils/utils/file.utils.mjs +90 -0
- package/{esm2020 → esm2022}/ngx-utils/utils/generic-value.mjs +20 -20
- package/esm2022/ngx-utils/utils/geometry.mjs +132 -0
- package/{esm2020 → esm2022}/ngx-utils/utils/initializer.mjs +20 -20
- package/esm2022/ngx-utils/utils/jsonfn.mjs +45 -0
- package/esm2022/ngx-utils/utils/loader.utils.mjs +55 -0
- package/esm2022/ngx-utils/utils/math.utils.mjs +44 -0
- package/esm2022/ngx-utils/utils/object.utils.mjs +320 -0
- package/{esm2020 → esm2022}/ngx-utils/utils/observable.utils.mjs +63 -63
- package/esm2022/ngx-utils/utils/reflect.utils.mjs +33 -0
- package/esm2022/ngx-utils/utils/set.utils.mjs +20 -0
- package/esm2022/ngx-utils/utils/string.utils.mjs +41 -0
- package/{esm2020 → esm2022}/ngx-utils/utils/timer.utils.mjs +51 -51
- package/esm2022/ngx-utils/utils/unique.utils.mjs +24 -0
- package/esm2022/ngx-utils/utils/vector.mjs +77 -0
- package/esm2022/ngx-utils/utils/wasi.mjs +159 -0
- package/esm2022/ngx-utils/utils/wasm-worker-proxy.mjs +99 -0
- package/{esm2020 → esm2022}/ngx-utils/utils/with-options-provider.mjs +23 -23
- package/{esm2020 → esm2022}/public_api.mjs +94 -94
- package/{esm2020 → esm2022}/stemy-ngx-utils.mjs +4 -4
- package/esm2022/tools/config.mjs +71 -0
- package/{esm2020 → esm2022}/tools/public_api.mjs +1 -1
- package/{esm2020 → esm2022}/tools/stemy-ngx-utils-tools.mjs +4 -4
- package/{fesm2020 → fesm2022}/stemy-ngx-utils-tools.mjs +71 -71
- package/{fesm2015 → fesm2022}/stemy-ngx-utils-tools.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/stemy-ngx-utils.mjs +5639 -5633
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -0
- package/{stemy-ngx-utils.d.ts → index.d.ts} +5 -5
- package/ng.mjs +5 -0
- package/ngx-utils/common-types.d.ts +378 -377
- package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +56 -55
- package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +31 -31
- package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +25 -25
- package/ngx-utils/directives/async-method.base.d.ts +19 -19
- package/ngx-utils/directives/async-method.directive.d.ts +9 -9
- package/ngx-utils/directives/background.directive.d.ts +17 -17
- package/ngx-utils/directives/dynamic-table-template.directive.d.ts +11 -11
- package/ngx-utils/directives/global-template.directive.d.ts +13 -13
- package/ngx-utils/directives/icon.directive.d.ts +23 -23
- package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +17 -17
- package/ngx-utils/directives/pagination-item.directive.d.ts +15 -15
- package/ngx-utils/directives/pagination.directive.d.ts +25 -25
- package/ngx-utils/directives/resource-if.directive.d.ts +19 -19
- package/ngx-utils/directives/sticky-class.directive.d.ts +15 -15
- package/ngx-utils/directives/sticky.directive.d.ts +19 -19
- package/ngx-utils/directives/unordered-list-item.directive.d.ts +28 -28
- package/ngx-utils/directives/unordered-list-template.directive.d.ts +11 -11
- package/ngx-utils/ngx-utils.imports.d.ts +74 -0
- package/ngx-utils/ngx-utils.module.d.ts +58 -58
- package/ngx-utils/pipes/chunk.pipe.d.ts +7 -7
- package/ngx-utils/pipes/entries.pipe.d.ts +12 -12
- package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +8 -8
- package/ngx-utils/pipes/filter.pipe.d.ts +8 -8
- package/ngx-utils/pipes/find.pipe.d.ts +8 -8
- package/ngx-utils/pipes/format-number.pipe.d.ts +10 -10
- package/ngx-utils/pipes/get-offset.pipe.d.ts +7 -7
- package/ngx-utils/pipes/get-type.pipe.d.ts +7 -7
- package/ngx-utils/pipes/global-template.pipe.d.ts +16 -16
- package/ngx-utils/pipes/group-by.pipe.d.ts +8 -8
- package/ngx-utils/pipes/is-type.pipe.d.ts +7 -7
- package/ngx-utils/pipes/join.pipe.d.ts +7 -7
- package/ngx-utils/pipes/keys.pipe.d.ts +7 -7
- package/ngx-utils/pipes/map.pipe.d.ts +8 -8
- package/ngx-utils/pipes/max.pipe.d.ts +7 -7
- package/ngx-utils/pipes/min.pipe.d.ts +7 -7
- package/ngx-utils/pipes/pop.pipe.d.ts +7 -7
- package/ngx-utils/pipes/reduce.pipe.d.ts +8 -8
- package/ngx-utils/pipes/remap.pipe.d.ts +7 -7
- package/ngx-utils/pipes/replace.pipe.d.ts +7 -7
- package/ngx-utils/pipes/reverse.pipe.d.ts +7 -7
- package/ngx-utils/pipes/round.pipe.d.ts +10 -10
- package/ngx-utils/pipes/safe-html.pipe.d.ts +10 -10
- package/ngx-utils/pipes/shift.pipe.d.ts +7 -7
- package/ngx-utils/pipes/split.pipe.d.ts +7 -7
- package/ngx-utils/pipes/translate.pipe.d.ts +19 -19
- package/ngx-utils/pipes/values.pipe.d.ts +7 -7
- package/ngx-utils/plugins/resize-event.plugin.d.ts +17 -17
- package/ngx-utils/plugins/scroll-event.plugin.d.ts +13 -13
- package/ngx-utils/services/acl.service.d.ts +14 -14
- package/ngx-utils/services/api.service.d.ts +17 -17
- package/ngx-utils/services/auth.service.d.ts +8 -8
- package/ngx-utils/services/base-http.client.d.ts +15 -15
- package/ngx-utils/services/base-http.service.d.ts +53 -53
- package/ngx-utils/services/config.service.d.ts +30 -30
- package/ngx-utils/services/error-handler.service.d.ts +13 -13
- package/ngx-utils/services/events.service.d.ts +14 -14
- package/ngx-utils/services/formatter.service.d.ts +15 -15
- package/ngx-utils/services/global-template.service.d.ts +19 -19
- package/ngx-utils/services/icon.service.d.ts +13 -13
- package/ngx-utils/services/language.service.d.ts +21 -21
- package/ngx-utils/services/local-http.service.d.ts +14 -14
- package/ngx-utils/services/open-api.service.d.ts +11 -11
- package/ngx-utils/services/promise.service.d.ts +19 -19
- package/ngx-utils/services/state.service.d.ts +49 -49
- package/ngx-utils/services/static-language.service.d.ts +46 -46
- package/ngx-utils/services/storage.service.d.ts +15 -15
- package/ngx-utils/services/toaster.service.d.ts +13 -13
- package/ngx-utils/services/translated-url.serializer.d.ts +19 -19
- package/ngx-utils/services/universal.service.d.ts +28 -28
- package/ngx-utils/services/wasm.service.d.ts +25 -25
- package/ngx-utils/utils/ajax-request-handler.d.ts +11 -11
- package/ngx-utils/utils/array.utils.d.ts +11 -11
- package/ngx-utils/utils/auth.guard.d.ts +29 -29
- package/ngx-utils/utils/cached-factory.d.ts +2 -2
- package/ngx-utils/utils/canvas.utils.d.ts +13 -13
- package/ngx-utils/utils/date.utils.d.ts +8 -8
- package/ngx-utils/utils/file-system.d.ts +16 -16
- package/ngx-utils/utils/file.utils.d.ts +14 -14
- package/ngx-utils/utils/generic-value.d.ts +8 -8
- package/ngx-utils/utils/geometry.d.ts +50 -50
- package/ngx-utils/utils/initializer.d.ts +12 -12
- package/ngx-utils/utils/jsonfn.d.ts +6 -6
- package/ngx-utils/utils/loader.utils.d.ts +7 -7
- package/ngx-utils/utils/math.utils.d.ts +8 -8
- package/ngx-utils/utils/object.utils.d.ts +35 -35
- package/ngx-utils/utils/observable.utils.d.ts +13 -13
- package/ngx-utils/utils/reflect.utils.d.ts +9 -9
- package/ngx-utils/utils/set.utils.d.ts +4 -4
- package/ngx-utils/utils/string.utils.d.ts +9 -9
- package/ngx-utils/utils/timer.utils.d.ts +6 -6
- package/ngx-utils/utils/unique.utils.d.ts +5 -5
- package/ngx-utils/utils/vector.d.ts +23 -23
- package/ngx-utils/utils/wasi.d.ts +26 -26
- package/ngx-utils/utils/wasm-worker-proxy.d.ts +17 -17
- package/ngx-utils/utils/with-options-provider.d.ts +3 -3
- package/package.json +21 -29
- package/public_api.d.ts +93 -93
- package/tools/config.d.ts +7 -7
- package/tools/{stemy-ngx-utils-tools.d.ts → index.d.ts} +5 -5
- package/tools/public_api.d.ts +1 -1
- package/esm2020/ngx-utils/common-types.mjs +0 -123
- package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +0 -207
- package/esm2020/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +0 -101
- package/esm2020/ngx-utils/components/unordered-list/unordered-list.component.mjs +0 -65
- package/esm2020/ngx-utils/directives/async-method.base.mjs +0 -82
- package/esm2020/ngx-utils/directives/background.directive.mjs +0 -51
- package/esm2020/ngx-utils/directives/icon.directive.mjs +0 -67
- package/esm2020/ngx-utils/directives/ngx-template-outlet.directive.mjs +0 -90
- package/esm2020/ngx-utils/directives/pagination.directive.mjs +0 -84
- package/esm2020/ngx-utils/directives/resource-if.directive.mjs +0 -50
- package/esm2020/ngx-utils/directives/sticky-class.directive.mjs +0 -34
- package/esm2020/ngx-utils/ngx-utils.module.mjs +0 -204
- package/esm2020/ngx-utils/pipes/chunk.pipe.mjs +0 -25
- package/esm2020/ngx-utils/pipes/filter.pipe.mjs +0 -37
- package/esm2020/ngx-utils/pipes/find.pipe.mjs +0 -29
- package/esm2020/ngx-utils/pipes/global-template.pipe.mjs +0 -41
- package/esm2020/ngx-utils/pipes/remap.pipe.mjs +0 -32
- package/esm2020/ngx-utils/pipes/reverse.pipe.mjs +0 -24
- package/esm2020/ngx-utils/pipes/safe-html.pipe.mjs +0 -34
- package/esm2020/ngx-utils/pipes/translate.pipe.mjs +0 -86
- package/esm2020/ngx-utils/plugins/resize-event.plugin.mjs +0 -78
- package/esm2020/ngx-utils/plugins/scroll-event.plugin.mjs +0 -39
- package/esm2020/ngx-utils/services/api.service.mjs +0 -42
- package/esm2020/ngx-utils/services/base-http.client.mjs +0 -47
- package/esm2020/ngx-utils/services/base-http.service.mjs +0 -305
- package/esm2020/ngx-utils/services/config.service.mjs +0 -130
- package/esm2020/ngx-utils/services/error-handler.service.mjs +0 -49
- package/esm2020/ngx-utils/services/global-template.service.mjs +0 -37
- package/esm2020/ngx-utils/services/icon.service.mjs +0 -26
- package/esm2020/ngx-utils/services/language.service.mjs +0 -124
- package/esm2020/ngx-utils/services/state.service.mjs +0 -173
- package/esm2020/ngx-utils/services/storage.service.mjs +0 -49
- package/esm2020/ngx-utils/services/translated-url.serializer.mjs +0 -73
- package/esm2020/ngx-utils/services/universal.service.mjs +0 -81
- package/esm2020/ngx-utils/utils/ajax-request-handler.mjs +0 -40
- package/esm2020/ngx-utils/utils/array.utils.mjs +0 -107
- package/esm2020/ngx-utils/utils/auth.guard.mjs +0 -181
- package/esm2020/ngx-utils/utils/cached-factory.mjs +0 -30
- package/esm2020/ngx-utils/utils/canvas.utils.mjs +0 -388
- package/esm2020/ngx-utils/utils/date.utils.mjs +0 -29
- package/esm2020/ngx-utils/utils/file.utils.mjs +0 -90
- package/esm2020/ngx-utils/utils/geometry.mjs +0 -132
- package/esm2020/ngx-utils/utils/jsonfn.mjs +0 -45
- package/esm2020/ngx-utils/utils/loader.utils.mjs +0 -55
- package/esm2020/ngx-utils/utils/math.utils.mjs +0 -44
- package/esm2020/ngx-utils/utils/object.utils.mjs +0 -320
- package/esm2020/ngx-utils/utils/reflect.utils.mjs +0 -33
- package/esm2020/ngx-utils/utils/set.utils.mjs +0 -20
- package/esm2020/ngx-utils/utils/string.utils.mjs +0 -41
- package/esm2020/ngx-utils/utils/unique.utils.mjs +0 -24
- package/esm2020/ngx-utils/utils/vector.mjs +0 -77
- package/esm2020/ngx-utils/utils/wasi.mjs +0 -159
- package/esm2020/ngx-utils/utils/wasm-worker-proxy.mjs +0 -99
- package/esm2020/tools/config.mjs +0 -71
- package/fesm2015/stemy-ngx-utils-tools.mjs +0 -77
- package/fesm2015/stemy-ngx-utils.mjs +0 -5891
- package/fesm2015/stemy-ngx-utils.mjs.map +0 -1
- package/fesm2020/stemy-ngx-utils-tools.mjs.map +0 -1
- package/fesm2020/stemy-ngx-utils.mjs.map +0 -1
- package/tools/package.json +0 -10
|
@@ -1,83 +1,84 @@
|
|
|
1
|
-
import { Inject, Injectable, Injector } from "@angular/core";
|
|
2
|
-
import { StateService } from "./state.service";
|
|
3
|
-
import { AUTH_SERVICE } from "../common-types";
|
|
4
|
-
import { ObjectUtils } from "../utils/object.utils";
|
|
5
|
-
import { AuthGuard } from "../utils/auth.guard";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./state.service";
|
|
8
|
-
const emptyGuards = [];
|
|
9
|
-
export class AclService {
|
|
10
|
-
constructor(injector, state, auth) {
|
|
11
|
-
this.injector = injector;
|
|
12
|
-
this.state = state;
|
|
13
|
-
this.auth = auth;
|
|
14
|
-
this.components = [];
|
|
15
|
-
this.auth.userChanged.subscribe(() => {
|
|
16
|
-
this.components.forEach(t => t.dirty = true);
|
|
17
|
-
const info = this.getStateInfo();
|
|
18
|
-
const check = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);
|
|
19
|
-
check.then(result => {
|
|
20
|
-
if (result) {
|
|
21
|
-
if (!info || !info.dirty)
|
|
22
|
-
return;
|
|
23
|
-
info.dirty = false;
|
|
24
|
-
const component = info.component;
|
|
25
|
-
if (!info.component)
|
|
26
|
-
return;
|
|
27
|
-
if (info.first) {
|
|
28
|
-
if (ObjectUtils.isFunction(component.onUserInitialized)) {
|
|
29
|
-
component.onUserInitialized();
|
|
30
|
-
}
|
|
31
|
-
info.first = false;
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
if (ObjectUtils.isFunction(component.onUserChanged)) {
|
|
35
|
-
component.onUserChanged();
|
|
36
|
-
}
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
info.guard.getReturnState(info.route).then(returnState => {
|
|
40
|
-
if (!returnState)
|
|
41
|
-
return;
|
|
42
|
-
this.state.navigate(returnState);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
this.state.subscribe(() => {
|
|
47
|
-
const info = this.getStateInfo();
|
|
48
|
-
if (!info?.component)
|
|
49
|
-
return;
|
|
50
|
-
const component = info.component;
|
|
51
|
-
if (ObjectUtils.isFunction(component.onUserInitialized)) {
|
|
52
|
-
component.onUserInitialized();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
1
|
+
import { Inject, Injectable, Injector } from "@angular/core";
|
|
2
|
+
import { StateService } from "./state.service";
|
|
3
|
+
import { AUTH_SERVICE } from "../common-types";
|
|
4
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
5
|
+
import { AuthGuard } from "../utils/auth.guard";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./state.service";
|
|
8
|
+
const emptyGuards = [];
|
|
9
|
+
export class AclService {
|
|
10
|
+
constructor(injector, state, auth) {
|
|
11
|
+
this.injector = injector;
|
|
12
|
+
this.state = state;
|
|
13
|
+
this.auth = auth;
|
|
14
|
+
this.components = [];
|
|
15
|
+
this.auth.userChanged.subscribe(() => {
|
|
16
|
+
this.components.forEach(t => t.dirty = true);
|
|
17
|
+
const info = this.getStateInfo();
|
|
18
|
+
const check = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);
|
|
19
|
+
check.then(result => {
|
|
20
|
+
if (result) {
|
|
21
|
+
if (!info || !info.dirty)
|
|
22
|
+
return;
|
|
23
|
+
info.dirty = false;
|
|
24
|
+
const component = info.component;
|
|
25
|
+
if (!info.component)
|
|
26
|
+
return;
|
|
27
|
+
if (info.first) {
|
|
28
|
+
if (ObjectUtils.isFunction(component.onUserInitialized)) {
|
|
29
|
+
component.onUserInitialized();
|
|
30
|
+
}
|
|
31
|
+
info.first = false;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (ObjectUtils.isFunction(component.onUserChanged)) {
|
|
35
|
+
component.onUserChanged();
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
info.guard.getReturnState(info.route).then(returnState => {
|
|
40
|
+
if (!returnState)
|
|
41
|
+
return;
|
|
42
|
+
this.state.navigate(returnState);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
this.state.subscribe(() => {
|
|
47
|
+
const info = this.getStateInfo();
|
|
48
|
+
if (!info?.component)
|
|
49
|
+
return;
|
|
50
|
+
const component = info.component;
|
|
51
|
+
if (ObjectUtils.isFunction(component.onUserInitialized)) {
|
|
52
|
+
component.onUserInitialized();
|
|
53
|
+
}
|
|
54
|
+
info.first = false;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
getStateInfo() {
|
|
58
|
+
const route = this.state.route;
|
|
59
|
+
if (!route)
|
|
60
|
+
return null;
|
|
61
|
+
let info = this.components.find(t => t.route == this.state.route);
|
|
62
|
+
if (!info) {
|
|
63
|
+
const guardType = (route.canActivate || emptyGuards)[0];
|
|
64
|
+
info = {
|
|
65
|
+
route: this.state.route,
|
|
66
|
+
guard: guardType ? this.injector.get(guardType) : null,
|
|
67
|
+
dirty: true,
|
|
68
|
+
first: true
|
|
69
|
+
};
|
|
70
|
+
this.components.push(info);
|
|
71
|
+
}
|
|
72
|
+
info.component = this.state.component;
|
|
73
|
+
return info;
|
|
74
|
+
}
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AclService, deps: [{ token: i0.Injector }, { token: i1.StateService }, { token: AUTH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
76
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AclService }); }
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AclService, decorators: [{
|
|
79
|
+
type: Injectable
|
|
80
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.StateService }, { type: undefined, decorators: [{
|
|
81
|
+
type: Inject,
|
|
82
|
+
args: [AUTH_SERVICE]
|
|
83
|
+
}] }] });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2FjbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBK0MsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFDO0FBRzlCLE1BQU0sT0FBTyxVQUFVO0lBSW5CLFlBQXFCLFFBQWtCLEVBQVcsS0FBbUIsRUFBaUMsSUFBa0I7UUFBbkcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFXLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBaUMsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNwSCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLEdBQXFCLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxZQUFZLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO3dCQUFFLE9BQU87b0JBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNuQixNQUFNLFNBQVMsR0FBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO3dCQUFFLE9BQU87b0JBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNiLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDOzRCQUN0RCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDbEMsQ0FBQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzt3QkFDbkIsT0FBTztvQkFDWCxDQUFDO29CQUNELElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzt3QkFDbEQsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM5QixDQUFDO29CQUNELE9BQU87Z0JBQ1gsQ0FBQztnQkFDQSxJQUFJLENBQUMsS0FBbUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDcEUsSUFBSSxDQUFDLFdBQVc7d0JBQUUsT0FBTztvQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTO2dCQUFFLE9BQU87WUFDN0IsTUFBTSxTQUFTLEdBQWtCLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEQsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxZQUFZO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsTUFBTSxTQUFTLEdBQW9CLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxJQUFJLEdBQUc7Z0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFDdkIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3RELEtBQUssRUFBRSxJQUFJO2dCQUNYLEtBQUssRUFBRSxJQUFJO2FBQ2QsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7K0dBN0RRLFVBQVUsc0VBSTRELFlBQVk7bUhBSmxGLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQUtpRSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3RhdGVTZXJ2aWNlfSBmcm9tIFwiLi9zdGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QVVUSF9TRVJWSUNFLCBJQWNsQ29tcG9uZW50LCBJQXV0aFNlcnZpY2UsIElSb3V0ZVN0YXRlSW5mb30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7QXV0aEd1YXJkfSBmcm9tIFwiLi4vdXRpbHMvYXV0aC5ndWFyZFwiO1xyXG5cclxuY29uc3QgZW1wdHlHdWFyZHM6IGFueVtdID0gW107XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2xTZXJ2aWNlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50czogSVJvdXRlU3RhdGVJbmZvW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLCByZWFkb25seSBzdGF0ZTogU3RhdGVTZXJ2aWNlLCBASW5qZWN0KEFVVEhfU0VSVklDRSkgcmVhZG9ubHkgYXV0aDogSUF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5hdXRoLnVzZXJDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKHQgPT4gdC5kaXJ0eSA9IHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5nZXRTdGF0ZUluZm8oKTtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2s6IFByb21pc2U8Ym9vbGVhbj4gPSBpbmZvICYmIGluZm8uZ3VhcmQgaW5zdGFuY2VvZiBBdXRoR3VhcmQgPyBpbmZvLmd1YXJkLmNoZWNrUm91dGUoaW5mby5yb3V0ZSkgOiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIGNoZWNrLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWluZm8gfHwgIWluZm8uZGlydHkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBpbmZvLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50OiBJQWNsQ29tcG9uZW50ID0gaW5mby5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmZvLmNvbXBvbmVudCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihjb21wb25lbnQub25Vc2VyQ2hhbmdlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm9uVXNlckNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKGluZm8uZ3VhcmQgYXMgQXV0aEd1YXJkKS5nZXRSZXR1cm5TdGF0ZShpbmZvLnJvdXRlKS50aGVuKHJldHVyblN0YXRlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJldHVyblN0YXRlKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5uYXZpZ2F0ZShyZXR1cm5TdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5nZXRTdGF0ZUluZm8oKTtcclxuICAgICAgICAgICAgaWYgKCFpbmZvPy5jb21wb25lbnQpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50OiBJQWNsQ29tcG9uZW50ID0gaW5mby5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGluZm8uZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0U3RhdGVJbmZvKCk6IElSb3V0ZVN0YXRlSW5mbyB7XHJcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLnN0YXRlLnJvdXRlO1xyXG4gICAgICAgIGlmICghcm91dGUpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGxldCBpbmZvID0gdGhpcy5jb21wb25lbnRzLmZpbmQodCA9PiB0LnJvdXRlID09IHRoaXMuc3RhdGUucm91dGUpO1xyXG4gICAgICAgIGlmICghaW5mbykge1xyXG4gICAgICAgICAgICBjb25zdCBndWFyZFR5cGU6IFR5cGU8QXV0aEd1YXJkPiA9IChyb3V0ZS5jYW5BY3RpdmF0ZSB8fCBlbXB0eUd1YXJkcylbMF07XHJcbiAgICAgICAgICAgIGluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICByb3V0ZTogdGhpcy5zdGF0ZS5yb3V0ZSxcclxuICAgICAgICAgICAgICAgIGd1YXJkOiBndWFyZFR5cGUgPyB0aGlzLmluamVjdG9yLmdldChndWFyZFR5cGUpIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzLnB1c2goaW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluZm8uY29tcG9uZW50ID0gdGhpcy5zdGF0ZS5jb21wb25lbnQ7XHJcbiAgICAgICAgcmV0dXJuIGluZm87XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { BaseHttpService } from "./base-http.service";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ApiService extends BaseHttpService {
|
|
5
|
+
get name() {
|
|
6
|
+
return "api";
|
|
7
|
+
}
|
|
8
|
+
url(url) {
|
|
9
|
+
const baseUrl = this.expressRequestUrl(`/api/${url}`);
|
|
10
|
+
if (url == "api-docs" || url == "socket") {
|
|
11
|
+
return baseUrl.replace("/api/", "/");
|
|
12
|
+
}
|
|
13
|
+
return baseUrl;
|
|
14
|
+
}
|
|
15
|
+
get(url, options, body) {
|
|
16
|
+
return this.getPromise(url, options, body);
|
|
17
|
+
}
|
|
18
|
+
delete(url, options, body) {
|
|
19
|
+
return this.deletePromise(url, options, body);
|
|
20
|
+
}
|
|
21
|
+
post(url, body, options) {
|
|
22
|
+
return this.postPromise(url, body, options);
|
|
23
|
+
}
|
|
24
|
+
put(url, body, options) {
|
|
25
|
+
return this.putPromise(url, body, options);
|
|
26
|
+
}
|
|
27
|
+
patch(url, body, options) {
|
|
28
|
+
return this.patchPromise(url, body, options);
|
|
29
|
+
}
|
|
30
|
+
upload(url, body, listener, options) {
|
|
31
|
+
return this.uploadPromise(url, body, listener, options);
|
|
32
|
+
}
|
|
33
|
+
list(url, params) {
|
|
34
|
+
return this.listPromise(url, params);
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ApiService }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ApiService, decorators: [{
|
|
40
|
+
type: Injectable
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUlwRCxNQUFNLE9BQU8sVUFBVyxTQUFRLGVBQWU7SUFFM0MsSUFBSSxJQUFJO1FBQ0osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLEdBQUcsSUFBSSxVQUFVLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQXlCLEVBQUUsSUFBVTtRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUF5QixFQUFFLElBQVU7UUFDckQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBVSxFQUFFLE9BQXlCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxPQUF5QjtRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxJQUFVLEVBQUUsT0FBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLFFBQTJCLEVBQUUsT0FBeUI7UUFDakYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLENBQUMsR0FBVyxFQUFFLE1BQW1CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0F4Q1EsVUFBVTttSEFBVixVQUFVOzs0RkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtJQXBpU2VydmljZSwgSUh0dHBQYXJhbXMsIElSZXF1ZXN0T3B0aW9ucywgUHJvZ3Jlc3NMaXN0ZW5lcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0Jhc2VIdHRwU2VydmljZX0gZnJvbSBcIi4vYmFzZS1odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJUGFnaW5hdGlvbkRhdGF9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2UgZXh0ZW5kcyBCYXNlSHR0cFNlcnZpY2UgaW1wbGVtZW50cyBJQXBpU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJhcGlcIjtcclxuICAgIH1cclxuXHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmV4cHJlc3NSZXF1ZXN0VXJsKGAvYXBpLyR7dXJsfWApO1xyXG4gICAgICAgIGlmICh1cmwgPT0gXCJhcGktZG9jc1wiIHx8IHVybCA9PSBcInNvY2tldFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlVXJsLnJlcGxhY2UoXCIvYXBpL1wiLCBcIi9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBiYXNlVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgYm9keT86IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvbWlzZSh1cmwsIG9wdGlvbnMsIGJvZHkpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgYm9keT86IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlUHJvbWlzZSh1cmwsIG9wdGlvbnMsIGJvZHkpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RQcm9taXNlKHVybCwgYm9keSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHV0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wdXRQcm9taXNlKHVybCwgYm9keSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2godXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGNoUHJvbWlzZSh1cmwsIGJvZHksIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZFByb21pc2UodXJsLCBib2R5LCBsaXN0ZW5lciwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdCh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFByb21pc2UodXJsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { EventEmitter } from "@angular/core";
|
|
2
|
-
export class StaticAuthService {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.isAuthenticated = true;
|
|
5
|
-
this.userChanged = new EventEmitter();
|
|
6
|
-
}
|
|
7
|
-
checkAuthenticated() {
|
|
8
|
-
return Promise.resolve(this.isAuthenticated);
|
|
9
|
-
}
|
|
10
|
-
getReturnState(route) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
export class StaticAuthService {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.isAuthenticated = true;
|
|
5
|
+
this.userChanged = new EventEmitter();
|
|
6
|
+
}
|
|
7
|
+
checkAuthenticated() {
|
|
8
|
+
return Promise.resolve(this.isAuthenticated);
|
|
9
|
+
}
|
|
10
|
+
getReturnState(route) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
14
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUczQyxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBRUksb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQVM3RCxDQUFDO0lBUEcsa0JBQWtCO1FBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SVJvdXRlLCBJQXV0aFNlcnZpY2V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTdGF0aWNBdXRoU2VydmljZSBpbXBsZW1lbnRzIElBdXRoU2VydmljZSB7XHJcblxyXG4gICAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHVzZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGNoZWNrQXV0aGVudGljYXRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuaXNBdXRoZW50aWNhdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRSZXR1cm5TdGF0ZShyb3V0ZTogSVJvdXRlKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { HttpClient, HttpHandler, HttpHeaders, HttpParams, HttpUrlEncodingCodec } from "@angular/common/http";
|
|
3
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
export class BaseHttpClient extends HttpClient {
|
|
7
|
+
constructor(handler) {
|
|
8
|
+
super(handler);
|
|
9
|
+
this.requestHeaders = {};
|
|
10
|
+
this.requestParams = {};
|
|
11
|
+
this.extraRequestParams = {
|
|
12
|
+
language: "en"
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
makeHeaders(headers, withCredentials = true) {
|
|
16
|
+
headers = Object.assign({}, this.requestHeaders, headers);
|
|
17
|
+
const authHeader = headers["Authorization"] || "";
|
|
18
|
+
if (!withCredentials && !authHeader.startsWith("Bearer")) {
|
|
19
|
+
delete headers["Authorization"];
|
|
20
|
+
}
|
|
21
|
+
return new HttpHeaders(headers);
|
|
22
|
+
}
|
|
23
|
+
makeParams(params) {
|
|
24
|
+
params = Object.assign({}, this.extraRequestParams, this.requestParams, params);
|
|
25
|
+
return new HttpParams({
|
|
26
|
+
encoder: new HttpUrlEncodingCodec(),
|
|
27
|
+
fromObject: Object.keys(params || {}).reduce((result, key) => {
|
|
28
|
+
const value = params[key];
|
|
29
|
+
result[key] = ObjectUtils.isObject(value) ? JSON.stringify(value) : (ObjectUtils.isNullOrUndefined(value) ? "" : value.toString());
|
|
30
|
+
return result;
|
|
31
|
+
}, {})
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
setExtraRequestParam(name, value) {
|
|
35
|
+
if (typeof value == "undefined") {
|
|
36
|
+
delete this.extraRequestParams[name];
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.extraRequestParams[name] = value;
|
|
40
|
+
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseHttpClient, deps: [{ token: i1.HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseHttpClient }); }
|
|
43
|
+
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseHttpClient, decorators: [{
|
|
45
|
+
type: Injectable
|
|
46
|
+
}], ctorParameters: () => [{ type: i1.HttpHandler }] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLmNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvYmFzZS1odHRwLmNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7OztBQUdsRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFRMUMsWUFBWSxPQUFvQjtRQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUc7WUFDdEIsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0IsRUFBRSxrQkFBMkIsSUFBSTtRQUMvRCxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFXLElBQUksRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFvQjtRQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEYsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNsQixPQUFPLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtZQUNuQyxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN6RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbkksT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsS0FBVztRQUMxQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDOytHQTVDUSxjQUFjO21IQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhhbmRsZXIsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwVXJsRW5jb2RpbmdDb2RlY30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7SUh0dHBIZWFkZXJzLCBJSHR0cFBhcmFtc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSHR0cENsaWVudCBleHRlbmRzIEh0dHBDbGllbnQge1xyXG5cclxuICAgIHJlcXVlc3RIZWFkZXJzOiBJSHR0cEhlYWRlcnM7XHJcbiAgICByZXF1ZXN0UGFyYW1zOiBJSHR0cFBhcmFtcztcclxuICAgIHJlbmV3VG9rZW5GdW5jOiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIHByb3RlY3RlZCBleHRyYVJlcXVlc3RQYXJhbXM6IElIdHRwUGFyYW1zO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGhhbmRsZXI6IEh0dHBIYW5kbGVyKSB7XHJcbiAgICAgICAgc3VwZXIoaGFuZGxlcik7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVxdWVzdFBhcmFtcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuZXh0cmFSZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJlblwiXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlSGVhZGVycyhoZWFkZXJzPzogSUh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSB0cnVlKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIGhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlcXVlc3RIZWFkZXJzLCBoZWFkZXJzKTtcclxuICAgICAgICBjb25zdCBhdXRoSGVhZGVyID0gaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gYXMgc3RyaW5nIHx8IFwiXCI7XHJcbiAgICAgICAgaWYgKCF3aXRoQ3JlZGVudGlhbHMgJiYgIWF1dGhIZWFkZXIuc3RhcnRzV2l0aChcIkJlYXJlclwiKSkge1xyXG4gICAgICAgICAgICBkZWxldGUgaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZVBhcmFtcyhwYXJhbXM/OiBJSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZXh0cmFSZXF1ZXN0UGFyYW1zLCB0aGlzLnJlcXVlc3RQYXJhbXMsIHBhcmFtcyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZW5jb2RlcjogbmV3IEh0dHBVcmxFbmNvZGluZ0NvZGVjKCksXHJcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IE9iamVjdC5rZXlzKHBhcmFtcyB8fCB7fSkucmVkdWNlKChyZXN1bHQsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogKE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IFwiXCIgOiB2YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0sIHt9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEV4dHJhUmVxdWVzdFBhcmFtKG5hbWU6IHN0cmluZywgdmFsdWU/OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZXh0cmFSZXF1ZXN0UGFyYW1zW25hbWVdO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXh0cmFSZXF1ZXN0UGFyYW1zW25hbWVdID0gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuIl19
|