@mediusinc/mng-commons 3.0.0-rc.3 → 3.0.0-rc.6
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/assets/i18n/en.json +5 -1
- package/assets/i18n/sl.json +5 -1
- package/esm2022/index.mjs +3 -1
- package/esm2022/lib/api/utils/object-serializer.util.mjs +11 -4
- package/esm2022/lib/components/action/action.component.mjs +16 -4
- package/esm2022/lib/components/action/editor/action-editor.component.mjs +83 -18
- package/esm2022/lib/components/action/models/action-execution.model.mjs +14 -37
- package/esm2022/lib/components/action/route/action-route.component.mjs +9 -2
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +7 -5
- package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +7 -5
- package/esm2022/lib/components/form/editor/form-editor.component.mjs +9 -8
- package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +43 -15
- package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +6 -6
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -3
- package/esm2022/lib/descriptors/action/action.descriptor.mjs +19 -8
- package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +3 -3
- package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +7 -6
- package/esm2022/lib/descriptors/table/column.descriptor.mjs +3 -3
- package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +3 -3
- package/esm2022/lib/error/error.handler.mjs +23 -0
- package/esm2022/lib/error/index.mjs +2 -0
- package/esm2022/lib/guards/index.mjs +2 -0
- package/esm2022/lib/guards/unsaved-changes.guard.mjs +4 -0
- package/esm2022/lib/models/action-editor.model.mjs +2 -0
- package/esm2022/lib/models/can-component-deactivate.model.mjs +2 -0
- package/esm2022/lib/models/config.model.mjs +1 -1
- package/esm2022/lib/models/error.model.mjs +1 -1
- package/esm2022/lib/models/index.mjs +5 -2
- package/esm2022/lib/models/internal-error.model.mjs +30 -0
- package/esm2022/lib/models/log.model.mjs +10 -0
- package/esm2022/lib/pipes/json-path.pipe.mjs +8 -4
- package/esm2022/lib/provide-commons.mjs +16 -15
- package/esm2022/lib/router/route-builder.mjs +4 -4
- package/esm2022/lib/router/routes-builder.mjs +3 -3
- package/esm2022/lib/router/tableview-route-builder.mjs +4 -1
- package/esm2022/lib/security/authorization.service.mjs +5 -4
- package/esm2022/lib/security/authorization.util.mjs +3 -3
- package/esm2022/lib/services/action-error-mapper.service.mjs +19 -0
- package/esm2022/lib/services/action-executor.service.mjs +43 -28
- package/esm2022/lib/services/commons.service.mjs +16 -25
- package/esm2022/lib/services/configuration.service.mjs +60 -30
- package/esm2022/lib/services/index.mjs +3 -2
- package/esm2022/lib/services/internal/commons-init.service.mjs +48 -23
- package/esm2022/lib/services/logger.service.mjs +123 -0
- package/esm2022/lib/services/providers/index.mjs +1 -2
- package/esm2022/lib/utils/action-data-provider.util.mjs +7 -7
- package/esm2022/lib/utils/notification.util.mjs +3 -2
- package/esm2022/lib/utils/object.util.mjs +32 -5
- package/esm2022/lib/utils/route.util.mjs +3 -3
- package/esm2022/lib/utils/string.util.mjs +2 -2
- package/esm2022/lib/utils/tableview.util.mjs +3 -3
- package/esm2022/lib/utils/type.util.mjs +5 -5
- package/fesm2022/mediusinc-mng-commons.mjs +2587 -2258
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/api/utils/object-serializer.util.d.ts +1 -0
- package/lib/components/action/action.component.d.ts +1 -0
- package/lib/components/action/editor/action-editor.component.d.ts +17 -6
- package/lib/components/action/models/action-execution.model.d.ts +5 -3
- package/lib/components/action/route/action-route.component.d.ts +4 -1
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -0
- package/lib/components/form/dropdown/dropdown.component.d.ts +1 -0
- package/lib/components/form/editor/form-editor.component.d.ts +1 -0
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +2 -0
- package/lib/descriptors/action/action.descriptor.d.ts +3 -0
- package/lib/descriptors/editor/field.descriptor.d.ts +2 -2
- package/lib/error/error.handler.d.ts +6 -0
- package/lib/error/index.d.ts +1 -0
- package/lib/guards/index.d.ts +1 -0
- package/lib/guards/unsaved-changes.guard.d.ts +3 -0
- package/lib/models/action-editor.model.d.ts +4 -0
- package/lib/models/can-component-deactivate.model.d.ts +4 -0
- package/lib/models/config.model.d.ts +2 -1
- package/lib/models/error.model.d.ts +2 -1
- package/lib/models/index.d.ts +4 -1
- package/lib/models/{error-internal.model.d.ts → internal-error.model.d.ts} +3 -6
- package/lib/models/log.model.d.ts +34 -0
- package/lib/pipes/json-path.pipe.d.ts +1 -0
- package/lib/security/authorization.service.d.ts +1 -0
- package/lib/services/action-error-mapper.service.d.ts +11 -0
- package/lib/services/action-executor.service.d.ts +10 -5
- package/lib/services/commons.service.d.ts +9 -14
- package/lib/services/configuration.service.d.ts +13 -5
- package/lib/services/index.d.ts +2 -1
- package/lib/services/internal/commons-init.service.d.ts +7 -8
- package/lib/services/logger.service.d.ts +30 -0
- package/lib/services/providers/index.d.ts +0 -1
- package/lib/utils/object.util.d.ts +6 -4
- package/package.json +1 -1
- package/esm2022/lib/models/error-internal.model.mjs +0 -27
- package/esm2022/lib/services/error-mapper.service.mjs +0 -14
- package/esm2022/lib/services/providers/config-service.provider.mjs +0 -31
- package/lib/services/error-mapper.service.d.ts +0 -7
- package/lib/services/providers/config-service.provider.d.ts +0 -6
|
@@ -1,37 +1,67 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
3
|
import { combineLatest, mergeMap, of } from 'rxjs';
|
|
4
4
|
import { map } from 'rxjs/operators';
|
|
5
|
-
import { MngCommonsService, MngConfigurationService, MngRouterService } from '../';
|
|
6
|
-
import { MNG_COMMONS_INITIALIZER_IT } from '../tokens';
|
|
5
|
+
import { MngCommonsService, MngConfigurationService, MngLoggerService, MngRouterService } from '../';
|
|
6
|
+
import { MNG_COMMONS_INITIALIZER_IT, MNG_MODULE_CONFIG_IT } from '../tokens';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@ngx-translate/core";
|
|
9
|
-
import * as i2 from "../";
|
|
10
8
|
export class MngCommonsInitService {
|
|
11
|
-
constructor(
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
9
|
+
constructor() {
|
|
10
|
+
this.httpClient = inject(HttpClient);
|
|
11
|
+
this.logger = inject(MngLoggerService);
|
|
12
|
+
this.config = inject(MngConfigurationService);
|
|
13
|
+
this.mngCommons = inject(MngCommonsService);
|
|
14
|
+
this.mngRouter = inject(MngRouterService);
|
|
15
|
+
this.moduleConfig = inject(MNG_MODULE_CONFIG_IT, { optional: true });
|
|
16
|
+
this.commonsInitializers = inject(MNG_COMMONS_INITIALIZER_IT, { optional: true });
|
|
17
17
|
this.isInitialized = false;
|
|
18
18
|
}
|
|
19
19
|
initialize() {
|
|
20
20
|
if (this.isInitialized) {
|
|
21
21
|
return of(void 0);
|
|
22
22
|
}
|
|
23
|
+
this.isInitialized = true;
|
|
24
|
+
MngLoggerService.configure({ timestampFormat: this.moduleConfig?.log?.timestampFormat });
|
|
25
|
+
const ctxLogger = this.logger.create('MngCommonsInitService');
|
|
26
|
+
ctxLogger.debug('Commons initialization is starting');
|
|
27
|
+
// init router
|
|
23
28
|
this.mngRouter.initialize();
|
|
24
|
-
|
|
29
|
+
// init configurations with settings from module config
|
|
30
|
+
this.config.init(this.httpClient, this.logger);
|
|
31
|
+
this.config.addModuleConfigSource(this.moduleConfig ?? undefined);
|
|
32
|
+
if (this.moduleConfig?.configuration?.projectEnvironment) {
|
|
33
|
+
this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);
|
|
34
|
+
}
|
|
35
|
+
// init configurations with settings from module config for json source
|
|
36
|
+
if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {
|
|
37
|
+
const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;
|
|
38
|
+
const jsonSource = this.moduleConfig?.configuration?.jsonSource;
|
|
39
|
+
if (!jsonSource) {
|
|
40
|
+
this.config.addJsonSource({ enableEnvProd: jsonSourceEnableEnvProd });
|
|
41
|
+
}
|
|
42
|
+
else if (Array.isArray(jsonSource)) {
|
|
43
|
+
jsonSource.forEach(source => this.config.addJsonSource({ url: source, enableEnvProd: jsonSourceEnableEnvProd }));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.config.addJsonSource({ url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return this.config.loadJsonConfigurations().pipe(mergeMap(() => {
|
|
50
|
+
// init logger
|
|
51
|
+
MngLoggerService.init(this.config);
|
|
25
52
|
if (this.commonsInitializers) {
|
|
53
|
+
ctxLogger.debug('Project initializers are being initialized');
|
|
26
54
|
return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
|
|
27
55
|
}
|
|
28
56
|
else {
|
|
29
57
|
return of(true);
|
|
30
58
|
}
|
|
31
|
-
}), map(() =>
|
|
32
|
-
|
|
59
|
+
}), map(() => {
|
|
60
|
+
ctxLogger.debug('Commons initialization is finished');
|
|
61
|
+
return this.mngCommons.reset();
|
|
62
|
+
}));
|
|
33
63
|
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, deps: [
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
65
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, providedIn: 'root' }); }
|
|
36
66
|
}
|
|
37
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, decorators: [{
|
|
@@ -39,10 +69,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
39
69
|
args: [{
|
|
40
70
|
providedIn: 'root'
|
|
41
71
|
}]
|
|
42
|
-
}]
|
|
43
|
-
|
|
44
|
-
args: [MNG_COMMONS_INITIALIZER_IT]
|
|
45
|
-
}, {
|
|
46
|
-
type: Optional
|
|
47
|
-
}] }]; } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUNqRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7QUFLckQsTUFBTSxPQUFPLHFCQUFxQjtJQUc5QixZQUNZLFNBQTJCLEVBQzNCLG9CQUE2QyxFQUM3QyxVQUE2QixFQUM3QixTQUEyQixFQUM4QixtQkFBNkQ7UUFKdEgsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUM4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTBDO1FBUDFILGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBUTNCLENBQUM7SUFFRyxVQUFVO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUMxRCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDeEY7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNyQyxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQzs4R0E5QlEscUJBQXFCLDBKQVFsQiwwQkFBMEI7a0hBUjdCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFTUSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG1lcmdlTWFwLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlLCBNbmdDb25maWd1cmF0aW9uU2VydmljZSwgTW5nUm91dGVyU2VydmljZX0gZnJvbSAnLi4vJztcbmltcG9ydCB7TU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVR9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQ29tbW9uc0luaXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW5nQ29tbW9uczogTW5nQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW5nUm91dGVyOiBNbmdSb3V0ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE1OR19DT01NT05TX0lOSVRJQUxJWkVSX0lUKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNJbml0aWFsaXplcnM6IFJlYWRvbmx5QXJyYXk8KCkgPT4gT2JzZXJ2YWJsZTx1bmtub3duPj5cbiAgICApIHt9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1uZ1JvdXRlci5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UubG9hZEpzb25Db25maWd1cmF0aW9ucygpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubW5nQ29tbW9ucy5yZXNldCgpKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxufVxuIl19
|
|
72
|
+
}] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUNuRyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBSzNFLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pDLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsaUJBQVksR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM5RCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUVwRixrQkFBYSxH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QyxHQUFHLEVBQUU7WUFDTCxTQUFTLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzhHQTlEUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWVyZ2VNYXAsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2UsIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBNbmdMb2dnZXJTZXJ2aWNlLCBNbmdSb3V0ZXJTZXJ2aWNlfSBmcm9tICcuLi8nO1xuaW1wb3J0IHtNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCwgTU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQ29tbW9uc0luaXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTW5nTG9nZ2VyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoTW5nQ29uZmlndXJhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW5nQ29tbW9ucyA9IGluamVjdChNbmdDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtbmdSb3V0ZXIgPSBpbmplY3QoTW5nUm91dGVyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVDb25maWcgPSBpbmplY3QoTU5HX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc0luaXRpYWxpemVycyA9IGluamVjdChNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpbml0aWFsaXplKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuY29uZmlndXJlKHt0aW1lc3RhbXBGb3JtYXQ6IHRoaXMubW9kdWxlQ29uZmlnPy5sb2c/LnRpbWVzdGFtcEZvcm1hdH0pO1xuXG4gICAgICAgIGNvbnN0IGN0eExvZ2dlciA9IHRoaXMubG9nZ2VyLmNyZWF0ZSgnTW5nQ29tbW9uc0luaXRTZXJ2aWNlJyk7XG4gICAgICAgIGN0eExvZ2dlci5kZWJ1ZygnQ29tbW9ucyBpbml0aWFsaXphdGlvbiBpcyBzdGFydGluZycpO1xuXG4gICAgICAgIC8vIGluaXQgcm91dGVyXG4gICAgICAgIHRoaXMubW5nUm91dGVyLmluaXRpYWxpemUoKTtcblxuICAgICAgICAvLyBpbml0IGNvbmZpZ3VyYXRpb25zIHdpdGggc2V0dGluZ3MgZnJvbSBtb2R1bGUgY29uZmlnXG4gICAgICAgIHRoaXMuY29uZmlnLmluaXQodGhpcy5odHRwQ2xpZW50LCB0aGlzLmxvZ2dlcik7XG4gICAgICAgIHRoaXMuY29uZmlnLmFkZE1vZHVsZUNvbmZpZ1NvdXJjZSh0aGlzLm1vZHVsZUNvbmZpZyA/PyB1bmRlZmluZWQpO1xuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/LnByb2plY3RFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkRW52aXJvbm1lbnRTb3VyY2UodGhpcy5tb2R1bGVDb25maWcuY29uZmlndXJhdGlvbi5wcm9qZWN0RW52aXJvbm1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIHNldHRpbmdzIGZyb20gbW9kdWxlIGNvbmZpZyBmb3IganNvbiBzb3VyY2VcbiAgICAgICAgaWYgKCEodGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/LnNraXBKc29uU291cmNlSW5pdCA/PyBmYWxzZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kID0gdGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/Lmpzb25Tb3VyY2VFbmFibGVFbnZQcm9kID8/IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QganNvblNvdXJjZSA9IHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5qc29uU291cmNlO1xuICAgICAgICAgICAgaWYgKCFqc29uU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7ZW5hYmxlRW52UHJvZDoganNvblNvdXJjZUVuYWJsZUVudlByb2R9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShqc29uU291cmNlKSkge1xuICAgICAgICAgICAgICAgIGpzb25Tb3VyY2UuZm9yRWFjaChzb3VyY2UgPT4gdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7dXJsOiBzb3VyY2UsIGVuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5hZGRKc29uU291cmNlKHt1cmw6IGpzb25Tb3VyY2UsIGVuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubG9hZEpzb25Db25maWd1cmF0aW9ucygpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gaW5pdCBsb2dnZXJcbiAgICAgICAgICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLmluaXQodGhpcy5jb25maWcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ1Byb2plY3QgaW5pdGlhbGl6ZXJzIGFyZSBiZWluZyBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoZWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { DatePipe } from '@angular/common';
|
|
3
|
+
import { LogLevelEnum, MngInternalError } from '../models';
|
|
4
|
+
export class MngLoggerService {
|
|
5
|
+
static { this._instance = new MngLoggerService(); }
|
|
6
|
+
static { this._isInit = false; }
|
|
7
|
+
static { this._entriesBuffer = []; }
|
|
8
|
+
static { this._categoryInstances = {}; }
|
|
9
|
+
static { this._timestampFormat = 'yyyy-MM-dd HH:mm:ss.SSS'; }
|
|
10
|
+
constructor() {
|
|
11
|
+
// Temporary settings that cover logging calls before initialisation
|
|
12
|
+
this.defaultLogLevel = LogLevelEnum.Info;
|
|
13
|
+
this.datePipe = new DatePipe('en-US');
|
|
14
|
+
// empty
|
|
15
|
+
}
|
|
16
|
+
static get() {
|
|
17
|
+
return MngLoggerService._instance;
|
|
18
|
+
}
|
|
19
|
+
static configure(config) {
|
|
20
|
+
if (config.timestampFormat) {
|
|
21
|
+
MngLoggerService._timestampFormat = config.timestampFormat;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static init(configurationService) {
|
|
25
|
+
if (MngLoggerService._isInit) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
MngLoggerService._configurationService = configurationService;
|
|
29
|
+
MngLoggerService._isInit = true;
|
|
30
|
+
MngLoggerService._flushBuffer();
|
|
31
|
+
}
|
|
32
|
+
static _flushBuffer() {
|
|
33
|
+
MngLoggerService._entriesBuffer.forEach(e => this._instance._log(e));
|
|
34
|
+
MngLoggerService._entriesBuffer = [];
|
|
35
|
+
}
|
|
36
|
+
static create(category) {
|
|
37
|
+
return MngLoggerService._instance.create(category);
|
|
38
|
+
}
|
|
39
|
+
create(category) {
|
|
40
|
+
if (this.category) {
|
|
41
|
+
throw new MngInternalError(`Cannot create logger with category inside another category (${this.category}). Must create logger on root.`);
|
|
42
|
+
}
|
|
43
|
+
if (MngLoggerService._categoryInstances[category]) {
|
|
44
|
+
return MngLoggerService._categoryInstances[category];
|
|
45
|
+
}
|
|
46
|
+
const logger = new MngLoggerService();
|
|
47
|
+
logger.category = category;
|
|
48
|
+
MngLoggerService._categoryInstances[category] = logger;
|
|
49
|
+
return logger;
|
|
50
|
+
}
|
|
51
|
+
_processLog(msg, logLevel, category = this.category, data) {
|
|
52
|
+
const timestamp = new Date();
|
|
53
|
+
const timestampFormatted = this.datePipe.transform(timestamp, MngLoggerService._timestampFormat);
|
|
54
|
+
const log = {
|
|
55
|
+
level: logLevel,
|
|
56
|
+
message: msg,
|
|
57
|
+
data: data,
|
|
58
|
+
category: category,
|
|
59
|
+
timestamp: timestamp,
|
|
60
|
+
timestampFormatted: timestampFormatted ?? undefined
|
|
61
|
+
};
|
|
62
|
+
if (!MngLoggerService._isInit) {
|
|
63
|
+
// add to buffer
|
|
64
|
+
MngLoggerService._entriesBuffer.push(log);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this._log(log);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
_log(log) {
|
|
71
|
+
const logConfig = (MngLoggerService._configurationService?.getConfigValue)?.('log');
|
|
72
|
+
if ((this.category && log.level < (logConfig?.category?.[this.category]?.level ?? this.defaultLogLevel)) ||
|
|
73
|
+
(!this.category && log.level < (logConfig?.level ?? this.defaultLogLevel))) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (logConfig?.timestampFormat) {
|
|
77
|
+
log.timestampFormatted = this.datePipe.transform(log.timestamp, logConfig.timestampFormat) ?? undefined;
|
|
78
|
+
}
|
|
79
|
+
let prefix = `${log.timestampFormatted}`;
|
|
80
|
+
if (log.category)
|
|
81
|
+
prefix += ` [${log.category}]`;
|
|
82
|
+
prefix += ':';
|
|
83
|
+
switch (log.level) {
|
|
84
|
+
case LogLevelEnum.Trace:
|
|
85
|
+
console.trace(prefix, log.message, ...log.data);
|
|
86
|
+
break;
|
|
87
|
+
case LogLevelEnum.Debug:
|
|
88
|
+
console.debug(prefix, log.message, ...log.data);
|
|
89
|
+
break;
|
|
90
|
+
case LogLevelEnum.Log:
|
|
91
|
+
console.log(prefix, log.message, ...log.data);
|
|
92
|
+
break;
|
|
93
|
+
case LogLevelEnum.Info:
|
|
94
|
+
console.info(prefix, log.message, ...log.data);
|
|
95
|
+
break;
|
|
96
|
+
case LogLevelEnum.Warning:
|
|
97
|
+
console.warn(prefix, log.message, ...log.data);
|
|
98
|
+
break;
|
|
99
|
+
case LogLevelEnum.Error:
|
|
100
|
+
console.error(prefix, log.message, ...log.data);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
trace(msg, ...data) {
|
|
105
|
+
this._processLog(msg, LogLevelEnum.Trace, undefined, data);
|
|
106
|
+
}
|
|
107
|
+
debug(msg, ...data) {
|
|
108
|
+
this._processLog(msg, LogLevelEnum.Debug, undefined, data);
|
|
109
|
+
}
|
|
110
|
+
log(msg, logLevel = LogLevelEnum.Log, category = undefined, ...data) {
|
|
111
|
+
this._processLog(msg, logLevel, category, data);
|
|
112
|
+
}
|
|
113
|
+
info(msg, ...data) {
|
|
114
|
+
this._processLog(msg, LogLevelEnum.Info, undefined, data);
|
|
115
|
+
}
|
|
116
|
+
warn(msg, ...data) {
|
|
117
|
+
this._processLog(msg, LogLevelEnum.Warning, undefined, data);
|
|
118
|
+
}
|
|
119
|
+
error(msg, ...data) {
|
|
120
|
+
this._processLog(msg, LogLevelEnum.Error, undefined, data);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFvQixZQUFZLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sV0FBVyxDQUFDO0FBR3ZHLE1BQU0sT0FBTyxnQkFBZ0I7YUFDVixjQUFTLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQUFBM0MsQ0FBNEM7YUFDckQsWUFBTyxHQUFHLEtBQUssQUFBUixDQUFTO2FBRWhCLG1CQUFjLEdBQWtCLEVBQUUsQUFBcEIsQ0FBcUI7YUFDbkMsdUJBQWtCLEdBQXFDLEVBQUUsQUFBdkMsQ0FBd0M7YUFDMUQscUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBUTVEO1FBSkEsb0VBQW9FO1FBQ25ELG9CQUFlLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBR3JDLFFBQVE7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFrQztRQUN0RCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDeEIsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUE2QztRQUM1RCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFFRCxnQkFBZ0IsQ0FBQyxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztRQUU5RCxn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L1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtJTW5nTG9nZ2VyU2VydmljZSwgTG9nTGV2ZWxFbnVtLCBNbmdJbnRlcm5hbEVycm9yLCBNbmdMb2dDb25maWcsIE1uZ0xvZ0VudHJ5fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgTW5nTG9nZ2VyU2VydmljZSBpbXBsZW1lbnRzIElNbmdMb2dnZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE1uZ0xvZ2dlclNlcnZpY2UgPSBuZXcgTW5nTG9nZ2VyU2VydmljZSgpO1xuICAgIHByaXZhdGUgc3RhdGljIF9pc0luaXQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN0YXRpYyBfY29uZmlndXJhdGlvblNlcnZpY2U/OiBNbmdDb25maWd1cmF0aW9uU2VydmljZTtcbiAgICBwcml2YXRlIHN0YXRpYyBfZW50cmllc0J1ZmZlcjogTW5nTG9nRW50cnlbXSA9IFtdO1xuICAgIHByaXZhdGUgc3RhdGljIF9jYXRlZ29yeUluc3RhbmNlczogUmVjb3JkPHN0cmluZywgTW5nTG9nZ2VyU2VydmljZT4gPSB7fTtcbiAgICBwcml2YXRlIHN0YXRpYyBfdGltZXN0YW1wRm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MuU1NTJztcblxuICAgIHByaXZhdGUgY2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICAvLyBUZW1wb3Jhcnkgc2V0dGluZ3MgdGhhdCBjb3ZlciBsb2dnaW5nIGNhbGxzIGJlZm9yZSBpbml0aWFsaXNhdGlvblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExvZ0xldmVsOiBMb2dMZXZlbEVudW0gPSBMb2dMZXZlbEVudW0uSW5mbztcbiAgICBwcml2YXRlIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpO1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gZW1wdHlcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIE1uZ0xvZ2dlclNlcnZpY2UuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29uZmlndXJlKGNvbmZpZzoge3RpbWVzdGFtcEZvcm1hdD86IHN0cmluZ30pIHtcbiAgICAgICAgaWYgKGNvbmZpZy50aW1lc3RhbXBGb3JtYXQpIHtcbiAgICAgICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX3RpbWVzdGFtcEZvcm1hdCA9IGNvbmZpZy50aW1lc3RhbXBGb3JtYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXQoY29uZmlndXJhdGlvblNlcnZpY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7XG4gICAgICAgIGlmIChNbmdMb2dnZXJTZXJ2aWNlLl9pc0luaXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlID0gY29uZmlndXJhdGlvblNlcnZpY2U7XG5cbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5faXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZmx1c2hCdWZmZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZmx1c2hCdWZmZXIoKSB7XG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2VudHJpZXNCdWZmZXIuZm9yRWFjaChlID0+IHRoaXMuX2luc3RhbmNlLl9sb2coZSkpO1xuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9lbnRyaWVzQnVmZmVyID0gW107XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoY2F0ZWdvcnk6IHN0cmluZyk6IE1uZ0xvZ2dlclNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gTW5nTG9nZ2VyU2VydmljZS5faW5zdGFuY2UuY3JlYXRlKGNhdGVnb3J5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlKGNhdGVnb3J5OiBzdHJpbmcpOiBNbmdMb2dnZXJTZXJ2aWNlIHtcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKGBDYW5ub3QgY3JlYXRlIGxvZ2dlciB3aXRoIGNhdGVnb3J5IGluc2lkZSBhbm90aGVyIGNhdGVnb3J5ICgke3RoaXMuY2F0ZWdvcnl9KS4gTXVzdCBjcmVhdGUgbG9nZ2VyIG9uIHJvb3QuYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1uZ0xvZ2dlclNlcnZpY2UuX2NhdGVnb3J5SW5zdGFuY2VzW2NhdGVnb3J5XSkge1xuICAgICAgICAgICAgcmV0dXJuIE1uZ0xvZ2dlclNlcnZpY2UuX2NhdGVnb3J5SW5zdGFuY2VzW2NhdGVnb3J5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNbmdMb2dnZXJTZXJ2aWNlKCk7XG4gICAgICAgIGxvZ2dlci5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuXG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2NhdGVnb3J5SW5zdGFuY2VzW2NhdGVnb3J5XSA9IGxvZ2dlcjtcblxuICAgICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Byb2Nlc3NMb2cobXNnOiBzdHJpbmcsIGxvZ0xldmVsOiBMb2dMZXZlbEVudW0sIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeSwgZGF0YTogYW55W10pIHtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wRm9ybWF0dGVkID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGltZXN0YW1wLCBNbmdMb2dnZXJTZXJ2aWNlLl90aW1lc3RhbXBGb3JtYXQpO1xuICAgICAgICBjb25zdCBsb2cgPSA8TW5nTG9nRW50cnk+e1xuICAgICAgICAgICAgbGV2ZWw6IGxvZ0xldmVsLFxuICAgICAgICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeSxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLFxuICAgICAgICAgICAgdGltZXN0YW1wRm9ybWF0dGVkOiB0aW1lc3RhbXBGb3JtYXR0ZWQgPz8gdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCFNbmdMb2dnZXJTZXJ2aWNlLl9pc0luaXQpIHtcbiAgICAgICAgICAgIC8vIGFkZCB0byBidWZmZXJcbiAgICAgICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX2VudHJpZXNCdWZmZXIucHVzaChsb2cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9nKGxvZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9sb2cobG9nOiBNbmdMb2dFbnRyeSkge1xuICAgICAgICBjb25zdCBsb2dDb25maWcgPSBNbmdMb2dnZXJTZXJ2aWNlLl9jb25maWd1cmF0aW9uU2VydmljZT8uZ2V0Q29uZmlnVmFsdWU8TW5nTG9nQ29uZmlnPj8uKCdsb2cnKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRoaXMuY2F0ZWdvcnkgJiYgbG9nLmxldmVsIDwgKGxvZ0NvbmZpZz8uY2F0ZWdvcnk/Llt0aGlzLmNhdGVnb3J5XT8ubGV2ZWwgPz8gdGhpcy5kZWZhdWx0TG9nTGV2ZWwpKSB8fFxuICAgICAgICAgICAgKCF0aGlzLmNhdGVnb3J5ICYmIGxvZy5sZXZlbCA8IChsb2dDb25maWc/LmxldmVsID8/IHRoaXMuZGVmYXVsdExvZ0xldmVsKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9nQ29uZmlnPy50aW1lc3RhbXBGb3JtYXQpIHtcbiAgICAgICAgICAgIGxvZy50aW1lc3RhbXBGb3JtYXR0ZWQgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShsb2cudGltZXN0YW1wLCBsb2dDb25maWcudGltZXN0YW1wRm9ybWF0KSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJlZml4ID0gYCR7bG9nLnRpbWVzdGFtcEZvcm1hdHRlZH1gO1xuICAgICAgICBpZiAobG9nLmNhdGVnb3J5KSBwcmVmaXggKz0gYCBbJHtsb2cuY2F0ZWdvcnl9XWA7XG4gICAgICAgIHByZWZpeCArPSAnOic7XG5cbiAgICAgICAgc3dpdGNoIChsb2cubGV2ZWwpIHtcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLlRyYWNlOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUudHJhY2UocHJlZml4LCBsb2cubWVzc2FnZSwgLi4ubG9nLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uRGVidWc6XG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhwcmVmaXgsIGxvZy5tZXNzYWdlLCAuLi5sb2cuZGF0YSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExvZ0xldmVsRW51bS5Mb2c6XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocHJlZml4LCBsb2cubWVzc2FnZSwgLi4ubG9nLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uSW5mbzpcbiAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8ocHJlZml4LCBsb2cubWVzc2FnZSwgLi4ubG9nLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uV2FybmluZzpcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4ocHJlZml4LCBsb2cubWVzc2FnZSwgLi4ubG9nLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uRXJyb3I6XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihwcmVmaXgsIGxvZy5tZXNzYWdlLCAuLi5sb2cuZGF0YSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2UobXNnOiBzdHJpbmcsIC4uLmRhdGE6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NMb2cobXNnLCBMb2dMZXZlbEVudW0uVHJhY2UsIHVuZGVmaW5lZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlYnVnKG1zZzogc3RyaW5nLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZywgTG9nTGV2ZWxFbnVtLkRlYnVnLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2cobXNnOiBzdHJpbmcsIGxvZ0xldmVsOiBMb2dMZXZlbEVudW0gPSBMb2dMZXZlbEVudW0uTG9nLCBjYXRlZ29yeTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZywgbG9nTGV2ZWwsIGNhdGVnb3J5LCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5mbyhtc2c6IHN0cmluZywgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2csIExvZ0xldmVsRW51bS5JbmZvLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1zZzogc3RyaW5nLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZywgTG9nTGV2ZWxFbnVtLldhcm5pbmcsIHVuZGVmaW5lZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1zZzogc3RyaW5nLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZywgTG9nTGV2ZWxFbnVtLkVycm9yLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export * from './config-service.provider';
|
|
2
1
|
export * from './formly-config.provider';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb3JtbHktY29uZmlnLnByb3ZpZGVyJztcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isObservable, throwError } from 'rxjs';
|
|
2
2
|
import { MediusQueryParamBuilder } from '../api/models';
|
|
3
|
-
import {
|
|
3
|
+
import { MngInternalError } from '../models';
|
|
4
4
|
export class ActionDataProviderUtil {
|
|
5
5
|
static runGetAllOrFail(ctx) {
|
|
6
6
|
const dataProviderExec = ActionDataProviderUtil.runGetAllDataProvider(ctx);
|
|
@@ -10,11 +10,11 @@ export class ActionDataProviderUtil {
|
|
|
10
10
|
const serviceExec = ActionDataProviderUtil.runGetAllService(ctx);
|
|
11
11
|
return isObservable(serviceExec)
|
|
12
12
|
? serviceExec
|
|
13
|
-
: throwError(() => new
|
|
13
|
+
: throwError(() => new MngInternalError(`Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`, 'ActionDataProviderUtils error'));
|
|
14
14
|
}
|
|
15
15
|
static runFetchOrFail(ctx) {
|
|
16
16
|
return (ActionDataProviderUtil.runFetch(ctx) ??
|
|
17
|
-
throwError(() => new
|
|
17
|
+
throwError(() => new MngInternalError(`Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`, 'ActionDataProviderUtils error')));
|
|
18
18
|
}
|
|
19
19
|
static runFetch(ctx, fallback) {
|
|
20
20
|
const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);
|
|
@@ -26,7 +26,7 @@ export class ActionDataProviderUtil {
|
|
|
26
26
|
}
|
|
27
27
|
static runCreateOrFail(ctx) {
|
|
28
28
|
return (ActionDataProviderUtil.runCreate(ctx) ??
|
|
29
|
-
throwError(() => new
|
|
29
|
+
throwError(() => new MngInternalError(`Data provider and service instance could not extract create function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item ${ctx.parameters?.item}.`, 'ActionDataProviderUtils error')));
|
|
30
30
|
}
|
|
31
31
|
static runCreate(ctx, fallback) {
|
|
32
32
|
const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);
|
|
@@ -38,7 +38,7 @@ export class ActionDataProviderUtil {
|
|
|
38
38
|
}
|
|
39
39
|
static runUpdateOrFail(ctx) {
|
|
40
40
|
return (ActionDataProviderUtil.runUpdate(ctx) ??
|
|
41
|
-
throwError(() => new
|
|
41
|
+
throwError(() => new MngInternalError(`Data provider and service instance could not extract update function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`, 'ActionDataProviderUtils error')));
|
|
42
42
|
}
|
|
43
43
|
static runUpdate(ctx, fallback) {
|
|
44
44
|
const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);
|
|
@@ -56,7 +56,7 @@ export class ActionDataProviderUtil {
|
|
|
56
56
|
const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);
|
|
57
57
|
return isObservable(serviceExec)
|
|
58
58
|
? serviceExec
|
|
59
|
-
: throwError(() => new
|
|
59
|
+
: throwError(() => new MngInternalError(`Data provider and service instance could not extract delete function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`, 'ActionDataProviderUtils error'));
|
|
60
60
|
}
|
|
61
61
|
static runGetAllService(ctx) {
|
|
62
62
|
if (typeof ctx.serviceInstance !== 'undefined') {
|
|
@@ -162,4 +162,4 @@ export class ActionDataProviderUtil {
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRhdGEtcHJvdmlkZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvYWN0aW9uLWRhdGEtcHJvdmlkZXIudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUJBQXVCLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBSXpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUzQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE1BQU0sQ0FBQyxlQUFlLENBQU8sR0FBd0I7UUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRSxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDNUIsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNaLElBQUksZ0JBQWdCLENBQ2hCLDRGQUE0RixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLEVBQ2hOLCtCQUErQixDQUNsQyxDQUFDLFlBQVksRUFBRSxDQUNuQixDQUFDO0lBQ1osQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQU8sR0FBd0I7UUFDdkQsT0FBTyxDQUNILHNCQUFzQixDQUFDLFFBQVEsQ0FB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgaXNPYnNlcnZhYmxlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtQnVpbGRlciwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtJTW5nQ3J1ZEFwaVNlcnZpY2UsIElNbmdHZXRBbGxBcGlTZXJ2aWNlfSBmcm9tICcuLi9hcGkvc2VydmljZXMnO1xuaW1wb3J0IHtBY3Rpb25Db250ZXh0fSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHtJRGF0YVByb3ZpZGVyLCBJRWRpdG9yRGF0YVByb3ZpZGVyLCBJVGFibGVEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7TW5nRXJyb3JJbnRlcm5hbH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRhdGFQcm92aWRlclV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuR2V0QWxsT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+IHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuR2V0QWxsRGF0YVByb3ZpZGVyKGN0eCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcnZpY2VFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5HZXRBbGxTZXJ2aWNlKGN0eCk7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUoc2VydmljZUV4ZWMpXG4gICAgICAgICAgICA/IHNlcnZpY2VFeGVjXG4gICAgICAgICAgICA6IHRocm93RXJyb3IoKCkgPT5cbiAgICAgICAgICAgICAgICAgIG5ldyBNbmdFcnJvckludGVybmFsKFxuICAgICAgICAgICAgICAgICAgICAgIGBEYXRhIHByb3ZpZGVyIGFuZCBzZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBleHRyYWN0IGZldGNoIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgaW4gYWN0aW9uICR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5hY3Rpb25OYW1lTG9uZ30gKCR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5tb2RlbD8udHlwZU5hbWV9KSBmb3IgaXRlbSBpZCAke2N0eC5wYXJhbWV0ZXJzPy5pdGVtSWR9LmAsXG4gICAgICAgICAgICAgICAgICAgICAgJ0FjdGlvbkRhdGFQcm92aWRlclV0aWxzIGVycm9yJ1xuICAgICAgICAgICAgICAgICAgKS5jb25zb2xlRXJyb3IoKVxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRmV0Y2hPckZhaWw8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkZldGNoKGN0eCkgPz9cbiAgICAgICAgICAgIHRocm93RXJyb3IoKCkgPT5cbiAgICAgICAgICAgICAgICBuZXcgTW5nRXJyb3JJbnRlcm5hbChcbiAgICAgICAgICAgICAgICAgICAgYERhdGEgcHJvdmlkZXIgYW5kIHNlcnZpY2UgaW5zdGFuY2UgY291bGQgbm90IGV4dHJhY3QgZmV0Y2ggZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtIGlkICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW1JZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgJ0FjdGlvbkRhdGFQcm92aWRlclV0aWxzIGVycm9yJ1xuICAgICAgICAgICAgICAgICkuY29uc29sZUVycm9yKClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkZldGNoPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4gfCBudWxsO1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuRmV0Y2g8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+LCBmYWxsYmFjazogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgICBwdWJsaWMgc3RhdGljIHJ1bkZldGNoPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPiwgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPik6IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkZldGNoRGF0YVByb3ZpZGVyKGN0eCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcnZpY2VFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5HZXRCeUlkU2VydmljZShjdHgpO1xuICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHNlcnZpY2VFeGVjKSA/IHNlcnZpY2VFeGVjIDogZmFsbGJhY2sgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkNyZWF0ZU9yRmFpbDxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuQ3JlYXRlKGN0eCkgPz9cbiAgICAgICAgICAgIHRocm93RXJyb3IoKCkgPT5cbiAgICAgICAgICAgICAgICBuZXcgTW5nRXJyb3JJbnRlcm5hbChcbiAgICAgICAgICAgICAgICAgICAgYERhdGEgcHJvdmlkZXIgYW5kIHNlcnZpY2UgaW5zdGFuY2UgY291bGQgbm90IGV4dHJhY3QgY3JlYXRlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgaW4gYWN0aW9uICR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5hY3Rpb25OYW1lTG9uZ30gKCR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5tb2RlbD8udHlwZU5hbWV9KSBmb3IgaXRlbSAke2N0eC5wYXJhbWV0ZXJzPy5pdGVtfS5gLFxuICAgICAgICAgICAgICAgICAgICAnQWN0aW9uRGF0YVByb3ZpZGVyVXRpbHMgZXJyb3InXG4gICAgICAgICAgICAgICAgKS5jb25zb2xlRXJyb3IoKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4gfCBudWxsO1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPiwgZmFsbGJhY2s6IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgcHVibGljIHN0YXRpYyBydW5DcmVhdGU8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+LCBmYWxsYmFjaz86IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuQ3JlYXRlRGF0YVByb3ZpZGVyKGN0eCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcnZpY2VFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5DcmVhdGVTZXJ2aWNlKGN0eCk7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUoc2VydmljZUV4ZWMpID8gc2VydmljZUV4ZWMgOiBmYWxsYmFjayA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuVXBkYXRlT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5VcGRhdGUoY3R4KSA/P1xuICAgICAgICAgICAgdGhyb3dFcnJvcigoKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBNbmdFcnJvckludGVybmFsKFxuICAgICAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBhbmQgc2VydmljZSBpbnN0YW5jZSBjb3VsZCBub3QgZXh0cmFjdCB1cGRhdGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtIGlkICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW1JZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgJ0FjdGlvbkRhdGFQcm92aWRlclV0aWxzIGVycm9yJ1xuICAgICAgICAgICAgICAgICkuY29uc29sZUVycm9yKClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1blVwZGF0ZTxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbDtcbiAgICBwdWJsaWMgc3RhdGljIHJ1blVwZGF0ZTxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPik6IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuVXBkYXRlPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPiwgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPik6IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1blVwZGF0ZURhdGFQcm92aWRlcihjdHgpO1xuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGRhdGFQcm92aWRlckV4ZWMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlYztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXJ2aWNlRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuVXBkYXRlU2VydmljZShjdHgpO1xuICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHNlcnZpY2VFeGVjKSA/IHNlcnZpY2VFeGVjIDogZmFsbGJhY2sgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkRlbGV0ZU9yRmFpbDxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkRlbGV0ZURhdGFQcm92aWRlcihjdHgpO1xuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGRhdGFQcm92aWRlckV4ZWMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlYztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXJ2aWNlRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuRGVsZXRlU2VydmljZShjdHgpO1xuICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHNlcnZpY2VFeGVjKVxuICAgICAgICAgICAgPyBzZXJ2aWNlRXhlY1xuICAgICAgICAgICAgOiB0aHJvd0Vycm9yKCgpID0+XG4gICAgICAgICAgICAgICAgICBuZXcgTW5nRXJyb3JJbnRlcm5hbChcbiAgICAgICAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBhbmQgc2VydmljZSBpbnN0YW5jZSBjb3VsZCBub3QgZXh0cmFjdCBkZWxldGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtIGlkICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW1JZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uRGF0YVByb3ZpZGVyVXRpbHMgZXJyb3InXG4gICAgICAgICAgICAgICAgICApLmNvbnNvbGVFcnJvcigpXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5HZXRBbGxTZXJ2aWNlPFQ+KGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPik6IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LnNlcnZpY2VJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEFsbFNlcnZpY2VJbnN0YW5jZSA9IGN0eC5zZXJ2aWNlSW5zdGFuY2UgYXMgSU1uZ0dldEFsbEFwaVNlcnZpY2U8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBnZXRBbGxTZXJ2aWNlSW5zdGFuY2UuZ2V0QWxsUG9zdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW0gPSBjdHgucGFyYW1ldGVycz8ucXVlcnlQYXJhbSA/PyBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoKS5idWlsZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRBbGxTZXJ2aWNlSW5zdGFuY2UuZ2V0QWxsUG9zdChxdWVyeVBhcmFtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkdldEJ5SWRTZXJ2aWNlPFQ+KGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPik6IE9ic2VydmFibGU8VD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguc2VydmljZUluc3RhbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgY3J1ZFNlcnZpY2VJbnN0YW5jZSA9IGN0eC5zZXJ2aWNlSW5zdGFuY2UgYXMgSU1uZ0NydWRBcGlTZXJ2aWNlPFQ+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnVkU2VydmljZUluc3RhbmNlLmdldEJ5SWRHZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCA/IGNydWRTZXJ2aWNlSW5zdGFuY2UuZ2V0QnlJZEdldChjdHgucGFyYW1ldGVycy5pdGVtSWQpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkNyZWF0ZVNlcnZpY2U8VD4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIHVua25vd24+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5zZXJ2aWNlSW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBjcnVkU2VydmljZUluc3RhbmNlID0gY3R4LnNlcnZpY2VJbnN0YW5jZSBhcyBJTW5nQ3J1ZEFwaVNlcnZpY2U8VD47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNydWRTZXJ2aWNlSW5zdGFuY2UuY3JlYXRlUG9zdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbSA/IGNydWRTZXJ2aWNlSW5zdGFuY2UuY3JlYXRlUG9zdChjdHgucGFyYW1ldGVycy5pdGVtKSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5VcGRhdGVTZXJ2aWNlPFQ+KGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPik6IE9ic2VydmFibGU8VD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguc2VydmljZUluc3RhbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgY3J1ZFNlcnZpY2VJbnN0YW5jZSA9IGN0eC5zZXJ2aWNlSW5zdGFuY2UgYXMgSU1uZ0NydWRBcGlTZXJ2aWNlPFQ+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnVkU2VydmljZUluc3RhbmNlLnVwZGF0ZVB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbUlkICYmIGN0eC5wYXJhbWV0ZXJzLml0ZW0gPyBjcnVkU2VydmljZUluc3RhbmNlLnVwZGF0ZVB1dChjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0pIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkRlbGV0ZVNlcnZpY2U8VD4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIHVua25vd24+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguc2VydmljZUluc3RhbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgY3J1ZFNlcnZpY2VJbnN0YW5jZSA9IGN0eC5zZXJ2aWNlSW5zdGFuY2UgYXMgSU1uZ0NydWRBcGlTZXJ2aWNlPFQ+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnVkU2VydmljZUluc3RhbmNlLnJlbW92ZURlbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbUlkID8gY3J1ZFNlcnZpY2VJbnN0YW5jZS5yZW1vdmVEZWxldGUoY3R4LnBhcmFtZXRlcnMuaXRlbUlkLCBjdHgucGFyYW1ldGVycy5pdGVtKSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5HZXRBbGxEYXRhUHJvdmlkZXI8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxNZWRpdXNRdWVyeVJlc3VsdDxUPj4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY3R4LmRhdGFQcm92aWRlclsnZ2V0QWxsJyBhcyBrZXlvZiBvYmplY3RdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZURhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSVRhYmxlRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtID0gY3R4LnBhcmFtZXRlcnM/LnF1ZXJ5UGFyYW0gPz8gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKCkuYnVpbGQoKTtcbiAgICAgICAgICAgIHJldHVybiB0YWJsZURhdGFQcm92aWRlci5nZXRBbGwocXVlcnlQYXJhbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5GZXRjaERhdGFQcm92aWRlcjxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuZmV0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCA/IGVkaXRvckRhdGFQcm92aWRlci5mZXRjaChjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5zZXJ2aWNlSW5zdGFuY2UsIGN0eC5wYXJhbWV0ZXJzLmxvY2FsZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlRGF0YVByb3ZpZGVyPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgZWRpdG9yRGF0YVByb3ZpZGVyID0gY3R4LmRhdGFQcm92aWRlciBhcyBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW0gPyBlZGl0b3JEYXRhUHJvdmlkZXIuY3JlYXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1blVwZGF0ZURhdGFQcm92aWRlcjxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIudXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBlZGl0b3JEYXRhUHJvdmlkZXIudXBkYXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRGVsZXRlRGF0YVByb3ZpZGVyPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VCB8IG51bGw+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGF0YVByb3ZpZGVyU2VydmljZTxULCBTPihpbmplY3RvcjogSW5qZWN0b3IsIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz4pOiBTIHwgbnVsbCB7XG4gICAgICAgIGlmIChkYXRhUHJvdmlkZXI/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0PFM+KGRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRhdGEtcHJvdmlkZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvYWN0aW9uLWRhdGEtcHJvdmlkZXIudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUJBQXVCLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBSXpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUzQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE1BQU0sQ0FBQyxlQUFlLENBQU8sR0FBd0I7UUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRSxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDNUIsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUMsVUFBVSxDQUNOLEdBQUcsRUFBRSxDQUNELElBQUksZ0JBQWdCLENBQ2hCLDRGQUE0RixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLEVBQ2hOLCtCQUErQixDQUNsQyxDQUNSLENBQUM7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBTyxHQUF3QjtRQUN2RCxPQUFPLENBQ0gsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNw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VSxFQUFFO2dCQUNqRCxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDckk7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLENBQUMscUJBQXFCLENBQU8sR0FBd0I7UUFDOUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxZQUFZLEtBQUssV0FBVyxFQUFFO1lBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFlBQTJDLENBQUM7WUFDM0UsSUFBSSxPQUFPLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7Z0JBQ2pELE9BQU8sR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNySTtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQU8sUUFBa0IsRUFBRSxZQUFrQztRQUM3RixJQUFJLFlBQVksRUFBRSxXQUFXLEVBQUU7WUFDM0IsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIsIE1lZGl1c1F1ZXJ5UmVzdWx0fSBmcm9tICcuLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7SU1uZ0NydWRBcGlTZXJ2aWNlLCBJTW5nR2V0QWxsQXBpU2VydmljZX0gZnJvbSAnLi4vYXBpL3NlcnZpY2VzJztcbmltcG9ydCB7QWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpb24vbW9kZWxzJztcbmltcG9ydCB7SURhdGFQcm92aWRlciwgSUVkaXRvckRhdGFQcm92aWRlciwgSVRhYmxlRGF0YVByb3ZpZGVyfSBmcm9tICcuLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge01uZ0ludGVybmFsRXJyb3J9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIHJ1bkdldEFsbE9yRmFpbDxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkdldEFsbERhdGFQcm92aWRlcihjdHgpO1xuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGRhdGFQcm92aWRlckV4ZWMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlYztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXJ2aWNlRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuR2V0QWxsU2VydmljZShjdHgpO1xuICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHNlcnZpY2VFeGVjKVxuICAgICAgICAgICAgPyBzZXJ2aWNlRXhlY1xuICAgICAgICAgICAgOiB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBuZXcgTW5nSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYERhdGEgcHJvdmlkZXIgYW5kIHNlcnZpY2UgaW5zdGFuY2UgY291bGQgbm90IGV4dHJhY3QgZmV0Y2ggZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtIGlkICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW1JZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FjdGlvbkRhdGFQcm92aWRlclV0aWxzIGVycm9yJ1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkZldGNoT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5GZXRjaChjdHgpID8/XG4gICAgICAgICAgICB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBNbmdJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYERhdGEgcHJvdmlkZXIgYW5kIHNlcnZpY2UgaW5zdGFuY2UgY291bGQgbm90IGV4dHJhY3QgZmV0Y2ggZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtIGlkICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW1JZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY3Rpb25EYXRhUHJvdmlkZXJVdGlscyBlcnJvcidcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRmV0Y2g8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGw7XG4gICAgcHVibGljIHN0YXRpYyBydW5GZXRjaDxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPik6IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuRmV0Y2g8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+LCBmYWxsYmFjaz86IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuRmV0Y2hEYXRhUHJvdmlkZXIoY3R4KTtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShkYXRhUHJvdmlkZXJFeGVjKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VydmljZUV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkdldEJ5SWRTZXJ2aWNlKGN0eCk7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUoc2VydmljZUV4ZWMpID8gc2VydmljZUV4ZWMgOiBmYWxsYmFjayA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5DcmVhdGUoY3R4KSA/P1xuICAgICAgICAgICAgdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgTW5nSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGBEYXRhIHByb3ZpZGVyIGFuZCBzZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBleHRyYWN0IGNyZWF0ZSBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lfSkgZm9yIGl0ZW0gJHtjdHgucGFyYW1ldGVycz8uaXRlbX0uYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY3Rpb25EYXRhUHJvdmlkZXJVdGlscyBlcnJvcidcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4gfCBudWxsO1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPiwgZmFsbGJhY2s6IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgcHVibGljIHN0YXRpYyBydW5DcmVhdGU8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+LCBmYWxsYmFjaz86IE9ic2VydmFibGU8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuQ3JlYXRlRGF0YVByb3ZpZGVyKGN0eCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcnZpY2VFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5DcmVhdGVTZXJ2aWNlKGN0eCk7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUoc2VydmljZUV4ZWMpID8gc2VydmljZUV4ZWMgOiBmYWxsYmFjayA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuVXBkYXRlT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5VcGRhdGUoY3R4KSA/P1xuICAgICAgICAgICAgdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgTW5nSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGBEYXRhIHByb3ZpZGVyIGFuZCBzZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBleHRyYWN0IHVwZGF0ZSBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lfSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjdGlvbkRhdGFQcm92aWRlclV0aWxzIGVycm9yJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5VcGRhdGU8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGw7XG4gICAgcHVibGljIHN0YXRpYyBydW5VcGRhdGU8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+LCBmYWxsYmFjazogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgICBwdWJsaWMgc3RhdGljIHJ1blVwZGF0ZTxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4sIGZhbGxiYWNrPzogT2JzZXJ2YWJsZTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBPYnNlcnZhYmxlPFQgfCBudWxsIHwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5VcGRhdGVEYXRhUHJvdmlkZXIoY3R4KTtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShkYXRhUHJvdmlkZXJFeGVjKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VydmljZUV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1blVwZGF0ZVNlcnZpY2UoY3R4KTtcbiAgICAgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShzZXJ2aWNlRXhlYykgPyBzZXJ2aWNlRXhlYyA6IGZhbGxiYWNrID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5EZWxldGVPckZhaWw8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5EZWxldGVEYXRhUHJvdmlkZXIoY3R4KTtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShkYXRhUHJvdmlkZXJFeGVjKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VydmljZUV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkRlbGV0ZVNlcnZpY2UoY3R4KTtcbiAgICAgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShzZXJ2aWNlRXhlYylcbiAgICAgICAgICAgID8gc2VydmljZUV4ZWNcbiAgICAgICAgICAgIDogdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgbmV3IE1uZ0ludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBEYXRhIHByb3ZpZGVyIGFuZCBzZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBleHRyYWN0IGRlbGV0ZSBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lfSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uRGF0YVByb3ZpZGVyVXRpbHMgZXJyb3InXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuR2V0QWxsU2VydmljZTxUPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pOiBPYnNlcnZhYmxlPE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5zZXJ2aWNlSW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBnZXRBbGxTZXJ2aWNlSW5zdGFuY2UgPSBjdHguc2VydmljZUluc3RhbmNlIGFzIElNbmdHZXRBbGxBcGlTZXJ2aWNlPE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZ2V0QWxsU2VydmljZUluc3RhbmNlLmdldEFsbFBvc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtID0gY3R4LnBhcmFtZXRlcnM/LnF1ZXJ5UGFyYW0gPz8gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKCkuYnVpbGQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QWxsU2VydmljZUluc3RhbmNlLmdldEFsbFBvc3QocXVlcnlQYXJhbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5HZXRCeUlkU2VydmljZTxUPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LnNlcnZpY2VJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNydWRTZXJ2aWNlSW5zdGFuY2UgPSBjdHguc2VydmljZUluc3RhbmNlIGFzIElNbmdDcnVkQXBpU2VydmljZTxUPjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3J1ZFNlcnZpY2VJbnN0YW5jZS5nZXRCeUlkR2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBjcnVkU2VydmljZUluc3RhbmNlLmdldEJ5SWRHZXQoY3R4LnBhcmFtZXRlcnMuaXRlbUlkKSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5DcmVhdGVTZXJ2aWNlPFQ+KGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPik6IE9ic2VydmFibGU8VD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguc2VydmljZUluc3RhbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgY3J1ZFNlcnZpY2VJbnN0YW5jZSA9IGN0eC5zZXJ2aWNlSW5zdGFuY2UgYXMgSU1uZ0NydWRBcGlTZXJ2aWNlPFQ+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnVkU2VydmljZUluc3RhbmNlLmNyZWF0ZVBvc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW0gPyBjcnVkU2VydmljZUluc3RhbmNlLmNyZWF0ZVBvc3QoY3R4LnBhcmFtZXRlcnMuaXRlbSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuVXBkYXRlU2VydmljZTxUPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LnNlcnZpY2VJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNydWRTZXJ2aWNlSW5zdGFuY2UgPSBjdHguc2VydmljZUluc3RhbmNlIGFzIElNbmdDcnVkQXBpU2VydmljZTxUPjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3J1ZFNlcnZpY2VJbnN0YW5jZS51cGRhdGVQdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCAmJiBjdHgucGFyYW1ldGVycy5pdGVtID8gY3J1ZFNlcnZpY2VJbnN0YW5jZS51cGRhdGVQdXQoY3R4LnBhcmFtZXRlcnMuaXRlbUlkLCBjdHgucGFyYW1ldGVycy5pdGVtKSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5EZWxldGVTZXJ2aWNlPFQ+KGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPik6IE9ic2VydmFibGU8VCB8IG51bGw+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LnNlcnZpY2VJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNydWRTZXJ2aWNlSW5zdGFuY2UgPSBjdHguc2VydmljZUluc3RhbmNlIGFzIElNbmdDcnVkQXBpU2VydmljZTxUPjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3J1ZFNlcnZpY2VJbnN0YW5jZS5yZW1vdmVEZWxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCA/IGNydWRTZXJ2aWNlSW5zdGFuY2UucmVtb3ZlRGVsZXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnBhcmFtZXRlcnMuaXRlbSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuR2V0QWxsRGF0YVByb3ZpZGVyPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGN0eC5kYXRhUHJvdmlkZXJbJ2dldEFsbCcgYXMga2V5b2Ygb2JqZWN0XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgdGFibGVEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElUYWJsZURhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbSA9IGN0eC5wYXJhbWV0ZXJzPy5xdWVyeVBhcmFtID8/IE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyLmNyZWF0ZSgpLmJ1aWxkKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsKHF1ZXJ5UGFyYW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRmV0Y2hEYXRhUHJvdmlkZXI8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55PjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLmZldGNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBlZGl0b3JEYXRhUHJvdmlkZXIuZmV0Y2goY3R4LnBhcmFtZXRlcnMuaXRlbUlkLCBjdHguc2VydmljZUluc3RhbmNlLCBjdHgucGFyYW1ldGVycy5sb2NhbGUpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkNyZWF0ZURhdGFQcm92aWRlcjxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtID8gZWRpdG9yRGF0YVByb3ZpZGVyLmNyZWF0ZShjdHgucGFyYW1ldGVycy5pdGVtLCBjdHguc2VydmljZUluc3RhbmNlKSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5VcGRhdGVEYXRhUHJvdmlkZXI8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55PjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbUlkID8gZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZShjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkRlbGV0ZURhdGFQcm92aWRlcjxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55PjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLmRlbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbUlkID8gZWRpdG9yRGF0YVByb3ZpZGVyLmRlbGV0ZShjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHNlcnZpY2UgaW5zdGFuY2Ugb2YgZGF0YSBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhUHJvdmlkZXIgRGF0YSBwcm92aWRlciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldERhdGFQcm92aWRlclNlcnZpY2U8VCwgUz4oaW5qZWN0b3I6IEluamVjdG9yLCBkYXRhUHJvdmlkZXI/OiBJRGF0YVByb3ZpZGVyPFQsIFM+KTogUyB8IG51bGwge1xuICAgICAgICBpZiAoZGF0YVByb3ZpZGVyPy5zZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGluamVjdG9yLmdldDxTPihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MngLoggerService } from '../services';
|
|
1
2
|
import { I18nUtils } from './i18n.util';
|
|
2
3
|
export class NotificationUtil {
|
|
3
4
|
static notification(viewContainer, title, message, severity = 'success', icon) {
|
|
@@ -7,7 +8,7 @@ export class NotificationUtil {
|
|
|
7
8
|
messageService.add(notification);
|
|
8
9
|
}
|
|
9
10
|
else {
|
|
10
|
-
|
|
11
|
+
MngLoggerService.get().warn(`No message service was provided through view container, message will not be displayed.`);
|
|
11
12
|
}
|
|
12
13
|
return notification;
|
|
13
14
|
}
|
|
@@ -48,4 +49,4 @@ export class NotificationUtil {
|
|
|
48
49
|
return { severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage };
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL25vdGlmaWNhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEMsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixNQUFNLENBQUMsWUFBWSxDQUN0QixhQUF3QyxFQUN4QyxLQUFjLEVBQ2QsT0FBZ0IsRUFDaEIsV0FBeUMsU0FBUyxFQUNsRCxJQUFhO1FBRWIsTUFBTSxjQUFjLEdBQUcsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUM7UUFDMUQsTUFBTSxZQUFZLEdBQVksRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO1FBRTNJLElBQUksY0FBYyxFQUFFO1lBQ2hCLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztTQUMxRztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsU0FBMkIsRUFBRSxLQUEyQixFQUFFLEtBQVUsRUFBRSxhQUF3QztRQUMvSSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7YUFBTTtZQUNILE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NB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RUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsU0FBMkIsRUFBRSxLQUFhLEVBQUUsT0FBZTtRQUNqRyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQy9ELE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lc3NhZ2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxlJztcbmltcG9ydCB7SVZpZXdDb250YWluZXIsIE1uZ0Vycm9yfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtJMThuVXRpbHN9IGZyb20gJy4vaTE4bi51dGlsJztcblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgbm90aWZpY2F0aW9uKFxuICAgICAgICB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+LFxuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyB8ICd3YXJuJyB8ICdlcnJvcicgPSAnc3VjY2VzcycsXG4gICAgICAgIGljb24/OiBzdHJpbmdcbiAgICApOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZVNlcnZpY2UgPSB2aWV3Q29udGFpbmVyPy5nZXRNZXNzYWdlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb246IE1lc3NhZ2UgPSB7c2V2ZXJpdHk6IHNldmVyaXR5LCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlLCBsaWZlOiBzZXZlcml0eSA9PT0gJ2Vycm9yJyA/IDEwMDAwIDogNTAwMCwgaWNvbjogaWNvbn07XG5cbiAgICAgICAgaWYgKG1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgICAgICAgICBtZXNzYWdlU2VydmljZS5hZGQobm90aWZpY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTm8gbWVzc2FnZSBzZXJ2aWNlIHdhcyBwcm92aWRlZCB0aHJvdWdoIHZpZXcgY29udGFpbmVyLCBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZC5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdGFibGVOb3RpZmljYXRpb25FcnJvcih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHRhYmxlOiBUYWJsZURlc2NyaXB0b3I8YW55PiwgZXJyb3I6IGFueSwgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55Pik6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHBhcmFtcy5lcnJvck1lc3NhZ2UgPSBgOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmFtcy5lcnJvck1lc3NhZ2UgPSAnLic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFibGVFcnJvclRpdGxlID0gSTE4blV0aWxzLk1vZGVsLmdldCh0cmFuc2xhdGUsIHRhYmxlLm1vZGVsLCAndGFibGUuZXJyb3IudGl0bGUnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2dlbmVyYWwuZXJyb3InLCBwYXJhbXMpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdGFibGVFcnJvck1lc3NhZ2UgPSBJMThuVXRpbHMuTW9kZWwuZ2V0KHRyYW5zbGF0ZSwgdGFibGUubW9kZWwsICd0YWJsZS5lcnJvci5tZXNzYWdlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yTWVzc2FnZScsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uVXRpbC5ub3RpZmljYXRpb24odmlld0NvbnRhaW5lciwgdGFibGVFcnJvclRpdGxlLCB0YWJsZUVycm9yTWVzc2FnZSwgJ2Vycm9yJywgJ3BpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhY3Rpb25Ob3RpZmljYXRpb25TdWNjZXNzKFxuICAgICAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tVGl0bGVLZXk/OiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbU1lc3NhZ2VLZXk/OiBzdHJpbmcsXG4gICAgICAgIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4sXG4gICAgICAgIGl0ZW0/OiBhbnlcbiAgICApOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgYWN0aW9uU3VjY2Vzc1RpdGxlID0gSTE4blV0aWxzLkFjdGlvbi5nZXQodHJhbnNsYXRlLCBhY3Rpb24sICdzdWNjZXNzLnRpdGxlJywgY3VzdG9tVGl0bGVLZXksIGl0ZW0sICdnZW5lcmFsLnN1Y2Nlc3MnLCBmdW5jdGlvbk5hbWUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uU3VjY2Vzc01lc3NhZ2UgPSBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgJ3N1Y2Nlc3MubWVzc2FnZScsIGN1c3RvbU1lc3NhZ2VLZXksIGl0ZW0sICdnZW5lcmFsLnN1Y2Nlc3NNZXNzYWdlJywgZnVuY3Rpb25OYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25VdGlsLm5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyLCBhY3Rpb25TdWNjZXNzVGl0bGUsIGFjdGlvblN1Y2Nlc3NNZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFjdGlvbk5vdGlmaWNhdGlvbkVycm9yKFxuICAgICAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBlcnJvcjogTW5nRXJyb3IsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+LFxuICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICBzZXZlcml0eTogJ3dhcm4nIHwgJ2Vycm9yJyA9ICdlcnJvcidcbiAgICApOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBJMThuVXRpbHMuRXJyb3IuZ2V0KHRyYW5zbGF0ZSwgZXJyb3IpID8/IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JUaXRsZSA9XG4gICAgICAgICAgICBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgW2BlcnJvci4ke2Z1bmN0aW9uTmFtZX0udGl0bGVgLCAnZXJyb3IudGl0bGUnXSwgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUsIGl0ZW0sICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgW2BlcnJvci4ke2Z1bmN0aW9uTmFtZX0ubWVzc2FnZWAsICdlcnJvci5tZXNzYWdlJ10sIGFjdGlvbi5ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UsIGl0ZW0sICdnZW5lcmFsLmVycm9yTWVzc2FnZScsIHBhcmFtcykgPz9cbiAgICAgICAgICAgIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIGFjdGlvbkVycm9yVGl0bGUsIGFjdGlvbkVycm9yTWVzc2FnZSwgc2V2ZXJpdHksICdwaS1leGNsYW1hdGlvbi10cmlhbmdsZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybUVkaXRvckluZm9NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JUaXRsZSA9IHRyYW5zbGF0ZS5pbnN0YW50KHRpdGxlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yTWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KG1lc3NhZ2UsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6IGFjdGlvbkVycm9yVGl0bGUsIGRldGFpbDogYWN0aW9uRXJyb3JNZXNzYWdlfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID0gdHJhbnNsYXRlLmluc3RhbnQodGl0bGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQobWVzc2FnZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6IGFjdGlvbkVycm9yVGl0bGUsIGRldGFpbDogYWN0aW9uRXJyb3JNZXNzYWdlfTtcbiAgICB9XG59XG4iXX0=
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL25vdGlmaWNhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsTUFBTSxDQUFDLFlBQVksQ0FDdEIsYUFBd0MsRUFDeEMsS0FBYyxFQUNkLE9BQWdCLEVBQ2hCLFdBQXlDLFNBQVMsRUFDbEQsSUFBYTtRQUViLE1BQU0sY0FBYyxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1FBQzFELE1BQU0sWUFBWSxHQUFZLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUUzSSxJQUFJLGNBQWMsRUFBRTtZQUNoQixjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDSCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztTQUN6SDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsU0FBMkIsRUFBRSxLQUEyQixFQUFFLEtBQVUsRUFBRSxhQUF3QztRQUMvSSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FB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QUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDM0UsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsU0FBMkIsRUFBRSxLQUFhLEVBQUUsT0FBZTtRQUNqRyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQy9ELE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lc3NhZ2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxlJztcbmltcG9ydCB7SVZpZXdDb250YWluZXIsIE1uZ0Vycm9yfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0kxOG5VdGlsc30gZnJvbSAnLi9pMThuLnV0aWwnO1xuXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uVXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBub3RpZmljYXRpb24oXG4gICAgICAgIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4sXG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnIHwgJ3dhcm4nIHwgJ2Vycm9yJyA9ICdzdWNjZXNzJyxcbiAgICAgICAgaWNvbj86IHN0cmluZ1xuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBtZXNzYWdlU2VydmljZSA9IHZpZXdDb250YWluZXI/LmdldE1lc3NhZ2VTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbjogTWVzc2FnZSA9IHtzZXZlcml0eTogc2V2ZXJpdHksIHN1bW1hcnk6IHRpdGxlLCBkZXRhaWw6IG1lc3NhZ2UsIGxpZmU6IHNldmVyaXR5ID09PSAnZXJyb3InID8gMTAwMDAgOiA1MDAwLCBpY29uOiBpY29ufTtcblxuICAgICAgICBpZiAobWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VTZXJ2aWNlLmFkZChub3RpZmljYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5nZXQoKS53YXJuKGBObyBtZXNzYWdlIHNlcnZpY2Ugd2FzIHByb3ZpZGVkIHRocm91Z2ggdmlldyBjb250YWluZXIsIG1lc3NhZ2Ugd2lsbCBub3QgYmUgZGlzcGxheWVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3RpZmljYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0YWJsZU5vdGlmaWNhdGlvbkVycm9yKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdGFibGU6IFRhYmxlRGVzY3JpcHRvcjxhbnk+LCBlcnJvcjogYW55LCB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+KTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XG4gICAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgcGFyYW1zLmVycm9yTWVzc2FnZSA9IGA6ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmVycm9yTWVzc2FnZSA9ICcuJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWJsZUVycm9yVGl0bGUgPSBJMThuVXRpbHMuTW9kZWwuZ2V0KHRyYW5zbGF0ZSwgdGFibGUubW9kZWwsICd0YWJsZS5lcnJvci50aXRsZScsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAnZ2VuZXJhbC5lcnJvcicsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB0YWJsZUVycm9yTWVzc2FnZSA9IEkxOG5VdGlscy5Nb2RlbC5nZXQodHJhbnNsYXRlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLm1lc3NhZ2UnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25VdGlsLm5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyLCB0YWJsZUVycm9yVGl0bGUsIHRhYmxlRXJyb3JNZXNzYWdlLCAnZXJyb3InLCAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFjdGlvbk5vdGlmaWNhdGlvblN1Y2Nlc3MoXG4gICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjdXN0b21UaXRsZUtleT86IHN0cmluZyxcbiAgICAgICAgY3VzdG9tTWVzc2FnZUtleT86IHN0cmluZyxcbiAgICAgICAgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55PixcbiAgICAgICAgaXRlbT86IGFueVxuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzVGl0bGUgPSBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgJ3N1Y2Nlc3MudGl0bGUnLCBjdXN0b21UaXRsZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2VzcycsIGZ1bmN0aW9uTmFtZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzTWVzc2FnZSA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0KHRyYW5zbGF0ZSwgYWN0aW9uLCAnc3VjY2Vzcy5tZXNzYWdlJywgY3VzdG9tTWVzc2FnZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2Vzc01lc3NhZ2UnLCBmdW5jdGlvbk5hbWUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIGFjdGlvblN1Y2Nlc3NUaXRsZSwgYWN0aW9uU3VjY2Vzc01lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgIGVycm9yOiBNbmdFcnJvcixcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4sXG4gICAgICAgIGl0ZW0/OiBhbnksXG4gICAgICAgIHNldmVyaXR5OiAnd2FybicgfCAnZXJyb3InID0gJ2Vycm9yJ1xuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEkxOG5VdGlscy5FcnJvci5nZXQodHJhbnNsYXRlLCBlcnJvcikgPz8gZXJyb3IubWVzc2FnZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID1cbiAgICAgICAgICAgIEkxOG5VdGlscy5BY3Rpb24uZ2V0KHRyYW5zbGF0ZSwgYWN0aW9uLCBbYGVycm9yLiR7ZnVuY3Rpb25OYW1lfS50aXRsZWAsICdlcnJvci50aXRsZSddLCBhY3Rpb24ucnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSwgaXRlbSwgJ2dlbmVyYWwuZXJyb3InLCBwYXJhbXMpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgIEkxOG5VdGlscy5BY3Rpb24uZ2V0KHRyYW5zbGF0ZSwgYWN0aW9uLCBbYGVycm9yLiR7ZnVuY3Rpb25OYW1lfS5tZXNzYWdlYCwgJ2Vycm9yLm1lc3NhZ2UnXSwgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZSwgaXRlbSwgJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJywgcGFyYW1zKSA/P1xuICAgICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uVXRpbC5ub3RpZmljYXRpb24odmlld0NvbnRhaW5lciwgYWN0aW9uRXJyb3JUaXRsZSwgYWN0aW9uRXJyb3JNZXNzYWdlLCBzZXZlcml0eSwgJ3BpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRGb3JtRWRpdG9ySW5mb01lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID0gdHJhbnNsYXRlLmluc3RhbnQodGl0bGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQobWVzc2FnZSwgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7c2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudCh0aXRsZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPSB0cmFuc2xhdGUuaW5zdGFudChtZXNzYWdlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7c2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export class ObjectUtil {
|
|
2
|
-
static
|
|
3
|
-
if (typeof obj !== 'object' || obj === null) {
|
|
2
|
+
static deepCopy(obj, options) {
|
|
3
|
+
if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
|
|
4
4
|
return obj;
|
|
5
5
|
}
|
|
6
6
|
if (obj instanceof Date) {
|
|
@@ -26,12 +26,39 @@ export class ObjectUtil {
|
|
|
26
26
|
}
|
|
27
27
|
return copy;
|
|
28
28
|
}
|
|
29
|
+
static deepMerge(target, source) {
|
|
30
|
+
if (!ObjectUtil.isObject(source)) {
|
|
31
|
+
return target;
|
|
32
|
+
}
|
|
33
|
+
for (const key of ObjectUtil.getProperties(source)) {
|
|
34
|
+
if (ObjectUtil.isObject(source[key])) {
|
|
35
|
+
if (ObjectUtil.isObject(target[key])) {
|
|
36
|
+
target[key] = ObjectUtil.deepMerge(target[key], source[key]);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
target[key] = ObjectUtil.deepCopy(source[key]);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (Array.isArray(source[key])) {
|
|
43
|
+
if (!Array.isArray(target[key])) {
|
|
44
|
+
target[key] = source[key].map(i => (ObjectUtil.isObject(i) ? ObjectUtil.deepMerge({}, i) : i));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (typeof target[key] === 'undefined') {
|
|
48
|
+
target[key] = source[key];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
static isObject(obj) {
|
|
54
|
+
return typeof obj === 'object' && obj !== null && !Array.isArray(obj);
|
|
55
|
+
}
|
|
29
56
|
static handleProp(prop, options) {
|
|
30
57
|
if (Array.isArray(prop)) {
|
|
31
|
-
return prop.map(i => ObjectUtil.
|
|
58
|
+
return prop.map(i => ObjectUtil.deepCopy(i, options));
|
|
32
59
|
}
|
|
33
60
|
else if (typeof prop === 'object' && prop !== null) {
|
|
34
|
-
return ObjectUtil.
|
|
61
|
+
return ObjectUtil.deepCopy(prop, options);
|
|
35
62
|
}
|
|
36
63
|
else {
|
|
37
64
|
return prop;
|
|
@@ -56,4 +83,4 @@ export class ObjectUtil {
|
|
|
56
83
|
return Array.from(getterSet);
|
|
57
84
|
}
|
|
58
85
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL29iamVjdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sT0FBTyxVQUFVO0lBU1osTUFBTSxDQUFDLGNBQWMsQ0FBeUIsR0FBTSxFQUFFLE9BQTRCO1FBQ3JGLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDekMsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUVELElBQUksR0FBRyxZQUFZLElBQUksRUFBRTtZQUNyQixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLElBQUksQ0FBQztRQUNULElBQUksT0FBTyxFQUFFLHNCQUFzQixFQUFFO1lBQ2pDLElBQUksR0FBRyxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0gsSUFBSSxHQUFHLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEosTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUI7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQW1CLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBQyxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUMsQ0FBQyxDQUFDO1NBQ3RHO1FBRUQsSUFBSSxPQUFPLEVBQUUsc0JBQXNCLEVBQUU7WUFDakMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsU0FBeUIsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBQyxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUMsQ0FBQyxDQUFDO2FBQzVHO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFTLEVBQUUsT0FBOEI7UUFDL0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDL0Q7YUFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2xELE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQ25DLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDcEMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRWxCLE9BQU8sT0FBTyxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3BFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxVQUFVLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQztpQkFDaEUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQztpQkFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFekIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekI7WUFFRCxPQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgRGVlcENvcHlQcm9wc09wdGlvbnMge1xuICAgIG1hcEdldHRlcnNUb1Byb3BlcnRpZXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZXBDb3B5T3B0aW9uczxQID0gb2JqZWN0PiBleHRlbmRzIERlZXBDb3B5UHJvcHNPcHRpb25zIHtcbiAgICBvYmplY3RQcm90b3R5cGU/OiBDbGFzc1R5cGU8UD47XG59XG5cbmV4cG9ydCBjbGFzcyBPYmplY3RVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGRlZXBDb3B5T2JqZWN0PFQgPSBvYmplY3QsIFAgPSBvYmplY3Q+KG9iajogVCwgb3B0aW9uczogRGVlcENvcHlPcHRpb25zPFA+ICYge21hcEdldHRlcnNUb1Byb3BlcnRpZXM6IHRydWV9KTogVCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weU9iamVjdDxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM6IERlZXBDb3B5T3B0aW9uczxQPiAmIHtvYmplY3RQcm90b3R5cGU6IENsYXNzVHlwZTxQPn0gJiB7bWFwR2V0dGVyc1RvUHJvcGVydGllcz86IGZhbHNlfSk6IFA7XG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weU9iamVjdDxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihcbiAgICAgICAgb2JqOiBULFxuICAgICAgICBvcHRpb25zOiBEZWVwQ29weU9wdGlvbnM8UD4gJiB7b2JqZWN0UHJvdG90eXBlOiBDbGFzc1R5cGU8UD59ICYge21hcEdldHRlcnNUb1Byb3BlcnRpZXM6IHRydWV9XG4gICAgKTogUCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weU9iamVjdDxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM/OiBEZWVwQ29weU9wdGlvbnM8UD4pOiBUO1xuXG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weU9iamVjdDxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM/OiBEZWVwQ29weU9wdGlvbnM8UD4pOiBUIHwgUCB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgrb2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb3B5O1xuICAgICAgICBpZiAob3B0aW9ucz8ubWFwR2V0dGVyc1RvUHJvcGVydGllcykge1xuICAgICAgICAgICAgY29weSA9IHt9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29weSA9IG9wdGlvbnM/Lm9iamVjdFByb3RvdHlwZSA/IE9iamVjdC5jcmVhdGUob3B0aW9ucy5vYmplY3RQcm90b3R5cGVbJ3Byb3RvdHlwZScgYXMga2V5b2Ygb2JqZWN0XSkgOiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29weSwgb2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdFV0aWwuZ2V0UHJvcGVydGllcyhvYmopKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wID0gb2JqW2tleSBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgY29weVtrZXldID0gT2JqZWN0VXRpbC5oYW5kbGVQcm9wKHByb3AsIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiBvcHRpb25zPy5tYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucz8ubWFwR2V0dGVyc1RvUHJvcGVydGllcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBnZXR0ZXJLZXkgb2YgT2JqZWN0VXRpbC5nZXRHZXR0ZXJzKG9iaikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gb2JqW2dldHRlcktleSBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgICAgIGNvcHlbZ2V0dGVyS2V5XSA9IE9iamVjdFV0aWwuaGFuZGxlUHJvcChwcm9wLCB7bWFwR2V0dGVyc1RvUHJvcGVydGllczogb3B0aW9ucz8ubWFwR2V0dGVyc1RvUHJvcGVydGllc30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaGFuZGxlUHJvcChwcm9wOiBhbnksIG9wdGlvbnM/OiBEZWVwQ29weVByb3BzT3B0aW9ucykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3AubWFwKGkgPT4gT2JqZWN0VXRpbC5kZWVwQ29weU9iamVjdChpLCBvcHRpb25zKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3AgPT09ICdvYmplY3QnICYmIHByb3AgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlsLmRlZXBDb3B5T2JqZWN0KHByb3AsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHByb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnRpZXMob2JqOiBvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRHZXR0ZXJzKG9iajogYW55KTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBnZXR0ZXJTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgbGV0IGN1cnJPYmogPSBvYmo7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJPYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGdldHRlcnMgPSBPYmplY3QuZW50cmllcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyT2JqKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChbLCBkZXNjcmlwdG9yXSkgPT4gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09ICdfX3Byb3RvX18nKVxuICAgICAgICAgICAgICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdldHRlciBvZiBnZXR0ZXJzKSB7XG4gICAgICAgICAgICAgICAgZ2V0dGVyU2V0LmFkZChnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyT2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJPYmopO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZ2V0dGVyU2V0KTtcbiAgICB9XG59XG4iXX0=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL29iamVjdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sT0FBTyxVQUFVO0lBTVosTUFBTSxDQUFDLFFBQVEsQ0FBeUIsR0FBTSxFQUFFLE9BQTRCO1FBQy9FLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvRCxPQUFPLEdBQUcsQ0FBQztTQUNkO1FBRUQsSUFBSSxHQUFHLFlBQVksSUFBSSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxDQUFDO1FBQ1QsSUFBSSxPQUFPLEVBQUUsc0JBQXNCLEVBQUU7WUFDakMsSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUNiO2FBQU07WUFDSCxJQUFJLEdBQUcsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsSixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUVELEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FBbUIsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFDLHNCQUFzQixFQUFFLE9B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QU07WUFDSCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBVztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBUTtRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUVsQixPQUFPLE9BQU8sRUFBRTtZQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNwRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sVUFBVSxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUM7aUJBQ2hFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUM7aUJBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3pCO1lBRUQsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIERlZXBDb3B5UHJvcHNPcHRpb25zIHtcbiAgICBtYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWVwQ29weU9wdGlvbnM8UCA9IG9iamVjdD4gZXh0ZW5kcyBEZWVwQ29weVByb3BzT3B0aW9ucyB7XG4gICAgb2JqZWN0UHJvdG90eXBlPzogQ2xhc3NUeXBlPFA+O1xufVxuXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weTxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM6IERlZXBDb3B5T3B0aW9uczxQPiAmIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiB0cnVlfSk6IFQgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHB1YmxpYyBzdGF0aWMgZGVlcENvcHk8VCA9IG9iamVjdCwgUCA9IG9iamVjdD4ob2JqOiBULCBvcHRpb25zOiBEZWVwQ29weU9wdGlvbnM8UD4gJiB7b2JqZWN0UHJvdG90eXBlOiBDbGFzc1R5cGU8UD59ICYge21hcEdldHRlcnNUb1Byb3BlcnRpZXM/OiBmYWxzZX0pOiBQO1xuICAgIHB1YmxpYyBzdGF0aWMgZGVlcENvcHk8VCA9IG9iamVjdCwgUCA9IG9iamVjdD4ob2JqOiBULCBvcHRpb25zOiBEZWVwQ29weU9wdGlvbnM8UD4gJiB7b2JqZWN0UHJvdG90eXBlOiBDbGFzc1R5cGU8UD59ICYge21hcEdldHRlcnNUb1Byb3BlcnRpZXM6IHRydWV9KTogUCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weTxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM/OiBEZWVwQ29weU9wdGlvbnM8UD4pOiBUO1xuXG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weTxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM/OiBEZWVwQ29weU9wdGlvbnM8UD4pOiBUIHwgUCB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoK29iaik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY29weTtcbiAgICAgICAgaWYgKG9wdGlvbnM/Lm1hcEdldHRlcnNUb1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvcHkgPSB7fTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvcHkgPSBvcHRpb25zPy5vYmplY3RQcm90b3R5cGUgPyBPYmplY3QuY3JlYXRlKG9wdGlvbnMub2JqZWN0UHJvdG90eXBlWydwcm90b3R5cGUnIGFzIGtleW9mIG9iamVjdF0pIDogT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGNvcHksIG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3RVdGlsLmdldFByb3BlcnRpZXMob2JqKSkge1xuICAgICAgICAgICAgY29uc3QgcHJvcCA9IG9ialtrZXkgYXMga2V5b2Ygb2JqZWN0XTtcbiAgICAgICAgICAgIGNvcHlba2V5XSA9IE9iamVjdFV0aWwuaGFuZGxlUHJvcChwcm9wLCB7bWFwR2V0dGVyc1RvUHJvcGVydGllczogb3B0aW9ucz8ubWFwR2V0dGVyc1RvUHJvcGVydGllc30pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnM/Lm1hcEdldHRlcnNUb1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ2V0dGVyS2V5IG9mIE9iamVjdFV0aWwuZ2V0R2V0dGVycyhvYmopKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IG9ialtnZXR0ZXJLZXkgYXMga2V5b2Ygb2JqZWN0XTtcbiAgICAgICAgICAgICAgICBjb3B5W2dldHRlcktleV0gPSBPYmplY3RVdGlsLmhhbmRsZVByb3AocHJvcCwge21hcEdldHRlcnNUb1Byb3BlcnRpZXM6IG9wdGlvbnM/Lm1hcEdldHRlcnNUb1Byb3BlcnRpZXN9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVlcE1lcmdlKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55Piwgc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc09iamVjdChzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0VXRpbC5nZXRQcm9wZXJ0aWVzKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzT2JqZWN0KHRhcmdldFtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IE9iamVjdFV0aWwuZGVlcE1lcmdlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBPYmplY3RVdGlsLmRlZXBDb3B5KHNvdXJjZVtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldFtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IChzb3VyY2Vba2V5XSBhcyBBcnJheTx1bmtub3duPikubWFwKGkgPT4gKE9iamVjdFV0aWwuaXNPYmplY3QoaSkgPyBPYmplY3RVdGlsLmRlZXBNZXJnZSh7fSwgaSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgOiBpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNPYmplY3Qob2JqOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGhhbmRsZVByb3AocHJvcDogYW55LCBvcHRpb25zPzogRGVlcENvcHlQcm9wc09wdGlvbnMpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wLm1hcChpID0+IE9iamVjdFV0aWwuZGVlcENvcHkoaSwgb3B0aW9ucykpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wID09PSAnb2JqZWN0JyAmJiBwcm9wICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbC5kZWVwQ29weShwcm9wLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0aWVzKG9iajogb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0R2V0dGVycyhvYmo6IGFueSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgZ2V0dGVyU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGxldCBjdXJyT2JqID0gb2JqO1xuXG4gICAgICAgIHdoaWxlIChjdXJyT2JqKSB7XG4gICAgICAgICAgICBjb25zdCBnZXR0ZXJzID0gT2JqZWN0LmVudHJpZXMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY3Vyck9iaikpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoWywgZGVzY3JpcHRvcl0pID0+IHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSAnX19wcm90b19fJylcbiAgICAgICAgICAgICAgICAubWFwKChba2V5XSkgPT4ga2V5KTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBnZXR0ZXIgb2YgZ2V0dGVycykge1xuICAgICAgICAgICAgICAgIGdldHRlclNldC5hZGQoZ2V0dGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3Vyck9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyT2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGdldHRlclNldCk7XG4gICAgfVxufVxuIl19
|